mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-14 23:04:57 +00:00
Improved Fragment Synthesis - trying all possible combinations. Closes #71
This commit is contained in:
parent
66fdfb08a9
commit
174346d0f1
@ -1,6 +1,7 @@
|
||||
package dk.camelot64.kickc.fragment;
|
||||
|
||||
import dk.camelot64.kickc.CompileLog;
|
||||
import dk.camelot64.kickc.asm.AsmProgram;
|
||||
import dk.camelot64.kickc.parser.KickCLexer;
|
||||
import dk.camelot64.kickc.parser.KickCParser;
|
||||
import org.antlr.v4.runtime.*;
|
||||
@ -30,7 +31,7 @@ public class AsmFragmentManager {
|
||||
private static KickCParser.AsmFileContext UNKNOWN = new KickCParser.AsmFileContext(null, 0);
|
||||
|
||||
public static AsmFragment getFragment(AsmFragmentSignature signature, CompileLog log) {
|
||||
KickCParser.AsmFileContext fragmentFile = getFragmentFile(signature.getSignature(), log);
|
||||
KickCParser.AsmFileContext fragmentFile = getFragmentFile(signature, log);
|
||||
AsmFragment fragment = new AsmFragment(
|
||||
signature.getProgram(),
|
||||
signature.getSignature(),
|
||||
@ -40,52 +41,261 @@ public class AsmFragmentManager {
|
||||
return fragment;
|
||||
}
|
||||
|
||||
private static KickCParser.AsmFileContext getFragmentFile(String signature, CompileLog log) {
|
||||
KickCParser.AsmFileContext fragment = fragmentFileCache.get(signature);
|
||||
if (fragment == UNKNOWN) {
|
||||
if (verboseFragmentLog) {
|
||||
log.append("Unknown fragment " + signature);
|
||||
private static KickCParser.AsmFileContext getFragmentFile(AsmFragmentSignature signature, CompileLog log) {
|
||||
KickCParser.AsmFileContext fragmentCtx = fragmentFileCache.get(signature.getSignature());
|
||||
if(fragmentCtx == UNKNOWN) {
|
||||
if(verboseFragmentLog) {
|
||||
log.append("Unknown fragment " + signature.getSignature());
|
||||
}
|
||||
throw new UnknownFragmentException(signature);
|
||||
throw new UnknownFragmentException(signature.toString());
|
||||
}
|
||||
if (fragment == null) {
|
||||
CharStream fragmentCharStream = loadOrSynthesizeFragment(signature, log);
|
||||
if (fragmentCharStream == null) {
|
||||
if (verboseFragmentLog) {
|
||||
log.append("Unknown fragment " + signature);
|
||||
if(fragmentCtx == null) {
|
||||
FragmentSynthesizer synthesizer = new FragmentSynthesizer(signature, log);
|
||||
List<CharStream> candidates = synthesizer.loadOrSynthesizeFragment(signature.getSignature());
|
||||
if(candidates.size() == 0) {
|
||||
if(verboseFragmentLog) {
|
||||
log.append("Unknown fragment " + signature.toString());
|
||||
}
|
||||
fragmentFileCache.put(signature, UNKNOWN);
|
||||
throw new UnknownFragmentException(signature);
|
||||
}
|
||||
fragment = parseFragment(fragmentCharStream, signature);
|
||||
fragmentFileCache.put(signature, fragment);
|
||||
}
|
||||
return fragment;
|
||||
}
|
||||
fragmentFileCache.put(signature.getSignature(), UNKNOWN);
|
||||
throw new UnknownFragmentException(signature.toString());
|
||||
|
||||
private static CharStream loadOrSynthesizeFragment(String signature, CompileLog log) {
|
||||
CharStream fragmentCharStream = loadFragment(signature);
|
||||
if (fragmentCharStream == null) {
|
||||
if (verboseFragmentLog) {
|
||||
log.append("Attempting fragment synthesis " + signature);
|
||||
}
|
||||
fragmentCharStream = synthesizeFragment(signature, log);
|
||||
} else {
|
||||
if (verboseFragmentLog) {
|
||||
log.append("Succesfully loaded fragment " + signature);
|
||||
double minScore = Double.MAX_VALUE;
|
||||
for(CharStream candidate : candidates) {
|
||||
KickCParser.AsmFileContext candidateCtx = parseFragment(candidate, signature.getSignature());
|
||||
AsmFragment fragment = new AsmFragment(
|
||||
signature.getProgram(),
|
||||
signature.getSignature(),
|
||||
signature.getCodeScope(),
|
||||
candidateCtx.asmLines(),
|
||||
signature.getBindings());
|
||||
AsmProgram asm = new AsmProgram();
|
||||
asm.startSegment(null, signature.toString());
|
||||
fragment.generate(asm);
|
||||
double score = asm.getCycles();
|
||||
if(score < minScore) {
|
||||
minScore = score;
|
||||
fragmentCtx = candidateCtx;
|
||||
}
|
||||
}
|
||||
if(verboseFragmentLog) {
|
||||
log.append("Found fragment " + signature + " score: " + minScore + " from " + candidates.size() + " candidates");
|
||||
}
|
||||
fragmentFileCache.put(signature.getSignature(), fragmentCtx);
|
||||
}
|
||||
return fragmentCharStream;
|
||||
return fragmentCtx;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to synthesize a fragment from other fragments
|
||||
*
|
||||
* @param signature The signature of the fragment to synthesize
|
||||
* @return The synthesized fragment file contents. Null if the fragment could not be synthesized.
|
||||
* Capable of creating fragments from signatures by loading them or synthesizing them from other smaller fragments.
|
||||
* <p>
|
||||
* The synthesizer tries a lot of different combinations and keeps track of what has already been attempted.
|
||||
*/
|
||||
private static CharStream synthesizeFragment(String signature, CompileLog log) {
|
||||
public static class FragmentSynthesizer {
|
||||
|
||||
/**
|
||||
* Signature of the fragment being synthesized.
|
||||
*/
|
||||
private AsmFragmentSignature signature;
|
||||
|
||||
/**
|
||||
* The log.
|
||||
*/
|
||||
private CompileLog log;
|
||||
|
||||
public FragmentSynthesizer(AsmFragmentSignature signature, CompileLog log) {
|
||||
this.signature = signature;
|
||||
this.log = log;
|
||||
}
|
||||
|
||||
public List<CharStream> loadOrSynthesizeFragment(String signature) {
|
||||
List<CharStream> candidates = new ArrayList<>();
|
||||
// Load the fragment from disk
|
||||
CharStream fragmentCharStream = loadFragment(signature);
|
||||
if(fragmentCharStream != null) {
|
||||
candidates.add(fragmentCharStream);
|
||||
if(verboseFragmentLog) {
|
||||
log.append("Finding fragment "+this.signature.getSignature()+" - Successfully loaded fragment " + signature);
|
||||
}
|
||||
}
|
||||
// Synthesize the fragment from other fragments
|
||||
List<FragmentSynthesis> synths = getFragmentSyntheses();
|
||||
for(FragmentSynthesis synth : synths) {
|
||||
List<CharStream> synthesized = synth.synthesize(signature, this);
|
||||
if(synthesized != null) {
|
||||
if(verboseFragmentLog && synthesized.size() > 0) {
|
||||
log.append("Finding fragment "+this.signature.getSignature()+" - Successfully synthesized " + synthesized.size() + " fragments " + signature + " (from " + synth.getSubSignature() + ")");
|
||||
}
|
||||
candidates.addAll(synthesized);
|
||||
}
|
||||
}
|
||||
return candidates;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AsmFragment synthesis based on matching fragment signature and reusing another fragment with added prefix/postfix and some bind-mappings
|
||||
*/
|
||||
private static class FragmentSynthesis {
|
||||
|
||||
private String sigMatch;
|
||||
private String sigAvoid;
|
||||
private String asmPrefix;
|
||||
private String sigReplace;
|
||||
private String asmPostfix;
|
||||
private Map<String, String> bindMappings;
|
||||
private boolean mapSignature;
|
||||
private String subSignature;
|
||||
|
||||
public FragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings, boolean mapSignature) {
|
||||
this.sigMatch = sigMatch;
|
||||
this.sigAvoid = sigAvoid;
|
||||
this.asmPrefix = asmPrefix;
|
||||
this.sigReplace = sigReplace;
|
||||
this.asmPostfix = asmPostfix;
|
||||
this.bindMappings = bindMappings;
|
||||
this.mapSignature = mapSignature;
|
||||
}
|
||||
|
||||
public FragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings) {
|
||||
this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true);
|
||||
}
|
||||
|
||||
public List<CharStream> synthesize(String signature, FragmentSynthesizer synthesizer) {
|
||||
ArrayList<CharStream> candidates = new ArrayList<>();
|
||||
if(signature.matches(sigMatch)) {
|
||||
if(sigAvoid == null || !signature.matches(sigAvoid)) {
|
||||
subSignature = regexpRewriteSignature(signature, sigMatch, sigReplace);
|
||||
if(mapSignature && bindMappings != null) {
|
||||
// When mapping the signature we do the map replacement in the signature
|
||||
for(String bound : bindMappings.keySet()) {
|
||||
subSignature = subSignature.replace(bound, bindMappings.get(bound));
|
||||
}
|
||||
}
|
||||
List<CharStream> subCharStreams = synthesizer.loadOrSynthesizeFragment(subSignature);
|
||||
for(CharStream subCharStream : subCharStreams) {
|
||||
if(subCharStream != null) {
|
||||
StringBuilder newFragment = new StringBuilder();
|
||||
if(asmPrefix != null) {
|
||||
newFragment.append(asmPrefix);
|
||||
}
|
||||
String subFragment = subCharStream.toString();
|
||||
if(bindMappings != null) {
|
||||
if(mapSignature) {
|
||||
// When mapping the signature we do the reverse replacement in the ASM
|
||||
List<String> reverse = new ArrayList<>(bindMappings.keySet());
|
||||
Collections.reverse(reverse);
|
||||
for(String bound : reverse) {
|
||||
subFragment = subFragment.replace("{" + bindMappings.get(bound) + "}", "{" + bound + "}");
|
||||
}
|
||||
} else {
|
||||
// When not mapping the signature we do the replacement directly in the ASM
|
||||
for(String bound : bindMappings.keySet()) {
|
||||
subFragment = subFragment.replace("{" + bound + "}", "{" + bindMappings.get(bound) + "}");
|
||||
}
|
||||
}
|
||||
}
|
||||
newFragment.append(subFragment);
|
||||
if(asmPostfix != null) {
|
||||
newFragment.append("\n");
|
||||
newFragment.append(asmPostfix);
|
||||
}
|
||||
candidates.add(CharStreams.fromString(newFragment.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return candidates;
|
||||
}
|
||||
|
||||
public String getSubSignature() {
|
||||
return subSignature;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static String regexpRewriteSignature(String signature, String match, String replace) {
|
||||
Pattern p = Pattern.compile(match);
|
||||
Matcher m = p.matcher(signature);
|
||||
String output = signature;
|
||||
if(m.find()) {
|
||||
// getReplacement first number with "number" and second number with the first
|
||||
output = m.replaceAll(replace);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look for a fragment on the disk.
|
||||
*
|
||||
* @param signature The fragment signature
|
||||
* @return The fragment file contents. Null if the fragment is not on the disk.
|
||||
*/
|
||||
private static CharStream loadFragment(String signature) {
|
||||
ClassLoader classLoader = AsmFragmentManager.class.getClassLoader();
|
||||
URL fragmentUrl = classLoader.getResource("dk/camelot64/kickc/fragment/asm/" + signature + ".asm");
|
||||
if(fragmentUrl == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
InputStream fragmentStream = fragmentUrl.openStream();
|
||||
return CharStreams.fromStream(fragmentStream);
|
||||
} catch(IOException e) {
|
||||
throw new RuntimeException("Error loading fragment file " + fragmentUrl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse an ASM fragment.
|
||||
*
|
||||
* @param fragmentCharStream The stream containing the fragment syntax
|
||||
* @param fragmentFileName The filename (used in error messages)
|
||||
* @return The parsed fragment ready for generating
|
||||
* @throws IOException if the parsing/loading fails
|
||||
*/
|
||||
public static KickCParser.AsmFileContext parseFragment(CharStream fragmentCharStream, final String fragmentFileName) {
|
||||
KickCLexer kickCLexer = new KickCLexer(fragmentCharStream);
|
||||
KickCParser kickCParser = new KickCParser(new CommonTokenStream(kickCLexer));
|
||||
kickCParser.addErrorListener(new BaseErrorListener() {
|
||||
@Override
|
||||
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) {
|
||||
throw new RuntimeException("Error parsing fragment " + fragmentFileName + "\n - Line: " + line + "\n - Message: " + msg);
|
||||
}
|
||||
});
|
||||
kickCParser.setBuildParseTree(true);
|
||||
KickCParser.AsmFileContext asmFileContext = kickCParser.asmFile();
|
||||
return asmFileContext;
|
||||
}
|
||||
|
||||
public static class UnknownFragmentException extends RuntimeException {
|
||||
|
||||
private String fragmentSignature;
|
||||
|
||||
public UnknownFragmentException(String signature) {
|
||||
super("Fragment not found " + signature + ".asm");
|
||||
this.fragmentSignature = signature;
|
||||
}
|
||||
|
||||
public String getFragmentSignature() {
|
||||
return fragmentSignature;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* All the synthesize rules available.
|
||||
*/
|
||||
private static List<FragmentSynthesis> fragmentSyntheses;
|
||||
|
||||
private static List<FragmentSynthesis> getFragmentSyntheses() {
|
||||
if(fragmentSyntheses == null) {
|
||||
fragmentSyntheses = initFragmentSyntheses();
|
||||
}
|
||||
return fragmentSyntheses;
|
||||
}
|
||||
|
||||
private static List<FragmentSynthesis> initFragmentSyntheses() {
|
||||
Map<String, String> mapZ = new LinkedHashMap<>();
|
||||
mapZ.put("z2", "z1");
|
||||
mapZ.put("z3", "z2");
|
||||
@ -130,13 +340,15 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("vbsyy=(.*)", null, null, "vbsaa=$1", "tay\n", null));
|
||||
synths.add(new FragmentSynthesis("vbuz1=(.*)", ".*=.*vb.z1.*", null, "vbuaa=$1", "sta {z1}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("vbsz1=(.*)", ".*=.*vb.z1.*", null, "vbsaa=$1", "sta {z1}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("_deref_pb(.)c1=(.*)", null, null, "vb$1aa=$2", "sta {c1}\n", mapC));
|
||||
synths.add(new FragmentSynthesis("_deref_pbuz1=(.*)", ".*=.*z1.*", null, "vbuaa=$1", "ldy #0\n" + "sta ({z1}),y\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("_deref_pb(.)c1=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1}\n", mapC));
|
||||
synths.add(new FragmentSynthesis("_deref_pb(.)c1=(.*c1.*)", null, null, "vb$1aa=$2", "sta {c1}\n", null));
|
||||
synths.add(new FragmentSynthesis("_deref_pbuz1=(.*)", ".*z1.*z1.*", null, "vbuaa=$1", "ldy #0\n" + "sta ({z1}),y\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("_deref_pbuz1=(.*z1.*)", null, null, "vbuaa=$1", "ldy #0\n" + "sta ({z1}),y\n", null));
|
||||
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*)", ".*z1.*z1.*|.*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapZC));
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*)", ".*z1.*z1.*|.*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x\n", mapZC));
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuyy=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},y\n", mapC));
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuxx=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},x\n", mapC));
|
||||
synths.add(new FragmentSynthesis("pb(.)z1_derefidx_vbuz2=(.*)", ".*z1.*z1.*|.*z2.*z2.*", null, "vb$1aa=$2", "ldy {z2}\n"+"sta ({z1}),y\n", mapZ2));
|
||||
synths.add(new FragmentSynthesis("pb(.)z1_derefidx_vbuz2=(.*)", ".*z1.*z1.*|.*z2.*z2.*", null, "vb$1aa=$2", "ldy {z2}\n" + "sta ({z1}),y\n", mapZ2));
|
||||
|
||||
synths.add(new FragmentSynthesis("(.*)=_deref_pb(.)c1(.*)", ".*=.*aa.*", "lda {c1}\n", "$1=vb$2aa$3", null, mapC));
|
||||
synths.add(new FragmentSynthesis("(.*)=_deref_pb(.)z1(.*)", ".*z1.*z1.*|.*=.*aa.*|.*=.*yy.*", "ldy #0\n" + "lda ({z1}),y\n", "$1=vb$2aa$3", null, mapZ));
|
||||
@ -158,8 +370,8 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz1(.*)_derefidx_vbuz1(.*)", ".*z1.*z1.*z1.*|.*yy.*", null, "$1_derefidx_vbuyy$2_derefidx_vbuyy$3", "ldy {z1}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz2(.*)_derefidx_vbuz2(.*)", ".*z2.*z2.*z2.*|.*xx.*", null, "$1_derefidx_vbuxx$2_derefidx_vbuxx$3", "ldx {z2}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz2(.*)_derefidx_vbuz2(.*)", ".*z2.*z2.*z2.*|.*yy.*", null, "$1_derefidx_vbuyy$2_derefidx_vbuyy$3", "ldy {z2}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*c1.*)", ".*z1.*z1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*z1.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapC));
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*c1.*)", ".*z1.*z1.*", null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*z1.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x\n", mapC));
|
||||
|
||||
// Convert X/Y-based array indexing of a constant pointer into A-register by prefixing lda cn,x / lda cn,y ( ...pb.c1_derefidx_vbuxx... / ...pb.c1_derefidx_vbuyy... -> ...vb.aa... )
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", ".*=.*aa.*|.*c1.*c1.*", "lda {c1},x\n", "$1=$2vb$3aa$4", null, mapC));
|
||||
@ -272,164 +484,7 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("(.*)=p..([cz].)_(plus|minus|bor|bxor)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null));
|
||||
synths.add(new FragmentSynthesis("p..([cz].)=(.*)_(sethi|setlo|plus|minus)_(.*)", null, null, "vwu$1=$2_$3_$4", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=p..([cz].)_(sethi|setlo|plus|minus)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null));
|
||||
|
||||
for (FragmentSynthesis synth : synths) {
|
||||
CharStream synthesized = synth.synthesize(signature, log);
|
||||
if (synthesized != null) {
|
||||
if (verboseFragmentLog) {
|
||||
log.append("Succesfully synthesized fragment " + signature + " (from " + synth.getSubSignature() + ")");
|
||||
}
|
||||
return synthesized;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return synths;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* AsmFragment synthesis based on matching fragment signature and reusing another fragment with added prefix/postfix and some bind-mappings
|
||||
*/
|
||||
private static class FragmentSynthesis {
|
||||
|
||||
private String sigMatch;
|
||||
private String sigAvoid;
|
||||
private String asmPrefix;
|
||||
private String sigReplace;
|
||||
private String asmPostfix;
|
||||
private Map<String, String> bindMappings;
|
||||
private String subSignature;
|
||||
private boolean mapSignature;
|
||||
|
||||
public FragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings, boolean mapSignature) {
|
||||
this.sigMatch = sigMatch;
|
||||
this.sigAvoid = sigAvoid;
|
||||
this.asmPrefix = asmPrefix;
|
||||
this.sigReplace = sigReplace;
|
||||
this.asmPostfix = asmPostfix;
|
||||
this.bindMappings = bindMappings;
|
||||
this.mapSignature = mapSignature;
|
||||
}
|
||||
|
||||
public FragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings) {
|
||||
this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true);
|
||||
}
|
||||
|
||||
public CharStream synthesize(String signature, CompileLog log) {
|
||||
if (signature.matches(sigMatch)) {
|
||||
if (sigAvoid == null || !signature.matches(sigAvoid)) {
|
||||
subSignature = regexpRewriteSignature(signature, sigMatch, sigReplace);
|
||||
if (mapSignature && bindMappings != null) {
|
||||
// When mapping the signature we do the map replacement in the signature
|
||||
for (String bound : bindMappings.keySet()) {
|
||||
subSignature = subSignature.replace(bound, bindMappings.get(bound));
|
||||
}
|
||||
}
|
||||
CharStream subCharStream = loadOrSynthesizeFragment(subSignature, log);
|
||||
if (subCharStream != null) {
|
||||
StringBuilder newFragment = new StringBuilder();
|
||||
if (asmPrefix != null) {
|
||||
newFragment.append(asmPrefix);
|
||||
}
|
||||
String subFragment = subCharStream.toString();
|
||||
if (bindMappings != null) {
|
||||
if(mapSignature) {
|
||||
// When mapping the signature we do the reverse replacement in the ASM
|
||||
List<String> reverse = new ArrayList<>(bindMappings.keySet());
|
||||
Collections.reverse(reverse);
|
||||
for (String bound : reverse) {
|
||||
subFragment = subFragment.replace("{" + bindMappings.get(bound) + "}", "{" + bound + "}");
|
||||
}
|
||||
} else {
|
||||
// When not mapping the signature we do the replacement directly in the ASM
|
||||
for (String bound : bindMappings.keySet()) {
|
||||
subFragment = subFragment.replace("{" + bound + "}", "{" + bindMappings.get(bound) + "}");
|
||||
}
|
||||
}
|
||||
}
|
||||
newFragment.append(subFragment);
|
||||
if (asmPostfix != null) {
|
||||
newFragment.append("\n");
|
||||
newFragment.append(asmPostfix);
|
||||
}
|
||||
return CharStreams.fromString(newFragment.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getSubSignature() {
|
||||
return subSignature;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static String regexpRewriteSignature(String signature, String match, String replace) {
|
||||
Pattern p = Pattern.compile(match);
|
||||
Matcher m = p.matcher(signature);
|
||||
String output = signature;
|
||||
if (m.find()) {
|
||||
// getReplacement first number with "number" and second number with the first
|
||||
output = m.replaceAll(replace);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look for a fragment on the disk.
|
||||
*
|
||||
* @param signature The fragment signature
|
||||
* @return The fragment file contents. Null if the fragment is not on the disk.
|
||||
*/
|
||||
private static CharStream loadFragment(String signature) {
|
||||
ClassLoader classLoader = AsmFragmentManager.class.getClassLoader();
|
||||
URL fragmentUrl = classLoader.getResource("dk/camelot64/kickc/fragment/asm/" + signature + ".asm");
|
||||
if (fragmentUrl == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
InputStream fragmentStream = fragmentUrl.openStream();
|
||||
return CharStreams.fromStream(fragmentStream);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Error loading fragment file " + fragmentUrl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse an ASM fragment.
|
||||
*
|
||||
* @param fragmentCharStream The stream containing the fragment syntax
|
||||
* @param fragmentFileName The filename (used in error messages)
|
||||
* @return The parsed fragment ready for generating
|
||||
* @throws IOException if the parsing/loading fails
|
||||
*/
|
||||
public static KickCParser.AsmFileContext parseFragment(CharStream fragmentCharStream, final String fragmentFileName) {
|
||||
KickCLexer kickCLexer = new KickCLexer(fragmentCharStream);
|
||||
KickCParser kickCParser = new KickCParser(new CommonTokenStream(kickCLexer));
|
||||
kickCParser.addErrorListener(new BaseErrorListener() {
|
||||
@Override
|
||||
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) {
|
||||
throw new RuntimeException("Error parsing fragment " + fragmentFileName + "\n - Line: " + line + "\n - Message: " + msg);
|
||||
}
|
||||
});
|
||||
kickCParser.setBuildParseTree(true);
|
||||
KickCParser.AsmFileContext asmFileContext = kickCParser.asmFile();
|
||||
return asmFileContext;
|
||||
}
|
||||
|
||||
|
||||
public static class UnknownFragmentException extends RuntimeException {
|
||||
|
||||
private String fragmentSignature;
|
||||
|
||||
public UnknownFragmentException(String signature) {
|
||||
super("Fragment not found " + signature + ".asm");
|
||||
this.fragmentSignature = signature;
|
||||
}
|
||||
|
||||
public String getFragmentSignature() {
|
||||
return fragmentSignature;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -349,4 +349,16 @@ public class AsmFragmentSignature {
|
||||
public Map<String, Value> getBindings() {
|
||||
return bindings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder str = new StringBuilder();
|
||||
str.append(signature).append("(");
|
||||
str.append(codeScopeRef).append(":: ");
|
||||
for(String bound : bindings.keySet()) {
|
||||
str.append(bound).append("=").append(bindings.get(bound).toString(getProgram())).append(" ");
|
||||
}
|
||||
str.append(") ");
|
||||
return str.toString();
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,13 @@ public class StatementAsm extends StatementBase {
|
||||
|
||||
@Override
|
||||
public String toString(Program program, boolean aliveInfo) {
|
||||
return "asm { "+asmLines.getText()+" }";
|
||||
StringBuilder txt = new StringBuilder();
|
||||
txt.append("asm { ");
|
||||
for(KickCParser.AsmLineContext line : asmLines.asmLine()) {
|
||||
txt.append(line.getText()).append(" ");
|
||||
}
|
||||
txt.append(" }");
|
||||
return txt.toString();
|
||||
}
|
||||
|
||||
public KickCParser.AsmLinesContext getAsmLines() {
|
||||
|
@ -28,7 +28,7 @@ main::@3: scope:[main] from main::@5 main::@7
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
[13] (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] )
|
||||
asm { eor#$55tax }
|
||||
asm { eor#$55 tax }
|
||||
[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 ] )
|
||||
[16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] )
|
||||
[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 ] )
|
||||
|
@ -40,7 +40,7 @@ main::@2:
|
||||
main::@3:
|
||||
(byte) main::l ← (byte/signed byte/word/signed word) 0
|
||||
main::@4:
|
||||
asm { eor#$55tax }
|
||||
asm { eor#$55 tax }
|
||||
*((byte*) SCREEN + (byte) main::k) ← (byte) main::l
|
||||
(byte) main::l ← ++ (byte) main::l
|
||||
(boolean~) main::$2 ← (byte) main::l != (byte/signed byte/word/signed word) 101
|
||||
@ -99,7 +99,7 @@ main::@3: scope:[main] from main::@6 main::@7
|
||||
(byte) main::l ← (byte/signed byte/word/signed word) 0
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
asm { eor#$55tax }
|
||||
asm { eor#$55 tax }
|
||||
*((byte*) SCREEN + (byte) main::k) ← (byte) main::l
|
||||
(byte) main::l ← ++ (byte) main::l
|
||||
(boolean~) main::$2 ← (byte) main::l != (byte/signed byte/word/signed word) 101
|
||||
@ -170,7 +170,7 @@ main::@4: scope:[main] from main::@3 main::@4
|
||||
(byte) main::k#2 ← phi( main::@3/(byte) main::k#4 main::@4/(byte) main::k#2 )
|
||||
(byte*) SCREEN#2 ← phi( main::@3/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#2 )
|
||||
(byte) main::l#2 ← phi( main::@3/(byte) main::l#0 main::@4/(byte) main::l#1 )
|
||||
asm { eor#$55tax }
|
||||
asm { eor#$55 tax }
|
||||
*((byte*) SCREEN#2 + (byte) main::k#2) ← (byte) main::l#2
|
||||
(byte) main::l#1 ← ++ (byte) main::l#2
|
||||
(boolean~) main::$2 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 101
|
||||
@ -367,7 +367,7 @@ main::@3: scope:[main] from main::@5 main::@7
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
[13] (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] )
|
||||
asm { eor#$55tax }
|
||||
asm { eor#$55 tax }
|
||||
[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 ] )
|
||||
[16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] )
|
||||
[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 ] )
|
||||
@ -547,7 +547,7 @@ main: {
|
||||
jmp b4
|
||||
//SEG35 main::@4
|
||||
b4:
|
||||
//SEG36 asm { eor#$55tax }
|
||||
//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=vbuz2
|
||||
@ -577,13 +577,13 @@ main: {
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement asm { eor#$55tax } always clobbers reg byte a reg byte x
|
||||
Statement asm { eor#$55 tax } always clobbers reg byte a reg byte x
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::k#4 main::k#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ main::k#4 main::k#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::l#2 main::l#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:5 [ main::l#2 main::l#1 ]
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement asm { eor#$55tax } always clobbers reg byte a reg byte x
|
||||
Statement asm { eor#$55 tax } always clobbers reg byte a reg byte x
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ main::i#4 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -687,7 +687,7 @@ main: {
|
||||
jmp b4
|
||||
//SEG35 main::@4
|
||||
b4:
|
||||
//SEG36 asm { eor#$55tax }
|
||||
//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_vbuyy=vbuz1
|
||||
@ -850,7 +850,7 @@ main: {
|
||||
//SEG34 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy
|
||||
//SEG35 main::@4
|
||||
b4:
|
||||
//SEG36 asm { eor#$55tax }
|
||||
//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_vbuyy=vbuz1
|
||||
|
@ -37,9 +37,8 @@ lines: {
|
||||
lda lines_x+1,x
|
||||
sta line.x1
|
||||
lda lines_y,x
|
||||
tay
|
||||
lda lines_y+1,x
|
||||
sta line.y1
|
||||
sta line.y0
|
||||
ldy lines_y+1,x
|
||||
jsr line
|
||||
inc l
|
||||
lda l
|
||||
@ -50,7 +49,7 @@ lines: {
|
||||
line: {
|
||||
.label x0 = 3
|
||||
.label x1 = 4
|
||||
.label y1 = 5
|
||||
.label y0 = 5
|
||||
.label xd = 7
|
||||
.label yd = $a
|
||||
lda x0
|
||||
@ -60,17 +59,17 @@ line: {
|
||||
sec
|
||||
sbc x0
|
||||
sta xd
|
||||
cpy y1
|
||||
bcs b2
|
||||
sty $ff
|
||||
lda y1
|
||||
cpy y0
|
||||
bcc b2
|
||||
tya
|
||||
sec
|
||||
sbc $ff
|
||||
sbc y0
|
||||
sta yd
|
||||
cmp xd
|
||||
bcs b3
|
||||
ldx x0
|
||||
sty line_xdyi.y
|
||||
lda y0
|
||||
sta line_xdyi.y
|
||||
lda x1
|
||||
sta line_xdyi.x1
|
||||
lda xd
|
||||
@ -81,8 +80,10 @@ line: {
|
||||
breturn:
|
||||
rts
|
||||
b3:
|
||||
sty line_ydxi.y
|
||||
lda y0
|
||||
sta line_ydxi.y
|
||||
ldx x0
|
||||
sty line_ydxi.y1
|
||||
lda yd
|
||||
sta line_ydxi.yd
|
||||
lda xd
|
||||
@ -91,13 +92,15 @@ line: {
|
||||
jmp breturn
|
||||
b2:
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
sbc y1
|
||||
adc y0
|
||||
sta yd
|
||||
cmp xd
|
||||
bcs b6
|
||||
ldx x0
|
||||
sty line_xdyd.y
|
||||
lda y0
|
||||
sta line_xdyd.y
|
||||
lda x1
|
||||
sta line_xdyd.x1
|
||||
lda xd
|
||||
@ -107,10 +110,8 @@ line: {
|
||||
jsr line_xdyd
|
||||
jmp breturn
|
||||
b6:
|
||||
lda y1
|
||||
sta line_ydxd.y
|
||||
sty line_ydxd.y
|
||||
ldx x1
|
||||
sty line_ydxd.y1
|
||||
lda yd
|
||||
sta line_ydxd.yd
|
||||
lda xd
|
||||
@ -122,18 +123,16 @@ line: {
|
||||
sec
|
||||
sbc x1
|
||||
sta xd
|
||||
cpy y1
|
||||
bcs b9
|
||||
sty $ff
|
||||
lda y1
|
||||
cpy y0
|
||||
bcc b9
|
||||
tya
|
||||
sec
|
||||
sbc $ff
|
||||
sbc y0
|
||||
sta yd
|
||||
cmp xd
|
||||
bcs b10
|
||||
ldx x1
|
||||
lda y1
|
||||
sta line_xdyd.y
|
||||
sty line_xdyd.y
|
||||
lda x0
|
||||
sta line_xdyd.x1
|
||||
lda xd
|
||||
@ -143,8 +142,10 @@ line: {
|
||||
jsr line_xdyd
|
||||
jmp breturn
|
||||
b10:
|
||||
sty line_ydxd.y
|
||||
lda y0
|
||||
sta line_ydxd.y
|
||||
ldx x0
|
||||
sty line_ydxd.y1
|
||||
lda yd
|
||||
sta line_ydxd.yd
|
||||
lda xd
|
||||
@ -153,14 +154,14 @@ line: {
|
||||
jmp breturn
|
||||
b9:
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
sbc y1
|
||||
adc y0
|
||||
sta yd
|
||||
cmp xd
|
||||
bcs b13
|
||||
ldx x1
|
||||
lda y1
|
||||
sta line_xdyi.y
|
||||
sty line_xdyi.y
|
||||
lda x0
|
||||
sta line_xdyi.x1
|
||||
lda xd
|
||||
@ -170,10 +171,8 @@ line: {
|
||||
jsr line_xdyi
|
||||
jmp breturn
|
||||
b13:
|
||||
lda y1
|
||||
sta line_ydxi.y
|
||||
sty line_ydxi.y
|
||||
ldx x1
|
||||
sty line_ydxi.y1
|
||||
lda yd
|
||||
sta line_ydxi.yd
|
||||
lda xd
|
||||
|
@ -5563,78 +5563,78 @@ Uplifting [line_ydxi] best 13960 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_
|
||||
Uplifting [line_ydxd] best 13834 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] reg byte x [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] reg byte a [ line_ydxd::$8 ] zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ]
|
||||
Uplifting [init_screen] best 13834 combination zp ZP_WORD:34 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:36 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplift attempts [line] 10000/186624 (limiting to 10000)
|
||||
Uplifting [line] best 13714 combination zp ZP_BYTE:41 [ line::y1#0 ] reg byte y [ line::y0#0 ] zp ZP_BYTE:39 [ line::x1#0 ] zp ZP_BYTE:38 [ line::x0#0 ] zp ZP_BYTE:43 [ line::yd#1 ] zp ZP_BYTE:44 [ line::yd#0 ] zp ZP_BYTE:46 [ line::yd#3 ] zp ZP_BYTE:47 [ line::yd#10 ] zp ZP_BYTE:42 [ line::xd#1 ] zp ZP_BYTE:45 [ line::xd#0 ]
|
||||
Uplifting [line] best 13510 combination reg byte y [ line::y1#0 ] zp ZP_BYTE:40 [ line::y0#0 ] zp ZP_BYTE:39 [ line::x1#0 ] zp ZP_BYTE:38 [ line::x0#0 ] zp ZP_BYTE:43 [ line::yd#1 ] zp ZP_BYTE:44 [ line::yd#0 ] zp ZP_BYTE:46 [ line::yd#3 ] zp ZP_BYTE:47 [ line::yd#10 ] zp ZP_BYTE:42 [ line::xd#1 ] zp ZP_BYTE:45 [ line::xd#0 ]
|
||||
Limited combination testing to 10000 combinations of 186624 possible.
|
||||
Uplifting [main] best 13714 combination
|
||||
Uplifting [] best 13714 combination
|
||||
Uplifting [main] best 13510 combination
|
||||
Uplifting [] best 13510 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ lines::l#2 lines::l#1 ]
|
||||
Uplifting [lines] best 13714 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ]
|
||||
Uplifting [lines] best 13510 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ]
|
||||
Uplifting [line_ydxi] best 13714 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ]
|
||||
Uplifting [line_ydxi] best 13510 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ]
|
||||
Uplifting [line_xdyi] best 13714 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ]
|
||||
Uplifting [line_xdyi] best 13510 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ]
|
||||
Uplifting [line_ydxd] best 13714 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ]
|
||||
Uplifting [line_ydxd] best 13510 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ]
|
||||
Uplifting [line_xdyd] best 13714 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ]
|
||||
Uplifting [line_xdyd] best 13510 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ]
|
||||
Uplifting [line_xdyi] best 13714 combination zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ]
|
||||
Uplifting [line_xdyi] best 13510 combination zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ]
|
||||
Uplifting [line_xdyd] best 13714 combination zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ]
|
||||
Uplifting [line_xdyd] best 13510 combination zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:58 [ line_xdyi::$8 ]
|
||||
Uplifting [line_xdyi] best 13714 combination zp ZP_BYTE:58 [ line_xdyi::$8 ]
|
||||
Uplifting [line_xdyi] best 13510 combination zp ZP_BYTE:58 [ line_xdyi::$8 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:60 [ line_xdyd::$8 ]
|
||||
Uplifting [line_xdyd] best 13714 combination zp ZP_BYTE:60 [ line_xdyd::$8 ]
|
||||
Uplifting [line_xdyd] best 13510 combination zp ZP_BYTE:60 [ line_xdyd::$8 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:66 [ init_plot_tables::$10 ]
|
||||
Uplifting [init_plot_tables] best 13654 combination reg byte a [ init_plot_tables::$10 ]
|
||||
Uplifting [init_plot_tables] best 13450 combination reg byte a [ init_plot_tables::$10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ]
|
||||
Uplifting [line_ydxi] best 13654 combination zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ]
|
||||
Uplifting [line_ydxi] best 13450 combination zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ]
|
||||
Uplifting [line_ydxd] best 13654 combination zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ]
|
||||
Uplifting [line_ydxd] best 13450 combination zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:62 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 13654 combination zp ZP_BYTE:62 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 13450 combination zp ZP_BYTE:62 [ init_plot_tables::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ]
|
||||
Uplifting [line_ydxi] best 13654 combination zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ]
|
||||
Uplifting [line_ydxi] best 13450 combination zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ]
|
||||
Uplifting [line_xdyi] best 13654 combination zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ]
|
||||
Uplifting [line_xdyi] best 13450 combination zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ]
|
||||
Uplifting [line_ydxd] best 13654 combination zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ]
|
||||
Uplifting [line_ydxd] best 13450 combination zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ]
|
||||
Uplifting [line_xdyd] best 13654 combination zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:41 [ line::y1#0 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:41 [ line::y1#0 ]
|
||||
Uplifting [line_xdyd] best 13450 combination zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:40 [ line::y0#0 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:40 [ line::y0#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ]
|
||||
Uplifting [line_ydxi] best 13654 combination zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ]
|
||||
Uplifting [line_ydxi] best 13450 combination zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ]
|
||||
Uplifting [line_xdyi] best 13654 combination zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ]
|
||||
Uplifting [line_xdyi] best 13450 combination zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ]
|
||||
Uplifting [line_ydxd] best 13654 combination zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ]
|
||||
Uplifting [line_ydxd] best 13450 combination zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ]
|
||||
Uplifting [line_xdyd] best 13654 combination zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ]
|
||||
Uplifting [line_xdyd] best 13450 combination zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ line::x1#0 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:39 [ line::x1#0 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:39 [ line::x1#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:38 [ line::x0#0 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:38 [ line::x0#0 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:38 [ line::x0#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ]
|
||||
Uplifting [line_ydxi] best 13654 combination zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ]
|
||||
Uplifting [line_ydxi] best 13450 combination zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ]
|
||||
Uplifting [line_xdyi] best 13654 combination zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ]
|
||||
Uplifting [line_xdyi] best 13450 combination zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ]
|
||||
Uplifting [line_ydxd] best 13654 combination zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ]
|
||||
Uplifting [line_ydxd] best 13450 combination zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ]
|
||||
Uplifting [line_xdyd] best 13654 combination zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ]
|
||||
Uplifting [line_xdyd] best 13450 combination zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:43 [ line::yd#1 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:43 [ line::yd#1 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:43 [ line::yd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:44 [ line::yd#0 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:44 [ line::yd#0 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:44 [ line::yd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ line::yd#3 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:46 [ line::yd#3 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:46 [ line::yd#3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ line::yd#10 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:47 [ line::yd#10 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:47 [ line::yd#10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:42 [ line::xd#1 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:42 [ line::xd#1 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:42 [ line::xd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:45 [ line::xd#0 ]
|
||||
Uplifting [line] best 13654 combination zp ZP_BYTE:45 [ line::xd#0 ]
|
||||
Uplifting [line] best 13450 combination zp ZP_BYTE:45 [ line::xd#0 ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] ] with [ zp ZP_BYTE:62 [ init_plot_tables::$6 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] ] with [ zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] ] with [ zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] ]
|
||||
@ -5647,7 +5647,7 @@ Coalescing zero page register [ zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 l
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] ] with [ zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] ] with [ zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] ] with [ zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] ] with [ zp ZP_BYTE:41 [ line::y1#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] ] with [ zp ZP_BYTE:40 [ line::y0#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] ] with [ zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] ] with [ zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] ] with [ zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] ]
|
||||
@ -5773,14 +5773,13 @@ lines: {
|
||||
ldx l
|
||||
lda lines_x+1,x
|
||||
sta line.x1
|
||||
//SEG35 [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1
|
||||
//SEG35 [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
|
||||
ldx l
|
||||
lda lines_y,x
|
||||
tay
|
||||
//SEG36 [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
|
||||
sta line.y0
|
||||
//SEG36 [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1
|
||||
ldx l
|
||||
lda lines_y+1,x
|
||||
sta line.y1
|
||||
ldy lines_y+1,x
|
||||
//SEG37 [21] call line param-assignment [ lines::l#2 ] ( main:2::lines:12 [ lines::l#2 ] )
|
||||
jsr line
|
||||
jmp b3
|
||||
@ -5802,7 +5801,7 @@ lines: {
|
||||
line: {
|
||||
.label x0 = 3
|
||||
.label x1 = 4
|
||||
.label y1 = 5
|
||||
.label y0 = 5
|
||||
.label xd = 7
|
||||
.label yd = $a
|
||||
//SEG44 [25] if((byte) line::x0#0>=(byte) line::x1#0) goto line::@1 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
@ -5817,17 +5816,16 @@ line: {
|
||||
sec
|
||||
sbc x0
|
||||
sta xd
|
||||
//SEG47 [27] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@2 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ) -- vbuyy_ge_vbuz1_then_la1
|
||||
cpy y1
|
||||
bcs b2
|
||||
//SEG47 [27] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@2 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ) -- vbuz1_ge_vbuyy_then_la1
|
||||
cpy y0
|
||||
bcc b2
|
||||
jmp b16
|
||||
//SEG48 line::@16
|
||||
b16:
|
||||
//SEG49 [28] (byte) line::yd#1 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
sty $ff
|
||||
lda y1
|
||||
//SEG49 [28] (byte) line::yd#1 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
tya
|
||||
sec
|
||||
sbc $ff
|
||||
sbc y0
|
||||
sta yd
|
||||
//SEG50 [29] if((byte) line::yd#1>=(byte) line::xd#1) goto line::@3 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
lda yd
|
||||
@ -5838,8 +5836,9 @@ line: {
|
||||
b17:
|
||||
//SEG52 [30] (byte) line_xdyi::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#1 line_xdyi::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#1 line_xdyi::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG53 [31] (byte) line_xdyi::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyi.y
|
||||
//SEG53 [31] (byte) line_xdyi::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_xdyi.y
|
||||
//SEG54 [32] (byte) line_xdyi::x1#0 ← (byte) line::x1#0 [ line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 ] ) -- vbuz1=vbuz2
|
||||
lda x1
|
||||
sta line_xdyi.x1
|
||||
@ -5865,12 +5864,13 @@ line: {
|
||||
rts
|
||||
//SEG66 line::@3
|
||||
b3:
|
||||
//SEG67 [37] (byte) line_ydxi::y#0 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y
|
||||
//SEG67 [37] (byte) line_ydxi::y#0 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_ydxi.y
|
||||
//SEG68 [38] (byte) line_ydxi::x#0 ← (byte) line::x0#0 [ line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG69 [39] (byte) line_ydxi::y1#0 ← (byte) line::y1#0 [ line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] )
|
||||
// (byte) line_ydxi::y1#0 = (byte) line::y1#0 // register copy zp ZP_BYTE:5
|
||||
//SEG69 [39] (byte) line_ydxi::y1#0 ← (byte) line::y1#0 [ line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y1
|
||||
//SEG70 [40] (byte) line_ydxi::yd#0 ← (byte) line::yd#1 [ line::xd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 line_ydxi::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 line_ydxi::yd#0 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxi.yd
|
||||
@ -5889,10 +5889,11 @@ line: {
|
||||
jmp breturn
|
||||
//SEG79 line::@2
|
||||
b2:
|
||||
//SEG80 [43] (byte) line::yd#0 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
//SEG80 [43] (byte) line::yd#0 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
sbc y1
|
||||
adc y0
|
||||
sta yd
|
||||
//SEG81 [44] if((byte) line::yd#0>=(byte) line::xd#1) goto line::@6 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
lda yd
|
||||
@ -5903,8 +5904,9 @@ line: {
|
||||
b20:
|
||||
//SEG83 [45] (byte) line_xdyd::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_xdyd::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_xdyd::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG84 [46] (byte) line_xdyd::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyd.y
|
||||
//SEG84 [46] (byte) line_xdyd::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_xdyd.y
|
||||
//SEG85 [47] (byte) line_xdyd::x1#0 ← (byte) line::x1#0 [ line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 ] ) -- vbuz1=vbuz2
|
||||
lda x1
|
||||
sta line_xdyd.x1
|
||||
@ -5926,13 +5928,12 @@ line: {
|
||||
jmp breturn
|
||||
//SEG95 line::@6
|
||||
b6:
|
||||
//SEG96 [51] (byte) line_ydxd::y#0 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_ydxd.y
|
||||
//SEG96 [51] (byte) line_ydxd::y#0 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y
|
||||
//SEG97 [52] (byte) line_ydxd::x#0 ← (byte) line::x1#0 [ line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG98 [53] (byte) line_ydxd::y1#0 ← (byte) line::y0#0 [ line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y1
|
||||
//SEG98 [53] (byte) line_ydxd::y1#0 ← (byte) line::y0#0 [ line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] )
|
||||
// (byte) line_ydxd::y1#0 = (byte) line::y0#0 // register copy zp ZP_BYTE:5
|
||||
//SEG99 [54] (byte) line_ydxd::yd#0 ← (byte) line::yd#0 [ line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxd.yd
|
||||
@ -5956,17 +5957,16 @@ line: {
|
||||
sec
|
||||
sbc x1
|
||||
sta xd
|
||||
//SEG110 [58] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@9 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ) -- vbuyy_ge_vbuz1_then_la1
|
||||
cpy y1
|
||||
bcs b9
|
||||
//SEG110 [58] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@9 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ) -- vbuz1_ge_vbuyy_then_la1
|
||||
cpy y0
|
||||
bcc b9
|
||||
jmp b23
|
||||
//SEG111 line::@23
|
||||
b23:
|
||||
//SEG112 [59] (byte) line::yd#3 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
sty $ff
|
||||
lda y1
|
||||
//SEG112 [59] (byte) line::yd#3 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
tya
|
||||
sec
|
||||
sbc $ff
|
||||
sbc y0
|
||||
sta yd
|
||||
//SEG113 [60] if((byte) line::yd#3>=(byte) line::xd#0) goto line::@10 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
lda yd
|
||||
@ -5977,9 +5977,8 @@ line: {
|
||||
b24:
|
||||
//SEG115 [61] (byte) line_xdyd::x#1 ← (byte) line::x1#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_xdyd::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_xdyd::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG116 [62] (byte) line_xdyd::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_xdyd.y
|
||||
//SEG116 [62] (byte) line_xdyd::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyd.y
|
||||
//SEG117 [63] (byte) line_xdyd::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ) -- vbuz1=vbuz2
|
||||
lda x0
|
||||
sta line_xdyd.x1
|
||||
@ -6001,12 +6000,13 @@ line: {
|
||||
jmp breturn
|
||||
//SEG127 line::@10
|
||||
b10:
|
||||
//SEG128 [67] (byte) line_ydxd::y#1 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y
|
||||
//SEG128 [67] (byte) line_ydxd::y#1 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_ydxd.y
|
||||
//SEG129 [68] (byte) line_ydxd::x#1 ← (byte) line::x0#0 [ line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG130 [69] (byte) line_ydxd::y1#1 ← (byte) line::y1#0 [ line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] )
|
||||
// (byte) line_ydxd::y1#1 = (byte) line::y1#0 // register copy zp ZP_BYTE:5
|
||||
//SEG130 [69] (byte) line_ydxd::y1#1 ← (byte) line::y1#0 [ line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y1
|
||||
//SEG131 [70] (byte) line_ydxd::yd#1 ← (byte) line::yd#3 [ line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxd.yd
|
||||
@ -6025,10 +6025,11 @@ line: {
|
||||
jmp breturn
|
||||
//SEG140 line::@9
|
||||
b9:
|
||||
//SEG141 [73] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
//SEG141 [73] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
sbc y1
|
||||
adc y0
|
||||
sta yd
|
||||
//SEG142 [74] if((byte) line::yd#10>=(byte) line::xd#0) goto line::@13 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
lda yd
|
||||
@ -6039,9 +6040,8 @@ line: {
|
||||
b27:
|
||||
//SEG144 [75] (byte) line_xdyi::x#1 ← (byte) line::x1#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#10 line_xdyi::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#10 line_xdyi::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG145 [76] (byte) line_xdyi::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_xdyi.y
|
||||
//SEG145 [76] (byte) line_xdyi::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyi.y
|
||||
//SEG146 [77] (byte) line_xdyi::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ) -- vbuz1=vbuz2
|
||||
lda x0
|
||||
sta line_xdyi.x1
|
||||
@ -6063,13 +6063,12 @@ line: {
|
||||
jmp breturn
|
||||
//SEG156 line::@13
|
||||
b13:
|
||||
//SEG157 [81] (byte) line_ydxi::y#1 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_ydxi.y
|
||||
//SEG157 [81] (byte) line_ydxi::y#1 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y
|
||||
//SEG158 [82] (byte) line_ydxi::x#1 ← (byte) line::x1#0 [ line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG159 [83] (byte) line_ydxi::y1#1 ← (byte) line::y0#0 [ line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y1
|
||||
//SEG159 [83] (byte) line_ydxi::y1#1 ← (byte) line::y0#0 [ line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] )
|
||||
// (byte) line_ydxi::y1#1 = (byte) line::y0#0 // register copy zp ZP_BYTE:5
|
||||
//SEG160 [84] (byte) line_ydxi::yd#1 ← (byte) line::yd#10 [ line::xd#0 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 line_ydxi::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 line_ydxi::yd#1 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxi.yd
|
||||
@ -6894,9 +6893,9 @@ FINAL SYMBOL TABLE
|
||||
(byte) line::xd#0 xd zp ZP_BYTE:7 0.7
|
||||
(byte) line::xd#1 xd zp ZP_BYTE:7 0.7
|
||||
(byte) line::y0
|
||||
(byte) line::y0#0 reg byte y 5.952380952380948
|
||||
(byte) line::y0#0 y0 zp ZP_BYTE:5 5.952380952380948
|
||||
(byte) line::y1
|
||||
(byte) line::y1#0 y1 zp ZP_BYTE:5 6.249999999999996
|
||||
(byte) line::y1#0 reg byte y 6.249999999999996
|
||||
(byte) line::yd
|
||||
(byte) line::yd#0 yd zp ZP_BYTE:10 0.8888888888888888
|
||||
(byte) line::yd#1 yd zp ZP_BYTE:10 0.8888888888888888
|
||||
@ -7108,7 +7107,7 @@ FINAL SYMBOL TABLE
|
||||
zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ]
|
||||
zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 line::x0#0 ]
|
||||
zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 line::x1#0 ]
|
||||
zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line::y1#0 ]
|
||||
zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line::y0#0 ]
|
||||
reg byte x [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ]
|
||||
zp ZP_BYTE:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ]
|
||||
zp ZP_BYTE:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 line::xd#1 line::xd#0 ]
|
||||
@ -7121,7 +7120,7 @@ reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
zp ZP_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 plot::plotter#0 ]
|
||||
reg byte y [ line::y0#0 ]
|
||||
reg byte y [ line::y1#0 ]
|
||||
zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 line_xdyd::$8 ]
|
||||
reg byte a [ line_ydxi::$8 ]
|
||||
zp ZP_WORD:11 [ plot::plotter_y#0 ]
|
||||
@ -7135,7 +7134,7 @@ reg byte a [ init_plot_tables::$10 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 10447
|
||||
Score: 10243
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -7210,12 +7209,11 @@ lines: {
|
||||
//SEG34 [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
|
||||
lda lines_x+1,x
|
||||
sta line.x1
|
||||
//SEG35 [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1
|
||||
//SEG35 [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
|
||||
lda lines_y,x
|
||||
tay
|
||||
//SEG36 [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
|
||||
lda lines_y+1,x
|
||||
sta line.y1
|
||||
sta line.y0
|
||||
//SEG36 [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1
|
||||
ldy lines_y+1,x
|
||||
//SEG37 [21] call line param-assignment [ lines::l#2 ] ( main:2::lines:12 [ lines::l#2 ] )
|
||||
jsr line
|
||||
//SEG38 lines::@3
|
||||
@ -7233,7 +7231,7 @@ lines: {
|
||||
line: {
|
||||
.label x0 = 3
|
||||
.label x1 = 4
|
||||
.label y1 = 5
|
||||
.label y0 = 5
|
||||
.label xd = 7
|
||||
.label yd = $a
|
||||
//SEG44 [25] if((byte) line::x0#0>=(byte) line::x1#0) goto line::@1 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
@ -7246,15 +7244,14 @@ line: {
|
||||
sec
|
||||
sbc x0
|
||||
sta xd
|
||||
//SEG47 [27] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@2 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ) -- vbuyy_ge_vbuz1_then_la1
|
||||
cpy y1
|
||||
bcs b2
|
||||
//SEG47 [27] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@2 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ) -- vbuz1_ge_vbuyy_then_la1
|
||||
cpy y0
|
||||
bcc b2
|
||||
//SEG48 line::@16
|
||||
//SEG49 [28] (byte) line::yd#1 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
sty $ff
|
||||
lda y1
|
||||
//SEG49 [28] (byte) line::yd#1 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
tya
|
||||
sec
|
||||
sbc $ff
|
||||
sbc y0
|
||||
sta yd
|
||||
//SEG50 [29] if((byte) line::yd#1>=(byte) line::xd#1) goto line::@3 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
cmp xd
|
||||
@ -7262,8 +7259,9 @@ line: {
|
||||
//SEG51 line::@17
|
||||
//SEG52 [30] (byte) line_xdyi::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#1 line_xdyi::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#1 line_xdyi::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG53 [31] (byte) line_xdyi::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyi.y
|
||||
//SEG53 [31] (byte) line_xdyi::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_xdyi.y
|
||||
//SEG54 [32] (byte) line_xdyi::x1#0 ← (byte) line::x1#0 [ line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 ] ) -- vbuz1=vbuz2
|
||||
lda x1
|
||||
sta line_xdyi.x1
|
||||
@ -7287,12 +7285,13 @@ line: {
|
||||
rts
|
||||
//SEG66 line::@3
|
||||
b3:
|
||||
//SEG67 [37] (byte) line_ydxi::y#0 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y
|
||||
//SEG67 [37] (byte) line_ydxi::y#0 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_ydxi.y
|
||||
//SEG68 [38] (byte) line_ydxi::x#0 ← (byte) line::x0#0 [ line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG69 [39] (byte) line_ydxi::y1#0 ← (byte) line::y1#0 [ line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] )
|
||||
// (byte) line_ydxi::y1#0 = (byte) line::y1#0 // register copy zp ZP_BYTE:5
|
||||
//SEG69 [39] (byte) line_ydxi::y1#0 ← (byte) line::y1#0 [ line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y1
|
||||
//SEG70 [40] (byte) line_ydxi::yd#0 ← (byte) line::yd#1 [ line::xd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 line_ydxi::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 line_ydxi::yd#0 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxi.yd
|
||||
@ -7310,10 +7309,11 @@ line: {
|
||||
jmp breturn
|
||||
//SEG79 line::@2
|
||||
b2:
|
||||
//SEG80 [43] (byte) line::yd#0 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
//SEG80 [43] (byte) line::yd#0 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
sbc y1
|
||||
adc y0
|
||||
sta yd
|
||||
//SEG81 [44] if((byte) line::yd#0>=(byte) line::xd#1) goto line::@6 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
cmp xd
|
||||
@ -7321,8 +7321,9 @@ line: {
|
||||
//SEG82 line::@20
|
||||
//SEG83 [45] (byte) line_xdyd::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_xdyd::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_xdyd::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG84 [46] (byte) line_xdyd::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyd.y
|
||||
//SEG84 [46] (byte) line_xdyd::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_xdyd.y
|
||||
//SEG85 [47] (byte) line_xdyd::x1#0 ← (byte) line::x1#0 [ line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 ] ) -- vbuz1=vbuz2
|
||||
lda x1
|
||||
sta line_xdyd.x1
|
||||
@ -7343,13 +7344,12 @@ line: {
|
||||
jmp breturn
|
||||
//SEG95 line::@6
|
||||
b6:
|
||||
//SEG96 [51] (byte) line_ydxd::y#0 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_ydxd.y
|
||||
//SEG96 [51] (byte) line_ydxd::y#0 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y
|
||||
//SEG97 [52] (byte) line_ydxd::x#0 ← (byte) line::x1#0 [ line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG98 [53] (byte) line_ydxd::y1#0 ← (byte) line::y0#0 [ line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y1
|
||||
//SEG98 [53] (byte) line_ydxd::y1#0 ← (byte) line::y0#0 [ line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] )
|
||||
// (byte) line_ydxd::y1#0 = (byte) line::y0#0 // register copy zp ZP_BYTE:5
|
||||
//SEG99 [54] (byte) line_ydxd::yd#0 ← (byte) line::yd#0 [ line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxd.yd
|
||||
@ -7372,15 +7372,14 @@ line: {
|
||||
sec
|
||||
sbc x1
|
||||
sta xd
|
||||
//SEG110 [58] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@9 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ) -- vbuyy_ge_vbuz1_then_la1
|
||||
cpy y1
|
||||
bcs b9
|
||||
//SEG110 [58] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@9 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ) -- vbuz1_ge_vbuyy_then_la1
|
||||
cpy y0
|
||||
bcc b9
|
||||
//SEG111 line::@23
|
||||
//SEG112 [59] (byte) line::yd#3 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
sty $ff
|
||||
lda y1
|
||||
//SEG112 [59] (byte) line::yd#3 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
tya
|
||||
sec
|
||||
sbc $ff
|
||||
sbc y0
|
||||
sta yd
|
||||
//SEG113 [60] if((byte) line::yd#3>=(byte) line::xd#0) goto line::@10 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
cmp xd
|
||||
@ -7388,9 +7387,8 @@ line: {
|
||||
//SEG114 line::@24
|
||||
//SEG115 [61] (byte) line_xdyd::x#1 ← (byte) line::x1#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_xdyd::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_xdyd::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG116 [62] (byte) line_xdyd::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_xdyd.y
|
||||
//SEG116 [62] (byte) line_xdyd::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyd.y
|
||||
//SEG117 [63] (byte) line_xdyd::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ) -- vbuz1=vbuz2
|
||||
lda x0
|
||||
sta line_xdyd.x1
|
||||
@ -7411,12 +7409,13 @@ line: {
|
||||
jmp breturn
|
||||
//SEG127 line::@10
|
||||
b10:
|
||||
//SEG128 [67] (byte) line_ydxd::y#1 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y
|
||||
//SEG128 [67] (byte) line_ydxd::y#1 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y0
|
||||
sta line_ydxd.y
|
||||
//SEG129 [68] (byte) line_ydxd::x#1 ← (byte) line::x0#0 [ line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x0
|
||||
//SEG130 [69] (byte) line_ydxd::y1#1 ← (byte) line::y1#0 [ line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] )
|
||||
// (byte) line_ydxd::y1#1 = (byte) line::y1#0 // register copy zp ZP_BYTE:5
|
||||
//SEG130 [69] (byte) line_ydxd::y1#1 ← (byte) line::y1#0 [ line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxd.y1
|
||||
//SEG131 [70] (byte) line_ydxd::yd#1 ← (byte) line::yd#3 [ line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxd.yd
|
||||
@ -7434,10 +7433,11 @@ line: {
|
||||
jmp breturn
|
||||
//SEG140 line::@9
|
||||
b9:
|
||||
//SEG141 [73] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1=vbuyy_minus_vbuz2
|
||||
//SEG141 [73] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1=vbuz2_minus_vbuyy
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
sbc y1
|
||||
adc y0
|
||||
sta yd
|
||||
//SEG142 [74] if((byte) line::yd#10>=(byte) line::xd#0) goto line::@13 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||
cmp xd
|
||||
@ -7445,9 +7445,8 @@ line: {
|
||||
//SEG143 line::@27
|
||||
//SEG144 [75] (byte) line_xdyi::x#1 ← (byte) line::x1#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#10 line_xdyi::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::y1#0 line::xd#0 line::yd#10 line_xdyi::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG145 [76] (byte) line_xdyi::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_xdyi.y
|
||||
//SEG145 [76] (byte) line_xdyi::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_xdyi.y
|
||||
//SEG146 [77] (byte) line_xdyi::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ) -- vbuz1=vbuz2
|
||||
lda x0
|
||||
sta line_xdyi.x1
|
||||
@ -7468,13 +7467,12 @@ line: {
|
||||
jmp breturn
|
||||
//SEG156 line::@13
|
||||
b13:
|
||||
//SEG157 [81] (byte) line_ydxi::y#1 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ) -- vbuz1=vbuz2
|
||||
lda y1
|
||||
sta line_ydxi.y
|
||||
//SEG157 [81] (byte) line_ydxi::y#1 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y
|
||||
//SEG158 [82] (byte) line_ydxi::x#1 ← (byte) line::x1#0 [ line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 ] ) -- vbuxx=vbuz1
|
||||
ldx x1
|
||||
//SEG159 [83] (byte) line_ydxi::y1#1 ← (byte) line::y0#0 [ line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] ) -- vbuz1=vbuyy
|
||||
sty line_ydxi.y1
|
||||
//SEG159 [83] (byte) line_ydxi::y1#1 ← (byte) line::y0#0 [ line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ] )
|
||||
// (byte) line_ydxi::y1#1 = (byte) line::y0#0 // register copy zp ZP_BYTE:5
|
||||
//SEG160 [84] (byte) line_ydxi::yd#1 ← (byte) line::yd#10 [ line::xd#0 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 line_ydxi::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 line_ydxi::yd#1 ] ) -- vbuz1=vbuz2
|
||||
lda yd
|
||||
sta line_ydxi.yd
|
||||
|
@ -81,9 +81,9 @@
|
||||
(byte) line::xd#0 xd zp ZP_BYTE:7 0.7
|
||||
(byte) line::xd#1 xd zp ZP_BYTE:7 0.7
|
||||
(byte) line::y0
|
||||
(byte) line::y0#0 reg byte y 5.952380952380948
|
||||
(byte) line::y0#0 y0 zp ZP_BYTE:5 5.952380952380948
|
||||
(byte) line::y1
|
||||
(byte) line::y1#0 y1 zp ZP_BYTE:5 6.249999999999996
|
||||
(byte) line::y1#0 reg byte y 6.249999999999996
|
||||
(byte) line::yd
|
||||
(byte) line::yd#0 yd zp ZP_BYTE:10 0.8888888888888888
|
||||
(byte) line::yd#1 yd zp ZP_BYTE:10 0.8888888888888888
|
||||
@ -295,7 +295,7 @@
|
||||
zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ]
|
||||
zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 line::x0#0 ]
|
||||
zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 line::x1#0 ]
|
||||
zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line::y1#0 ]
|
||||
zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line::y0#0 ]
|
||||
reg byte x [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ]
|
||||
zp ZP_BYTE:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ]
|
||||
zp ZP_BYTE:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 line::xd#1 line::xd#0 ]
|
||||
@ -308,7 +308,7 @@ reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
zp ZP_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 plot::plotter#0 ]
|
||||
reg byte y [ line::y0#0 ]
|
||||
reg byte y [ line::y1#0 ]
|
||||
zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 line_xdyd::$8 ]
|
||||
reg byte a [ line_ydxi::$8 ]
|
||||
zp ZP_WORD:11 [ plot::plotter_y#0 ]
|
||||
|
@ -38,8 +38,7 @@ plots: {
|
||||
sta i
|
||||
b1:
|
||||
ldx i
|
||||
lda plots_x,x
|
||||
tay
|
||||
ldy plots_x,x
|
||||
lda plots_y,x
|
||||
tax
|
||||
jsr plot
|
||||
|
@ -2174,11 +2174,10 @@ Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0
|
||||
Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word) 64|((word))(const byte*) BITMAP#0/(word/signed word) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) always clobbers reg byte a
|
||||
Statement [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ plot::x#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ plot::y#0 ]
|
||||
Statement [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a
|
||||
Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a
|
||||
Statement [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a
|
||||
Statement [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y
|
||||
@ -2203,7 +2202,6 @@ Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0
|
||||
Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word) 64|((word))(const byte*) BITMAP#0/(word/signed word) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) always clobbers reg byte a
|
||||
Statement [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a
|
||||
Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a
|
||||
Statement [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a
|
||||
@ -2259,15 +2257,15 @@ Uplift attempts [init_plot_tables] 10000/138240 (limiting to 10000)
|
||||
Uplifting [init_plot_tables] best 9841 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:34 [ init_plot_tables::$10 ] zp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Limited combination testing to 10000 combinations of 138240 possible.
|
||||
Uplifting [init_screen] best 9841 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [plot] best 9596 combination reg byte x [ plot::y#0 ] reg byte y [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ]
|
||||
Uplifting [main] best 9596 combination
|
||||
Uplifting [] best 9596 combination
|
||||
Uplifting [plot] best 9396 combination reg byte x [ plot::y#0 ] reg byte y [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ]
|
||||
Uplifting [main] best 9396 combination
|
||||
Uplifting [] best 9396 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
|
||||
Uplifting [plots] best 9596 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
|
||||
Uplifting [plots] best 9396 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$10 ]
|
||||
Uplifting [init_plot_tables] best 9536 combination reg byte a [ init_plot_tables::$10 ]
|
||||
Uplifting [init_plot_tables] best 9336 combination reg byte a [ init_plot_tables::$10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 9536 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 9336 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] ] with [ zp ZP_BYTE:30 [ init_plot_tables::$6 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] ]
|
||||
@ -2382,8 +2380,7 @@ plots: {
|
||||
b1:
|
||||
//SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1
|
||||
ldx i
|
||||
lda plots_x,x
|
||||
tay
|
||||
ldy plots_x,x
|
||||
//SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1
|
||||
ldx i
|
||||
lda plots_y,x
|
||||
@ -2874,7 +2871,7 @@ reg byte a [ init_plot_tables::$10 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 7196
|
||||
Score: 6996
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -2953,8 +2950,7 @@ plots: {
|
||||
b1:
|
||||
//SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1
|
||||
ldx i
|
||||
lda plots_x,x
|
||||
tay
|
||||
ldy plots_x,x
|
||||
//SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1
|
||||
lda plots_y,x
|
||||
tax
|
||||
|
@ -9,10 +9,10 @@
|
||||
main: {
|
||||
ldx #0
|
||||
b1:
|
||||
stx $ff
|
||||
lda #$c8
|
||||
sec
|
||||
sbc $ff
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #$c8+1
|
||||
sta SCREEN,x
|
||||
txa
|
||||
eor #$ff
|
||||
|
@ -652,10 +652,9 @@ main: {
|
||||
//SEG14 main::@1
|
||||
b1:
|
||||
//SEG15 [6] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:2 [ main::b#2 main::b2#0 ] ) -- vbuz1=vbuc1_minus_vbuz2
|
||||
lda b
|
||||
eor #$ff
|
||||
clc
|
||||
adc #$c8+1
|
||||
lda #$c8
|
||||
sec
|
||||
sbc b
|
||||
sta b2
|
||||
//SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:2 [ main::b#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
|
||||
lda b2
|
||||
@ -770,9 +769,9 @@ Uplift Scope [main] 25.93: zp ZP_BYTE:2 [ main::b#2 main::b#1 ] 22: zp ZP_BYTE:4
|
||||
Uplift Scope [w] 30.25: zp ZP_BYTE:3 [ w::i#2 w::i#1 ] 11: zp ZP_BYTE:8 [ w::b2#0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1036 combination reg byte x [ main::b#2 main::b#1 ] reg byte a [ main::b2#0 ] reg byte a [ main::$1 ] reg byte a [ main::sb#0 ] reg byte a [ main::$3 ]
|
||||
Uplifting [w] best 856 combination reg byte y [ w::i#2 w::i#1 ] reg byte x [ w::b2#0 ]
|
||||
Uplifting [] best 856 combination
|
||||
Uplifting [main] best 1016 combination reg byte x [ main::b#2 main::b#1 ] reg byte a [ main::b2#0 ] reg byte a [ main::$1 ] reg byte a [ main::sb#0 ] reg byte a [ main::$3 ]
|
||||
Uplifting [w] best 836 combination reg byte y [ w::i#2 w::i#1 ] reg byte x [ w::b2#0 ]
|
||||
Uplifting [] best 836 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 Basic Upstart
|
||||
@ -814,10 +813,10 @@ main: {
|
||||
//SEG14 main::@1
|
||||
b1:
|
||||
//SEG15 [6] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:2 [ main::b#2 main::b2#0 ] ) -- vbuaa=vbuc1_minus_vbuxx
|
||||
stx $ff
|
||||
lda #$c8
|
||||
sec
|
||||
sbc $ff
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #$c8+1
|
||||
//SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:2 [ main::b#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta SCREEN,x
|
||||
//SEG17 [8] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:2 [ main::b#2 main::$1 ] ) -- vbsaa=_sbyte_vbuxx
|
||||
@ -970,7 +969,7 @@ reg byte x [ w::b2#0 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 694
|
||||
Score: 674
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -999,10 +998,10 @@ main: {
|
||||
//SEG14 main::@1
|
||||
b1:
|
||||
//SEG15 [6] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:2 [ main::b#2 main::b2#0 ] ) -- vbuaa=vbuc1_minus_vbuxx
|
||||
stx $ff
|
||||
lda #$c8
|
||||
sec
|
||||
sbc $ff
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #$c8+1
|
||||
//SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:2 [ main::b#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta SCREEN,x
|
||||
//SEG17 [8] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:2 [ main::b#2 main::$1 ] ) -- vbsaa=_sbyte_vbuxx
|
||||
|
@ -8,7 +8,7 @@
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
[5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
@ -41,7 +41,7 @@ main::@5: scope:[main] from main::@3
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
[21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] )
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@6
|
||||
[23] return [ ] ( main:2 [ ] )
|
||||
|
@ -32,7 +32,7 @@ STATEMENTS
|
||||
(byte*) CHARGEN ← (word) 53248
|
||||
(byte*) SCREEN ← (word/signed word) 1024
|
||||
proc (void()) main()
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
(byte*~) main::$0 ← (byte*) CHARGEN + (byte/signed byte/word/signed word) 8
|
||||
(byte*) main::CHAR_A ← (byte*~) main::$0
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50
|
||||
@ -62,7 +62,7 @@ main::@3:
|
||||
(boolean~) main::$7 ← (byte) main::y != (byte/signed byte/word/signed word) 8
|
||||
if((boolean~) main::$7) goto main::@1
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
@ -102,7 +102,7 @@ INITIAL CONTROL FLOW GRAPH
|
||||
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
(byte*~) main::$0 ← (byte*) CHARGEN + (byte/signed byte/word/signed word) 8
|
||||
(byte*) main::CHAR_A ← (byte*~) main::$0
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50
|
||||
@ -141,7 +141,7 @@ main::@5: scope:[main] from main::@3
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@6
|
||||
return
|
||||
@ -169,7 +169,7 @@ main: scope:[main] from @1
|
||||
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
|
||||
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
|
||||
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#2 )
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
(byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte/signed byte/word/signed word) 8
|
||||
(byte*) main::CHAR_A#0 ← (byte*~) main::$0
|
||||
*((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50
|
||||
@ -236,7 +236,7 @@ main::@5: scope:[main] from main::@3
|
||||
main::@6: scope:[main] from main::@5
|
||||
(byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 )
|
||||
*((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@6
|
||||
return
|
||||
@ -494,7 +494,7 @@ FINAL CONTROL FLOW GRAPH
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
[5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
@ -527,7 +527,7 @@ main::@5: scope:[main] from main::@3
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
[21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] )
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@6
|
||||
[23] return [ ] ( main:2 [ ] )
|
||||
@ -641,7 +641,7 @@ main: {
|
||||
.label x = 6
|
||||
.label y = 2
|
||||
.label c = 7
|
||||
//SEG9 asm { sei }
|
||||
//SEG9 asm { sei }
|
||||
sei
|
||||
//SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -750,7 +750,7 @@ main: {
|
||||
//SEG47 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG48 asm { cli }
|
||||
//SEG48 asm { cli }
|
||||
cli
|
||||
jmp breturn
|
||||
//SEG49 main::@return
|
||||
@ -824,7 +824,7 @@ main: {
|
||||
.label bits = 3
|
||||
.label sc = 4
|
||||
.label y = 2
|
||||
//SEG9 asm { sei }
|
||||
//SEG9 asm { sei }
|
||||
sei
|
||||
//SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -927,7 +927,7 @@ main: {
|
||||
//SEG47 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG48 asm { cli }
|
||||
//SEG48 asm { cli }
|
||||
cli
|
||||
jmp breturn
|
||||
//SEG49 main::@return
|
||||
@ -1043,7 +1043,7 @@ main: {
|
||||
.label bits = 3
|
||||
.label sc = 4
|
||||
.label y = 2
|
||||
//SEG9 asm { sei }
|
||||
//SEG9 asm { sei }
|
||||
sei
|
||||
//SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -1129,7 +1129,7 @@ main: {
|
||||
//SEG47 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG48 asm { cli }
|
||||
//SEG48 asm { cli }
|
||||
cli
|
||||
//SEG49 main::@return
|
||||
//SEG50 [23] return [ ] ( main:2 [ ] )
|
||||
|
@ -23,8 +23,7 @@ test_sbytes: {
|
||||
.const be = -bd
|
||||
lda #0
|
||||
sta assert_sbyte.c
|
||||
lda #bb
|
||||
tax
|
||||
ldx #bb
|
||||
lda #<msg
|
||||
sta assert_sbyte.msg
|
||||
lda #>msg
|
||||
@ -32,8 +31,7 @@ test_sbytes: {
|
||||
jsr assert_sbyte
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
lda #bc
|
||||
tax
|
||||
ldx #bc
|
||||
lda #<msg1
|
||||
sta assert_sbyte.msg
|
||||
lda #>msg1
|
||||
@ -41,8 +39,7 @@ test_sbytes: {
|
||||
jsr assert_sbyte
|
||||
lda #-2
|
||||
sta assert_sbyte.c
|
||||
lda #bd
|
||||
tax
|
||||
ldx #bd
|
||||
lda #<msg2
|
||||
sta assert_sbyte.msg
|
||||
lda #>msg2
|
||||
@ -50,8 +47,7 @@ test_sbytes: {
|
||||
jsr assert_sbyte
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
lda #be
|
||||
tax
|
||||
ldx #be
|
||||
lda #<msg3
|
||||
sta assert_sbyte.msg
|
||||
lda #>msg3
|
||||
@ -59,8 +55,7 @@ test_sbytes: {
|
||||
jsr assert_sbyte
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
lda #bf
|
||||
tax
|
||||
ldx #bf
|
||||
lda #<msg4
|
||||
sta assert_sbyte.msg
|
||||
lda #>msg4
|
||||
|
@ -2982,15 +2982,15 @@ Uplifting [] best 2205 combination zp ZP_WORD:6 [ char_cursor#75 char_cursor#65
|
||||
Uplifting [print_str] best 2205 combination zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
Uplifting [print_cls] best 2205 combination zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplifting [assert_byte] best 2193 combination zp ZP_WORD:12 [ assert_byte::msg#3 ] reg byte x [ assert_byte::b#3 ] zp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
Uplifting [assert_sbyte] best 2185 combination zp ZP_WORD:2 [ assert_sbyte::msg#5 ] reg byte x [ assert_sbyte::b#5 ] zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Uplifting [print_ln] best 2185 combination
|
||||
Uplifting [main] best 2185 combination
|
||||
Uplifting [test_bytes] best 2185 combination
|
||||
Uplifting [test_sbytes] best 2185 combination
|
||||
Uplifting [assert_sbyte] best 2175 combination zp ZP_WORD:2 [ assert_sbyte::msg#5 ] reg byte x [ assert_sbyte::b#5 ] zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Uplifting [print_ln] best 2175 combination
|
||||
Uplifting [main] best 2175 combination
|
||||
Uplifting [test_bytes] best 2175 combination
|
||||
Uplifting [test_sbytes] best 2175 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
Uplifting [assert_byte] best 2185 combination zp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
Uplifting [assert_byte] best 2175 combination zp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Uplifting [assert_sbyte] best 2185 combination zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Uplifting [assert_sbyte] best 2175 combination zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 ] ] with [ zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] ] with [ zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ assert_sbyte::c#5 ] ] with [ zp ZP_BYTE:15 [ assert_byte::c#3 ] ]
|
||||
@ -3071,8 +3071,7 @@ test_sbytes: {
|
||||
lda #0
|
||||
sta assert_sbyte.c
|
||||
//SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bb
|
||||
tax
|
||||
ldx #bb
|
||||
//SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg
|
||||
sta assert_sbyte.msg
|
||||
@ -3091,8 +3090,7 @@ test_sbytes: {
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
//SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bc
|
||||
tax
|
||||
ldx #bc
|
||||
//SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_sbyte.msg
|
||||
@ -3111,8 +3109,7 @@ test_sbytes: {
|
||||
lda #-2
|
||||
sta assert_sbyte.c
|
||||
//SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bd
|
||||
tax
|
||||
ldx #bd
|
||||
//SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_sbyte.msg
|
||||
@ -3131,8 +3128,7 @@ test_sbytes: {
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
//SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #be
|
||||
tax
|
||||
ldx #be
|
||||
//SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg3
|
||||
sta assert_sbyte.msg
|
||||
@ -3151,8 +3147,7 @@ test_sbytes: {
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
//SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bf
|
||||
tax
|
||||
ldx #bf
|
||||
//SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg4
|
||||
sta assert_sbyte.msg
|
||||
@ -3785,7 +3780,7 @@ reg byte x [ assert_byte::b#3 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 1868
|
||||
Score: 1858
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -3839,8 +3834,7 @@ test_sbytes: {
|
||||
lda #0
|
||||
sta assert_sbyte.c
|
||||
//SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bb
|
||||
tax
|
||||
ldx #bb
|
||||
//SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg
|
||||
sta assert_sbyte.msg
|
||||
@ -3855,8 +3849,7 @@ test_sbytes: {
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
//SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bc
|
||||
tax
|
||||
ldx #bc
|
||||
//SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_sbyte.msg
|
||||
@ -3871,8 +3864,7 @@ test_sbytes: {
|
||||
lda #-2
|
||||
sta assert_sbyte.c
|
||||
//SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bd
|
||||
tax
|
||||
ldx #bd
|
||||
//SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_sbyte.msg
|
||||
@ -3887,8 +3879,7 @@ test_sbytes: {
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
//SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #be
|
||||
tax
|
||||
ldx #be
|
||||
//SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg3
|
||||
sta assert_sbyte.msg
|
||||
@ -3903,8 +3894,7 @@ test_sbytes: {
|
||||
lda #2
|
||||
sta assert_sbyte.c
|
||||
//SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1
|
||||
lda #bf
|
||||
tax
|
||||
ldx #bf
|
||||
//SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1
|
||||
lda #<msg4
|
||||
sta assert_sbyte.msg
|
||||
|
@ -8,7 +8,7 @@
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
[5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
@ -78,7 +78,7 @@ main::@5: scope:[main] from main::@10 main::@4
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@5
|
||||
[52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] )
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@11 main::@6
|
||||
[54] (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] )
|
||||
|
@ -53,7 +53,7 @@ STATEMENTS
|
||||
(byte*) CHARSET4 ← (word/signed word) 10240
|
||||
(byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
|
||||
proc (void()) main()
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50
|
||||
(byte*) main::chargen ← (byte*) CHARGEN
|
||||
(byte*) main::charset4 ← (byte*) CHARSET4
|
||||
@ -125,7 +125,7 @@ main::@5:
|
||||
(boolean~) main::$39 ← (byte*) main::chargen < (byte*~) main::$38
|
||||
if((boolean~) main::$39) goto main::@1
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
(byte) main::i ← (byte/signed byte/word/signed word) 0
|
||||
main::@6:
|
||||
*((byte*) SCREEN + (byte) main::i) ← (byte) main::i
|
||||
@ -219,7 +219,7 @@ INITIAL CONTROL FLOW GRAPH
|
||||
(byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50
|
||||
(byte*) main::chargen ← (byte*) CHARGEN
|
||||
(byte*) main::charset4 ← (byte*) CHARSET4
|
||||
@ -306,7 +306,7 @@ main::@10: scope:[main] from main::@4
|
||||
to:main::@5
|
||||
main::@11: scope:[main] from main::@5
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
(byte) main::i ← (byte/signed byte/word/signed word) 0
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@11 main::@6
|
||||
@ -355,7 +355,7 @@ main: scope:[main] from @1
|
||||
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#2 )
|
||||
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 )
|
||||
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50
|
||||
(byte*) main::chargen#0 ← (byte*) CHARGEN#1
|
||||
(byte*) main::charset4#0 ← (byte*) CHARSET4#1
|
||||
@ -513,7 +513,7 @@ main::@11: scope:[main] from main::@5
|
||||
(byte*) SCREEN#2 ← phi( main::@5/(byte*) SCREEN#3 )
|
||||
(byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 )
|
||||
*((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@11 main::@6
|
||||
@ -1029,7 +1029,7 @@ FINAL CONTROL FLOW GRAPH
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
[5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
@ -1099,7 +1099,7 @@ main::@5: scope:[main] from main::@10 main::@4
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@5
|
||||
[52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] )
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@11 main::@6
|
||||
[54] (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] )
|
||||
@ -1373,7 +1373,7 @@ main: {
|
||||
.label bits_gen_14 = 8
|
||||
.label bits_gen_15 = 9
|
||||
.label bits_gen_16 = 9
|
||||
//SEG9 asm { sei }
|
||||
//SEG9 asm { sei }
|
||||
sei
|
||||
//SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -1633,7 +1633,7 @@ main: {
|
||||
//SEG78 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG79 asm { cli }
|
||||
//SEG79 asm { cli }
|
||||
cli
|
||||
//SEG80 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6]
|
||||
b6_from_b11:
|
||||
@ -1872,7 +1872,7 @@ main: {
|
||||
.label bits_gen = 6
|
||||
.label charset4 = 4
|
||||
.label chargen = 2
|
||||
//SEG9 asm { sei }
|
||||
//SEG9 asm { sei }
|
||||
sei
|
||||
//SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -2087,7 +2087,7 @@ main: {
|
||||
//SEG78 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG79 asm { cli }
|
||||
//SEG79 asm { cli }
|
||||
cli
|
||||
//SEG80 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6]
|
||||
b6_from_b11:
|
||||
@ -2321,7 +2321,7 @@ main: {
|
||||
.label bits_gen = 6
|
||||
.label charset4 = 4
|
||||
.label chargen = 2
|
||||
//SEG9 asm { sei }
|
||||
//SEG9 asm { sei }
|
||||
sei
|
||||
//SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -2506,7 +2506,7 @@ main: {
|
||||
//SEG78 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG79 asm { cli }
|
||||
//SEG79 asm { cli }
|
||||
cli
|
||||
//SEG80 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6]
|
||||
//SEG81 [54] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- vbuxx=vbuc1
|
||||
|
@ -8,7 +8,7 @@
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[5] return [ ] ( main:2 [ ] )
|
||||
|
@ -17,7 +17,7 @@ void main() {
|
||||
|
||||
STATEMENTS
|
||||
proc (void()) main()
|
||||
asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
@ -31,7 +31,7 @@ INITIAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
@ -49,7 +49,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
@ -101,7 +101,7 @@ FINAL CONTROL FLOW GRAPH
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[5] return [ ] ( main:2 [ ] )
|
||||
@ -149,7 +149,7 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
//SEG9 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
lda #'a'
|
||||
ldx #$ff
|
||||
!:
|
||||
@ -167,7 +167,7 @@ main: {
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- } always clobbers reg byte a reg byte x
|
||||
Statement asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- } always clobbers reg byte a reg byte x
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
@ -198,7 +198,7 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
//SEG9 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
lda #'a'
|
||||
ldx #$ff
|
||||
!:
|
||||
@ -255,7 +255,7 @@ Score: 40
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
|
||||
//SEG9 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- }
|
||||
lda #'a'
|
||||
ldx #$ff
|
||||
!:
|
||||
|
@ -447,15 +447,15 @@ 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_vbuz2_word_vbuaa allocation: zp ZP_BYTE:2 [ main::h#4 main::h#1 ] reg byte a [ 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_vbuaa allocation: reg byte a [ main::h#4 main::h#1 ] reg byte a [ 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_vbuxx_word_vbuaa allocation: reg byte x [ main::h#4 main::h#1 ] reg byte a [ 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_vbuyy_word_vbuaa allocation: reg byte y [ main::h#4 main::h#1 ] reg byte a [ 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_vbuz2_word_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuz2=(byte) main::h#4 vbuaa=(byte) main::l#2 ) allocation: zp ZP_BYTE:2 [ main::h#4 main::h#1 ] reg byte a [ 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_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuaa=(byte) main::h#4 ) allocation: reg byte a [ main::h#4 main::h#1 ] reg byte a [ 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_vbuxx_word_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuxx=(byte) main::h#4 vbuaa=(byte) main::l#2 ) allocation: reg byte x [ main::h#4 main::h#1 ] reg byte a [ 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_vbuyy_word_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuyy=(byte) main::h#4 vbuaa=(byte) main::l#2 ) allocation: reg byte y [ main::h#4 main::h#1 ] reg byte a [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ]
|
||||
MISSING FRAGMENTS
|
||||
vwuz1=pbuc1_derefidx_vbuz2_word_vbuaa
|
||||
vwuz1=pbuc1_derefidx_vbuaa_word_vbuaa
|
||||
vwuz1=pbuc1_derefidx_vbuxx_word_vbuaa
|
||||
vwuz1=pbuc1_derefidx_vbuyy_word_vbuaa
|
||||
vwuz1=pbuc1_derefidx_vbuz2_word_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuz2=(byte) main::h#4 vbuaa=(byte) main::l#2 )
|
||||
vwuz1=pbuc1_derefidx_vbuaa_word_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuaa=(byte) main::h#4 )
|
||||
vwuz1=pbuc1_derefidx_vbuxx_word_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuxx=(byte) main::h#4 vbuaa=(byte) main::l#2 )
|
||||
vwuz1=pbuc1_derefidx_vbuyy_word_vbuaa(main:: vwuz1=(word) main::w#0 pbuc1=(const byte[]) main::his#0 vbuyy=(byte) main::h#4 vbuaa=(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 ]
|
||||
|
@ -301,9 +301,9 @@ main: {
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential register analysis [6] if(*(main::msg#0 + main::i#2)!='@') goto main::@2 missing fragment pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 allocation: reg byte a [ main::i#2 main::i#1 ]
|
||||
Potential register analysis [6] if(*(main::msg#0 + main::i#2)!='@') goto main::@2 missing fragment pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1(main:: pbuc1=(const string) main::msg#0 vbuaa=(byte) main::i#2 vbuc2=(byte) '@' la1=(label) main::@2 ) allocation: reg byte a [ main::i#2 main::i#1 ]
|
||||
MISSING FRAGMENTS
|
||||
pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1
|
||||
pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1(main:: pbuc1=(const string) main::msg#0 vbuaa=(byte) main::i#2 vbuc2=(byte) '@' la1=(label) main::@2 )
|
||||
Statement [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
||||
Statement [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
|
@ -586,8 +586,9 @@ main: {
|
||||
sta SCREEN+0
|
||||
//SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 [ cnt#2 cnt2#11 cnt3#11 ] ( main:2 [ cnt#2 cnt2#11 cnt3#11 ] ) -- vbuz1=_inc_vbuz2
|
||||
lda cnt_12
|
||||
clc
|
||||
adc #1
|
||||
sta cnt
|
||||
inc cnt
|
||||
//SEG20 [10] call inccnt param-assignment [ inccnt::return#2 ] ( main:2 [ inccnt::return#2 ] )
|
||||
//SEG21 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt]
|
||||
inccnt_from_b1:
|
||||
@ -620,8 +621,9 @@ inccnt: {
|
||||
.label return_2 = $a
|
||||
//SEG32 [16] (byte) cnt#12 ← ++ (byte) cnt#11 [ cnt#12 cnt2#10 cnt3#10 ] ( main:2::inccnt:5 [ cnt#12 cnt2#10 cnt3#10 ] main:2::inccnt:10 [ cnt#12 cnt2#10 cnt3#10 ] ) -- vbuz1=_inc_vbuz2
|
||||
lda cnt
|
||||
clc
|
||||
adc #1
|
||||
sta cnt_12
|
||||
inc cnt_12
|
||||
//SEG33 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 [ cnt#12 cnt3#10 cnt2#11 ] ( main:2::inccnt:5 [ cnt#12 cnt3#10 cnt2#11 ] main:2::inccnt:10 [ cnt#12 cnt3#10 cnt2#11 ] ) -- vbuz1=_inc_vbuz1
|
||||
inc cnt2
|
||||
//SEG34 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2::inccnt:5 [ cnt#12 cnt2#11 cnt3#11 ] main:2::inccnt:10 [ cnt#12 cnt2#11 cnt3#11 ] ) -- vbuz1=_inc_vbuz1
|
||||
|
@ -349,8 +349,9 @@ main: {
|
||||
sta SCREEN+0
|
||||
//SEG15 [7] (byte) cnt#2 ← ++ (byte) cnt#13 [ cnt#2 ] ( main:2 [ cnt#2 ] ) -- vbuz1=_inc_vbuz2
|
||||
lda cnt_13
|
||||
clc
|
||||
adc #1
|
||||
sta cnt
|
||||
inc cnt
|
||||
//SEG16 [8] call inccnt param-assignment [ cnt#13 ] ( main:2 [ cnt#13 ] )
|
||||
//SEG17 [12] phi from main::@1 to inccnt [phi:main::@1->inccnt]
|
||||
inccnt_from_b1:
|
||||
@ -361,8 +362,9 @@ main: {
|
||||
b2:
|
||||
//SEG20 [9] (byte) cnt#11 ← ++ (byte) cnt#13 [ cnt#11 ] ( main:2 [ cnt#11 ] ) -- vbuz1=_inc_vbuz2
|
||||
lda cnt_13
|
||||
clc
|
||||
adc #1
|
||||
sta cnt_11
|
||||
inc cnt_11
|
||||
//SEG21 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1
|
||||
lda cnt_11
|
||||
sta SCREEN+1
|
||||
@ -376,8 +378,9 @@ main: {
|
||||
inccnt: {
|
||||
//SEG25 [13] (byte) cnt#13 ← ++ (byte) cnt#12 [ cnt#13 ] ( main:2::inccnt:5 [ cnt#13 ] main:2::inccnt:8 [ cnt#13 ] ) -- vbuz1=_inc_vbuz2
|
||||
lda cnt
|
||||
clc
|
||||
adc #1
|
||||
sta cnt_13
|
||||
inc cnt_13
|
||||
jmp breturn
|
||||
//SEG26 inccnt::@return
|
||||
breturn:
|
||||
|
@ -72,7 +72,7 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8
|
||||
[31] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
to:scroll_bit::@7
|
||||
scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
[33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
to:scroll_bit::@2
|
||||
scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7
|
||||
@ -94,7 +94,7 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5
|
||||
to:scroll_bit::@6
|
||||
scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3
|
||||
[44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:scroll_bit::@return
|
||||
scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
|
||||
[46] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
|
@ -159,7 +159,7 @@ proc (void()) scroll_bit()
|
||||
(byte) current_bit ← (byte/word/signed word) 128
|
||||
scroll_bit::@1:
|
||||
(void~) scroll_bit::$6 ← call scroll_hard
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50
|
||||
(byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 40
|
||||
(byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39
|
||||
@ -182,7 +182,7 @@ scroll_bit::@3:
|
||||
(boolean~) scroll_bit::$14 ← (byte) scroll_bit::r != (byte/signed byte/word/signed word) 8
|
||||
if((boolean~) scroll_bit::$14) goto scroll_bit::@2
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
scroll_bit::@return:
|
||||
return
|
||||
endproc // scroll_bit()
|
||||
@ -444,7 +444,7 @@ scroll_bit: scope:[scroll_bit] from
|
||||
to:scroll_bit::@4
|
||||
scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@4
|
||||
(void~) scroll_bit::$6 ← call scroll_hard
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50
|
||||
(byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 40
|
||||
(byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39
|
||||
@ -481,7 +481,7 @@ scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2
|
||||
to:scroll_bit::@3
|
||||
scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3
|
||||
*((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:scroll_bit::@return
|
||||
scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
|
||||
return
|
||||
@ -860,7 +860,7 @@ scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1
|
||||
(byte*) current_chargen#19 ← phi( scroll_bit::@1/(byte*) current_chargen#24 )
|
||||
(byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 )
|
||||
(byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 )
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50
|
||||
(byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word) 40
|
||||
(byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39
|
||||
@ -935,7 +935,7 @@ scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3
|
||||
(byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 )
|
||||
(byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 )
|
||||
*((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:scroll_bit::@return
|
||||
scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
|
||||
(byte*) current_chargen#13 ← phi( scroll_bit::@6/(byte*) current_chargen#20 )
|
||||
@ -2301,7 +2301,7 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8
|
||||
[31] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
to:scroll_bit::@7
|
||||
scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1
|
||||
asm { sei }
|
||||
asm { sei }
|
||||
[33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
to:scroll_bit::@2
|
||||
scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7
|
||||
@ -2323,7 +2323,7 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5
|
||||
to:scroll_bit::@6
|
||||
scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3
|
||||
[44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
asm { cli }
|
||||
asm { cli }
|
||||
to:scroll_bit::@return
|
||||
scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
|
||||
[46] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
@ -2803,7 +2803,7 @@ scroll_bit: {
|
||||
jmp b7
|
||||
//SEG78 scroll_bit::@7
|
||||
b7:
|
||||
//SEG79 asm { sei }
|
||||
//SEG79 asm { sei }
|
||||
sei
|
||||
//SEG80 [33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -2880,7 +2880,7 @@ scroll_bit: {
|
||||
//SEG103 [44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG104 asm { cli }
|
||||
//SEG104 asm { cli }
|
||||
cli
|
||||
jmp breturn
|
||||
//SEG105 scroll_bit::@return
|
||||
@ -3342,7 +3342,7 @@ scroll_bit: {
|
||||
jmp b7
|
||||
//SEG78 scroll_bit::@7
|
||||
b7:
|
||||
//SEG79 asm { sei }
|
||||
//SEG79 asm { sei }
|
||||
sei
|
||||
//SEG80 [33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -3412,7 +3412,7 @@ scroll_bit: {
|
||||
//SEG103 [44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG104 asm { cli }
|
||||
//SEG104 asm { cli }
|
||||
cli
|
||||
jmp breturn
|
||||
//SEG105 scroll_bit::@return
|
||||
@ -3950,7 +3950,7 @@ scroll_bit: {
|
||||
//SEG77 [47] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard]
|
||||
jsr scroll_hard
|
||||
//SEG78 scroll_bit::@7
|
||||
//SEG79 asm { sei }
|
||||
//SEG79 asm { sei }
|
||||
sei
|
||||
//SEG80 [33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$32
|
||||
@ -4009,7 +4009,7 @@ scroll_bit: {
|
||||
//SEG103 [44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
//SEG104 asm { cli }
|
||||
//SEG104 asm { cli }
|
||||
cli
|
||||
//SEG105 scroll_bit::@return
|
||||
//SEG106 [46] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
|
||||
|
@ -354,19 +354,19 @@ 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 ]
|
||||
Potential register analysis [6] if(main::i#2<127) goto main::@2 missing fragment vbsxx_lt_vbuc1_then_la1(main:: vbsxx=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) 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(main:: vbsyy=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) allocation: reg byte y [ main::i#2 main::i#1 ]
|
||||
MISSING FRAGMENTS
|
||||
vbsxx_lt_vbuc1_then_la1
|
||||
vbsyy_lt_vbuc1_then_la1
|
||||
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 ]
|
||||
Potential register analysis [6] if(main::i#2<127) goto main::@2 missing fragment vbsxx_lt_vbuc1_then_la1(main:: vbsxx=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) 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(main:: vbsyy=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 ) allocation: reg byte y [ main::i#2 main::i#1 ]
|
||||
MISSING FRAGMENTS
|
||||
vbsxx_lt_vbuc1_then_la1
|
||||
vbsyy_lt_vbuc1_then_la1
|
||||
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 ,
|
||||
@ -379,12 +379,12 @@ 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
|
||||
vbsyy_lt_vbuc1_then_la1
|
||||
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
|
||||
vbsyy_lt_vbuc1_then_la1(main:: vbsyy=(signed byte) main::i#2 vbuc1=(byte/signed byte/word/signed word) 127 la1=(label) main::@2 )
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 Basic Upstart
|
||||
|
@ -124,7 +124,7 @@ print_char::@return: scope:[print_char] from print_char
|
||||
[59] return [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#10 ] )
|
||||
to:@return
|
||||
getFAC: scope:[getFAC] from main::@13
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
asm { jsr$b1aa sty$fe sta$ff }
|
||||
[61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
|
||||
to:getFAC::@return
|
||||
getFAC::@return: scope:[getFAC] from getFAC
|
||||
@ -135,7 +135,7 @@ addMEMtoFAC: scope:[addMEMtoFAC] from main::@12
|
||||
[64] call prepareMEM param-assignment [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:addMEMtoFAC::@1
|
||||
addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC
|
||||
asm { lda$feldy$ffjsr$b867 }
|
||||
asm { lda$fe ldy$ff jsr$b867 }
|
||||
to:addMEMtoFAC::@return
|
||||
addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1
|
||||
[66] return [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -156,13 +156,13 @@ mulFACbyMEM: scope:[mulFACbyMEM] from main::@11 main::@6
|
||||
[75] call prepareMEM param-assignment [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:mulFACbyMEM::@1
|
||||
mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM
|
||||
asm { lda$feldy$ffjsr$ba28 }
|
||||
asm { lda$fe ldy$ff jsr$ba28 }
|
||||
to:mulFACbyMEM::@return
|
||||
mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1
|
||||
[77] return [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
sinFAC: scope:[sinFAC] from main::@10
|
||||
asm { jsr$e26b }
|
||||
asm { jsr$e26b }
|
||||
to:sinFAC::@return
|
||||
sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
[79] return [ ] ( main:2::sinFAC:22 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -172,7 +172,7 @@ divMEMbyFAC: scope:[divMEMbyFAC] from main::@9
|
||||
[81] call prepareMEM param-assignment [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:divMEMbyFAC::@1
|
||||
divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC
|
||||
asm { lda$feldy$ffjsr$bb0f }
|
||||
asm { lda$fe ldy$ff jsr$bb0f }
|
||||
to:divMEMbyFAC::@return
|
||||
divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1
|
||||
[83] return [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -183,7 +183,7 @@ setFAC: scope:[setFAC] from main main::@1 main::@8
|
||||
[86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:setFAC::@1
|
||||
setFAC::@1: scope:[setFAC] from setFAC
|
||||
asm { ldy$felda$ffjsr$b391 }
|
||||
asm { ldy$fe lda$ff jsr$b391 }
|
||||
to:setFAC::@return
|
||||
setFAC::@return: scope:[setFAC] from setFAC::@1
|
||||
[88] return [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -194,13 +194,13 @@ setMEMtoFAC: scope:[setMEMtoFAC] from main::@4 main::@7
|
||||
[91] call prepareMEM param-assignment [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:setMEMtoFAC::@1
|
||||
setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC
|
||||
asm { ldx$feldy$ffjsr$bbd4 }
|
||||
asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
to:setMEMtoFAC::@return
|
||||
setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1
|
||||
[93] return [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
divFACby10: scope:[divFACby10] from main::@3
|
||||
asm { jsr$bafe }
|
||||
asm { jsr$bafe }
|
||||
to:divFACby10::@return
|
||||
divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
[95] return [ ] ( main:2::divFACby10:7 [ ] )
|
||||
|
@ -474,12 +474,12 @@ endproc // prepareMEM()
|
||||
proc (void()) setFAC((word) setFAC::w)
|
||||
(byte*~) setFAC::$0 ← ((byte*)) (word) setFAC::w
|
||||
(void~) setFAC::$1 ← call prepareMEM (byte*~) setFAC::$0
|
||||
asm { ldy$felda$ffjsr$b391 }
|
||||
asm { ldy$fe lda$ff jsr$b391 }
|
||||
setFAC::@return:
|
||||
return
|
||||
endproc // setFAC()
|
||||
proc (word()) getFAC()
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
asm { jsr$b1aa sty$fe sta$ff }
|
||||
(word) getFAC::w ← { *((byte*) memHi), *((byte*) memLo) }
|
||||
(word) getFAC::return ← (word) getFAC::w
|
||||
goto getFAC::@return
|
||||
@ -488,130 +488,130 @@ getFAC::@return:
|
||||
return (word) getFAC::return
|
||||
endproc // getFAC()
|
||||
proc (void()) setARGtoFAC()
|
||||
asm { jsr$bc0f }
|
||||
asm { jsr$bc0f }
|
||||
setARGtoFAC::@return:
|
||||
return
|
||||
endproc // setARGtoFAC()
|
||||
proc (void()) setFACtoARG()
|
||||
asm { jsr$bbfc }
|
||||
asm { jsr$bbfc }
|
||||
setFACtoARG::@return:
|
||||
return
|
||||
endproc // setFACtoARG()
|
||||
proc (void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
|
||||
(void~) setMEMtoFAC::$0 ← call prepareMEM (byte*) setMEMtoFAC::mem
|
||||
asm { ldx$feldy$ffjsr$bbd4 }
|
||||
asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
setMEMtoFAC::@return:
|
||||
return
|
||||
endproc // setMEMtoFAC()
|
||||
proc (void()) setFACtoMEM((byte*) setFACtoMEM::mem)
|
||||
(void~) setFACtoMEM::$0 ← call prepareMEM (byte*) setFACtoMEM::mem
|
||||
asm { lda$feldy$ffjsr$bba2 }
|
||||
asm { lda$fe ldy$ff jsr$bba2 }
|
||||
setFACtoMEM::@return:
|
||||
return
|
||||
endproc // setFACtoMEM()
|
||||
proc (void()) setFACtoPIhalf()
|
||||
asm { lda#$e0ldy#$e2jsr$bba2 }
|
||||
asm { lda#$e0 ldy#$e2 jsr$bba2 }
|
||||
setFACtoPIhalf::@return:
|
||||
return
|
||||
endproc // setFACtoPIhalf()
|
||||
proc (void()) setFACto2PI()
|
||||
asm { lda#$e5ldy#$e2jsr$bba2 }
|
||||
asm { lda#$e5 ldy#$e2 jsr$bba2 }
|
||||
setFACto2PI::@return:
|
||||
return
|
||||
endproc // setFACto2PI()
|
||||
proc (void()) setARGtoMEM((byte*) setARGtoMEM::mem)
|
||||
(void~) setARGtoMEM::$0 ← call prepareMEM (byte*) setARGtoMEM::mem
|
||||
asm { lda$feldy$ffjsr$ba8c }
|
||||
asm { lda$fe ldy$ff jsr$ba8c }
|
||||
setARGtoMEM::@return:
|
||||
return
|
||||
endproc // setARGtoMEM()
|
||||
proc (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
|
||||
(void~) addMEMtoFAC::$0 ← call prepareMEM (byte*) addMEMtoFAC::mem
|
||||
asm { lda$feldy$ffjsr$b867 }
|
||||
asm { lda$fe ldy$ff jsr$b867 }
|
||||
addMEMtoFAC::@return:
|
||||
return
|
||||
endproc // addMEMtoFAC()
|
||||
proc (void()) addARGtoFAC()
|
||||
asm { jsr$b86a }
|
||||
asm { jsr$b86a }
|
||||
addARGtoFAC::@return:
|
||||
return
|
||||
endproc // addARGtoFAC()
|
||||
proc (void()) subFACfromMEM((byte*) subFACfromMEM::mem)
|
||||
(void~) subFACfromMEM::$0 ← call prepareMEM (byte*) subFACfromMEM::mem
|
||||
asm { lda$feldy$ffjsr$b850 }
|
||||
asm { lda$fe ldy$ff jsr$b850 }
|
||||
subFACfromMEM::@return:
|
||||
return
|
||||
endproc // subFACfromMEM()
|
||||
proc (void()) subFACfromARG()
|
||||
asm { jsr$b853 }
|
||||
asm { jsr$b853 }
|
||||
subFACfromARG::@return:
|
||||
return
|
||||
endproc // subFACfromARG()
|
||||
proc (void()) divMEMbyFAC((byte*) divMEMbyFAC::mem)
|
||||
(void~) divMEMbyFAC::$0 ← call prepareMEM (byte*) divMEMbyFAC::mem
|
||||
asm { lda$feldy$ffjsr$bb0f }
|
||||
asm { lda$fe ldy$ff jsr$bb0f }
|
||||
divMEMbyFAC::@return:
|
||||
return
|
||||
endproc // divMEMbyFAC()
|
||||
proc (void()) mulFACbyMEM((byte*) mulFACbyMEM::mem)
|
||||
(void~) mulFACbyMEM::$0 ← call prepareMEM (byte*) mulFACbyMEM::mem
|
||||
asm { lda$feldy$ffjsr$ba28 }
|
||||
asm { lda$fe ldy$ff jsr$ba28 }
|
||||
mulFACbyMEM::@return:
|
||||
return
|
||||
endproc // mulFACbyMEM()
|
||||
proc (void()) pwrMEMbyFAC((byte*) pwrMEMbyFAC::mem)
|
||||
(void~) pwrMEMbyFAC::$0 ← call prepareMEM (byte*) pwrMEMbyFAC::mem
|
||||
asm { lda$feldy$ffjsr$bf78 }
|
||||
asm { lda$fe ldy$ff jsr$bf78 }
|
||||
pwrMEMbyFAC::@return:
|
||||
return
|
||||
endproc // pwrMEMbyFAC()
|
||||
proc (void()) intFAC()
|
||||
asm { jsr$bccc }
|
||||
asm { jsr$bccc }
|
||||
intFAC::@return:
|
||||
return
|
||||
endproc // intFAC()
|
||||
proc (void()) sinFAC()
|
||||
asm { jsr$e26b }
|
||||
asm { jsr$e26b }
|
||||
sinFAC::@return:
|
||||
return
|
||||
endproc // sinFAC()
|
||||
proc (void()) cosFAC()
|
||||
asm { jsr$e264 }
|
||||
asm { jsr$e264 }
|
||||
cosFAC::@return:
|
||||
return
|
||||
endproc // cosFAC()
|
||||
proc (void()) tanFAC()
|
||||
asm { jsr$e2b4 }
|
||||
asm { jsr$e2b4 }
|
||||
tanFAC::@return:
|
||||
return
|
||||
endproc // tanFAC()
|
||||
proc (void()) atnFAC()
|
||||
asm { jsr$e303 }
|
||||
asm { jsr$e303 }
|
||||
atnFAC::@return:
|
||||
return
|
||||
endproc // atnFAC()
|
||||
proc (void()) sqrFAC()
|
||||
asm { jsr$bf71 }
|
||||
asm { jsr$bf71 }
|
||||
sqrFAC::@return:
|
||||
return
|
||||
endproc // sqrFAC()
|
||||
proc (void()) expFAC()
|
||||
asm { jsr$bfed }
|
||||
asm { jsr$bfed }
|
||||
expFAC::@return:
|
||||
return
|
||||
endproc // expFAC()
|
||||
proc (void()) logFAC()
|
||||
asm { jsr$b9ea }
|
||||
asm { jsr$b9ea }
|
||||
logFAC::@return:
|
||||
return
|
||||
endproc // logFAC()
|
||||
proc (void()) divFACby10()
|
||||
asm { jsr$bafe }
|
||||
asm { jsr$bafe }
|
||||
divFACby10::@return:
|
||||
return
|
||||
endproc // divFACby10()
|
||||
proc (void()) mulFACby10()
|
||||
asm { jsr$bae2 }
|
||||
asm { jsr$bae2 }
|
||||
mulFACby10::@return:
|
||||
return
|
||||
endproc // mulFACby10()
|
||||
@ -960,7 +960,7 @@ prepareMEM::@return: scope:[prepareMEM] from prepareMEM
|
||||
setFAC: scope:[setFAC] from
|
||||
(byte*~) setFAC::$0 ← ((byte*)) (word) setFAC::w
|
||||
(void~) setFAC::$1 ← call prepareMEM (byte*~) setFAC::$0
|
||||
asm { ldy$felda$ffjsr$b391 }
|
||||
asm { ldy$fe lda$ff jsr$b391 }
|
||||
to:setFAC::@return
|
||||
setFAC::@return: scope:[setFAC] from setFAC
|
||||
return
|
||||
@ -968,7 +968,7 @@ setFAC::@return: scope:[setFAC] from setFAC
|
||||
@10: scope:[] from @9
|
||||
to:@11
|
||||
getFAC: scope:[getFAC] from
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
asm { jsr$b1aa sty$fe sta$ff }
|
||||
(word) getFAC::w ← { *((byte*) memHi), *((byte*) memLo) }
|
||||
(word) getFAC::return ← (word) getFAC::w
|
||||
to:getFAC::@return
|
||||
@ -981,7 +981,7 @@ getFAC::@1: scope:[getFAC] from
|
||||
@11: scope:[] from @10
|
||||
to:@12
|
||||
setARGtoFAC: scope:[setARGtoFAC] from
|
||||
asm { jsr$bc0f }
|
||||
asm { jsr$bc0f }
|
||||
to:setARGtoFAC::@return
|
||||
setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC
|
||||
return
|
||||
@ -989,7 +989,7 @@ setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC
|
||||
@12: scope:[] from @11
|
||||
to:@13
|
||||
setFACtoARG: scope:[setFACtoARG] from
|
||||
asm { jsr$bbfc }
|
||||
asm { jsr$bbfc }
|
||||
to:setFACtoARG::@return
|
||||
setFACtoARG::@return: scope:[setFACtoARG] from setFACtoARG
|
||||
return
|
||||
@ -998,7 +998,7 @@ setFACtoARG::@return: scope:[setFACtoARG] from setFACtoARG
|
||||
to:@14
|
||||
setMEMtoFAC: scope:[setMEMtoFAC] from
|
||||
(void~) setMEMtoFAC::$0 ← call prepareMEM (byte*) setMEMtoFAC::mem
|
||||
asm { ldx$feldy$ffjsr$bbd4 }
|
||||
asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
to:setMEMtoFAC::@return
|
||||
setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC
|
||||
return
|
||||
@ -1007,7 +1007,7 @@ setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC
|
||||
to:@15
|
||||
setFACtoMEM: scope:[setFACtoMEM] from
|
||||
(void~) setFACtoMEM::$0 ← call prepareMEM (byte*) setFACtoMEM::mem
|
||||
asm { lda$feldy$ffjsr$bba2 }
|
||||
asm { lda$fe ldy$ff jsr$bba2 }
|
||||
to:setFACtoMEM::@return
|
||||
setFACtoMEM::@return: scope:[setFACtoMEM] from setFACtoMEM
|
||||
return
|
||||
@ -1015,7 +1015,7 @@ setFACtoMEM::@return: scope:[setFACtoMEM] from setFACtoMEM
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
setFACtoPIhalf: scope:[setFACtoPIhalf] from
|
||||
asm { lda#$e0ldy#$e2jsr$bba2 }
|
||||
asm { lda#$e0 ldy#$e2 jsr$bba2 }
|
||||
to:setFACtoPIhalf::@return
|
||||
setFACtoPIhalf::@return: scope:[setFACtoPIhalf] from setFACtoPIhalf
|
||||
return
|
||||
@ -1023,7 +1023,7 @@ setFACtoPIhalf::@return: scope:[setFACtoPIhalf] from setFACtoPIhalf
|
||||
@16: scope:[] from @15
|
||||
to:@17
|
||||
setFACto2PI: scope:[setFACto2PI] from
|
||||
asm { lda#$e5ldy#$e2jsr$bba2 }
|
||||
asm { lda#$e5 ldy#$e2 jsr$bba2 }
|
||||
to:setFACto2PI::@return
|
||||
setFACto2PI::@return: scope:[setFACto2PI] from setFACto2PI
|
||||
return
|
||||
@ -1032,7 +1032,7 @@ setFACto2PI::@return: scope:[setFACto2PI] from setFACto2PI
|
||||
to:@18
|
||||
setARGtoMEM: scope:[setARGtoMEM] from
|
||||
(void~) setARGtoMEM::$0 ← call prepareMEM (byte*) setARGtoMEM::mem
|
||||
asm { lda$feldy$ffjsr$ba8c }
|
||||
asm { lda$fe ldy$ff jsr$ba8c }
|
||||
to:setARGtoMEM::@return
|
||||
setARGtoMEM::@return: scope:[setARGtoMEM] from setARGtoMEM
|
||||
return
|
||||
@ -1041,7 +1041,7 @@ setARGtoMEM::@return: scope:[setARGtoMEM] from setARGtoMEM
|
||||
to:@19
|
||||
addMEMtoFAC: scope:[addMEMtoFAC] from
|
||||
(void~) addMEMtoFAC::$0 ← call prepareMEM (byte*) addMEMtoFAC::mem
|
||||
asm { lda$feldy$ffjsr$b867 }
|
||||
asm { lda$fe ldy$ff jsr$b867 }
|
||||
to:addMEMtoFAC::@return
|
||||
addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC
|
||||
return
|
||||
@ -1049,7 +1049,7 @@ addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC
|
||||
@19: scope:[] from @18
|
||||
to:@20
|
||||
addARGtoFAC: scope:[addARGtoFAC] from
|
||||
asm { jsr$b86a }
|
||||
asm { jsr$b86a }
|
||||
to:addARGtoFAC::@return
|
||||
addARGtoFAC::@return: scope:[addARGtoFAC] from addARGtoFAC
|
||||
return
|
||||
@ -1058,7 +1058,7 @@ addARGtoFAC::@return: scope:[addARGtoFAC] from addARGtoFAC
|
||||
to:@21
|
||||
subFACfromMEM: scope:[subFACfromMEM] from
|
||||
(void~) subFACfromMEM::$0 ← call prepareMEM (byte*) subFACfromMEM::mem
|
||||
asm { lda$feldy$ffjsr$b850 }
|
||||
asm { lda$fe ldy$ff jsr$b850 }
|
||||
to:subFACfromMEM::@return
|
||||
subFACfromMEM::@return: scope:[subFACfromMEM] from subFACfromMEM
|
||||
return
|
||||
@ -1066,7 +1066,7 @@ subFACfromMEM::@return: scope:[subFACfromMEM] from subFACfromMEM
|
||||
@21: scope:[] from @20
|
||||
to:@22
|
||||
subFACfromARG: scope:[subFACfromARG] from
|
||||
asm { jsr$b853 }
|
||||
asm { jsr$b853 }
|
||||
to:subFACfromARG::@return
|
||||
subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG
|
||||
return
|
||||
@ -1075,7 +1075,7 @@ subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG
|
||||
to:@23
|
||||
divMEMbyFAC: scope:[divMEMbyFAC] from
|
||||
(void~) divMEMbyFAC::$0 ← call prepareMEM (byte*) divMEMbyFAC::mem
|
||||
asm { lda$feldy$ffjsr$bb0f }
|
||||
asm { lda$fe ldy$ff jsr$bb0f }
|
||||
to:divMEMbyFAC::@return
|
||||
divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC
|
||||
return
|
||||
@ -1084,7 +1084,7 @@ divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC
|
||||
to:@24
|
||||
mulFACbyMEM: scope:[mulFACbyMEM] from
|
||||
(void~) mulFACbyMEM::$0 ← call prepareMEM (byte*) mulFACbyMEM::mem
|
||||
asm { lda$feldy$ffjsr$ba28 }
|
||||
asm { lda$fe ldy$ff jsr$ba28 }
|
||||
to:mulFACbyMEM::@return
|
||||
mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM
|
||||
return
|
||||
@ -1093,7 +1093,7 @@ mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM
|
||||
to:@25
|
||||
pwrMEMbyFAC: scope:[pwrMEMbyFAC] from
|
||||
(void~) pwrMEMbyFAC::$0 ← call prepareMEM (byte*) pwrMEMbyFAC::mem
|
||||
asm { lda$feldy$ffjsr$bf78 }
|
||||
asm { lda$fe ldy$ff jsr$bf78 }
|
||||
to:pwrMEMbyFAC::@return
|
||||
pwrMEMbyFAC::@return: scope:[pwrMEMbyFAC] from pwrMEMbyFAC
|
||||
return
|
||||
@ -1101,7 +1101,7 @@ pwrMEMbyFAC::@return: scope:[pwrMEMbyFAC] from pwrMEMbyFAC
|
||||
@25: scope:[] from @24
|
||||
to:@26
|
||||
intFAC: scope:[intFAC] from
|
||||
asm { jsr$bccc }
|
||||
asm { jsr$bccc }
|
||||
to:intFAC::@return
|
||||
intFAC::@return: scope:[intFAC] from intFAC
|
||||
return
|
||||
@ -1109,7 +1109,7 @@ intFAC::@return: scope:[intFAC] from intFAC
|
||||
@26: scope:[] from @25
|
||||
to:@27
|
||||
sinFAC: scope:[sinFAC] from
|
||||
asm { jsr$e26b }
|
||||
asm { jsr$e26b }
|
||||
to:sinFAC::@return
|
||||
sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
return
|
||||
@ -1117,7 +1117,7 @@ sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
@27: scope:[] from @26
|
||||
to:@28
|
||||
cosFAC: scope:[cosFAC] from
|
||||
asm { jsr$e264 }
|
||||
asm { jsr$e264 }
|
||||
to:cosFAC::@return
|
||||
cosFAC::@return: scope:[cosFAC] from cosFAC
|
||||
return
|
||||
@ -1125,7 +1125,7 @@ cosFAC::@return: scope:[cosFAC] from cosFAC
|
||||
@28: scope:[] from @27
|
||||
to:@29
|
||||
tanFAC: scope:[tanFAC] from
|
||||
asm { jsr$e2b4 }
|
||||
asm { jsr$e2b4 }
|
||||
to:tanFAC::@return
|
||||
tanFAC::@return: scope:[tanFAC] from tanFAC
|
||||
return
|
||||
@ -1133,7 +1133,7 @@ tanFAC::@return: scope:[tanFAC] from tanFAC
|
||||
@29: scope:[] from @28
|
||||
to:@30
|
||||
atnFAC: scope:[atnFAC] from
|
||||
asm { jsr$e303 }
|
||||
asm { jsr$e303 }
|
||||
to:atnFAC::@return
|
||||
atnFAC::@return: scope:[atnFAC] from atnFAC
|
||||
return
|
||||
@ -1141,7 +1141,7 @@ atnFAC::@return: scope:[atnFAC] from atnFAC
|
||||
@30: scope:[] from @29
|
||||
to:@31
|
||||
sqrFAC: scope:[sqrFAC] from
|
||||
asm { jsr$bf71 }
|
||||
asm { jsr$bf71 }
|
||||
to:sqrFAC::@return
|
||||
sqrFAC::@return: scope:[sqrFAC] from sqrFAC
|
||||
return
|
||||
@ -1149,7 +1149,7 @@ sqrFAC::@return: scope:[sqrFAC] from sqrFAC
|
||||
@31: scope:[] from @30
|
||||
to:@32
|
||||
expFAC: scope:[expFAC] from
|
||||
asm { jsr$bfed }
|
||||
asm { jsr$bfed }
|
||||
to:expFAC::@return
|
||||
expFAC::@return: scope:[expFAC] from expFAC
|
||||
return
|
||||
@ -1157,7 +1157,7 @@ expFAC::@return: scope:[expFAC] from expFAC
|
||||
@32: scope:[] from @31
|
||||
to:@33
|
||||
logFAC: scope:[logFAC] from
|
||||
asm { jsr$b9ea }
|
||||
asm { jsr$b9ea }
|
||||
to:logFAC::@return
|
||||
logFAC::@return: scope:[logFAC] from logFAC
|
||||
return
|
||||
@ -1165,7 +1165,7 @@ logFAC::@return: scope:[logFAC] from logFAC
|
||||
@33: scope:[] from @32
|
||||
to:@34
|
||||
divFACby10: scope:[divFACby10] from
|
||||
asm { jsr$bafe }
|
||||
asm { jsr$bafe }
|
||||
to:divFACby10::@return
|
||||
divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
return
|
||||
@ -1173,7 +1173,7 @@ divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
@34: scope:[] from @33
|
||||
to:@35
|
||||
mulFACby10: scope:[mulFACby10] from
|
||||
asm { jsr$bae2 }
|
||||
asm { jsr$bae2 }
|
||||
to:mulFACby10::@return
|
||||
mulFACby10::@return: scope:[mulFACby10] from mulFACby10
|
||||
return
|
||||
@ -1434,13 +1434,13 @@ setFAC: scope:[setFAC] from main main::@1 main::@8
|
||||
call prepareMEM param-assignment
|
||||
to:setFAC::@1
|
||||
setFAC::@1: scope:[setFAC] from setFAC
|
||||
asm { ldy$felda$ffjsr$b391 }
|
||||
asm { ldy$fe lda$ff jsr$b391 }
|
||||
to:setFAC::@return
|
||||
setFAC::@return: scope:[setFAC] from setFAC::@1
|
||||
return
|
||||
to:@return
|
||||
getFAC: scope:[getFAC] from main::@13
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
asm { jsr$b1aa sty$fe sta$ff }
|
||||
(word) getFAC::w#0 ← { *((byte*) memHi#0), *((byte*) memLo#0) }
|
||||
(word) getFAC::return#0 ← (word) getFAC::w#0
|
||||
to:getFAC::@return
|
||||
@ -1455,7 +1455,7 @@ setMEMtoFAC: scope:[setMEMtoFAC] from main::@4 main::@7
|
||||
call prepareMEM param-assignment
|
||||
to:setMEMtoFAC::@1
|
||||
setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC
|
||||
asm { ldx$feldy$ffjsr$bbd4 }
|
||||
asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
to:setMEMtoFAC::@return
|
||||
setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1
|
||||
return
|
||||
@ -1466,7 +1466,7 @@ addMEMtoFAC: scope:[addMEMtoFAC] from main::@12
|
||||
call prepareMEM param-assignment
|
||||
to:addMEMtoFAC::@1
|
||||
addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC
|
||||
asm { lda$feldy$ffjsr$b867 }
|
||||
asm { lda$fe ldy$ff jsr$b867 }
|
||||
to:addMEMtoFAC::@return
|
||||
addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1
|
||||
return
|
||||
@ -1477,7 +1477,7 @@ divMEMbyFAC: scope:[divMEMbyFAC] from main::@9
|
||||
call prepareMEM param-assignment
|
||||
to:divMEMbyFAC::@1
|
||||
divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC
|
||||
asm { lda$feldy$ffjsr$bb0f }
|
||||
asm { lda$fe ldy$ff jsr$bb0f }
|
||||
to:divMEMbyFAC::@return
|
||||
divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1
|
||||
return
|
||||
@ -1488,19 +1488,19 @@ mulFACbyMEM: scope:[mulFACbyMEM] from main::@11 main::@6
|
||||
call prepareMEM param-assignment
|
||||
to:mulFACbyMEM::@1
|
||||
mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM
|
||||
asm { lda$feldy$ffjsr$ba28 }
|
||||
asm { lda$fe ldy$ff jsr$ba28 }
|
||||
to:mulFACbyMEM::@return
|
||||
mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1
|
||||
return
|
||||
to:@return
|
||||
sinFAC: scope:[sinFAC] from main::@10
|
||||
asm { jsr$e26b }
|
||||
asm { jsr$e26b }
|
||||
to:sinFAC::@return
|
||||
sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
return
|
||||
to:@return
|
||||
divFACby10: scope:[divFACby10] from main::@3
|
||||
asm { jsr$bafe }
|
||||
asm { jsr$bafe }
|
||||
to:divFACby10::@return
|
||||
divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
return
|
||||
@ -2346,7 +2346,7 @@ print_char::@return: scope:[print_char] from print_char
|
||||
[59] return [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#10 ] )
|
||||
to:@return
|
||||
getFAC: scope:[getFAC] from main::@13
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
asm { jsr$b1aa sty$fe sta$ff }
|
||||
[61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
|
||||
to:getFAC::@return
|
||||
getFAC::@return: scope:[getFAC] from getFAC
|
||||
@ -2357,7 +2357,7 @@ addMEMtoFAC: scope:[addMEMtoFAC] from main::@12
|
||||
[64] call prepareMEM param-assignment [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:addMEMtoFAC::@1
|
||||
addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC
|
||||
asm { lda$feldy$ffjsr$b867 }
|
||||
asm { lda$fe ldy$ff jsr$b867 }
|
||||
to:addMEMtoFAC::@return
|
||||
addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1
|
||||
[66] return [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -2378,13 +2378,13 @@ mulFACbyMEM: scope:[mulFACbyMEM] from main::@11 main::@6
|
||||
[75] call prepareMEM param-assignment [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:mulFACbyMEM::@1
|
||||
mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM
|
||||
asm { lda$feldy$ffjsr$ba28 }
|
||||
asm { lda$fe ldy$ff jsr$ba28 }
|
||||
to:mulFACbyMEM::@return
|
||||
mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1
|
||||
[77] return [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
sinFAC: scope:[sinFAC] from main::@10
|
||||
asm { jsr$e26b }
|
||||
asm { jsr$e26b }
|
||||
to:sinFAC::@return
|
||||
sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
[79] return [ ] ( main:2::sinFAC:22 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -2394,7 +2394,7 @@ divMEMbyFAC: scope:[divMEMbyFAC] from main::@9
|
||||
[81] call prepareMEM param-assignment [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:divMEMbyFAC::@1
|
||||
divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC
|
||||
asm { lda$feldy$ffjsr$bb0f }
|
||||
asm { lda$fe ldy$ff jsr$bb0f }
|
||||
to:divMEMbyFAC::@return
|
||||
divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1
|
||||
[83] return [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -2405,7 +2405,7 @@ setFAC: scope:[setFAC] from main main::@1 main::@8
|
||||
[86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:setFAC::@1
|
||||
setFAC::@1: scope:[setFAC] from setFAC
|
||||
asm { ldy$felda$ffjsr$b391 }
|
||||
asm { ldy$fe lda$ff jsr$b391 }
|
||||
to:setFAC::@return
|
||||
setFAC::@return: scope:[setFAC] from setFAC::@1
|
||||
[88] return [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -2416,13 +2416,13 @@ setMEMtoFAC: scope:[setMEMtoFAC] from main::@4 main::@7
|
||||
[91] call prepareMEM param-assignment [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:setMEMtoFAC::@1
|
||||
setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC
|
||||
asm { ldx$feldy$ffjsr$bbd4 }
|
||||
asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
to:setMEMtoFAC::@return
|
||||
setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1
|
||||
[93] return [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
divFACby10: scope:[divFACby10] from main::@3
|
||||
asm { jsr$bafe }
|
||||
asm { jsr$bafe }
|
||||
to:divFACby10::@return
|
||||
divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
[95] return [ ] ( main:2::divFACby10:7 [ ] )
|
||||
@ -2992,7 +2992,7 @@ print_char: {
|
||||
getFAC: {
|
||||
.label return = $17
|
||||
.label return_2 = $11
|
||||
//SEG127 asm { jsr$b1aasty$festa$ff }
|
||||
//SEG127 asm { jsr$b1aa sty$fe sta$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
@ -3021,7 +3021,7 @@ addMEMtoFAC: {
|
||||
jmp b1
|
||||
//SEG135 addMEMtoFAC::@1
|
||||
b1:
|
||||
//SEG136 asm { lda$feldy$ffjsr$b867 }
|
||||
//SEG136 asm { lda$fe ldy$ff jsr$b867 }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $b867
|
||||
@ -3070,7 +3070,7 @@ mulFACbyMEM: {
|
||||
jmp b1
|
||||
//SEG151 mulFACbyMEM::@1
|
||||
b1:
|
||||
//SEG152 asm { lda$feldy$ffjsr$ba28 }
|
||||
//SEG152 asm { lda$fe ldy$ff jsr$ba28 }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $ba28
|
||||
@ -3082,7 +3082,7 @@ mulFACbyMEM: {
|
||||
}
|
||||
//SEG155 sinFAC
|
||||
sinFAC: {
|
||||
//SEG156 asm { jsr$e26b }
|
||||
//SEG156 asm { jsr$e26b }
|
||||
jsr $e26b
|
||||
jmp breturn
|
||||
//SEG157 sinFAC::@return
|
||||
@ -3104,7 +3104,7 @@ divMEMbyFAC: {
|
||||
jmp b1
|
||||
//SEG163 divMEMbyFAC::@1
|
||||
b1:
|
||||
//SEG164 asm { lda$feldy$ffjsr$bb0f }
|
||||
//SEG164 asm { lda$fe ldy$ff jsr$bb0f }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $bb0f
|
||||
@ -3130,7 +3130,7 @@ setFAC: {
|
||||
jmp b1
|
||||
//SEG172 setFAC::@1
|
||||
b1:
|
||||
//SEG173 asm { ldy$felda$ffjsr$b391 }
|
||||
//SEG173 asm { ldy$fe lda$ff jsr$b391 }
|
||||
ldy $fe
|
||||
lda $ff
|
||||
jsr $b391
|
||||
@ -3156,7 +3156,7 @@ setMEMtoFAC: {
|
||||
jmp b1
|
||||
//SEG181 setMEMtoFAC::@1
|
||||
b1:
|
||||
//SEG182 asm { ldx$feldy$ffjsr$bbd4 }
|
||||
//SEG182 asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
ldx $fe
|
||||
ldy $ff
|
||||
jsr $bbd4
|
||||
@ -3168,7 +3168,7 @@ setMEMtoFAC: {
|
||||
}
|
||||
//SEG185 divFACby10
|
||||
divFACby10: {
|
||||
//SEG186 asm { jsr$bafe }
|
||||
//SEG186 asm { jsr$bafe }
|
||||
jsr $bafe
|
||||
jmp breturn
|
||||
//SEG187 divFACby10::@return
|
||||
@ -3192,16 +3192,16 @@ Statement [57] *((byte*) char_cursor#23) ← (byte) print_char::ch#2 [ char_curs
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
||||
Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a
|
||||
Statement asm { lda$feldy$ffjsr$b867 } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$fe ldy$ff jsr$b867 } always clobbers reg byte a reg byte y
|
||||
Statement [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] ) always clobbers reg byte a
|
||||
Statement [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::$1 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::$1 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] ) always clobbers reg byte a
|
||||
Statement [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] ) always clobbers reg byte a
|
||||
Statement asm { lda$feldy$ffjsr$ba28 } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$feldy$ffjsr$bb0f } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$fe ldy$ff jsr$ba28 } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$fe ldy$ff jsr$bb0f } always clobbers reg byte a reg byte y
|
||||
Statement [85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] ) always clobbers reg byte a
|
||||
Statement asm { ldy$felda$ffjsr$b391 } always clobbers reg byte a reg byte y
|
||||
Statement asm { ldy$fe lda$ff jsr$b391 } always clobbers reg byte a reg byte y
|
||||
Statement [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] ) always clobbers reg byte a
|
||||
Statement asm { ldx$feldy$ffjsr$bbd4 } always clobbers reg byte x reg byte y
|
||||
Statement asm { ldx$fe ldy$ff jsr$bbd4 } always clobbers reg byte x reg byte y
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
|
||||
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
|
||||
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
|
||||
@ -3215,16 +3215,16 @@ Statement [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor
|
||||
Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a
|
||||
Statement [57] *((byte*) char_cursor#23) ← (byte) print_char::ch#2 [ char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#23 ] ) always clobbers reg byte y
|
||||
Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a
|
||||
Statement asm { lda$feldy$ffjsr$b867 } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$fe ldy$ff jsr$b867 } always clobbers reg byte a reg byte y
|
||||
Statement [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] ) always clobbers reg byte a
|
||||
Statement [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::$1 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::$1 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] ) always clobbers reg byte a
|
||||
Statement [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] ) always clobbers reg byte a
|
||||
Statement asm { lda$feldy$ffjsr$ba28 } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$feldy$ffjsr$bb0f } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$fe ldy$ff jsr$ba28 } always clobbers reg byte a reg byte y
|
||||
Statement asm { lda$fe ldy$ff jsr$bb0f } always clobbers reg byte a reg byte y
|
||||
Statement [85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] ) always clobbers reg byte a
|
||||
Statement asm { ldy$felda$ffjsr$b391 } always clobbers reg byte a reg byte y
|
||||
Statement asm { ldy$fe lda$ff jsr$b391 } always clobbers reg byte a reg byte y
|
||||
Statement [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] ) always clobbers reg byte a
|
||||
Statement asm { ldx$feldy$ffjsr$bbd4 } always clobbers reg byte x reg byte y
|
||||
Statement asm { ldx$fe ldy$ff jsr$bbd4 } always clobbers reg byte x reg byte y
|
||||
Potential registers zp ZP_BYTE:2 [ main::i#10 main::i#1 ] : zp ZP_BYTE:2 ,
|
||||
Potential registers zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] : zp ZP_WORD:3 ,
|
||||
Potential registers zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x ,
|
||||
@ -3629,7 +3629,7 @@ print_char: {
|
||||
//SEG126 getFAC
|
||||
getFAC: {
|
||||
.label return = 7
|
||||
//SEG127 asm { jsr$b1aasty$festa$ff }
|
||||
//SEG127 asm { jsr$b1aa sty$fe sta$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
@ -3658,7 +3658,7 @@ addMEMtoFAC: {
|
||||
jmp b1
|
||||
//SEG135 addMEMtoFAC::@1
|
||||
b1:
|
||||
//SEG136 asm { lda$feldy$ffjsr$b867 }
|
||||
//SEG136 asm { lda$fe ldy$ff jsr$b867 }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $b867
|
||||
@ -3698,7 +3698,7 @@ mulFACbyMEM: {
|
||||
jmp b1
|
||||
//SEG151 mulFACbyMEM::@1
|
||||
b1:
|
||||
//SEG152 asm { lda$feldy$ffjsr$ba28 }
|
||||
//SEG152 asm { lda$fe ldy$ff jsr$ba28 }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $ba28
|
||||
@ -3710,7 +3710,7 @@ mulFACbyMEM: {
|
||||
}
|
||||
//SEG155 sinFAC
|
||||
sinFAC: {
|
||||
//SEG156 asm { jsr$e26b }
|
||||
//SEG156 asm { jsr$e26b }
|
||||
jsr $e26b
|
||||
jmp breturn
|
||||
//SEG157 sinFAC::@return
|
||||
@ -3732,7 +3732,7 @@ divMEMbyFAC: {
|
||||
jmp b1
|
||||
//SEG163 divMEMbyFAC::@1
|
||||
b1:
|
||||
//SEG164 asm { lda$feldy$ffjsr$bb0f }
|
||||
//SEG164 asm { lda$fe ldy$ff jsr$bb0f }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $bb0f
|
||||
@ -3754,7 +3754,7 @@ setFAC: {
|
||||
jmp b1
|
||||
//SEG172 setFAC::@1
|
||||
b1:
|
||||
//SEG173 asm { ldy$felda$ffjsr$b391 }
|
||||
//SEG173 asm { ldy$fe lda$ff jsr$b391 }
|
||||
ldy $fe
|
||||
lda $ff
|
||||
jsr $b391
|
||||
@ -3777,7 +3777,7 @@ setMEMtoFAC: {
|
||||
jmp b1
|
||||
//SEG181 setMEMtoFAC::@1
|
||||
b1:
|
||||
//SEG182 asm { ldx$feldy$ffjsr$bbd4 }
|
||||
//SEG182 asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
ldx $fe
|
||||
ldy $ff
|
||||
jsr $bbd4
|
||||
@ -3789,7 +3789,7 @@ setMEMtoFAC: {
|
||||
}
|
||||
//SEG185 divFACby10
|
||||
divFACby10: {
|
||||
//SEG186 asm { jsr$bafe }
|
||||
//SEG186 asm { jsr$bafe }
|
||||
jsr $bafe
|
||||
jmp breturn
|
||||
//SEG187 divFACby10::@return
|
||||
@ -4309,7 +4309,7 @@ print_char: {
|
||||
//SEG126 getFAC
|
||||
getFAC: {
|
||||
.label return = 7
|
||||
//SEG127 asm { jsr$b1aasty$festa$ff }
|
||||
//SEG127 asm { jsr$b1aa sty$fe sta$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
@ -4333,7 +4333,7 @@ addMEMtoFAC: {
|
||||
sta prepareMEM.mem+1
|
||||
jsr prepareMEM
|
||||
//SEG135 addMEMtoFAC::@1
|
||||
//SEG136 asm { lda$feldy$ffjsr$b867 }
|
||||
//SEG136 asm { lda$fe ldy$ff jsr$b867 }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $b867
|
||||
@ -4366,7 +4366,7 @@ mulFACbyMEM: {
|
||||
//SEG150 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy
|
||||
jsr prepareMEM
|
||||
//SEG151 mulFACbyMEM::@1
|
||||
//SEG152 asm { lda$feldy$ffjsr$ba28 }
|
||||
//SEG152 asm { lda$fe ldy$ff jsr$ba28 }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $ba28
|
||||
@ -4376,7 +4376,7 @@ mulFACbyMEM: {
|
||||
}
|
||||
//SEG155 sinFAC
|
||||
sinFAC: {
|
||||
//SEG156 asm { jsr$e26b }
|
||||
//SEG156 asm { jsr$e26b }
|
||||
jsr $e26b
|
||||
//SEG157 sinFAC::@return
|
||||
//SEG158 [79] return [ ] ( main:2::sinFAC:22 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
@ -4393,7 +4393,7 @@ divMEMbyFAC: {
|
||||
sta prepareMEM.mem+1
|
||||
jsr prepareMEM
|
||||
//SEG163 divMEMbyFAC::@1
|
||||
//SEG164 asm { lda$feldy$ffjsr$bb0f }
|
||||
//SEG164 asm { lda$fe ldy$ff jsr$bb0f }
|
||||
lda $fe
|
||||
ldy $ff
|
||||
jsr $bb0f
|
||||
@ -4410,7 +4410,7 @@ setFAC: {
|
||||
//SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy
|
||||
jsr prepareMEM
|
||||
//SEG172 setFAC::@1
|
||||
//SEG173 asm { ldy$felda$ffjsr$b391 }
|
||||
//SEG173 asm { ldy$fe lda$ff jsr$b391 }
|
||||
ldy $fe
|
||||
lda $ff
|
||||
jsr $b391
|
||||
@ -4428,7 +4428,7 @@ setMEMtoFAC: {
|
||||
//SEG180 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy
|
||||
jsr prepareMEM
|
||||
//SEG181 setMEMtoFAC::@1
|
||||
//SEG182 asm { ldx$feldy$ffjsr$bbd4 }
|
||||
//SEG182 asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
ldx $fe
|
||||
ldy $ff
|
||||
jsr $bbd4
|
||||
@ -4438,7 +4438,7 @@ setMEMtoFAC: {
|
||||
}
|
||||
//SEG185 divFACby10
|
||||
divFACby10: {
|
||||
//SEG186 asm { jsr$bafe }
|
||||
//SEG186 asm { jsr$bafe }
|
||||
jsr $bafe
|
||||
//SEG187 divFACby10::@return
|
||||
//SEG188 [95] return [ ] ( main:2::divFACby10:7 [ ] )
|
||||
|
@ -93,9 +93,8 @@ anim: {
|
||||
b3:
|
||||
lda j2
|
||||
sec
|
||||
sbc #1
|
||||
sbc #2
|
||||
sta j2
|
||||
dec j2
|
||||
inc j
|
||||
lda j
|
||||
cmp #7
|
||||
@ -408,8 +407,7 @@ gen_sprites: {
|
||||
sta i
|
||||
b1:
|
||||
ldx i
|
||||
lda cml,x
|
||||
tax
|
||||
ldy cml,x
|
||||
lda spr
|
||||
sta gen_chargen_sprite.sprite
|
||||
lda spr+1
|
||||
@ -439,7 +437,7 @@ gen_chargen_sprite: {
|
||||
.label x = 5
|
||||
.label y = 3
|
||||
.label c = 6
|
||||
txa
|
||||
tya
|
||||
sta _0
|
||||
lda #0
|
||||
sta _0+1
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -49,28 +49,27 @@
|
||||
(label) anim::@return
|
||||
(byte) anim::j
|
||||
(byte) anim::j#1 j zp ZP_BYTE:7 151.5
|
||||
(byte) anim::j#2 j zp ZP_BYTE:7 11.222222222222221
|
||||
(byte) anim::j#2 j zp ZP_BYTE:7 11.882352941176471
|
||||
(byte) anim::j2
|
||||
(byte) anim::j2#1 reg byte a 202.0
|
||||
(byte) anim::j2#2 j2 zp ZP_BYTE:6 67.33333333333333
|
||||
(byte) anim::j2#3 j2 zp ZP_BYTE:6 25.25
|
||||
(byte) anim::j2#1 j2 zp ZP_BYTE:6 67.33333333333333
|
||||
(byte) anim::j2#2 j2 zp ZP_BYTE:6 25.25
|
||||
(word) anim::x
|
||||
(word) anim::x#0 x zp ZP_WORD:8 75.75
|
||||
(byte) anim::x_msb
|
||||
(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 12.75
|
||||
(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 13.6
|
||||
(byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 101.0
|
||||
(byte) anim::xidx
|
||||
(byte) anim::xidx#0 xidx zp ZP_BYTE:4 2.0
|
||||
(byte) anim::xidx#1 xidx zp ZP_BYTE:4 202.0
|
||||
(byte) anim::xidx#2 xidx zp ZP_BYTE:4 202.0
|
||||
(byte) anim::xidx#3 xidx zp ZP_BYTE:4 38.125
|
||||
(byte) anim::xidx#5 xidx zp ZP_BYTE:4 33.666666666666664
|
||||
(byte) anim::xidx#5 xidx zp ZP_BYTE:4 37.875
|
||||
(byte) anim::yidx
|
||||
(byte) anim::yidx#0 reg byte y 4.0
|
||||
(byte) anim::yidx#1 reg byte y 202.0
|
||||
(byte) anim::yidx#2 reg byte y 202.0
|
||||
(byte) anim::yidx#3 reg byte y 25.416666666666664
|
||||
(byte) anim::yidx#6 reg byte y 60.599999999999994
|
||||
(byte) anim::yidx#6 reg byte y 75.75
|
||||
(void()) clear_screen()
|
||||
(label) clear_screen::@1
|
||||
(label) clear_screen::@return
|
||||
@ -108,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 reg byte x 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
|
||||
@ -294,11 +293,11 @@
|
||||
(label) sinFAC::@return
|
||||
(byte) sin_idx_x
|
||||
(byte) sin_idx_x#11 sin_idx_x zp ZP_BYTE:2 1.4444444444444446
|
||||
(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.5555555555555556
|
||||
(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.5769230769230769
|
||||
(byte) sin_idx_x#3 sin_idx_x zp ZP_BYTE:2 2.0
|
||||
(byte) sin_idx_y
|
||||
(byte) sin_idx_y#11 sin_idx_y zp ZP_BYTE:3 2.6
|
||||
(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.4838709677419355
|
||||
(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.49999999999999994
|
||||
(byte) sin_idx_y#3 sin_idx_y zp ZP_BYTE:3 2.0
|
||||
(byte) sinlen_x
|
||||
(const byte) sinlen_x#0 sinlen_x = (byte/word/signed word) 221
|
||||
@ -317,7 +316,7 @@ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sinta
|
||||
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 ]
|
||||
zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 gen_chargen_sprite::c#3 ]
|
||||
zp ZP_BYTE:6 [ anim::j2#2 anim::j2#1 gen_chargen_sprite::c#3 ]
|
||||
reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
|
||||
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 ]
|
||||
@ -332,11 +331,10 @@ reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ]
|
||||
reg byte a [ anim::$2 ]
|
||||
reg byte alu [ anim::$3 ]
|
||||
reg byte a [ anim::$5 ]
|
||||
reg byte a [ anim::j2#1 ]
|
||||
reg byte a [ gen_sintab::$24 ]
|
||||
reg byte a [ prepareMEM::$0 ]
|
||||
reg byte a [ prepareMEM::$1 ]
|
||||
reg byte x [ gen_chargen_sprite::ch#0 ]
|
||||
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 ]
|
||||
|
@ -27,15 +27,13 @@ signed_multiply_results_compare: {
|
||||
lda #-$80
|
||||
sta b
|
||||
b2:
|
||||
lda b
|
||||
tax
|
||||
ldx b
|
||||
jsr slow_signed_multiply
|
||||
lda slow_signed_multiply.return
|
||||
sta ms
|
||||
lda slow_signed_multiply.return+1
|
||||
sta ms+1
|
||||
lda a
|
||||
tay
|
||||
ldy a
|
||||
jsr signed_multiply
|
||||
lda ms
|
||||
cmp ma
|
||||
@ -46,8 +44,7 @@ signed_multiply_results_compare: {
|
||||
!:
|
||||
lda #2
|
||||
sta BGCOL
|
||||
lda a
|
||||
tax
|
||||
ldx a
|
||||
lda b
|
||||
sta signed_multiply_error.b
|
||||
lda ms
|
||||
@ -143,8 +140,7 @@ signed_multiply_error: {
|
||||
lda #>str1
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
lda b
|
||||
tax
|
||||
ldx b
|
||||
jsr print_sbyte
|
||||
lda #<str2
|
||||
sta print_str.str
|
||||
@ -247,8 +243,8 @@ signed_multiply: {
|
||||
.label m = 6
|
||||
.label return = 6
|
||||
.label b = 3
|
||||
sty $ff
|
||||
ldx $ff
|
||||
tya
|
||||
tax
|
||||
lda b
|
||||
jsr multiply
|
||||
cpy #0
|
||||
|
@ -268,7 +268,7 @@ multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply
|
||||
[132] (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte) multiply::a#0 ) [ multiply::a#2 multiply::b#2 ] ( 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::a#2 multiply::b#2 ] 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::a#2 multiply::b#2 ] )
|
||||
[133] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( 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::b#2 ] 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::b#2 ] )
|
||||
[134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( 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 ] 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 ] )
|
||||
asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
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 }
|
||||
[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 ] )
|
||||
to:multiply::@return
|
||||
multiply::@return: scope:[multiply] from multiply
|
||||
@ -450,7 +450,7 @@ multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tab
|
||||
[225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] )
|
||||
to:multiply_tables_compare::@return
|
||||
init_multiply_asm: scope:[init_multiply_asm] from main::@2
|
||||
asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
[227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
[228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
[229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
|
@ -513,7 +513,7 @@ proc (word()) multiply((byte) multiply::a , (byte) multiply::b)
|
||||
(byte*) multiply::memB ← (byte/word/signed word) 255
|
||||
*((byte*) multiply::memA) ← (byte) multiply::a
|
||||
*((byte*) multiply::memB) ← (byte) multiply::b
|
||||
asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
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 }
|
||||
(word) multiply::return ← { *((byte*) multiply::memB), *((byte*) multiply::memA) }
|
||||
goto multiply::@return
|
||||
multiply::@return:
|
||||
@ -618,7 +618,7 @@ endproc // slow_signed_multiply()
|
||||
(byte[512]) asm_mul_sqr2_lo ← { fill( 512, 0) }
|
||||
(byte[512]) asm_mul_sqr2_hi ← { fill( 512, 0) }
|
||||
proc (void()) init_multiply_asm()
|
||||
asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
(byte*) init_multiply_asm::mem ← (byte/word/signed word) 255
|
||||
*((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_lo)
|
||||
*((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_hi)
|
||||
@ -1232,7 +1232,7 @@ multiply: scope:[multiply] from
|
||||
(byte*) multiply::memB ← ((byte*)) (byte/word/signed word) 255
|
||||
*((byte*) multiply::memA) ← (byte) multiply::a
|
||||
*((byte*) multiply::memB) ← (byte) multiply::b
|
||||
asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
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 }
|
||||
(word) multiply::return ← { *((byte*) multiply::memB), *((byte*) multiply::memA) }
|
||||
to:multiply::@return
|
||||
multiply::@return: scope:[multiply] from multiply multiply::@1
|
||||
@ -1384,7 +1384,7 @@ slow_signed_multiply::@11: scope:[slow_signed_multiply] from
|
||||
(byte[512]) asm_mul_sqr2_hi ← { fill( 512, 0) }
|
||||
to:@15
|
||||
init_multiply_asm: scope:[init_multiply_asm] from
|
||||
asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
(byte*) init_multiply_asm::mem ← ((byte*)) (byte/word/signed word) 255
|
||||
*((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_lo)
|
||||
*((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_hi)
|
||||
@ -1985,7 +1985,7 @@ multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply
|
||||
(byte*) multiply::memB#0 ← ((byte*)) (byte/word/signed word) 255
|
||||
*((byte*) multiply::memA#0) ← (byte) multiply::a#2
|
||||
*((byte*) multiply::memB#0) ← (byte) multiply::b#2
|
||||
asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
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 }
|
||||
(word) multiply::return#0 ← { *((byte*) multiply::memB#0), *((byte*) multiply::memA#0) }
|
||||
to:multiply::@return
|
||||
multiply::@return: scope:[multiply] from multiply
|
||||
@ -2215,7 +2215,7 @@ slow_signed_multiply::@return: scope:[slow_signed_multiply] from slow_signed_mu
|
||||
(byte[512]) asm_mul_sqr2_hi#0 ← { fill( 512, 0) }
|
||||
to:@20
|
||||
init_multiply_asm: scope:[init_multiply_asm] from main::@2
|
||||
asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
(byte*) init_multiply_asm::mem#0 ← ((byte*)) (byte/word/signed word) 255
|
||||
*((byte*) init_multiply_asm::mem#0) ← *((byte[512]) asm_mul_sqr1_lo#0)
|
||||
*((byte*) init_multiply_asm::mem#0) ← *((byte[512]) asm_mul_sqr1_hi#0)
|
||||
@ -5401,7 +5401,7 @@ multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply
|
||||
[132] (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte) multiply::a#0 ) [ multiply::a#2 multiply::b#2 ] ( 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::a#2 multiply::b#2 ] 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::a#2 multiply::b#2 ] )
|
||||
[133] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( 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::b#2 ] 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::b#2 ] )
|
||||
[134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( 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 ] 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 ] )
|
||||
asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
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 }
|
||||
[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 ] )
|
||||
to:multiply::@return
|
||||
multiply::@return: scope:[multiply] from multiply
|
||||
@ -5583,7 +5583,7 @@ multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tab
|
||||
[225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] )
|
||||
to:multiply_tables_compare::@return
|
||||
init_multiply_asm: scope:[init_multiply_asm] from main::@2
|
||||
asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
[227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
[228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
[229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
@ -7080,7 +7080,7 @@ multiply: {
|
||||
//SEG266 [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( 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 ] 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 ] ) -- _deref_pbuc1=vbuz1
|
||||
lda b
|
||||
sta memB
|
||||
//SEG267 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
//SEG267 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 }
|
||||
lda memA
|
||||
sta sm1+1
|
||||
sta sm3+1
|
||||
@ -7763,7 +7763,7 @@ multiply_tables_compare: {
|
||||
//SEG489 init_multiply_asm
|
||||
init_multiply_asm: {
|
||||
.const mem = $ff
|
||||
//SEG490 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
//SEG490 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
ldx #0
|
||||
txa
|
||||
.byte $c9
|
||||
@ -8132,7 +8132,7 @@ Statement [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (b
|
||||
Statement [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( 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::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) always clobbers reg byte a
|
||||
Statement [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( 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::m#5 signed_multiply::$17 ] ) always clobbers reg byte a
|
||||
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 { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } always clobbers reg byte a reg byte x
|
||||
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
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:56 [ signed_multiply::a#0 ]
|
||||
@ -8168,7 +8168,7 @@ Statement [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_comp
|
||||
Statement [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) always clobbers reg byte a
|
||||
Statement [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a
|
||||
Statement [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) always clobbers reg byte a
|
||||
Statement asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } always clobbers reg byte a reg byte x reg byte y
|
||||
Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a
|
||||
Statement [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a
|
||||
Statement [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a
|
||||
@ -8203,8 +8203,6 @@ Statement [28] (signed word) signed_multiply::return#2 ← (signed word) signed_
|
||||
Statement [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) always clobbers reg byte a
|
||||
@ -8230,7 +8228,7 @@ Statement [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (b
|
||||
Statement [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( 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::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) always clobbers reg byte a
|
||||
Statement [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( 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::m#5 signed_multiply::$17 ] ) always clobbers reg byte a
|
||||
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 { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } always clobbers reg byte a reg byte x
|
||||
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
|
||||
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
|
||||
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
|
||||
@ -8251,7 +8249,7 @@ Statement [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_comp
|
||||
Statement [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) always clobbers reg byte a
|
||||
Statement [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a
|
||||
Statement [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) always clobbers reg byte a
|
||||
Statement asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } always clobbers reg byte a reg byte x reg byte y
|
||||
Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a
|
||||
Statement [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a
|
||||
Statement [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a
|
||||
@ -8363,53 +8361,53 @@ Uplift Scope [print_ln]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope [init_multiply_asm]
|
||||
|
||||
Uplifting [slow_signed_multiply] best 214696 combination 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::i#2 slow_signed_multiply::i#1 ] reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] reg byte x [ slow_signed_multiply::b#0 ] zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ]
|
||||
Uplifting [slow_multiply] best 204396 combination zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] zp ZP_WORD:84 [ slow_multiply::return#2 ] reg byte x [ slow_multiply::b#0 ] zp ZP_BYTE:82 [ slow_multiply::a#0 ]
|
||||
Uplifting [multiply] best 203786 combination reg byte a [ multiply::b#2 multiply::b#1 multiply::b#0 ] reg byte x [ multiply::a#2 multiply::a#1 multiply::a#0 ] zp ZP_WORD:88 [ multiply::return#3 ] zp ZP_WORD:80 [ multiply::return#0 ] zp ZP_WORD:70 [ multiply::return#2 ]
|
||||
Uplifting [slow_signed_multiply] best 214496 combination 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::i#2 slow_signed_multiply::i#1 ] reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] reg byte x [ slow_signed_multiply::b#0 ] zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ]
|
||||
Uplifting [slow_multiply] best 204196 combination zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] zp ZP_WORD:84 [ slow_multiply::return#2 ] reg byte x [ slow_multiply::b#0 ] zp ZP_BYTE:82 [ slow_multiply::a#0 ]
|
||||
Uplifting [multiply] best 203586 combination reg byte a [ multiply::b#2 multiply::b#1 multiply::b#0 ] reg byte x [ multiply::a#2 multiply::a#1 multiply::a#0 ] zp ZP_WORD:88 [ multiply::return#3 ] zp ZP_WORD:80 [ multiply::return#0 ] zp ZP_WORD:70 [ multiply::return#2 ]
|
||||
Uplift attempts [signed_multiply] 10000/16384 (limiting to 10000)
|
||||
Uplifting [signed_multiply] best 203659 combination zp ZP_WORD:58 [ signed_multiply::return#2 ] zp ZP_WORD:78 [ signed_multiply::return#0 ] zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] zp ZP_BYTE:57 [ signed_multiply::b#0 ] reg byte y [ signed_multiply::a#0 ] reg byte a [ signed_multiply::$7 ] reg byte a [ signed_multiply::$16 ] reg byte y [ signed_multiply::$13 ] reg byte a [ signed_multiply::$17 ] zp ZP_BYTE:72 [ signed_multiply::$6 ] reg byte a [ signed_multiply::$12 ]
|
||||
Uplifting [signed_multiply] best 203257 combination zp ZP_WORD:58 [ signed_multiply::return#2 ] zp ZP_WORD:78 [ signed_multiply::return#0 ] zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] zp ZP_BYTE:57 [ signed_multiply::b#0 ] reg byte y [ signed_multiply::a#0 ] reg byte a [ signed_multiply::$7 ] reg byte a [ signed_multiply::$16 ] reg byte y [ signed_multiply::$13 ] reg byte a [ signed_multiply::$17 ] zp ZP_BYTE:72 [ signed_multiply::$6 ] reg byte a [ signed_multiply::$12 ]
|
||||
Limited combination testing to 10000 combinations of 16384 possible.
|
||||
Uplifting [multiply_results_compare] best 203659 combination zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] zp ZP_WORD:90 [ multiply_results_compare::ma#0 ] zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] zp ZP_WORD:86 [ multiply_results_compare::ms#0 ]
|
||||
Uplifting [signed_multiply_results_compare] best 203659 combination zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ]
|
||||
Uplifting [init_multiply] best 203309 combination zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] reg byte a [ init_multiply::$2 ] reg byte a [ init_multiply::$5 ] reg byte a [ init_multiply::$6 ] zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ]
|
||||
Uplifting [] best 203309 combination zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ]
|
||||
Uplifting [multiply_tables_compare] best 203309 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 203309 combination zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ]
|
||||
Uplifting [print_cls] best 203309 combination zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplifting [print_byte] best 203290 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_word] best 203290 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 203290 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 203278 combination reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ]
|
||||
Uplifting [print_char] best 203263 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
Uplifting [multiply_error] best 203257 combination reg byte x [ multiply_error::a#0 ] zp ZP_BYTE:93 [ multiply_error::b#0 ] zp ZP_WORD:94 [ multiply_error::ms#0 ] zp ZP_WORD:96 [ multiply_error::ma#0 ]
|
||||
Uplifting [signed_multiply_error] best 203251 combination reg byte x [ signed_multiply_error::a#0 ] zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] zp ZP_WORD:66 [ signed_multiply_error::ma#0 ]
|
||||
Uplifting [print_ln] best 203251 combination
|
||||
Uplifting [main] best 203251 combination
|
||||
Uplifting [init_multiply_asm] best 203251 combination
|
||||
Uplifting [multiply_results_compare] best 203257 combination zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] zp ZP_WORD:90 [ multiply_results_compare::ma#0 ] zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] zp ZP_WORD:86 [ multiply_results_compare::ms#0 ]
|
||||
Uplifting [signed_multiply_results_compare] best 203257 combination zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ]
|
||||
Uplifting [init_multiply] best 202907 combination zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] reg byte a [ init_multiply::$2 ] reg byte a [ init_multiply::$5 ] reg byte a [ init_multiply::$6 ] zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ]
|
||||
Uplifting [] best 202907 combination zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ]
|
||||
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_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 ]
|
||||
Uplifting [print_char] best 202857 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
Uplifting [multiply_error] best 202851 combination reg byte x [ multiply_error::a#0 ] zp ZP_BYTE:93 [ multiply_error::b#0 ] zp ZP_WORD:94 [ multiply_error::ms#0 ] zp ZP_WORD:96 [ multiply_error::ma#0 ]
|
||||
Uplifting [signed_multiply_error] best 202845 combination reg byte x [ signed_multiply_error::a#0 ] zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] zp ZP_WORD:66 [ signed_multiply_error::ma#0 ]
|
||||
Uplifting [print_ln] best 202845 combination
|
||||
Uplifting [main] best 202845 combination
|
||||
Uplifting [init_multiply_asm] best 202845 combination
|
||||
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 203251 combination zp 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 ]
|
||||
Uplifting [multiply_results_compare] best 203251 combination zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ]
|
||||
Uplifting [multiply_results_compare] best 202845 combination zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ slow_signed_multiply::a#0 ]
|
||||
Uplifting [slow_signed_multiply] best 203251 combination zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ]
|
||||
Uplifting [slow_signed_multiply] best 202845 combination zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:82 [ slow_multiply::a#0 ]
|
||||
Uplifting [slow_multiply] best 203251 combination zp ZP_BYTE:82 [ slow_multiply::a#0 ]
|
||||
Uplifting [slow_multiply] best 202845 combination zp ZP_BYTE:82 [ slow_multiply::a#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ]
|
||||
Uplifting [signed_multiply_results_compare] best 203251 combination zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ]
|
||||
Uplifting [signed_multiply_results_compare] best 202845 combination zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ]
|
||||
Uplifting [multiply_results_compare] best 203251 combination zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ]
|
||||
Uplifting [multiply_results_compare] best 202845 combination zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ]
|
||||
Uplifting [init_multiply] best 203251 combination zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ]
|
||||
Uplifting [init_multiply] best 202845 combination zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ]
|
||||
Uplifting [init_multiply] best 203251 combination zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ]
|
||||
Uplifting [init_multiply] best 202845 combination zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:57 [ signed_multiply::b#0 ]
|
||||
Uplifting [signed_multiply] best 203251 combination zp ZP_BYTE:57 [ signed_multiply::b#0 ]
|
||||
Uplifting [signed_multiply] best 202845 combination zp ZP_BYTE:57 [ signed_multiply::b#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ signed_multiply::$6 ]
|
||||
Uplifting [signed_multiply] best 203251 combination zp ZP_BYTE:72 [ signed_multiply::$6 ]
|
||||
Uplifting [signed_multiply] best 202845 combination zp ZP_BYTE:72 [ signed_multiply::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:63 [ signed_multiply_error::b#0 ]
|
||||
Uplifting [signed_multiply_error] best 203251 combination zp ZP_BYTE:63 [ signed_multiply_error::b#0 ]
|
||||
Uplifting [signed_multiply_error] best 202845 combination zp ZP_BYTE:63 [ signed_multiply_error::b#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ multiply_error::b#0 ]
|
||||
Uplifting [multiply_error] best 203251 combination zp ZP_BYTE:93 [ multiply_error::b#0 ]
|
||||
Uplifting [multiply_error] best 202845 combination zp ZP_BYTE:93 [ multiply_error::b#0 ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ] with [ zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] ]
|
||||
@ -8564,8 +8562,7 @@ signed_multiply_results_compare: {
|
||||
//SEG44 [20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] )
|
||||
// (signed byte) slow_signed_multiply::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2
|
||||
//SEG45 [21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ) -- vbsxx=vbsz1
|
||||
lda b
|
||||
tax
|
||||
ldx b
|
||||
//SEG46 [22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] )
|
||||
jsr slow_signed_multiply
|
||||
//SEG47 [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] )
|
||||
@ -8579,8 +8576,7 @@ signed_multiply_results_compare: {
|
||||
lda slow_signed_multiply.return+1
|
||||
sta ms+1
|
||||
//SEG50 [25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ) -- vbsyy=vbsz1
|
||||
lda a
|
||||
tay
|
||||
ldy a
|
||||
//SEG51 [26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] )
|
||||
// (signed byte) signed_multiply::b#0 = (signed byte) signed_multiply_results_compare::b#2 // register copy zp ZP_BYTE:3
|
||||
//SEG52 [27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] )
|
||||
@ -8607,8 +8603,7 @@ signed_multiply_results_compare: {
|
||||
lda #2
|
||||
sta BGCOL
|
||||
//SEG59 [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) -- vbsxx=vbsz1
|
||||
lda a
|
||||
tax
|
||||
ldx a
|
||||
//SEG60 [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2
|
||||
lda b
|
||||
sta signed_multiply_error.b
|
||||
@ -8799,8 +8794,7 @@ signed_multiply_error: {
|
||||
//SEG121 signed_multiply_error::@3
|
||||
b3:
|
||||
//SEG122 [64] (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#0 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ) -- vbsxx=vbsz1
|
||||
lda b
|
||||
tax
|
||||
ldx b
|
||||
//SEG123 [65] call print_sbyte param-assignment [ 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 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] )
|
||||
//SEG124 [104] phi from signed_multiply_error::@3 to print_sbyte [phi:signed_multiply_error::@3->print_sbyte]
|
||||
print_sbyte_from_b3:
|
||||
@ -9074,8 +9068,8 @@ signed_multiply: {
|
||||
.label return = 6
|
||||
.label b = 3
|
||||
//SEG234 [113] (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#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::a#0 signed_multiply::b#0 multiply::a#0 ] ) -- vbuxx=_byte_vbsyy
|
||||
sty $ff
|
||||
ldx $ff
|
||||
tya
|
||||
tax
|
||||
//SEG235 [114] (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#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::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ) -- vbuaa=_byte_vbsz1
|
||||
lda b
|
||||
//SEG236 [115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 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::a#0 signed_multiply::b#0 multiply::return#0 ] )
|
||||
@ -9154,7 +9148,7 @@ multiply: {
|
||||
stx memA
|
||||
//SEG266 [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( 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 ] 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 ] ) -- _deref_pbuc1=vbuaa
|
||||
sta memB
|
||||
//SEG267 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
//SEG267 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 }
|
||||
lda memA
|
||||
sta sm1+1
|
||||
sta sm3+1
|
||||
@ -9806,7 +9800,7 @@ multiply_tables_compare: {
|
||||
//SEG489 init_multiply_asm
|
||||
init_multiply_asm: {
|
||||
.const mem = $ff
|
||||
//SEG490 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
//SEG490 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
ldx #0
|
||||
txa
|
||||
.byte $c9
|
||||
@ -10850,7 +10844,7 @@ reg byte a [ init_multiply::$6 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 161492
|
||||
Score: 161086
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -10928,8 +10922,7 @@ signed_multiply_results_compare: {
|
||||
//SEG44 [20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] )
|
||||
// (signed byte) slow_signed_multiply::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2
|
||||
//SEG45 [21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ) -- vbsxx=vbsz1
|
||||
lda b
|
||||
tax
|
||||
ldx b
|
||||
//SEG46 [22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] )
|
||||
jsr slow_signed_multiply
|
||||
//SEG47 [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] )
|
||||
@ -10941,8 +10934,7 @@ signed_multiply_results_compare: {
|
||||
lda slow_signed_multiply.return+1
|
||||
sta ms+1
|
||||
//SEG50 [25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ) -- vbsyy=vbsz1
|
||||
lda a
|
||||
tay
|
||||
ldy a
|
||||
//SEG51 [26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] )
|
||||
// (signed byte) signed_multiply::b#0 = (signed byte) signed_multiply_results_compare::b#2 // register copy zp ZP_BYTE:3
|
||||
//SEG52 [27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] )
|
||||
@ -10965,8 +10957,7 @@ signed_multiply_results_compare: {
|
||||
lda #2
|
||||
sta BGCOL
|
||||
//SEG59 [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) -- vbsxx=vbsz1
|
||||
lda a
|
||||
tax
|
||||
ldx a
|
||||
//SEG60 [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2
|
||||
lda b
|
||||
sta signed_multiply_error.b
|
||||
@ -11126,8 +11117,7 @@ signed_multiply_error: {
|
||||
jsr print_str
|
||||
//SEG121 signed_multiply_error::@3
|
||||
//SEG122 [64] (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#0 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ) -- vbsxx=vbsz1
|
||||
lda b
|
||||
tax
|
||||
ldx b
|
||||
//SEG123 [65] call print_sbyte param-assignment [ 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 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] )
|
||||
//SEG124 [104] phi from signed_multiply_error::@3 to print_sbyte [phi:signed_multiply_error::@3->print_sbyte]
|
||||
//SEG125 [104] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:signed_multiply_error::@3->print_sbyte#0] -- register_copy
|
||||
@ -11342,8 +11332,8 @@ signed_multiply: {
|
||||
.label return = 6
|
||||
.label b = 3
|
||||
//SEG234 [113] (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#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::a#0 signed_multiply::b#0 multiply::a#0 ] ) -- vbuxx=_byte_vbsyy
|
||||
sty $ff
|
||||
ldx $ff
|
||||
tya
|
||||
tax
|
||||
//SEG235 [114] (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#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::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ) -- vbuaa=_byte_vbsz1
|
||||
lda b
|
||||
//SEG236 [115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 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::a#0 signed_multiply::b#0 multiply::return#0 ] )
|
||||
@ -11407,7 +11397,7 @@ multiply: {
|
||||
stx memA
|
||||
//SEG266 [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( 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 ] 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 ] ) -- _deref_pbuc1=vbuaa
|
||||
sta memB
|
||||
//SEG267 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB }
|
||||
//SEG267 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 }
|
||||
txa
|
||||
sta sm1+1
|
||||
sta sm3+1
|
||||
@ -11942,7 +11932,7 @@ multiply_tables_compare: {
|
||||
//SEG489 init_multiply_asm
|
||||
init_multiply_asm: {
|
||||
.const mem = $ff
|
||||
//SEG490 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- }
|
||||
//SEG490 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
ldx #0
|
||||
txa
|
||||
.byte $c9
|
||||
|
@ -86,8 +86,7 @@ void anim() {
|
||||
if(yidx>=sinlen_y) {
|
||||
yidx = yidx-sinlen_y;
|
||||
}
|
||||
j2--;
|
||||
j2--;
|
||||
j2 = j2-2;
|
||||
}
|
||||
*SPRITES_XMSB = x_msb;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user