diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentClobber.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentClobber.java index 59331270c..ccc808644 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentClobber.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentClobber.java @@ -48,4 +48,28 @@ public class AsmFragmentClobber { result = 31 * result + (clobberY ? 1 : 0); return result; } + + /** + * Determines if this clobber is a subset of the passed clobber. + * If this clobber clobbers the same or fewer registers than the passed clobber it is a subset. + * The empty clobber (clobbers no registers) is a subset of all clobbers. + * @param other The other clobber to examine + * @return true if this clobber clobbers the same or fewer registers than the passed clobber. + */ + public boolean isSubset(AsmFragmentClobber other) { + if(!other.isClobberA() && this.isClobberA()) { + // This clobber clobbers A, while the other does not - not a subset + return false; + } + if(!other.isClobberX() && this.isClobberX()) { + // This clobber clobbers A, while the other does not - not a subset + return false; + } + if(!other.isClobberY() && this.isClobberY()) { + // This clobber clobbers A, while the other does not - not a subset + return false; + } + // This is a subset + return true; + } } diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java index 3908d1dba..5a813cc97 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java @@ -9,15 +9,32 @@ import java.util.regex.Pattern; /** AsmFragment synthesis mechanism based on matching fragment signature and reusing another fragment with added prefix/postfix and some bind-mappings */ class AsmFragmentTemplateSynthesisRule { + /** Regular expression that matches the signature of fragments that the synthesis rule can handle. + * Contains matching groups (parenthesis) that are used in sigReplace to build the signature of the sub-fragment to synthesize from. */ final private String sigMatch; + + /** Regular expression that limits which fragments the synthesize rule can handle. */ final private String sigAvoid; + + /** ASM code prefixed to the sub-fragment when synthesizing. */ final private String asmPrefix; + + /** Signature of the sub-fragment to use for synthesizing the fragment. References the matching groups from sigMatch (via $1, $2, ...). */ final private String sigReplace; + + /** ASM code postfixed to the sub-fragment when synthesizing. */ final private String asmPostfix; + + /** Bindings for mapping replacing parameter names in the signature & ASM of the sub-fragment. */ final private Map bindMappings; + + /** Indicates whether to map parameters in the signature. If false only the parameters in the ASM are mapped.*/ final private boolean mapSignature; - AsmFragmentTemplateSynthesisRule(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map bindMappings, boolean mapSignature) { + /** Names of registers ("aa", "xx", "yy") that the sub-fragment is not allowed to clobber. Limits which sub-fragments the rule can use for creating the synthesis. */ + final String subDontClobber; + + AsmFragmentTemplateSynthesisRule(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map bindMappings, boolean mapSignature, String subDontClobber) { this.sigMatch = sigMatch; this.sigAvoid = sigAvoid; this.asmPrefix = asmPrefix; @@ -25,10 +42,19 @@ class AsmFragmentTemplateSynthesisRule { this.asmPostfix = asmPostfix; this.bindMappings = bindMappings; this.mapSignature = mapSignature; + this.subDontClobber = subDontClobber; } AsmFragmentTemplateSynthesisRule(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map bindMappings) { - this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true); + this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true, null); + } + + AsmFragmentTemplateSynthesisRule(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map bindMappings, boolean mapSignature) { + this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, mapSignature, null); + } + + AsmFragmentTemplateSynthesisRule(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map bindMappings, String subDontClobber) { + this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true, subDontClobber); } /** @@ -69,6 +95,12 @@ class AsmFragmentTemplateSynthesisRule { if(!subTemplate.getSignature().equals(getSubSignature(signature))) { throw new RuntimeException("Synthesis error! Attempting to synthesize on non-matching sub template sub-signature:"+subTemplate.getSignature()+" expecting:"+getSubSignature(signature)); } + if(subDontClobber!=null) { + if(subDontClobber.contains("aa") && subTemplate.getClobber().isClobberA()) return null; + if(subDontClobber.contains("xx") && subTemplate.getClobber().isClobberX()) return null; + if(subDontClobber.contains("yy") && subTemplate.getClobber().isClobberY()) return null; + } + StringBuilder newFragment = new StringBuilder(); if(asmPrefix != null) { newFragment.append(asmPrefix).append("\n"); @@ -296,8 +328,8 @@ class AsmFragmentTemplateSynthesisRule { synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pbuz1=(.*z1.*)", null, null, "vbuaa=$1", "ldy #0\n" + "sta ({z1}),y\n", null)); synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuz1=(.*)", ".*z1.*z1.*|.*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x\n", mapZC)); - //synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},y\n", mapC)); - //synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},x\n", mapC)); + synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},y\n", mapC, "yy")); + synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},x\n", mapC, "xx")); synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuz2=(.*)", ".*z1.*z1.*|.*z2.*z2.*", null, "vb$1aa=$2", "ldy {z2}\n" + "sta ({z1}),y\n", mapZ2)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=_deref_pb(.)c1(.*)", ".*=.*aa.*", "lda {c1}\n", "$1=vb$2aa$3", null, mapC)); diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java index 485d55de9..3d67e96d8 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java @@ -194,18 +194,37 @@ public class AsmFragmentTemplateSynthesizer { * Handle a candidate for best template. * If the candidate is better than the current best for its clobber profile update the best template * - * @param template The template candidate to examine + * @param candidate The template candidate to examine * @return true if the best template was updated */ - public boolean bestTemplateCandidate(AsmFragmentTemplate template) { - AsmFragmentClobber clobber = template.getClobber(); - AsmFragmentTemplate bestTemplate = bestTemplates.get(clobber); - if(bestTemplate == null || bestTemplate.getCycles() > template.getCycles()) { - bestTemplates.put(clobber, template); - return true; - } else { - return false; + public boolean bestTemplateCandidate(AsmFragmentTemplate candidate) { + AsmFragmentClobber candidateClobber = candidate.getClobber(); + double candidateCycles = candidate.getCycles(); + + // Check if any current best templates are better + Set bestClobbers = new LinkedHashSet<>(bestTemplates.keySet()); + for(AsmFragmentClobber bestClobber : bestClobbers) { + AsmFragmentTemplate bestTemplate = bestTemplates.get(bestClobber); + double bestCycles = bestTemplate.getCycles(); + if(bestClobber.isSubset(candidateClobber) && bestCycles <= candidateCycles) { + // A better template already found - don't update + return false; + } } + // The candidate is better than some of the current best! + + // Remove any current templates that are worse + for(AsmFragmentClobber bestClobber : bestClobbers) { + AsmFragmentTemplate bestTemplate = bestTemplates.get(bestClobber); + double bestCycles = bestTemplate.getCycles(); + if(candidateClobber.isSubset(bestClobber) && candidateCycles < bestCycles) { + // The candidate is better - remove the current template + bestTemplates.remove(bestClobber); + } + } + // Update the current best + bestTemplates.put(candidateClobber, candidate); + return true; } /** @@ -397,10 +416,14 @@ public class AsmFragmentTemplateSynthesizer { Collection subTemplates = subSynthesis.getBestTemplates(); for(AsmFragmentTemplate subTemplate : subTemplates) { AsmFragmentTemplate synthesized = rule.synthesize(synthesis.getSignature(), subTemplate); - if(log.isVerboseFragmentLog()) { - log.append("Fragment synthesis " + synthesis.getSignature() + " - Successfully synthesized from " + subSignature); + if(synthesized!=null) { + if(log.isVerboseFragmentLog()) { + log.append("Fragment synthesis " + synthesis.getSignature() + " - Successfully synthesized from " + subSignature); + } + modified |= synthesis.bestTemplateCandidate(synthesized); + } else { + log.append("Fragment synthesis " + synthesis.getSignature() + " - Sub clobber prevents synthesis from " + subSignature); } - modified |= synthesis.bestTemplateCandidate(synthesized); } } if(modified) { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.asm b/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.asm index d1db21157..69344a6a5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.asm @@ -4,7 +4,7 @@ .const SCREEN = $400 jsr main main: { - .label k = 2 + .label l = 2 ldx #0 b1: lda #0 @@ -17,22 +17,21 @@ main: { inx cpx #$65 bne b1 - lda #0 - sta k - b3: ldy #0 + b3: + lda #0 + sta l b4: eor #$55 tax - ldx k - tya - sta SCREEN,x + lda l + sta SCREEN,y + inc l + lda l + cmp #$65 + bne b4 iny cpy #$65 - bne b4 - inc k - lda k - cmp #$65 bne b3 rts } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.log b/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.log index 8c8192d35..59fb5c4eb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.log @@ -594,13 +594,11 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 303: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 252.5: zp ZP_BYTE:5 [ main::l#2 main::l#1 ] 41.1: zp ZP_BYTE:2 [ main::i#4 main::i#1 ] 37: zp ZP_BYTE:4 [ main::k#4 main::k#1 ] Uplift Scope [] -Uplifting [main] best 6028 combination reg byte a [ main::j#2 main::j#1 ] reg byte y [ main::l#2 main::l#1 ] reg byte x [ main::i#4 main::i#1 ] zp ZP_BYTE:4 [ main::k#4 main::k#1 ] -Uplifting [] best 6028 combination -MISSING FRAGMENTS - pbuc1_derefidx_vbuaa=vbuyy(main:: pbuc1=(const byte*) SCREEN#0 vbuaa=(byte) main::i#4 vbuyy=(byte) main::j#2 ) -Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::k#4 main::k#1 ] -Uplifting [main] best 6028 combination zp ZP_BYTE:4 [ main::k#4 main::k#1 ] -Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:2 [ main::k#4 main::k#1 ] +Uplifting [main] best 6638 combination reg byte a [ main::j#2 main::j#1 ] zp ZP_BYTE:5 [ main::l#2 main::l#1 ] reg byte x [ main::i#4 main::i#1 ] reg byte y [ main::k#4 main::k#1 ] +Uplifting [] best 6638 combination +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::l#2 main::l#1 ] +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 @@ -627,7 +625,7 @@ bend_from_b1: bend: //SEG9 main main: { - .label k = 2 + .label l = 2 //SEG10 [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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 @@ -668,9 +666,8 @@ main: { bne b1_from_b5 //SEG26 [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) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 - lda #0 - sta k + //SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 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] b3_from_b7: @@ -680,8 +677,9 @@ main: { b3: //SEG31 [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) 0 [phi:main::@3->main::@4#0] -- vbuyy=vbuc1 - ldy #0 + //SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 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] b4_from_b4: @@ -692,23 +690,22 @@ main: { //SEG36 asm { eor#$55 tax } eor #$55 tax - //SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) -- pbuc1_derefidx_vbuz1=vbuyy - ldx k - tya - sta SCREEN,x - //SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy=_inc_vbuyy - iny - //SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy_neq_vbuc1_then_la1 - cpy #$65 + //SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 + lda l + sta SCREEN,y + //SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1 + inc l + //SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda l + cmp #$65 bne b4_from_b4 jmp b7 //SEG40 main::@7 b7: - //SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1=_inc_vbuz1 - inc k - //SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda k - cmp #$65 + //SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 bne b3_from_b7 jmp breturn //SEG43 main::@return @@ -778,20 +775,20 @@ FINAL SYMBOL TABLE (byte) main::j#1 reg byte a 151.5 (byte) main::j#2 reg byte a 151.5 (byte) main::k -(byte) main::k#1 k zp ZP_BYTE:2 16.5 -(byte) main::k#4 k zp ZP_BYTE:2 20.499999999999996 +(byte) main::k#1 reg byte y 16.5 +(byte) main::k#4 reg byte y 20.499999999999996 (byte) main::l -(byte) main::l#1 reg byte y 151.5 -(byte) main::l#2 reg byte y 101.0 +(byte) main::l#1 l zp ZP_BYTE:2 151.5 +(byte) main::l#2 l zp ZP_BYTE:2 101.0 reg byte x [ main::i#4 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] -zp ZP_BYTE:2 [ main::k#4 main::k#1 ] -reg byte y [ main::l#2 main::l#1 ] +reg byte y [ main::k#4 main::k#1 ] +zp ZP_BYTE:2 [ main::l#2 main::l#1 ] FINAL ASSEMBLER -Score: 4072 +Score: 4682 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -809,7 +806,7 @@ Score: 4072 //SEG8 @end //SEG9 main main: { - .label k = 2 + .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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -839,16 +836,16 @@ main: { 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) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 - lda #0 - sta k + //SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 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 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) 0 [phi:main::@3->main::@4#0] -- vbuyy=vbuc1 - ldy #0 + //SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 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 @@ -856,21 +853,20 @@ main: { //SEG36 asm { eor#$55 tax } eor #$55 tax - //SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) -- pbuc1_derefidx_vbuz1=vbuyy - ldx k - tya - sta SCREEN,x - //SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy=_inc_vbuyy - iny - //SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy_neq_vbuc1_then_la1 - cpy #$65 + //SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 + lda l + sta SCREEN,y + //SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1 + inc l + //SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda l + cmp #$65 bne b4 //SEG40 main::@7 - //SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1=_inc_vbuz1 - inc k - //SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda k - cmp #$65 + //SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 bne b3 //SEG43 main::@return //SEG44 [20] return [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.sym b/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.sym index 6937f6f68..985c9b8cf 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/asm-clobber.sym @@ -18,13 +18,13 @@ (byte) main::j#1 reg byte a 151.5 (byte) main::j#2 reg byte a 151.5 (byte) main::k -(byte) main::k#1 k zp ZP_BYTE:2 16.5 -(byte) main::k#4 k zp ZP_BYTE:2 20.499999999999996 +(byte) main::k#1 reg byte y 16.5 +(byte) main::k#4 reg byte y 20.499999999999996 (byte) main::l -(byte) main::l#1 reg byte y 151.5 -(byte) main::l#2 reg byte y 101.0 +(byte) main::l#1 l zp ZP_BYTE:2 151.5 +(byte) main::l#2 l zp ZP_BYTE:2 101.0 reg byte x [ main::i#4 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] -zp ZP_BYTE:2 [ main::k#4 main::k#1 ] -reg byte y [ main::l#2 main::l#1 ] +reg byte y [ main::k#4 main::k#1 ] +zp ZP_BYTE:2 [ main::l#2 main::l#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/callconstparam.log b/src/test/java/dk/camelot64/kickc/test/ref/callconstparam.log index 0f40ea4db..984f6de78 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/callconstparam.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/callconstparam.log @@ -500,12 +500,8 @@ Uplift Scope [main] Uplifting [line] best 426 combination reg byte x [ line::x#2 line::x#0 line::x#1 ] zp ZP_BYTE:2 [ line::x1#3 ] Uplifting [] best 426 combination zp ZP_WORD:4 [ screen#10 screen#14 screen#11 ] Uplifting [main] best 426 combination -MISSING FRAGMENTS - vbuxx_lt_vbuaa_then_la1(line:: vbuxx=(byte) line::x#1 vbuaa=(byte) line::x1#3 la1=(label) line::b1_from_b1 ) Attempting to uplift remaining variables inzp ZP_BYTE:2 [ line::x1#3 ] Uplifting [line] best 426 combination zp ZP_BYTE:2 [ line::x1#3 ] -MISSING FRAGMENTS - vbuxx_lt_vbuaa_then_la1(line:: vbuxx=(byte) line::x#1 vbuaa=(byte) line::x1#3 la1=(label) line::b1_from_b1 ) Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ screen#10 screen#14 screen#11 ] ASSEMBLER BEFORE OPTIMIZATION diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen.asm b/src/test/java/dk/camelot64/kickc/test/ref/chargen.asm index dae605000..d6ed2bfdd 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/chargen.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen.asm @@ -25,8 +25,8 @@ main: { sta bits ldx #0 b2: - lda bits - and #$80 + lda #$80 + and bits cmp #0 beq b4 lda #'*' diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen.log b/src/test/java/dk/camelot64/kickc/test/ref/chargen.log index 42f957f82..f25b20df0 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/chargen.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen.log @@ -867,8 +867,8 @@ main: { //SEG27 main::@2 b2: //SEG28 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 - lda bits - and #$80 + lda #$80 + and bits //SEG29 [10] if((byte~) main::$1==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 @@ -1078,8 +1078,8 @@ main: { //SEG27 main::@2 b2: //SEG28 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 - lda bits - and #$80 + lda #$80 + and bits //SEG29 [10] if((byte~) main::$1==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b4 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log index d24257e48..7ae2f1155 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log @@ -594,9 +594,9 @@ main: { //SEG14 main::@1 b1: //SEG15 [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda i - tax - sta plots,x + ldy i + tya + sta plots,y //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/fillscreen.log b/src/test/java/dk/camelot64/kickc/test/ref/fillscreen.log index c0314daa1..305925292 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/fillscreen.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/fillscreen.log @@ -460,8 +460,6 @@ Uplift Scope [] Uplifting [fillscreen] best 418 combination reg byte x [ fillscreen::j#2 fillscreen::j#1 ] reg byte a [ fillscreen::c#0 ] Uplifting [main] best 412 combination reg byte a [ main::c#0 ] Uplifting [] best 412 combination -MISSING FRAGMENTS - pbuc1_derefidx_vbuaa=vbuyy(fillscreen:: pbuc1=(const byte*) SCREEN#0 vbuaa=(byte) fillscreen::j#2 vbuyy=(byte) fillscreen::c#0 ) ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log index 926bac9cd..85d9c72ba 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log @@ -1305,9 +1305,9 @@ plot: { //SEG52 plot::@2 b2: //SEG53 [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 + ldy i + lda buffer1,y ldy x - ldx i - lda buffer1,x sta (line),y //SEG54 [21] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuz1=_inc_vbuz1 inc i @@ -1383,9 +1383,9 @@ flip: { //SEG81 flip::@2 b2: //SEG82 [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + ldy srcIdx + lda buffer1,y ldy dstIdx - ldx srcIdx - lda buffer1,x sta buffer2,y //SEG83 [32] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuz1=_inc_vbuz1 inc srcIdx @@ -1452,9 +1452,9 @@ prepare: { //SEG106 prepare::@1 b1: //SEG107 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda i - tax - sta buffer1,x + ldy i + tya + sta buffer1,y //SEG108 [47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG109 [48] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuz1_neq_0_then_la1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/forclassicmin.log b/src/test/java/dk/camelot64/kickc/test/ref/forclassicmin.log index a0729bbb2..48d324962 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/forclassicmin.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/forclassicmin.log @@ -259,9 +259,9 @@ main: { //SEG14 main::@1 b1: //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda i - tax - sta SCREEN,x + ldy i + tya + sta SCREEN,y //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/forincrementassign.log b/src/test/java/dk/camelot64/kickc/test/ref/forincrementassign.log index 222c7503d..d5eb4541a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/forincrementassign.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/forincrementassign.log @@ -259,9 +259,9 @@ main: { //SEG14 main::@1 b1: //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda i - tax - sta SCREEN,x + ldy i + tya + sta SCREEN,y //SEG16 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda i clc diff --git a/src/test/java/dk/camelot64/kickc/test/ref/forrangemin.log b/src/test/java/dk/camelot64/kickc/test/ref/forrangemin.log index 90bc87747..e6dba37e9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/forrangemin.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/forrangemin.log @@ -359,9 +359,9 @@ main: { //SEG14 main::@1 b1: //SEG15 [6] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda i - tax - sta SCREEN1,x + ldy i + tya + sta SCREEN1,y //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_0_then_la1 @@ -380,9 +380,9 @@ main: { //SEG22 main::@2 b2: //SEG23 [10] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] ( main:2 [ main::j#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda j - tax - sta SCREEN2,x + ldy j + tya + sta SCREEN2,y //SEG24 [11] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:2 [ main::j#1 ] ) -- vbuz1=_dec_vbuz1 dec j //SEG25 [12] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:2 [ main::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm index 71112790c..af277b3ce 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm @@ -46,8 +46,8 @@ main: { lsr lsr lsr - tax - lda bits_count,x + tay + lda bits_count,y cmp #2 bcc b7 lda #0+1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log index 92922a0f1..35578a5c8 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log @@ -1648,9 +1648,9 @@ main: { //SEG84 main::@6 b6: //SEG85 [55] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda i - tax - sta SCREEN,x + ldy i + tya + sta SCREEN,y //SEG86 [56] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG87 [57] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_0_then_la1 @@ -1795,7 +1795,7 @@ Uplifting [main] best 4373 combination reg byte a [ main::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ main::$14 ] Uplifting [main] best 4313 combination reg byte a [ main::$14 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ main::$15 ] -Uplifting [main] best 4273 combination reg byte y [ main::$15 ] +Uplifting [main] best 4273 combination reg byte a [ main::$15 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ main::bits#1 ] Uplifting [main] best 4213 combination reg byte a [ main::bits#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ main::$20 ] @@ -1805,7 +1805,7 @@ Uplifting [main] best 4093 combination reg byte a [ main::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ main::$23 ] Uplifting [main] best 4033 combination reg byte a [ main::$23 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ main::$24 ] -Uplifting [main] best 3993 combination reg byte y [ main::$24 ] +Uplifting [main] best 3993 combination reg byte a [ main::$24 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ main::bits#2 ] Uplifting [main] best 3933 combination reg byte a [ main::bits#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ main::$29 ] @@ -1813,7 +1813,7 @@ Uplifting [main] best 3873 combination reg byte a [ main::$29 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ main::$31 ] Uplifting [main] best 3813 combination reg byte a [ main::$31 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ main::$32 ] -Uplifting [main] best 3773 combination reg byte y [ main::$32 ] +Uplifting [main] best 3773 combination reg byte a [ main::$32 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ main::bits#3 ] Uplifting [main] best 3713 combination reg byte a [ main::bits#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ main::bits_gen#7 ] @@ -1921,8 +1921,8 @@ main: { lsr lsr //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda bits_count,x + tay + lda bits_count,y //SEG26 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b2_from_b1 @@ -1960,10 +1960,10 @@ main: { lsr //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _11 - //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuyy=vbuaa_ror_1 + //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuaa=vbuaa_ror_1 lsr + //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda bits_count,y //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 @@ -1997,10 +1997,10 @@ main: { and #6 //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) -- vbuaa=vbuaa_ror_1 lsr - //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) -- vbuyy=vbuz1_bor_vbuaa + //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _21 + //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda bits_count,y //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 @@ -2033,10 +2033,10 @@ main: { ldy #0 lda (chargen1),y and #1 - //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) -- vbuyy=vbuz1_bor_vbuaa + //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _30 + //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda bits_count,y //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 @@ -2204,18 +2204,18 @@ FINAL SYMBOL TABLE (byte~) main::$12 reg byte a 22.0 (byte~) main::$13 reg byte a 22.0 (byte~) main::$14 reg byte a 22.0 -(byte~) main::$15 reg byte y 22.0 +(byte~) main::$15 reg byte a 22.0 (byte~) main::$2 reg byte a 22.0 (byte~) main::$20 reg byte a 22.0 (byte~) main::$21 $21 zp ZP_BYTE:8 7.333333333333333 (byte~) main::$22 reg byte a 22.0 (byte~) main::$23 reg byte a 22.0 -(byte~) main::$24 reg byte y 22.0 +(byte~) main::$24 reg byte a 22.0 (byte~) main::$29 reg byte a 22.0 (byte~) main::$3 reg byte a 22.0 (byte~) main::$30 $30 zp ZP_BYTE:8 11.0 (byte~) main::$31 reg byte a 22.0 -(byte~) main::$32 reg byte y 22.0 +(byte~) main::$32 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 (byte~) main::$5 reg byte a 22.0 (byte~) main::$6 reg byte a 22.0 @@ -2279,16 +2279,16 @@ reg byte a [ main::bits#0 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] -reg byte y [ main::$15 ] +reg byte a [ main::$15 ] reg byte a [ main::bits#1 ] reg byte a [ main::$20 ] reg byte a [ main::$22 ] reg byte a [ main::$23 ] -reg byte y [ main::$24 ] +reg byte a [ main::$24 ] reg byte a [ main::bits#2 ] reg byte a [ main::$29 ] reg byte a [ main::$31 ] -reg byte y [ main::$32 ] +reg byte a [ main::$32 ] reg byte a [ main::bits#3 ] reg byte a [ main::bits_gen#7 ] @@ -2370,8 +2370,8 @@ main: { lsr lsr //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda bits_count,x + tay + lda bits_count,y //SEG26 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b7 @@ -2403,10 +2403,10 @@ main: { lsr //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _11 - //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuyy=vbuaa_ror_1 + //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuaa=vbuaa_ror_1 lsr + //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda bits_count,y //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 @@ -2434,10 +2434,10 @@ main: { and #6 //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) -- vbuaa=vbuaa_ror_1 lsr - //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) -- vbuyy=vbuz1_bor_vbuaa + //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _21 + //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda bits_count,y //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 @@ -2464,10 +2464,10 @@ main: { //SEG63 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 lda (chargen1),y and #1 - //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) -- vbuyy=vbuz1_bor_vbuaa + //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _30 + //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda bits_count,y //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym index e6354f957..edf135dab 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym @@ -19,18 +19,18 @@ (byte~) main::$12 reg byte a 22.0 (byte~) main::$13 reg byte a 22.0 (byte~) main::$14 reg byte a 22.0 -(byte~) main::$15 reg byte y 22.0 +(byte~) main::$15 reg byte a 22.0 (byte~) main::$2 reg byte a 22.0 (byte~) main::$20 reg byte a 22.0 (byte~) main::$21 $21 zp ZP_BYTE:8 7.333333333333333 (byte~) main::$22 reg byte a 22.0 (byte~) main::$23 reg byte a 22.0 -(byte~) main::$24 reg byte y 22.0 +(byte~) main::$24 reg byte a 22.0 (byte~) main::$29 reg byte a 22.0 (byte~) main::$3 reg byte a 22.0 (byte~) main::$30 $30 zp ZP_BYTE:8 11.0 (byte~) main::$31 reg byte a 22.0 -(byte~) main::$32 reg byte y 22.0 +(byte~) main::$32 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 (byte~) main::$5 reg byte a 22.0 (byte~) main::$6 reg byte a 22.0 @@ -94,15 +94,15 @@ reg byte a [ main::bits#0 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] -reg byte y [ main::$15 ] +reg byte a [ main::$15 ] reg byte a [ main::bits#1 ] reg byte a [ main::$20 ] reg byte a [ main::$22 ] reg byte a [ main::$23 ] -reg byte y [ main::$24 ] +reg byte a [ main::$24 ] reg byte a [ main::bits#2 ] reg byte a [ main::$29 ] reg byte a [ main::$31 ] -reg byte y [ main::$32 ] +reg byte a [ main::$32 ] reg byte a [ main::bits#3 ] reg byte a [ main::bits_gen#7 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-assignment.log b/src/test/java/dk/camelot64/kickc/test/ref/inline-assignment.log index d97e28883..7b792363a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-assignment.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-assignment.log @@ -257,13 +257,13 @@ main: { //SEG14 main::@1 b1: //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda a - tax - sta SCREEN,x + ldy a + tya + sta SCREEN,y //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda a - tax - sta SCREEN+$50,x + ldy a + tya + sta SCREEN+$50,y //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-word.log b/src/test/java/dk/camelot64/kickc/test/ref/inline-word.log index 50cf5d382..679262438 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-word.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-word.log @@ -410,10 +410,10 @@ main: { b2: //SEG20 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuz3 ldy h - ldx l lda his,y sta w+1 - stx w + lda l + sta w //SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2 lda w sta sc @@ -447,11 +447,6 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Potential register analysis [7] main::w#0 ← *(main::his#0 + main::h#4) w= main::l#2 missing fragment vwuz1=pbuc1_derefidx_vbuaa_word_vbuxx allocation: reg byte a [ main::h#4 main::h#1 ] reg byte x [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] -Potential register analysis [7] main::w#0 ← *(main::his#0 + main::h#4) w= main::l#2 missing fragment vwuz1=pbuc1_derefidx_vbuaa_word_vbuyy allocation: reg byte a [ main::h#4 main::h#1 ] reg byte y [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] -MISSING FRAGMENTS - vwuz1=pbuc1_derefidx_vbuaa_word_vbuxx(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuaa=(byte) main::h#4 vbuxx=(byte) main::l#2 ) - vwuz1=pbuc1_derefidx_vbuaa_word_vbuyy(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuaa=(byte) main::h#4 vbuyy=(byte) main::l#2 ) Statement [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::h#4 main::h#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::l#2 main::l#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inmem-const-array.log b/src/test/java/dk/camelot64/kickc/test/ref/inmem-const-array.log index d2f895fc7..88aa0f2dc 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inmem-const-array.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inmem-const-array.log @@ -448,9 +448,9 @@ main: { lda #'*' sta screen,y //SEG18 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + ldy j + lda colseq,y ldy i - ldx j - lda colseq,x sta cols,y //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1=_inc_vbuz1 inc j diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inmemarray.log b/src/test/java/dk/camelot64/kickc/test/ref/inmemarray.log index 66c39dbae..f5fcfdb69 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inmemarray.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inmemarray.log @@ -324,6 +324,12 @@ Complete equivalence classes [ main::i#2 main::i#1 ] 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 ] +Fragment synthesis pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuaa - Sub clobber prevents synthesis from vbuaa=pbuc1_derefidx_vbuaa +Fragment synthesis pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuz1 - Sub clobber prevents synthesis from vbuaa=pbuc1_derefidx_vbuz1 +Fragment synthesis pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuaa - Sub clobber prevents synthesis from vbuaa=pbuc1_derefidx_vbuaa +Fragment synthesis pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuz1 - Sub clobber prevents synthesis from vbuaa=pbuc1_derefidx_vbuz1 +Fragment synthesis pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuz1 - Sub clobber prevents synthesis from vbuaa=pbuc1_derefidx_vbuz1 +Fragment synthesis pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuz1 - Sub clobber prevents synthesis from vbuaa=pbuc1_derefidx_vbuz1 INITIAL ASM //SEG0 Basic Upstart @@ -369,9 +375,9 @@ main: { //SEG16 main::@1 b1: //SEG17 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + ldy j + lda TXT,y ldy i - ldx j - lda TXT,x sta SCREEN,y //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1=_inc_vbuz1 inc j diff --git a/src/test/java/dk/camelot64/kickc/test/ref/mem-alignment.log b/src/test/java/dk/camelot64/kickc/test/ref/mem-alignment.log index d0e1057d9..eda6f1481 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/mem-alignment.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/mem-alignment.log @@ -344,9 +344,9 @@ main: { //SEG14 main::@1 b1: //SEG15 [6] *((const byte[256]) bs#0 + (byte) main::i#4) ← (byte) main::i#4 [ main::i#4 ] ( main:2 [ main::i#4 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 - lda i - tax - sta bs,x + ldy i + tya + sta bs,y //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_0_then_la1 @@ -369,9 +369,9 @@ main: { //SEG24 main::@2 b2: //SEG25 [10] *((const byte[256]) main::cs#0 + (byte) main::i#5) ← *((const byte[256]) bs#0 + (byte) main::j#2) [ main::j#2 main::i#5 ] ( main:2 [ main::j#2 main::i#5 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + ldy j + lda bs,y ldy i_5 - ldx j - lda bs,x sta cs,y //SEG26 [11] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:2 [ main::i#5 main::j#1 ] ) -- vbuz1=_dec_vbuz1 dec j diff --git a/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.asm b/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.asm index 3796ee50d..9d6596cff 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.asm @@ -20,16 +20,15 @@ main: { } line: { txa - tay jsr plot txa clc adc #$14 - tay jsr plot rts } plot: { + tay lda #'*' sta SCREEN,y rts diff --git a/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log b/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log index 578f4f579..beeadb424 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log @@ -654,8 +654,8 @@ Uplift Scope [] Uplifting [main] best 475 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] Uplifting [line] best 411 combination reg byte x [ line::l#2 line::l#0 line::l#1 ] -Uplifting [plot] best 408 combination reg byte y [ plot::x#2 plot::x#0 plot::x#1 ] -Uplifting [] best 408 combination +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 @@ -742,9 +742,8 @@ main: { } //SEG36 line line: { - //SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuyy=vbuxx + //SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuaa=vbuxx txa - tay //SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] ) //SEG39 [22] phi from line to plot [phi:line->plot] plot_from_line: @@ -753,11 +752,10 @@ line: { jmp b1 //SEG41 line::@1 b1: - //SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuyy=vbuxx_plus_vbuc1 + //SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #$14 - tay //SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] ) //SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot] plot_from_b1: @@ -771,7 +769,8 @@ line: { } //SEG48 plot plot: { - //SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- pbuc1_derefidx_vbuaa=vbuc2 + tay lda #'*' sta SCREEN,y jmp breturn @@ -849,18 +848,18 @@ FINAL SYMBOL TABLE (void()) plot((byte) plot::x) (label) plot::@return (byte) plot::x -(byte) plot::x#0 reg byte y 4.0 -(byte) plot::x#1 reg byte y 4.0 -(byte) plot::x#2 reg byte y 6.0 +(byte) plot::x#0 reg byte a 4.0 +(byte) plot::x#1 reg byte a 4.0 +(byte) plot::x#2 reg byte a 6.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] reg byte x [ line::l#2 line::l#0 line::l#1 ] -reg byte y [ plot::x#2 plot::x#0 plot::x#1 ] +reg byte a [ plot::x#2 plot::x#0 plot::x#1 ] FINAL ASSEMBLER -Score: 237 +Score: 235 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -922,19 +921,17 @@ main: { } //SEG36 line line: { - //SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuyy=vbuxx + //SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuaa=vbuxx txa - tay //SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] ) //SEG39 [22] phi from line to plot [phi:line->plot] //SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy jsr plot //SEG41 line::@1 - //SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuyy=vbuxx_plus_vbuc1 + //SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #$14 - tay //SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] ) //SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot] //SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy @@ -945,7 +942,8 @@ line: { } //SEG48 plot plot: { - //SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- pbuc1_derefidx_vbuaa=vbuc2 + tay lda #'*' sta SCREEN,y //SEG50 plot::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym b/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym index 32ba0374a..fe31c216a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym @@ -25,11 +25,11 @@ (void()) plot((byte) plot::x) (label) plot::@return (byte) plot::x -(byte) plot::x#0 reg byte y 4.0 -(byte) plot::x#1 reg byte y 4.0 -(byte) plot::x#2 reg byte y 6.0 +(byte) plot::x#0 reg byte a 4.0 +(byte) plot::x#1 reg byte a 4.0 +(byte) plot::x#2 reg byte a 6.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] reg byte x [ line::l#2 line::l#0 line::l#1 ] -reg byte y [ plot::x#2 plot::x#0 plot::x#1 ] +reg byte a [ plot::x#2 plot::x#0 plot::x#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log index 92b3c3aa8..cdb224900 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log @@ -485,6 +485,8 @@ Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Allocated zp ZP_WORD:4 [ main::$2 ] Allocated zp ZP_WORD:6 [ main::$9 ] Allocated zp ZP_WORD:8 [ main::$11 ] +Fragment synthesis pbuc1_derefidx_vbuyy=_deref_pbuz1 - Sub clobber prevents synthesis from vbuaa=_deref_pbuz1 +Fragment synthesis pbuc1_derefidx_vbuyy=_deref_pbuz1 - Sub clobber prevents synthesis from vbuaa=_deref_pbuz1 INITIAL ASM //SEG0 Basic Upstart @@ -539,10 +541,10 @@ main: { adc #0 sta _2+1 //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=_deref_pbuz2 - ldy i + ldx i ldy #0 lda (_2),y - sta screen,y + sta screen,x //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log index 956adcbb9..cc1a02e2b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -3050,11 +3050,6 @@ Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto ma Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ scroll#18 scroll#10 scroll#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Potential register analysis [27] scroll_bit::c#0 ← ((word)) scroll_bit::$3 missing fragment vwuz1=_word_vbuxx allocation: reg byte x [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] -Potential register analysis [27] scroll_bit::c#0 ← ((word)) scroll_bit::$3 missing fragment vwuz1=_word_vbuyy allocation: reg byte y [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] -MISSING FRAGMENTS - vwuz1=_word_vbuxx(scroll_bit:: vwuz1=(word) scroll_bit::c#0 vbuxx=(byte~) scroll_bit::$3 ) - vwuz1=_word_vbuyy(scroll_bit:: vwuz1=(word) scroll_bit::c#0 vbuyy=(byte~) scroll_bit::$3 ) Statement [27] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::c#0 nxt#19 ] ) always clobbers reg byte a Statement [28] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$4 nxt#19 ] ) always clobbers reg byte a Statement [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) always clobbers reg byte a @@ -3081,11 +3076,6 @@ Statement [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill Statement [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Potential register analysis [27] scroll_bit::c#0 ← ((word)) scroll_bit::$3 missing fragment vwuz1=_word_vbuxx allocation: reg byte x [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] -Potential register analysis [27] scroll_bit::c#0 ← ((word)) scroll_bit::$3 missing fragment vwuz1=_word_vbuyy allocation: reg byte y [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] -MISSING FRAGMENTS - vwuz1=_word_vbuxx(scroll_bit:: vwuz1=(word) scroll_bit::c#0 vbuxx=(byte~) scroll_bit::$3 ) - vwuz1=_word_vbuyy(scroll_bit:: vwuz1=(word) scroll_bit::c#0 vbuyy=(byte~) scroll_bit::$3 ) Statement [27] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::c#0 nxt#19 ] ) always clobbers reg byte a Statement [28] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$4 nxt#19 ] ) always clobbers reg byte a Statement [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) always clobbers reg byte a @@ -3139,9 +3129,6 @@ Uplifting [fillscreen] best 8831 combination zp ZP_WORD:14 [ fillscreen::cursor# Uplifting [next_char] best 8813 combination reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] Uplifting [main] best 8813 combination Uplifting [scroll_soft] best 8813 combination -MISSING FRAGMENTS - vwuz1=_word_vbuxx(scroll_bit:: vwuz1=(word) scroll_bit::c#0 vbuxx=(byte~) scroll_bit::$3 ) - vwuz1=_word_vbuyy(scroll_bit:: vwuz1=(word) scroll_bit::c#0 vbuyy=(byte~) scroll_bit::$3 ) Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Uplifting [] best 8813 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] ] with [ zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.asm b/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.asm index 29ab55af0..6b49eb02f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.asm @@ -4,12 +4,10 @@ jsr main main: { .const screen = $400 - .label i = 2 - ldx #0 - lda #-$7f - sta i + ldy #0 + ldx #-$7f b1: - lda i + txa sec sbc #$7f bvc !+ @@ -18,9 +16,9 @@ main: { bmi b2 rts b2: - lda i - sta screen,x - inc i + txa + sta screen,y inx + iny jmp b1 } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.log b/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.log index 14f594e7f..4930ff9c7 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.log @@ -354,19 +354,9 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Potential register analysis [6] if(main::i#2<127) goto main::@2 missing fragment vbsxx_lt_vbuc1_then_la1 allocation: reg byte x [ main::i#2 main::i#1 ] -Potential register analysis [6] if(main::i#2<127) goto main::@2 missing fragment vbsyy_lt_vbuc1_then_la1 allocation: reg byte y [ main::i#2 main::i#1 ] -MISSING FRAGMENTS - vbsxx_lt_vbuc1_then_la1(main:: vbsxx=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) - vbsyy_lt_vbuc1_then_la1(main:: vbsyy=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) Statement [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] -Potential register analysis [6] if(main::i#2<127) goto main::@2 missing fragment vbsxx_lt_vbuc1_then_la1 allocation: reg byte x [ main::i#2 main::i#1 ] -Potential register analysis [6] if(main::i#2<127) goto main::@2 missing fragment vbsyy_lt_vbuc1_then_la1 allocation: reg byte y [ main::i#2 main::i#1 ] -MISSING FRAGMENTS - vbsxx_lt_vbuc1_then_la1(main:: vbsxx=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) - vbsyy_lt_vbuc1_then_la1(main:: vbsyy=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) Statement [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , @@ -376,15 +366,8 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 28.6: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 22: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:4 [ main::$2 ] Uplift Scope [] -Uplifting [main] best 468 combination reg byte x [ main::j#2 main::j#1 ] zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] -Uplifting [] best 468 combination -MISSING FRAGMENTS - vbsxx_lt_vbuc1_then_la1(main:: vbsxx=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) - vbsyy_lt_vbuc1_then_la1(main:: vbsyy=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 468 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -MISSING FRAGMENTS - vbsyy_lt_vbuc1_then_la1(main:: vbsyy=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) +Uplifting [main] best 388 combination reg byte y [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] +Uplifting [] best 388 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -411,19 +394,17 @@ bend: //SEG9 main main: { .const screen = $400 - .label i = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 - //SEG12 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- vbsz1=vbsc1 - lda #-$7f - sta i + //SEG11 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + ldy #0 + //SEG12 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- vbsxx=vbsc1 + ldx #-$7f jmp b1 //SEG13 main::@1 b1: - //SEG14 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- vbsz1_lt_vbuc1_then_la1 - lda i + //SEG14 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- vbsxx_lt_vbuc1_then_la1 + txa sec sbc #$7f bvc !+ @@ -437,14 +418,14 @@ main: { rts //SEG17 main::@2 b2: - //SEG18 [8] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:2 [ main::i#2 main::j#2 main::$2 ] ) -- vbuaa=_byte_vbsz1 - lda i - //SEG19 [9] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa - sta screen,x - //SEG20 [10] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:2 [ main::j#2 main::i#1 ] ) -- vbsz1=_inc_vbsz1 - inc i - //SEG21 [11] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:2 [ main::i#1 main::j#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:2 [ main::i#2 main::j#2 main::$2 ] ) -- vbuaa=_byte_vbsxx + txa + //SEG19 [9] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- pbuc1_derefidx_vbuyy=vbuaa + sta screen,y + //SEG20 [10] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:2 [ main::j#2 main::i#1 ] ) -- vbsxx=_inc_vbsxx inx + //SEG21 [11] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:2 [ main::i#1 main::j#1 ] ) -- vbuyy=_inc_vbuyy + iny //SEG22 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: //SEG23 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy @@ -480,21 +461,21 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (signed byte) main::i -(signed byte) main::i#1 i zp ZP_BYTE:2 11.0 -(signed byte) main::i#2 i zp ZP_BYTE:2 11.0 +(signed byte) main::i#1 reg byte x 11.0 +(signed byte) main::i#2 reg byte x 11.0 (byte) main::j -(byte) main::j#1 reg byte x 22.0 -(byte) main::j#2 reg byte x 6.6000000000000005 +(byte) main::j#1 reg byte y 22.0 +(byte) main::j#2 reg byte y 6.6000000000000005 (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 -zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -reg byte x [ main::j#2 main::j#1 ] +reg byte x [ main::i#2 main::i#1 ] +reg byte y [ main::j#2 main::j#1 ] reg byte a [ main::$2 ] FINAL ASSEMBLER -Score: 402 +Score: 322 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -512,17 +493,15 @@ Score: 402 //SEG9 main main: { .const screen = $400 - .label i = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 - //SEG12 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- vbsz1=vbsc1 - lda #-$7f - sta i + //SEG11 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + ldy #0 + //SEG12 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- vbsxx=vbsc1 + ldx #-$7f //SEG13 main::@1 b1: - //SEG14 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- vbsz1_lt_vbuc1_then_la1 - lda i + //SEG14 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- vbsxx_lt_vbuc1_then_la1 + txa sec sbc #$7f bvc !+ @@ -534,14 +513,14 @@ main: { rts //SEG17 main::@2 b2: - //SEG18 [8] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:2 [ main::i#2 main::j#2 main::$2 ] ) -- vbuaa=_byte_vbsz1 - lda i - //SEG19 [9] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa - sta screen,x - //SEG20 [10] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:2 [ main::j#2 main::i#1 ] ) -- vbsz1=_inc_vbsz1 - inc i - //SEG21 [11] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:2 [ main::i#1 main::j#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:2 [ main::i#2 main::j#2 main::$2 ] ) -- vbuaa=_byte_vbsxx + txa + //SEG19 [9] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) -- pbuc1_derefidx_vbuyy=vbuaa + sta screen,y + //SEG20 [10] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:2 [ main::j#2 main::i#1 ] ) -- vbsxx=_inc_vbsxx inx + //SEG21 [11] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:2 [ main::i#1 main::j#1 ] ) -- vbuyy=_inc_vbuyy + iny //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 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.sym b/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.sym index 282a47595..337ba0e73 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-bytes.sym @@ -7,14 +7,14 @@ (label) main::@2 (label) main::@return (signed byte) main::i -(signed byte) main::i#1 i zp ZP_BYTE:2 11.0 -(signed byte) main::i#2 i zp ZP_BYTE:2 11.0 +(signed byte) main::i#1 reg byte x 11.0 +(signed byte) main::i#2 reg byte x 11.0 (byte) main::j -(byte) main::j#1 reg byte x 22.0 -(byte) main::j#2 reg byte x 6.6000000000000005 +(byte) main::j#1 reg byte y 22.0 +(byte) main::j#2 reg byte y 6.6000000000000005 (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 -zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -reg byte x [ main::j#2 main::j#1 ] +reg byte x [ main::i#2 main::i#1 ] +reg byte y [ main::j#2 main::j#1 ] reg byte a [ main::$2 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm index 38b8c72c7..fe502da51 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm @@ -116,8 +116,8 @@ print_byte: { jsr print_char txa and #$f - tax - lda hextab,x + tay + lda hextab,y jsr print_char rts hextab: .text "0123456789abcdef" diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log index b7153ca29..0f109f351 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log @@ -3178,11 +3178,6 @@ divFACby10: { } REGISTER UPLIFT POTENTIAL REGISTERS -Potential register analysis [11] setFAC::w#1 ← ((word)) main::i#10 missing fragment vwuz1=_word_vbuxx allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] -Potential register analysis [11] setFAC::w#1 ← ((word)) main::i#10 missing fragment vwuz1=_word_vbuyy allocation: reg byte y [ main::i#10 main::i#1 ] zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] -MISSING FRAGMENTS - vwuz1=_word_vbuxx(main:: vwuz1=(word) setFAC::w#1 vbuxx=(byte) main::i#10 ) - vwuz1=_word_vbuyy(main:: vwuz1=(word) setFAC::w#1 vbuyy=(byte) main::i#10 ) Statement [11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#1 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ] Statement [29] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ) always clobbers reg byte a @@ -3268,7 +3263,7 @@ Uplifting [] best 6314 combination zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 l Uplifting [setFAC] best 6314 combination zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] Uplifting [getFAC] best 6314 combination zp ZP_WORD:17 [ getFAC::return#2 ] zp ZP_WORD:23 [ getFAC::return#0 ] Uplifting [prepareMEM] best 6302 combination zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] -Uplifting [print_byte] best 6290 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_byte] best 6290 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] Uplifting [print_char] best 6281 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] Uplifting [main] best 6281 combination zp ZP_BYTE:2 [ main::i#10 main::i#1 ] Uplifting [print_word] best 6281 combination zp ZP_WORD:19 [ print_word::w#0 ] @@ -3578,14 +3573,14 @@ print_word: { } //SEG105 print_byte print_byte: { - //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr + //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG108 [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] @@ -3600,8 +3595,8 @@ print_byte: { txa and #$f //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda hextab,x + tay + lda hextab,y //SEG115 [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) //SEG116 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: @@ -3997,7 +3992,7 @@ FINAL SYMBOL TABLE (byte*) prepareMEM::mem#4 mem zp ZP_WORD:7 4.0 (byte*) prepareMEM::mem#5 mem zp ZP_WORD:7 3.333333333333333 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte y 4.0 +(byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return @@ -4041,7 +4036,7 @@ reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] -reg byte y [ print_byte::$0 ] +reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] @@ -4266,14 +4261,14 @@ print_word: { } //SEG105 print_byte print_byte: { - //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr + //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG108 [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] @@ -4285,8 +4280,8 @@ print_byte: { txa and #$f //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda hextab,x + tay + lda hextab,y //SEG115 [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) //SEG116 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] //SEG117 [56] phi (byte*) char_cursor#23 = (byte*) char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym index 35da62a1d..2374a5bae 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym @@ -72,7 +72,7 @@ (byte*) prepareMEM::mem#4 mem zp ZP_WORD:7 4.0 (byte*) prepareMEM::mem#5 mem zp ZP_WORD:7 3.333333333333333 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte y 4.0 +(byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return @@ -116,7 +116,7 @@ reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] -reg byte y [ print_byte::$0 ] +reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm index 9e3ccf41d..ceb639cb0 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm @@ -19,7 +19,7 @@ .const sinlen_x = $dd .const sinlen_y = $c5 .const sprites = $2000 - .label progress_idx = 3 + .label progress_idx = 4 .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 @@ -142,8 +142,7 @@ init: { sta gen_sintab.length lda #0 sta gen_sintab.min - lda #$ff - sta gen_sintab.max + ldx #$ff jsr gen_sintab lda #gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG123 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuz1=vbuc1 - lda #$ff - sta gen_sintab.max + //SEG123 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 + ldx #$ff jsr gen_sintab //SEG124 [60] phi from init::@6 to init::@7 [phi:init::@6->init::@7] b7_from_b6: @@ -8410,9 +8344,8 @@ init: { //SEG135 [73] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG136 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuz1=vbuc1 - lda #$d0 - sta gen_sintab.max + //SEG136 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 + ldx #$d0 jsr gen_sintab //SEG137 [64] phi from init::@8 to init::@9 [phi:init::@8->init::@9] b9_from_b8: @@ -8475,12 +8408,11 @@ gen_sintab: { .const f_2pi = $e2e5 .label _23 = $c .label i = 2 - .label max = 2 - .label min = 3 - .label length = 4 + .label min = 2 + .label length = 3 .label sintab = 8 - //SEG155 [74] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 - lda max + //SEG155 [74] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuxx + txa sta setFAC.w lda #0 sta setFAC.w+1 @@ -9031,10 +8963,9 @@ gen_sprites: { jmp b1 //SEG361 gen_sprites::@1 b1: - //SEG362 [175] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:55 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy i - lda cml,y - sta gen_chargen_sprite.ch + //SEG362 [175] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:55 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + ldx i + ldy cml,x //SEG363 [176] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:55 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite @@ -9070,7 +9001,6 @@ gen_sprites: { gen_chargen_sprite: { .label _0 = $c .label _1 = $c - .label ch = 3 .label sprite = $a .label chargen = $c .label bits = 4 @@ -9078,8 +9008,8 @@ gen_chargen_sprite: { .label x = 5 .label y = 3 .label c = 6 - //SEG372 [182] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuz2 - lda ch + //SEG372 [182] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuyy + tya sta _0 lda #0 sta _0+1 @@ -9145,8 +9075,8 @@ gen_chargen_sprite: { //SEG397 gen_chargen_sprite::@2 b2: //SEG398 [190] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) -- vbuaa=vbuz1_band_vbuc1 - lda bits - and #$80 + lda #$80 + and bits //SEG399 [191] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 @@ -9791,7 +9721,7 @@ FINAL SYMBOL TABLE (byte) gen_chargen_sprite::c (byte) gen_chargen_sprite::c#3 c zp ZP_BYTE:6 769.3076923076923 (byte) gen_chargen_sprite::ch -(byte) gen_chargen_sprite::ch#0 ch zp ZP_BYTE:3 6.5 +(byte) gen_chargen_sprite::ch#0 reg byte y 6.5 (byte*) gen_chargen_sprite::chargen (byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_WORD:12 3.678571428571429 (byte) gen_chargen_sprite::s_gen @@ -9855,11 +9785,11 @@ FINAL SYMBOL TABLE (byte) gen_sintab::i#1 i zp ZP_BYTE:2 16.5 (byte) gen_sintab::i#10 i zp ZP_BYTE:2 1.8333333333333333 (byte) gen_sintab::length -(byte) gen_sintab::length#10 length zp ZP_BYTE:4 0.44 +(byte) gen_sintab::length#10 length zp ZP_BYTE:3 0.44 (byte) gen_sintab::max -(byte) gen_sintab::max#2 max zp ZP_BYTE:2 2.0 +(byte) gen_sintab::max#2 reg byte x 2.0 (byte) gen_sintab::min -(byte) gen_sintab::min#2 min zp ZP_BYTE:3 0.3333333333333333 +(byte) gen_sintab::min#2 min zp ZP_BYTE:2 0.3333333333333333 (byte*) gen_sintab::sintab (byte*) gen_sintab::sintab#12 sintab zp ZP_WORD:8 0.22 (void()) gen_sprites() @@ -9944,9 +9874,9 @@ FINAL SYMBOL TABLE (byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 (byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7307692307692306 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp ZP_BYTE:3 3.0 -(byte) progress_idx#12 progress_idx zp ZP_BYTE:3 2.5 -(byte) progress_idx#34 progress_idx zp ZP_BYTE:3 0.5652173913043479 +(byte) progress_idx#10 progress_idx zp ZP_BYTE:4 3.0 +(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.5 +(byte) progress_idx#34 progress_idx zp ZP_BYTE:4 0.5652173913043479 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -9996,15 +9926,16 @@ FINAL SYMBOL TABLE (void()) subFACfromARG() (label) subFACfromARG::@return -zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::max#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] -zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::min#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 gen_chargen_sprite::ch#0 ] -zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 gen_sintab::length#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] +zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] +zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ] +zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] reg byte x [ anim::j2#2 anim::j2#1 ] zp ZP_BYTE:6 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 gen_chargen_sprite::c#3 ] zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] reg byte x [ init::i#2 init::i#1 ] zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ] +reg byte x [ gen_sintab::max#2 ] zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 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 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] @@ -10017,13 +9948,14 @@ reg byte a [ anim::$5 ] reg byte a [ gen_sintab::$24 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] +reg byte y [ gen_chargen_sprite::ch#0 ] reg byte a [ gen_chargen_sprite::$3 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ place_sprites::j2#1 ] FINAL ASSEMBLER -Score: 767928 +Score: 767890 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -10048,7 +9980,7 @@ Score: 767928 .const sinlen_x = $dd .const sinlen_y = $c5 .const sprites = $2000 - .label progress_idx = 3 + .label progress_idx = 4 .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 @@ -10293,9 +10225,8 @@ init: { //SEG122 [73] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG123 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuz1=vbuc1 - lda #$ff - sta gen_sintab.max + //SEG123 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 + ldx #$ff jsr gen_sintab //SEG124 [60] phi from init::@6 to init::@7 [phi:init::@6->init::@7] //SEG125 init::@7 @@ -10322,9 +10253,8 @@ init: { //SEG135 [73] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG136 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuz1=vbuc1 - lda #$d0 - sta gen_sintab.max + //SEG136 [73] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 + ldx #$d0 jsr gen_sintab //SEG137 [64] phi from init::@8 to init::@9 [phi:init::@8->init::@9] //SEG138 init::@9 @@ -10375,12 +10305,11 @@ gen_sintab: { .const f_2pi = $e2e5 .label _23 = $c .label i = 2 - .label max = 2 - .label min = 3 - .label length = 4 + .label min = 2 + .label length = 3 .label sintab = 8 - //SEG155 [74] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 - lda max + //SEG155 [74] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuxx + txa sta setFAC.w lda #0 sta setFAC.w+1 @@ -10803,10 +10732,9 @@ gen_sprites: { //SEG360 [174] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy //SEG361 gen_sprites::@1 b1: - //SEG362 [175] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:55 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy i - lda cml,y - sta gen_chargen_sprite.ch + //SEG362 [175] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:55 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + ldx i + ldy cml,x //SEG363 [176] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:55 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite @@ -10838,7 +10766,6 @@ gen_sprites: { gen_chargen_sprite: { .label _0 = $c .label _1 = $c - .label ch = 3 .label sprite = $a .label chargen = $c .label bits = 4 @@ -10846,8 +10773,8 @@ gen_chargen_sprite: { .label x = 5 .label y = 3 .label c = 6 - //SEG372 [182] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuz2 - lda ch + //SEG372 [182] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuyy + tya sta _0 lda #0 sta _0+1 @@ -10904,8 +10831,8 @@ gen_chargen_sprite: { //SEG397 gen_chargen_sprite::@2 b2: //SEG398 [190] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) -- vbuaa=vbuz1_band_vbuc1 - lda bits - and #$80 + lda #$80 + and bits //SEG399 [191] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b6 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym index 0b80c315a..a7a7abdca 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym @@ -107,7 +107,7 @@ (byte) gen_chargen_sprite::c (byte) gen_chargen_sprite::c#3 c zp ZP_BYTE:6 769.3076923076923 (byte) gen_chargen_sprite::ch -(byte) gen_chargen_sprite::ch#0 ch zp ZP_BYTE:3 6.5 +(byte) gen_chargen_sprite::ch#0 reg byte y 6.5 (byte*) gen_chargen_sprite::chargen (byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_WORD:12 3.678571428571429 (byte) gen_chargen_sprite::s_gen @@ -171,11 +171,11 @@ (byte) gen_sintab::i#1 i zp ZP_BYTE:2 16.5 (byte) gen_sintab::i#10 i zp ZP_BYTE:2 1.8333333333333333 (byte) gen_sintab::length -(byte) gen_sintab::length#10 length zp ZP_BYTE:4 0.44 +(byte) gen_sintab::length#10 length zp ZP_BYTE:3 0.44 (byte) gen_sintab::max -(byte) gen_sintab::max#2 max zp ZP_BYTE:2 2.0 +(byte) gen_sintab::max#2 reg byte x 2.0 (byte) gen_sintab::min -(byte) gen_sintab::min#2 min zp ZP_BYTE:3 0.3333333333333333 +(byte) gen_sintab::min#2 min zp ZP_BYTE:2 0.3333333333333333 (byte*) gen_sintab::sintab (byte*) gen_sintab::sintab#12 sintab zp ZP_WORD:8 0.22 (void()) gen_sprites() @@ -260,9 +260,9 @@ (byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 (byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7307692307692306 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp ZP_BYTE:3 3.0 -(byte) progress_idx#12 progress_idx zp ZP_BYTE:3 2.5 -(byte) progress_idx#34 progress_idx zp ZP_BYTE:3 0.5652173913043479 +(byte) progress_idx#10 progress_idx zp ZP_BYTE:4 3.0 +(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.5 +(byte) progress_idx#34 progress_idx zp ZP_BYTE:4 0.5652173913043479 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -312,15 +312,16 @@ (void()) subFACfromARG() (label) subFACfromARG::@return -zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::max#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] -zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::min#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 gen_chargen_sprite::ch#0 ] -zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 gen_sintab::length#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] +zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] +zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ] +zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] reg byte x [ anim::j2#2 anim::j2#1 ] zp ZP_BYTE:6 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 gen_chargen_sprite::c#3 ] zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] reg byte x [ init::i#2 init::i#1 ] zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ] +reg byte x [ gen_sintab::max#2 ] zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 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 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] @@ -333,6 +334,7 @@ reg byte a [ anim::$5 ] reg byte a [ gen_sintab::$24 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] +reg byte y [ gen_chargen_sprite::ch#0 ] reg byte a [ gen_chargen_sprite::$3 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ place_sprites::j2#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.asm b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.asm index 21a82ee5e..79b9c83b9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.asm @@ -458,8 +458,8 @@ print_byte: { tay lda hextab,y jsr print_char - lda b - and #$f + lda #$f + and b tay lda hextab,y jsr print_char diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log index b86a8f76f..84423470d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log @@ -8642,15 +8642,9 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] (byte) main::b#0 ← (byte/word/signed word) 206 - (byte) main::a#10 [ main::a#10 char_cursor#114 main::i#10 line_cursor#21 main::b#0 ] ( main:2 [ main::a#10 char_cursor#114 main::i#10 line_cursor#21 main::b#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::a#10 main::a#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#10 main::i#1 ] -Potential register analysis [21] if(main::a#10>=*(main::cs#0 + main::i#10)) goto main::@4 missing fragment vbuz1_ge_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -Potential register analysis [21] if(main::a#10>=*(main::cs#0 + main::i#10)) goto main::@4 missing fragment vbuyy_ge_pbuc1_derefidx_vbuz1_then_la1 allocation: zp ZP_BYTE:3 [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] Potential register analysis [21] if(main::a#10>=*(main::cs#0 + main::i#10)) goto main::@4 missing fragment vbuyy_ge_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] -Potential register analysis [21] if(main::a#10>=*(main::cs#0 + main::i#10)) goto main::@4 missing fragment vbuyy_ge_pbuc1_derefidx_vbuyy_then_la1 allocation: reg byte y [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] MISSING FRAGMENTS - vbuz1_ge_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b4_from_b47 ) - vbuyy_ge_pbuc1_derefidx_vbuz1_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuz1=(byte) main::i#10 la1=(label) main::b4_from_b47 ) - vbuyy_ge_pbuc1_derefidx_vbuxx_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b4_from_b47 ) - vbuyy_ge_pbuc1_derefidx_vbuyy_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 la1=(label) main::b4_from_b47 ) + vbuyy_ge_pbuc1_derefidx_vbuxx_then_la1 Statement [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ main::b#0 ] Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ) always clobbers reg byte a @@ -8658,66 +8652,29 @@ Statement [43] (byte*~) char_cursor#154 ← (byte*) line_cursor#1 [ main::a#10 m Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] -Potential register analysis [51] if(main::a#10<=*(main::cs#0 + main::i#10)) goto main::@8 missing fragment vbuz1_le_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -Potential register analysis [51] if(main::a#10<=*(main::cs#0 + main::i#10)) goto main::@8 missing fragment vbuyy_le_pbuc1_derefidx_vbuz1_then_la1 allocation: zp ZP_BYTE:3 [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] Potential register analysis [51] if(main::a#10<=*(main::cs#0 + main::i#10)) goto main::@8 missing fragment vbuyy_le_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] -Potential register analysis [51] if(main::a#10<=*(main::cs#0 + main::i#10)) goto main::@8 missing fragment vbuyy_le_pbuc1_derefidx_vbuyy_then_la1 allocation: reg byte y [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] MISSING FRAGMENTS - vbuz1_le_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b8_from_b52 ) - vbuyy_le_pbuc1_derefidx_vbuz1_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuz1=(byte) main::i#10 la1=(label) main::b8_from_b52 ) - vbuyy_le_pbuc1_derefidx_vbuxx_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b8_from_b52 ) - vbuyy_le_pbuc1_derefidx_vbuyy_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 la1=(label) main::b8_from_b52 ) + vbuyy_le_pbuc1_derefidx_vbuxx_then_la1 Statement [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [73] (byte*~) char_cursor#138 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 char_cursor#138 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 char_cursor#138 ] ) always clobbers reg byte a -Potential register analysis [75] if(main::a#10>55) goto main::@11 missing fragment vbuxx_gt_vbuc1_then_la1 allocation: reg byte x [ main::a#10 main::a#1 ] -Potential register analysis [75] if(main::a#10>55) goto main::@11 missing fragment vbuyy_gt_vbuc1_then_la1 allocation: reg byte y [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuxx_gt_vbuc1_then_la1(main:: vbuxx=(byte) main::a#10 vbuc1=(byte/signed byte/word/signed word) 55 la1=(label) main::b11_from_b56 ) - vbuyy_gt_vbuc1_then_la1(main:: vbuyy=(byte) main::a#10 vbuc1=(byte/signed byte/word/signed word) 55 la1=(label) main::b11_from_b56 ) Statement [75] if((byte) main::a#10>(byte/signed byte/word/signed word) 55) goto main::@11 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a -Potential register analysis [81] if(main::a#10>*(main::cs#0 + main::i#10)) goto main::@12 missing fragment vbuz1_gt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -Potential register analysis [81] if(main::a#10>*(main::cs#0 + main::i#10)) goto main::@12 missing fragment vbuyy_gt_pbuc1_derefidx_vbuz1_then_la1 allocation: zp ZP_BYTE:3 [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] Potential register analysis [81] if(main::a#10>*(main::cs#0 + main::i#10)) goto main::@12 missing fragment vbuyy_gt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] -Potential register analysis [81] if(main::a#10>*(main::cs#0 + main::i#10)) goto main::@12 missing fragment vbuyy_gt_pbuc1_derefidx_vbuyy_then_la1 allocation: reg byte y [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] MISSING FRAGMENTS - vbuz1_gt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b12_from_b57 ) - vbuyy_gt_pbuc1_derefidx_vbuz1_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuz1=(byte) main::i#10 la1=(label) main::b12_from_b57 ) - vbuyy_gt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b12_from_b57 ) - vbuyy_gt_pbuc1_derefidx_vbuyy_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 la1=(label) main::b12_from_b57 ) + vbuyy_gt_pbuc1_derefidx_vbuxx_then_la1 Statement [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [103] (byte*~) char_cursor#142 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 char_cursor#142 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 char_cursor#142 ] ) always clobbers reg byte a -Potential register analysis [111] if(main::a#10<*(main::cs#0 + main::i#10)) goto main::@16 missing fragment vbuz1_lt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -Potential register analysis [111] if(main::a#10<*(main::cs#0 + main::i#10)) goto main::@16 missing fragment vbuyy_lt_pbuc1_derefidx_vbuz1_then_la1 allocation: zp ZP_BYTE:3 [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] Potential register analysis [111] if(main::a#10<*(main::cs#0 + main::i#10)) goto main::@16 missing fragment vbuyy_lt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] -Potential register analysis [111] if(main::a#10<*(main::cs#0 + main::i#10)) goto main::@16 missing fragment vbuyy_lt_pbuc1_derefidx_vbuyy_then_la1 allocation: reg byte y [ main::i#10 main::i#1 ] reg byte y [ main::a#10 main::a#1 ] MISSING FRAGMENTS - vbuz1_lt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b16_from_b62 ) - vbuyy_lt_pbuc1_derefidx_vbuz1_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuz1=(byte) main::i#10 la1=(label) main::b16_from_b62 ) - vbuyy_lt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b16_from_b62 ) - vbuyy_lt_pbuc1_derefidx_vbuyy_then_la1(main:: vbuyy=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 la1=(label) main::b16_from_b62 ) + vbuyy_lt_pbuc1_derefidx_vbuxx_then_la1 Statement [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a -Potential register analysis [118] if(main::a#10=*(main::cs#0 + main::i#10)) goto main::@4 missing fragment vbuz1_ge_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_ge_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b4_from_b47 ) Statement [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#21 main::b#0 main::r#42 printu::a#2 printu::b#2 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 main::r#42 printu::a#2 printu::b#2 char_cursor#52 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::r#42 ] Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [43] (byte*~) char_cursor#154 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 char_cursor#154 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 char_cursor#154 ] ) always clobbers reg byte a -Potential register analysis [51] if(main::a#10<=*(main::cs#0 + main::i#10)) goto main::@8 missing fragment vbuz1_le_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_le_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b8_from_b52 ) Statement [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#46 printu::a#6 printu::b#6 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#46 printu::a#6 printu::b#6 char_cursor#52 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ main::r#46 ] Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [73] (byte*~) char_cursor#138 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 char_cursor#138 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 char_cursor#138 ] ) always clobbers reg byte a -Potential register analysis [75] if(main::a#10>55) goto main::@11 missing fragment vbuxx_gt_vbuc1_then_la1 allocation: reg byte x [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuxx_gt_vbuc1_then_la1(main:: vbuxx=(byte) main::a#10 vbuc1=(byte/signed byte/word/signed word) 55 la1=(label) main::b11_from_b56 ) Statement [75] if((byte) main::a#10>(byte/signed byte/word/signed word) 55) goto main::@11 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a -Potential register analysis [81] if(main::a#10>*(main::cs#0 + main::i#10)) goto main::@12 missing fragment vbuz1_gt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_gt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b12_from_b57 ) Statement [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#50 printu::a#10 printu::b#10 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#50 printu::a#10 printu::b#10 char_cursor#52 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ main::r#50 ] Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [103] (byte*~) char_cursor#142 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 char_cursor#142 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 char_cursor#142 ] ) always clobbers reg byte a -Potential register analysis [111] if(main::a#10<*(main::cs#0 + main::i#10)) goto main::@16 missing fragment vbuz1_lt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_lt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b16_from_b62 ) Statement [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#54 printu::a#14 printu::b#14 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#54 printu::a#14 printu::b#14 char_cursor#52 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ main::r#54 ] -Potential register analysis [118] if(main::a#10=*(main::cs#0 + main::i#10)) goto main::@4 missing fragment vbuz1_ge_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_ge_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b4_from_b47 ) Statement [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#21 main::b#0 main::r#42 printu::a#2 printu::b#2 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 main::r#42 printu::a#2 printu::b#2 char_cursor#52 ] ) always clobbers reg byte a Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#21 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [43] (byte*~) char_cursor#154 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 char_cursor#154 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 char_cursor#154 ] ) always clobbers reg byte a -Potential register analysis [51] if(main::a#10<=*(main::cs#0 + main::i#10)) goto main::@8 missing fragment vbuz1_le_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_le_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b8_from_b52 ) Statement [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#46 printu::a#6 printu::b#6 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#46 printu::a#6 printu::b#6 char_cursor#52 ] ) always clobbers reg byte a Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [73] (byte*~) char_cursor#138 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 char_cursor#138 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 char_cursor#138 ] ) always clobbers reg byte a -Potential register analysis [75] if(main::a#10>55) goto main::@11 missing fragment vbuxx_gt_vbuc1_then_la1 allocation: reg byte x [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuxx_gt_vbuc1_then_la1(main:: vbuxx=(byte) main::a#10 vbuc1=(byte/signed byte/word/signed word) 55 la1=(label) main::b11_from_b56 ) Statement [75] if((byte) main::a#10>(byte/signed byte/word/signed word) 55) goto main::@11 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a -Potential register analysis [81] if(main::a#10>*(main::cs#0 + main::i#10)) goto main::@12 missing fragment vbuz1_gt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_gt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b12_from_b57 ) Statement [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#50 printu::a#10 printu::b#10 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#50 printu::a#10 printu::b#10 char_cursor#52 ] ) always clobbers reg byte a Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a Statement [103] (byte*~) char_cursor#142 ← (byte*) line_cursor#1 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 char_cursor#142 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 char_cursor#142 ] ) always clobbers reg byte a -Potential register analysis [111] if(main::a#10<*(main::cs#0 + main::i#10)) goto main::@16 missing fragment vbuz1_lt_pbuc1_derefidx_vbuxx_then_la1 allocation: reg byte x [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::a#10 main::a#1 ] -MISSING FRAGMENTS - vbuz1_lt_pbuc1_derefidx_vbuxx_then_la1(main:: vbuz1=(byte) main::a#10 pbuc1=(const byte[5]) main::cs#0 vbuxx=(byte) main::i#10 la1=(label) main::b16_from_b62 ) Statement [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 char_cursor#52 ] ) always clobbers reg byte a reg byte y Statement [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#54 printu::a#14 printu::b#14 char_cursor#52 ] ( main:2 [ main::a#10 main::i#10 line_cursor#1 main::b#0 main::r#54 printu::a#14 printu::b#14 char_cursor#52 ] ) always clobbers reg byte a -Potential register analysis [118] if(main::a#10> (byte/signed byte/word/signed word) 4 [ char_cursor#89 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] ) -- vbuyy=vbuz1_ror_4 + //SEG486 [186] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ char_cursor#89 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] ) -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr + //SEG487 [187] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 char_cursor#89 print_byte::b#2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG487 [187] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 char_cursor#89 print_byte::b#2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG488 [188] call print_char param-assignment [ char_cursor#52 print_byte::b#2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] ) //SEG489 [181] phi from print_byte to print_char [phi:print_byte->print_char] @@ -10183,11 +10098,11 @@ print_byte: { jmp b1 //SEG492 print_byte::@1 b1: - //SEG493 [189] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#52 print_byte::$2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] ) -- vbuyy=vbuz1_band_vbuc1 - lda b - and #$f + //SEG493 [189] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#52 print_byte::$2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and b + //SEG494 [190] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#52 print_char::ch#1 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG494 [190] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#52 print_char::ch#1 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG495 [191] call print_char param-assignment [ char_cursor#52 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] ) //SEG496 [181] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] @@ -10700,8 +10615,8 @@ FINAL SYMBOL TABLE (byte) main::r#58 reg byte x 3.6666666666666665 (byte) main::r#59 reg byte x 3.6666666666666665 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte y 4.0 -(byte~) print_byte::$2 reg byte y 4.0 +(byte~) print_byte::$0 reg byte a 4.0 +(byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b @@ -10835,8 +10750,8 @@ reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 zp ZP_WORD:9 [ char_cursor#51 char_cursor#89 char_cursor#90 char_cursor#138 char_cursor#52 char_cursor#142 char_cursor#146 char_cursor#114 char_cursor#137 char_cursor#154 char_cursor#2 char_cursor#1 ] zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_BYTE:12 [ main::b#0 ] -reg byte y [ print_byte::$0 ] -reg byte y [ print_byte::$2 ] +reg byte a [ print_byte::$0 ] +reg byte a [ print_byte::$2 ] FINAL ASSEMBLER @@ -11821,14 +11736,14 @@ print_char: { //SEG485 print_byte print_byte: { .label b = $b - //SEG486 [186] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ char_cursor#89 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] ) -- vbuyy=vbuz1_ror_4 + //SEG486 [186] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ char_cursor#89 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#89 print_byte::b#2 print_byte::$0 ] ) -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr + //SEG487 [187] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 char_cursor#89 print_byte::b#2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG487 [187] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 char_cursor#89 print_byte::b#2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 print_char::ch#0 char_cursor#89 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG488 [188] call print_char param-assignment [ char_cursor#52 print_byte::b#2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::b#2 ] ) //SEG489 [181] phi from print_byte to print_char [phi:print_byte->print_char] @@ -11836,11 +11751,11 @@ print_byte: { //SEG491 [181] phi (byte) print_char::ch#5 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char //SEG492 print_byte::@1 - //SEG493 [189] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#52 print_byte::$2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] ) -- vbuyy=vbuz1_band_vbuc1 - lda b - and #$f + //SEG493 [189] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#52 print_byte::$2 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and b + //SEG494 [190] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#52 print_char::ch#1 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG494 [190] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#52 print_char::ch#1 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG495 [191] call print_char param-assignment [ char_cursor#52 ] ( main:2::printu:14::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:20::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:27::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:34::print_byte:171 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:44::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:50::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:57::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:64::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:74::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:80::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:87::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:94::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:104::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:110::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:117::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:124::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:134::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:140::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:147::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:154::print_byte:171 [ main::a#10 main::i#10 line_cursor#1 printu::op#20 printu::b#20 printu::res#20 char_cursor#52 ] main:2::printu:14::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:20::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:27::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:34::print_byte:175 [ main::a#10 main::i#10 line_cursor#21 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:44::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:50::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:57::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:64::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:74::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:80::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:87::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:94::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:104::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:110::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:117::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:124::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 main::b#0 printu::res#20 char_cursor#52 ] main:2::printu:134::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] main:2::printu:140::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] main:2::printu:147::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] main:2::printu:154::print_byte:175 [ main::a#10 main::i#10 line_cursor#1 printu::res#20 char_cursor#52 ] ) //SEG496 [181] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym index 246677c3b..061523f37 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym @@ -141,8 +141,8 @@ (byte) main::r#58 reg byte x 3.6666666666666665 (byte) main::r#59 reg byte x 3.6666666666666665 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte y 4.0 -(byte~) print_byte::$2 reg byte y 4.0 +(byte~) print_byte::$0 reg byte a 4.0 +(byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b @@ -276,5 +276,5 @@ reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 zp ZP_WORD:9 [ char_cursor#51 char_cursor#89 char_cursor#90 char_cursor#138 char_cursor#52 char_cursor#142 char_cursor#146 char_cursor#114 char_cursor#137 char_cursor#154 char_cursor#2 char_cursor#1 ] zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_BYTE:12 [ main::b#0 ] -reg byte y [ print_byte::$0 ] -reg byte y [ print_byte::$2 ] +reg byte a [ print_byte::$0 ] +reg byte a [ print_byte::$2 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm index f2b790a26..6b478b085 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm @@ -209,8 +209,8 @@ print_byte: { jsr print_char txa and #$f - tax - lda hextab,x + tay + lda hextab,y jsr print_char rts hextab: .text "0123456789abcdef" diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log index 9e7cf51cf..d368aef96 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log @@ -8142,16 +8142,10 @@ Removing always clobbered register reg byte x as potential for zp ZP_BYTE:25 [ m Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] Statement [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) always clobbers reg byte a -Potential register analysis [140] slow_signed_multiply::m#1 ← slow_signed_multiply::m#3 - slow_signed_multiply::b#0 missing fragment vwsz1=vwsz1_minus_vbsyy allocation: zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] reg byte y [ slow_signed_multiply::b#0 ] -MISSING FRAGMENTS - vwsz1=vwsz1_minus_vbsyy(slow_signed_multiply:: vwsz1=(signed word) slow_signed_multiply::m#1 vbsyy=(signed byte) slow_signed_multiply::b#0 ) Statement [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ slow_signed_multiply::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] -Potential register analysis [147] slow_signed_multiply::m#2 ← slow_signed_multiply::m#5 + slow_signed_multiply::b#0 missing fragment vwsz1=vwsz1_plus_vbsyy allocation: zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] reg byte y [ slow_signed_multiply::b#0 ] -MISSING FRAGMENTS - vwsz1=vwsz1_plus_vbsyy(slow_signed_multiply:: vwsz1=(signed word) slow_signed_multiply::m#2 vbsyy=(signed byte) slow_signed_multiply::b#0 ) Statement [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] Statement [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) always clobbers reg byte a @@ -8236,13 +8230,7 @@ Statement [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (b Statement [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x Statement [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) always clobbers reg byte a -Potential register analysis [140] slow_signed_multiply::m#1 ← slow_signed_multiply::m#3 - slow_signed_multiply::b#0 missing fragment vwsz1=vwsz1_minus_vbsyy allocation: zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] reg byte y [ slow_signed_multiply::b#0 ] -MISSING FRAGMENTS - vwsz1=vwsz1_minus_vbsyy(slow_signed_multiply:: vwsz1=(signed word) slow_signed_multiply::m#1 vbsyy=(signed byte) slow_signed_multiply::b#0 ) Statement [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) always clobbers reg byte a -Potential register analysis [147] slow_signed_multiply::m#2 ← slow_signed_multiply::m#5 + slow_signed_multiply::b#0 missing fragment vwsz1=vwsz1_plus_vbsyy allocation: zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] reg byte y [ slow_signed_multiply::b#0 ] -MISSING FRAGMENTS - vwsz1=vwsz1_plus_vbsyy(slow_signed_multiply:: vwsz1=(signed word) slow_signed_multiply::m#2 vbsyy=(signed byte) slow_signed_multiply::b#0 ) Statement [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) always clobbers reg byte a Statement [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) always clobbers reg byte a Statement [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) always clobbers reg byte a @@ -8386,7 +8374,7 @@ Uplifting [] best 202907 combination zp ZP_WORD:14 [ char_cursor#75 char_cursor# Uplifting [multiply_tables_compare] best 202907 combination zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] Uplifting [print_str] best 202907 combination zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] Uplifting [print_cls] best 202907 combination zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 202888 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_byte] best 202888 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] Uplifting [print_word] best 202888 combination zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] Uplifting [print_sword] best 202888 combination zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] Uplifting [print_sbyte] best 202872 combination reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] @@ -8396,8 +8384,6 @@ Uplifting [signed_multiply_error] best 202845 combination reg byte x [ signed_mu Uplifting [print_ln] best 202845 combination Uplifting [main] best 202845 combination Uplifting [init_multiply_asm] best 202845 combination -MISSING FRAGMENTS - vwsz1=vwsz1_minus_vbsyy(slow_signed_multiply:: vwsz1=(signed word) slow_signed_multiply::m#1 vbsyy=(signed byte) slow_signed_multiply::b#0 ) Attempting to uplift remaining variables inzp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] Uplifting [signed_multiply_results_compare] best 202845 combination zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] @@ -8975,14 +8961,14 @@ print_word: { } //SEG191 print_byte print_byte: { - //SEG192 [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + //SEG192 [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr + //SEG193 [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG193 [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG194 [95] call print_char param-assignment [ char_cursor#17 print_byte::b#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] ) //SEG195 [100] phi from print_byte to print_char [phi:print_byte->print_char] @@ -8997,8 +8983,8 @@ print_byte: { txa and #$f //SEG200 [97] (byte) print_char::ch#3 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#17 print_char::ch#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda hextab,x + tay + lda hextab,y //SEG201 [98] call print_char param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) //SEG202 [100] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: @@ -10642,7 +10628,7 @@ FINAL SYMBOL TABLE (const string) multiply_tables_compare::str1 str1 = (string) " / @" (const string) multiply_tables_compare::str2 str2 = (string) "multiply tables match!@" (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte y 4.0 +(byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return @@ -10842,7 +10828,7 @@ reg byte x [ slow_signed_multiply::b#0 ] reg byte y [ signed_multiply::a#0 ] reg byte x [ signed_multiply_error::a#0 ] zp ZP_WORD:12 [ signed_multiply_error::ma#0 multiply_error::ma#0 ] -reg byte y [ print_byte::$0 ] +reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] zp ZP_BYTE:14 [ signed_multiply::$6 ] reg byte a [ signed_multiply::$7 ] @@ -11259,14 +11245,14 @@ print_word: { } //SEG191 print_byte print_byte: { - //SEG192 [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + //SEG192 [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr + //SEG193 [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay - //SEG193 [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG194 [95] call print_char param-assignment [ char_cursor#17 print_byte::b#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] ) //SEG195 [100] phi from print_byte to print_char [phi:print_byte->print_char] @@ -11278,8 +11264,8 @@ print_byte: { txa and #$f //SEG200 [97] (byte) print_char::ch#3 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#17 print_char::ch#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda hextab,x + tay + lda hextab,y //SEG201 [98] call print_char param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) //SEG202 [100] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] //SEG203 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#17 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym index e09f65328..9162e100f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym @@ -174,7 +174,7 @@ (const string) multiply_tables_compare::str1 str1 = (string) " / @" (const string) multiply_tables_compare::str2 str2 = (string) "multiply tables match!@" (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte y 4.0 +(byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return @@ -374,7 +374,7 @@ reg byte x [ slow_signed_multiply::b#0 ] reg byte y [ signed_multiply::a#0 ] reg byte x [ signed_multiply_error::a#0 ] zp ZP_WORD:12 [ signed_multiply_error::ma#0 multiply_error::ma#0 ] -reg byte y [ print_byte::$0 ] +reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] zp ZP_BYTE:14 [ signed_multiply::$6 ] reg byte a [ signed_multiply::$7 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log index 573e4b8cb..556037244 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -2509,11 +2509,6 @@ Statement [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) Statement [32] (byte/word~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a Statement [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a Statement [35] (byte/signed byte/word/signed word~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) always clobbers reg byte a -Potential register analysis [46] *(render::colline#5 + render::x#2) ← render::col#0 missing fragment pbuz1_derefidx_vbuaa=vbuyy allocation: reg byte y [ render::col#0 ] reg byte a [ render::x#2 render::x#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] -Potential register analysis [46] *(render::colline#5 + render::x#2) ← render::col#0 missing fragment pbuz1_derefidx_vbuxx=vbuyy allocation: reg byte y [ render::col#0 ] reg byte x [ render::x#2 render::x#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] -MISSING FRAGMENTS - pbuz1_derefidx_vbuaa=vbuyy(render:: pbuz1=(byte*) render::colline#5 vbuaa=(byte) render::x#2 vbuyy=(byte) render::col#0 ) - pbuz1_derefidx_vbuxx=vbuyy(render:: pbuz1=(byte*) render::colline#5 vbuxx=(byte) render::x#2 vbuyy=(byte) render::col#0 ) Statement [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render::y#4 render::y#1 ] Statement [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a @@ -2550,9 +2545,6 @@ Statement [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) Statement [32] (byte/word~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a Statement [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a Statement [35] (byte/signed byte/word/signed word~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) always clobbers reg byte a -Potential register analysis [46] *(render::colline#5 + render::x#2) ← render::col#0 missing fragment pbuz1_derefidx_vbuxx=vbuyy allocation: reg byte y [ render::col#0 ] reg byte x [ render::x#2 render::x#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] -MISSING FRAGMENTS - pbuz1_derefidx_vbuxx=vbuyy(render:: pbuz1=(byte*) render::colline#5 vbuxx=(byte) render::x#2 vbuyy=(byte) render::col#0 ) Statement [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a Statement [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a Statement [65] (byte/signed byte/word/signed word~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) always clobbers reg byte a diff --git a/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.asm b/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.asm index 22e72984d..c2c04e751 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.asm @@ -32,8 +32,8 @@ main: { } sum2: { .label c = 2 - tya - stx $ff + txa + sty $ff clc adc $ff clc @@ -42,8 +42,8 @@ sum2: { } sum: { .label c = 2 - tya - stx $ff + txa + sty $ff clc adc $ff clc diff --git a/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.log b/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.log index 12b5f7281..8294118a9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/zpparammin.log @@ -917,8 +917,8 @@ main: { sum2: { .label c = 2 //SEG36 [23] (byte/word~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy - tya - stx $ff + txa + sty $ff clc adc $ff //SEG37 [24] (byte) sum2::return#1 ← (byte/word~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1 @@ -934,8 +934,8 @@ sum2: { sum: { .label c = 2 //SEG41 [26] (byte/word~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy - tya - stx $ff + txa + sty $ff clc adc $ff //SEG42 [27] (byte) sum::return#1 ← (byte/word~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1 @@ -1116,8 +1116,8 @@ main: { sum2: { .label c = 2 //SEG36 [23] (byte/word~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy - tya - stx $ff + txa + sty $ff clc adc $ff //SEG37 [24] (byte) sum2::return#1 ← (byte/word~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1 @@ -1131,8 +1131,8 @@ sum2: { sum: { .label c = 2 //SEG41 [26] (byte/word~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy - tya - stx $ff + txa + sty $ff clc adc $ff //SEG42 [27] (byte) sum::return#1 ← (byte/word~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log b/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log index 70506f68c..104f06aba 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log @@ -557,11 +557,6 @@ Statement [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) ma Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::j#6 main::j#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ] -Potential register analysis [9] main::w#0 ← ((word)) main::j#6 missing fragment vwuz1=_word_vbuxx allocation: reg byte x [ main::j#6 main::j#1 ] zp ZP_WORD:7 [ main::w#0 ] -Potential register analysis [9] main::w#0 ← ((word)) main::j#6 missing fragment vwuz1=_word_vbuyy allocation: reg byte y [ main::j#6 main::j#1 ] zp ZP_WORD:7 [ main::w#0 ] -MISSING FRAGMENTS - vwuz1=_word_vbuxx(main:: vwuz1=(word) main::w#0 vbuxx=(byte) main::j#6 ) - vwuz1=_word_vbuyy(main:: vwuz1=(word) main::w#0 vbuyy=(byte) main::j#6 ) Statement [9] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a Statement [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a Statement [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y @@ -569,9 +564,6 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ ma Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ] Statement [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) always clobbers reg byte a -Potential register analysis [9] main::w#0 ← ((word)) main::j#6 missing fragment vwuz1=_word_vbuxx allocation: reg byte x [ main::j#6 main::j#1 ] zp ZP_WORD:7 [ main::w#0 ] -MISSING FRAGMENTS - vwuz1=_word_vbuxx(main:: vwuz1=(word) main::w#0 vbuxx=(byte) main::j#6 ) Statement [9] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a Statement [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a Statement [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y @@ -588,8 +580,6 @@ Uplift Scope [] Uplifting [main] best 78433 combination reg byte x [ main::k#2 main::k#1 ] zp ZP_WORD:7 [ main::w#0 ] zp ZP_WORD:9 [ main::zpptr2#1 ] zp ZP_WORD:5 [ main::zpptr2#0 ] zp ZP_BYTE:3 [ main::i#4 main::i#1 ] zp ZP_BYTE:2 [ main::j#6 main::j#1 ] Uplifting [] best 78433 combination -MISSING FRAGMENTS - vwuz1=_word_vbuxx(main:: vwuz1=(word) main::w#0 vbuxx=(byte) main::j#6 ) Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::i#4 main::i#1 ] Uplifting [main] best 78433 combination zp ZP_BYTE:3 [ main::i#4 main::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::j#6 main::j#1 ]