mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-08 17:54:40 +00:00
Implemented asm template usage statistics. Now prefer synthesis over loading.
This commit is contained in:
parent
203af62173
commit
4f30cef2d3
@ -18,8 +18,8 @@ public class AsmFragment {
|
|||||||
/** The name of the fragment used in error messages. */
|
/** The name of the fragment used in error messages. */
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
/** The fragment template ASM code. */
|
/** The fragment template for the ASM code. */
|
||||||
private KickCParser.AsmLinesContext fragmentFile;
|
private AsmFragmentTemplate fragmentTemplate;
|
||||||
|
|
||||||
/** Binding of named values in the fragment to values (constants, variables, ...) . */
|
/** Binding of named values in the fragment to values (constants, variables, ...) . */
|
||||||
private Map<String, Value> bindings;
|
private Map<String, Value> bindings;
|
||||||
@ -31,11 +31,11 @@ public class AsmFragment {
|
|||||||
Program program,
|
Program program,
|
||||||
String name,
|
String name,
|
||||||
ScopeRef codeScopeRef,
|
ScopeRef codeScopeRef,
|
||||||
KickCParser.AsmLinesContext fragmentFile,
|
AsmFragmentTemplate fragmentTemplate,
|
||||||
Map<String, Value> bindings) {
|
Map<String, Value> bindings) {
|
||||||
this.program = program;
|
this.program = program;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.fragmentFile = fragmentFile;
|
this.fragmentTemplate = fragmentTemplate;
|
||||||
this.bindings = bindings;
|
this.bindings = bindings;
|
||||||
this.codeScopeRef = codeScopeRef;
|
this.codeScopeRef = codeScopeRef;
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ public class AsmFragment {
|
|||||||
*/
|
*/
|
||||||
public void generate(AsmProgram asm) {
|
public void generate(AsmProgram asm) {
|
||||||
AsmSequenceGenerator asmSequenceGenerator = new AsmSequenceGenerator(name, this, asm);
|
AsmSequenceGenerator asmSequenceGenerator = new AsmSequenceGenerator(name, this, asm);
|
||||||
asmSequenceGenerator.generate(fragmentFile);
|
asmSequenceGenerator.generate(fragmentTemplate.getBodyAsm());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class AsmSequenceGenerator extends KickCBaseVisitor {
|
private static class AsmSequenceGenerator extends KickCBaseVisitor {
|
||||||
|
@ -2,16 +2,14 @@ package dk.camelot64.kickc.fragment;
|
|||||||
|
|
||||||
import dk.camelot64.kickc.CompileLog;
|
import dk.camelot64.kickc.CompileLog;
|
||||||
import dk.camelot64.kickc.asm.AsmProgram;
|
import dk.camelot64.kickc.asm.AsmProgram;
|
||||||
import dk.camelot64.kickc.parser.KickCLexer;
|
import org.antlr.v4.runtime.CharStream;
|
||||||
import dk.camelot64.kickc.parser.KickCParser;
|
import org.antlr.v4.runtime.CharStreams;
|
||||||
import org.antlr.v4.runtime.*;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.text.NumberFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides fragments from their signature.
|
* Provides fragments from their signature.
|
||||||
@ -21,68 +19,111 @@ import java.util.regex.Pattern;
|
|||||||
*/
|
*/
|
||||||
public class AsmFragmentManager {
|
public class AsmFragmentManager {
|
||||||
|
|
||||||
/** Cache for fragment files. Maps signature to the parsed file. */
|
/** Cache for the best fragment templates. Maps signature to the best fragment template for the signature. */
|
||||||
private static Map<String, KickCParser.AsmLinesContext> fragmentFileCache = new HashMap<>();
|
private static Map<String, AsmFragmentTemplate> bestFragmentCache = new HashMap<>();
|
||||||
|
|
||||||
private static KickCParser.AsmLinesContext UNKNOWN = new KickCParser.AsmLinesContext(null, 0);
|
/** Caches all asm fragment templates for all encountered signatures. */
|
||||||
|
private static Map<String, List<AsmFragmentTemplate>> fragmentTemplateCache = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
/** Usage Statistics for fragment templates. */
|
||||||
|
private static Map<AsmFragmentTemplate, Integer> fragmentTemplateUsage = new HashMap<>();
|
||||||
|
|
||||||
|
/** Special singleton representing that the fragment can not be synthesized or loaded. */
|
||||||
|
private static AsmFragmentTemplate UNKNOWN = new AsmFragmentTemplate("UNKNOWN", null);
|
||||||
|
|
||||||
public static AsmFragment getFragment(AsmFragmentSignature signature, CompileLog log) {
|
public static AsmFragment getFragment(AsmFragmentSignature signature, CompileLog log) {
|
||||||
KickCParser.AsmLinesContext fragmentAsmLines = fragmentFileCache.get(signature.getSignature());
|
AsmFragmentTemplate bestTemplate = bestFragmentCache.get(signature.getSignature());
|
||||||
if (fragmentAsmLines == UNKNOWN) {
|
if (bestTemplate == UNKNOWN) {
|
||||||
if (log.isVerboseFragmentLog()) {
|
if (log.isVerboseFragmentLog()) {
|
||||||
log.append("Unknown fragment " + signature.getSignature());
|
log.append("Unknown fragment " + signature.getSignature());
|
||||||
}
|
}
|
||||||
throw new UnknownFragmentException(signature.toString());
|
throw new UnknownFragmentException(signature.toString());
|
||||||
}
|
}
|
||||||
if (fragmentAsmLines == null) {
|
if (bestTemplate == null) {
|
||||||
AsmFragmentTemplateSynthesizer synthesizer = new AsmFragmentTemplateSynthesizer(signature, log);
|
AsmFragmentTemplateSynthesizer synthesizer = new AsmFragmentTemplateSynthesizer(signature, log);
|
||||||
List<AsmFragmentTemplate> candidates = synthesizer.loadOrSynthesizeFragment(signature.getSignature());
|
List<AsmFragmentTemplate> candidates = synthesizer.loadOrSynthesizeFragment(signature.getSignature());
|
||||||
if (candidates.size() == 0) {
|
if (candidates.size() == 0) {
|
||||||
if (log.isVerboseFragmentLog()) {
|
if (log.isVerboseFragmentLog()) {
|
||||||
log.append("Unknown fragment " + signature.toString());
|
log.append("Unknown fragment " + signature.toString());
|
||||||
}
|
}
|
||||||
fragmentFileCache.put(signature.getSignature(), UNKNOWN);
|
bestFragmentCache.put(signature.getSignature(), UNKNOWN);
|
||||||
throw new UnknownFragmentException(signature.toString());
|
throw new UnknownFragmentException(signature.toString());
|
||||||
|
|
||||||
}
|
}
|
||||||
double minScore = Double.MAX_VALUE;
|
double minScore = Double.MAX_VALUE;
|
||||||
for (AsmFragmentTemplate candidate : candidates) {
|
for (AsmFragmentTemplate candidateTemplate : candidates) {
|
||||||
KickCParser.AsmLinesContext candidateAsmLines =
|
|
||||||
parseFragment(candidate.getBody(), signature.getSignature());
|
|
||||||
AsmFragment candidateFragment = new AsmFragment(
|
AsmFragment candidateFragment = new AsmFragment(
|
||||||
signature.getProgram(),
|
signature.getProgram(),
|
||||||
signature.getSignature(),
|
signature.getSignature(),
|
||||||
signature.getCodeScope(),
|
signature.getCodeScope(),
|
||||||
candidateAsmLines,
|
candidateTemplate,
|
||||||
signature.getBindings());
|
signature.getBindings());
|
||||||
AsmProgram condidateAsm = new AsmProgram();
|
AsmProgram candidateAsm = new AsmProgram();
|
||||||
condidateAsm.startSegment(null, signature.toString());
|
candidateAsm.startSegment(null, signature.toString());
|
||||||
candidateFragment.generate(condidateAsm);
|
candidateFragment.generate(candidateAsm);
|
||||||
double score = condidateAsm.getCycles();
|
double score = candidateAsm.getCycles();
|
||||||
if (score < minScore) {
|
if (score < minScore) {
|
||||||
minScore = score;
|
minScore = score;
|
||||||
fragmentAsmLines = candidateAsmLines;
|
bestTemplate = candidateTemplate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (log.isVerboseFragmentLog()) {
|
if (log.isVerboseFragmentLog()) {
|
||||||
log.append("Found fragment " + signature + " score: " + minScore + " from " + candidates.size() + " candidates");
|
log.append("Found fragment " + signature + " score: " + minScore + " from " + candidates.size() + " candidates");
|
||||||
}
|
}
|
||||||
fragmentFileCache.put(signature.getSignature(), fragmentAsmLines);
|
bestFragmentCache.put(signature.getSignature(), bestTemplate);
|
||||||
}
|
}
|
||||||
|
// Count usages
|
||||||
|
incUsage(bestTemplate);
|
||||||
|
// Return the resulting fragment instance
|
||||||
return new AsmFragment(
|
return new AsmFragment(
|
||||||
signature.getProgram(),
|
signature.getProgram(),
|
||||||
signature.getSignature(),
|
signature.getSignature(),
|
||||||
signature.getCodeScope(),
|
signature.getCodeScope(),
|
||||||
fragmentAsmLines,
|
bestTemplate,
|
||||||
signature.getBindings());
|
signature.getBindings());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count one usage of ASM fragment templates - directly or through synthesis
|
||||||
|
* @param fragmentTemplate The template to increment usage of
|
||||||
|
*/
|
||||||
|
private static void incUsage(AsmFragmentTemplate fragmentTemplate) {
|
||||||
|
Integer usage = fragmentTemplateUsage.get(fragmentTemplate);
|
||||||
|
if (usage == null) {
|
||||||
|
usage = 0;
|
||||||
|
}
|
||||||
|
fragmentTemplateUsage.put(fragmentTemplate, usage + 1);
|
||||||
|
AsmFragmentTemplate subFragment = fragmentTemplate.getSubFragment();
|
||||||
|
if (subFragment != null) {
|
||||||
|
incUsage(subFragment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log the usage of all template fragemnts (both loaded and synthesized).
|
||||||
|
* @param log The compile log to add the output to
|
||||||
|
*/
|
||||||
|
public static void logUsages(CompileLog log) {
|
||||||
|
log.append("ASM FRAGMENT USAGES");
|
||||||
|
|
||||||
|
ArrayList<String> signatures = new ArrayList<>(fragmentTemplateCache.keySet());
|
||||||
|
Collections.sort(signatures);
|
||||||
|
for (String signature : signatures) {
|
||||||
|
List<AsmFragmentTemplate> templates = fragmentTemplateCache.get(signature);
|
||||||
|
for (AsmFragmentTemplate template : templates) {
|
||||||
|
Integer usage = fragmentTemplateUsage.get(template);
|
||||||
|
if(usage==null) usage = 0;
|
||||||
|
log.append(String.format("%8d", usage)+" "+template.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Capable of creating fragments from signatures by loading them or synthesizing them from other smaller fragments.
|
* Capable of creating fragments from signatures by loading them or synthesizing them from other smaller fragments.
|
||||||
* <p>
|
* <p>
|
||||||
* The synthesizer tries a lot of different combinations and keeps track of what has already been attempted.
|
* The synthesizer tries a lot of different combinations and keeps track of what has already been attempted.
|
||||||
*/
|
*/
|
||||||
public static class AsmFragmentTemplateSynthesizer {
|
static class AsmFragmentTemplateSynthesizer {
|
||||||
|
|
||||||
/** Signature of the fragment being synthesized. */
|
/** Signature of the fragment being synthesized. */
|
||||||
private AsmFragmentSignature signature;
|
private AsmFragmentSignature signature;
|
||||||
@ -90,27 +131,16 @@ public class AsmFragmentManager {
|
|||||||
/** The log. */
|
/** The log. */
|
||||||
private CompileLog log;
|
private CompileLog log;
|
||||||
|
|
||||||
/** Caches all asm fragment templates for all encountered signatures. */
|
AsmFragmentTemplateSynthesizer(AsmFragmentSignature signature, CompileLog log) {
|
||||||
private static Map<String, List<AsmFragmentTemplate>> templateCache = new LinkedHashMap<>();
|
|
||||||
|
|
||||||
public AsmFragmentTemplateSynthesizer(AsmFragmentSignature signature, CompileLog log) {
|
|
||||||
this.signature = signature;
|
this.signature = signature;
|
||||||
this.log = log;
|
this.log = log;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<AsmFragmentTemplate> loadOrSynthesizeFragment(String signature) {
|
List<AsmFragmentTemplate> loadOrSynthesizeFragment(String signature) {
|
||||||
if (templateCache.get(signature) != null) {
|
if (fragmentTemplateCache.get(signature) != null) {
|
||||||
return templateCache.get(signature);
|
return fragmentTemplateCache.get(signature);
|
||||||
}
|
}
|
||||||
List<AsmFragmentTemplate> candidates = new ArrayList<>();
|
List<AsmFragmentTemplate> candidates = new ArrayList<>();
|
||||||
// Load the fragment from disk
|
|
||||||
CharStream fragmentCharStream = loadFragment(signature);
|
|
||||||
if (fragmentCharStream != null) {
|
|
||||||
candidates.add(new AsmFragmentTemplate(signature, fragmentCharStream.toString()));
|
|
||||||
if (log.isVerboseFragmentLog()) {
|
|
||||||
log.append("Finding fragment " + this.signature.getSignature() + " - Successfully loaded fragment " + signature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Synthesize the fragment from other fragments
|
// Synthesize the fragment from other fragments
|
||||||
List<AsmFragmentSynthesis> synths = getFragmentSyntheses();
|
List<AsmFragmentSynthesis> synths = getFragmentSyntheses();
|
||||||
for (AsmFragmentSynthesis synth : synths) {
|
for (AsmFragmentSynthesis synth : synths) {
|
||||||
@ -122,156 +152,17 @@ public class AsmFragmentManager {
|
|||||||
candidates.addAll(synthesized);
|
candidates.addAll(synthesized);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
templateCache.put(signature, candidates);
|
// Load the fragment from disk
|
||||||
return candidates;
|
CharStream fragmentCharStream = loadFragment(signature);
|
||||||
}
|
if (fragmentCharStream != null) {
|
||||||
}
|
candidates.add(new AsmFragmentTemplate(signature, fragmentCharStream.toString()));
|
||||||
|
if (log.isVerboseFragmentLog()) {
|
||||||
/**
|
log.append("Finding fragment " + this.signature.getSignature() + " - Successfully loaded fragment " + signature);
|
||||||
* An ASM fragment template usable for generating KickAssembler code for different bindings.
|
|
||||||
* The AsmFragmentTemplateSynthesizer can generate multiple different templates usable for a specific fragment signature.
|
|
||||||
*/
|
|
||||||
public static class AsmFragmentTemplate {
|
|
||||||
|
|
||||||
/** The fragment template signature name. */
|
|
||||||
private String signature;
|
|
||||||
|
|
||||||
/** The fragment template body */
|
|
||||||
private String body;
|
|
||||||
|
|
||||||
/** true if the fragment was loaded from disk. */
|
|
||||||
boolean loaded;
|
|
||||||
|
|
||||||
/** The synthesis that created the fragment. null if the fragment template was loaded. */
|
|
||||||
private AsmFragmentSynthesis synthesis;
|
|
||||||
|
|
||||||
/** The sub fragment template that the synthesis modified to create this. null if the fragment template was loaded. */
|
|
||||||
private AsmFragmentTemplate subFragment;
|
|
||||||
|
|
||||||
public AsmFragmentTemplate(String signature, String body) {
|
|
||||||
this.signature = signature;
|
|
||||||
this.body = body;
|
|
||||||
this.loaded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AsmFragmentTemplate(String signature, String body, AsmFragmentSynthesis synthesis, AsmFragmentTemplate subFragment) {
|
|
||||||
this.signature = signature;
|
|
||||||
this.body = body;
|
|
||||||
this.synthesis = synthesis;
|
|
||||||
this.subFragment = subFragment;
|
|
||||||
this.loaded = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSignature() {
|
|
||||||
return signature;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBody() {
|
|
||||||
return body;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isLoaded() {
|
|
||||||
return loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AsmFragmentSynthesis getSynthesis() {
|
|
||||||
return synthesis;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AsmFragmentTemplate getSubFragment() {
|
|
||||||
return subFragment;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** AsmFragment synthesis mechanism based on matching fragment signature and reusing another fragment with added prefix/postfix and some bind-mappings */
|
|
||||||
private static class AsmFragmentSynthesis {
|
|
||||||
|
|
||||||
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 AsmFragmentSynthesis(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 AsmFragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings) {
|
|
||||||
this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<AsmFragmentTemplate> synthesize(String signature, AsmFragmentTemplateSynthesizer synthesizer) {
|
|
||||||
ArrayList<AsmFragmentTemplate> 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<AsmFragmentTemplate> subFragmentTemplates = synthesizer.loadOrSynthesizeFragment(subSignature);
|
|
||||||
for (AsmFragmentTemplate subFragmentTemplate : subFragmentTemplates) {
|
|
||||||
if (subFragmentTemplate != null) {
|
|
||||||
StringBuilder newFragment = new StringBuilder();
|
|
||||||
if (asmPrefix != null) {
|
|
||||||
newFragment.append(asmPrefix);
|
|
||||||
}
|
|
||||||
String subFragment = subFragmentTemplate.getBody();
|
|
||||||
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(new AsmFragmentTemplate(signature, newFragment.toString(), this, subFragmentTemplate));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fragmentTemplateCache.put(signature, candidates);
|
||||||
return candidates;
|
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -295,34 +186,11 @@ public class AsmFragmentManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.AsmLinesContext parseFragment(String fragmentBody, final String fragmentFileName) {
|
|
||||||
CodePointCharStream fragmentCharStream = CharStreams.fromString(fragmentBody);
|
|
||||||
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 asmFile = kickCParser.asmFile();
|
|
||||||
return asmFile.asmLines();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class UnknownFragmentException extends RuntimeException {
|
public static class UnknownFragmentException extends RuntimeException {
|
||||||
|
|
||||||
private String fragmentSignature;
|
private String fragmentSignature;
|
||||||
|
|
||||||
public UnknownFragmentException(String signature) {
|
UnknownFragmentException(String signature) {
|
||||||
super("Fragment not found " + signature + ".asm");
|
super("Fragment not found " + signature + ".asm");
|
||||||
this.fragmentSignature = signature;
|
this.fragmentSignature = signature;
|
||||||
}
|
}
|
||||||
@ -533,6 +401,7 @@ public class AsmFragmentManager {
|
|||||||
synths.add(new AsmFragmentSynthesis("(.*)=p..([cz].)_(plus|minus|bor|bxor)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null));
|
synths.add(new AsmFragmentSynthesis("(.*)=p..([cz].)_(plus|minus|bor|bxor)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null));
|
||||||
synths.add(new AsmFragmentSynthesis("p..([cz].)=(.*)_(sethi|setlo|plus|minus)_(.*)", null, null, "vwu$1=$2_$3_$4", null, null));
|
synths.add(new AsmFragmentSynthesis("p..([cz].)=(.*)_(sethi|setlo|plus|minus)_(.*)", null, null, "vwu$1=$2_$3_$4", null, null));
|
||||||
synths.add(new AsmFragmentSynthesis("(.*)=p..([cz].)_(sethi|setlo|plus|minus)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null));
|
synths.add(new AsmFragmentSynthesis("(.*)=p..([cz].)_(sethi|setlo|plus|minus)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null));
|
||||||
|
|
||||||
return synths;
|
return synths;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,103 @@
|
|||||||
|
package dk.camelot64.kickc.fragment;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/** AsmFragment synthesis mechanism based on matching fragment signature and reusing another fragment with added prefix/postfix and some bind-mappings */
|
||||||
|
class AsmFragmentSynthesis {
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
AsmFragmentSynthesis(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 AsmFragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings) {
|
||||||
|
this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return sigMatch + (sigAvoid == null ? "" : ("/" + sigAvoid));
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<AsmFragmentTemplate> synthesize(String signature, AsmFragmentManager.AsmFragmentTemplateSynthesizer synthesizer) {
|
||||||
|
ArrayList<AsmFragmentTemplate> 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<AsmFragmentTemplate> subFragmentTemplates = synthesizer.loadOrSynthesizeFragment(subSignature);
|
||||||
|
for (AsmFragmentTemplate subFragmentTemplate : subFragmentTemplates) {
|
||||||
|
if (subFragmentTemplate != null) {
|
||||||
|
StringBuilder newFragment = new StringBuilder();
|
||||||
|
if (asmPrefix != null) {
|
||||||
|
newFragment.append(asmPrefix);
|
||||||
|
}
|
||||||
|
String subFragment = subFragmentTemplate.getBody();
|
||||||
|
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(new AsmFragmentTemplate(signature, newFragment.toString(), this, subFragmentTemplate));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return candidates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSubSignature() {
|
||||||
|
return subSignature;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,127 @@
|
|||||||
|
package dk.camelot64.kickc.fragment;
|
||||||
|
|
||||||
|
import dk.camelot64.kickc.parser.KickCLexer;
|
||||||
|
import dk.camelot64.kickc.parser.KickCParser;
|
||||||
|
import org.antlr.v4.runtime.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An ASM fragment template usable for generating KickAssembler code for different bindings.
|
||||||
|
* The AsmFragmentTemplateSynthesizer can generate multiple different templates usable for a specific fragment signature.
|
||||||
|
*/
|
||||||
|
public class AsmFragmentTemplate {
|
||||||
|
|
||||||
|
/** The fragment template signature name. */
|
||||||
|
private String signature;
|
||||||
|
|
||||||
|
/** The fragment template body */
|
||||||
|
private String body;
|
||||||
|
|
||||||
|
/** The parsed ASM lines. Initially null. Will be non-null, is the template is ever used to generate ASM code. */
|
||||||
|
private KickCParser.AsmLinesContext bodyAsm;
|
||||||
|
|
||||||
|
/** true if the fragment was loaded from disk. */
|
||||||
|
boolean loaded;
|
||||||
|
|
||||||
|
/** The synthesis that created the fragment. null if the fragment template was loaded. */
|
||||||
|
private AsmFragmentSynthesis synthesis;
|
||||||
|
|
||||||
|
/** The sub fragment template that the synthesis modified to create this. null if the fragment template was loaded. */
|
||||||
|
private AsmFragmentTemplate subFragment;
|
||||||
|
|
||||||
|
public AsmFragmentTemplate(String signature, String body) {
|
||||||
|
this.signature = signature;
|
||||||
|
this.body = body;
|
||||||
|
this.loaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
AsmFragmentTemplate(String signature, String body, AsmFragmentSynthesis synthesis, AsmFragmentTemplate subFragment) {
|
||||||
|
this.signature = signature;
|
||||||
|
this.body = body;
|
||||||
|
this.synthesis = synthesis;
|
||||||
|
this.subFragment = subFragment;
|
||||||
|
this.loaded = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an inline ASM fragment template
|
||||||
|
*
|
||||||
|
* @param bodyLines Parsed ASM body
|
||||||
|
*/
|
||||||
|
public AsmFragmentTemplate(KickCParser.AsmLinesContext bodyLines) {
|
||||||
|
this.signature = "--inline--";
|
||||||
|
this.bodyAsm = bodyLines;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSignature() {
|
||||||
|
return signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBody() {
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
public KickCParser.AsmLinesContext getBodyAsm() {
|
||||||
|
if (bodyAsm == null) {
|
||||||
|
bodyAsm = parseBody(body, signature);
|
||||||
|
}
|
||||||
|
return bodyAsm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse an ASM fragment.
|
||||||
|
*
|
||||||
|
* @param fragmentBody The stream containing the fragment syntax
|
||||||
|
* @param fragmentFileName The filename (used in error messages)
|
||||||
|
* @return The parsed fragment ready for generating
|
||||||
|
*/
|
||||||
|
private static KickCParser.AsmLinesContext parseBody(String fragmentBody, final String fragmentFileName) {
|
||||||
|
CodePointCharStream fragmentCharStream = CharStreams.fromString(fragmentBody);
|
||||||
|
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 asmFile = kickCParser.asmFile();
|
||||||
|
return asmFile.asmLines();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isLoaded() {
|
||||||
|
return loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AsmFragmentSynthesis getSynthesis() {
|
||||||
|
return synthesis;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AsmFragmentTemplate getSubFragment() {
|
||||||
|
return subFragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
StringBuilder name = new StringBuilder();
|
||||||
|
name.append(signature);
|
||||||
|
if (synthesis != null) {
|
||||||
|
name.append(" < ");
|
||||||
|
name.append(subFragment.getName());
|
||||||
|
}
|
||||||
|
return name.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
AsmFragmentTemplate that = (AsmFragmentTemplate) o;
|
||||||
|
return getName().equals(that.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return getName().hashCode();
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
lda {z1}
|
lda {z1}
|
||||||
clc
|
clc
|
||||||
adc #<{c1}
|
adc #{c1}
|
||||||
sta {z1}
|
sta {z1}
|
||||||
bcc !+
|
lda {z1}+1
|
||||||
inc {z1}+1
|
adc #0
|
||||||
!:
|
sta {z1}+1
|
@ -1,6 +1,6 @@
|
|||||||
lda {z2}
|
lda {z2}
|
||||||
clc
|
clc
|
||||||
adc #<{c1}
|
adc #{c1}
|
||||||
sta {z1}
|
sta {z1}
|
||||||
lda {z2}+1
|
lda {z2}+1
|
||||||
adc #0
|
adc #0
|
||||||
|
@ -6,7 +6,7 @@ file
|
|||||||
;
|
;
|
||||||
|
|
||||||
asmFile
|
asmFile
|
||||||
: asmLines EOF
|
: bodyAsm EOF
|
||||||
;
|
;
|
||||||
|
|
||||||
importSeq
|
importSeq
|
||||||
@ -58,7 +58,7 @@ stmt
|
|||||||
| 'do' stmt 'while' '(' expr ')' ';' #stmtDoWhile
|
| 'do' stmt 'while' '(' expr ')' ';' #stmtDoWhile
|
||||||
| 'for' '(' forDeclaration? forIteration ')' stmt #stmtFor
|
| 'for' '(' forDeclaration? forIteration ')' stmt #stmtFor
|
||||||
| 'return' expr? ';' #stmtReturn
|
| 'return' expr? ';' #stmtReturn
|
||||||
| 'asm' '{' asmLines '}' #stmtAsm
|
| 'asm' '{' bodyAsm '}' #stmtAsm
|
||||||
;
|
;
|
||||||
|
|
||||||
forDeclaration
|
forDeclaration
|
||||||
@ -109,7 +109,7 @@ parameterList
|
|||||||
: expr (',' expr)*
|
: expr (',' expr)*
|
||||||
;
|
;
|
||||||
|
|
||||||
asmLines
|
bodyAsm
|
||||||
: asmLine*
|
: asmLine*
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
package dk.camelot64.kickc.passes;
|
package dk.camelot64.kickc.passes;
|
||||||
|
|
||||||
import dk.camelot64.kickc.asm.*;
|
import dk.camelot64.kickc.asm.*;
|
||||||
import dk.camelot64.kickc.fragment.AsmFormat;
|
import dk.camelot64.kickc.fragment.*;
|
||||||
import dk.camelot64.kickc.fragment.AsmFragment;
|
|
||||||
import dk.camelot64.kickc.fragment.AsmFragmentManager;
|
|
||||||
import dk.camelot64.kickc.fragment.AsmFragmentSignature;
|
|
||||||
import dk.camelot64.kickc.model.*;
|
import dk.camelot64.kickc.model.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -276,7 +273,7 @@ public class Pass4CodeGeneration {
|
|||||||
} else if (statement instanceof StatementAsm) {
|
} else if (statement instanceof StatementAsm) {
|
||||||
StatementAsm statementAsm = (StatementAsm) statement;
|
StatementAsm statementAsm = (StatementAsm) statement;
|
||||||
HashMap<String, Value> bindings = new HashMap<>();
|
HashMap<String, Value> bindings = new HashMap<>();
|
||||||
AsmFragment asmFragment = new AsmFragment(program, "inline", block.getScope(), statementAsm.getAsmLines(), bindings);
|
AsmFragment asmFragment = new AsmFragment(program, "inline", block.getScope(), new AsmFragmentTemplate(statementAsm.getAsmLines()), bindings);
|
||||||
asmFragment.generate(asm);
|
asmFragment.generate(asm);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Statement not supported " + statement);
|
throw new RuntimeException("Statement not supported " + statement);
|
||||||
|
@ -1,17 +1,23 @@
|
|||||||
package dk.camelot64.kickc.test;
|
package dk.camelot64.kickc.test;
|
||||||
|
|
||||||
|
import dk.camelot64.kickc.CompileLog;
|
||||||
import dk.camelot64.kickc.Compiler;
|
import dk.camelot64.kickc.Compiler;
|
||||||
|
import dk.camelot64.kickc.fragment.AsmFragmentManager;
|
||||||
import dk.camelot64.kickc.model.CompileError;
|
import dk.camelot64.kickc.model.CompileError;
|
||||||
import dk.camelot64.kickc.model.Program;
|
import dk.camelot64.kickc.model.Program;
|
||||||
import junit.framework.TestCase;
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
|
||||||
|
import static junit.framework.TestCase.fail;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compile a number of source files and compare the resulting assembler with expected output
|
* Compile a number of source files and compare the resulting assembler with expected output
|
||||||
*/
|
*/
|
||||||
public class TestPrograms extends TestCase {
|
public class TestPrograms {
|
||||||
|
|
||||||
ReferenceHelper helper;
|
ReferenceHelper helper;
|
||||||
|
|
||||||
@ -22,351 +28,444 @@ public class TestPrograms extends TestCase {
|
|||||||
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
|
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void tearDown() throws Exception {
|
||||||
|
CompileLog log = new CompileLog();
|
||||||
|
log.setSysOut(true);
|
||||||
|
AsmFragmentManager.logUsages(log);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testMemAlignment() throws IOException, URISyntaxException {
|
public void testMemAlignment() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("mem-alignment");
|
compileAndCompare("mem-alignment");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testMultiply() throws IOException, URISyntaxException {
|
public void testMultiply() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("test-multiply");
|
compileAndCompare("test-multiply");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testArraysInit() throws IOException, URISyntaxException {
|
public void testArraysInit() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("arrays-init");
|
compileAndCompare("arrays-init");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConstantStringConcat() throws IOException, URISyntaxException {
|
public void testConstantStringConcat() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("constant-string-concat");
|
compileAndCompare("constant-string-concat");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTrueInlineWords() throws IOException, URISyntaxException {
|
public void testTrueInlineWords() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("true-inline-words");
|
compileAndCompare("true-inline-words");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIncrementInArray() throws IOException, URISyntaxException {
|
public void testIncrementInArray() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("incrementinarray");
|
compileAndCompare("incrementinarray");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testForIncrementAssign() throws IOException, URISyntaxException {
|
public void testForIncrementAssign() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("forincrementassign");
|
compileAndCompare("forincrementassign");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConstants() throws IOException, URISyntaxException {
|
public void testConstants() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("constants");
|
compileAndCompare("constants");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInlineAssignment() throws IOException, URISyntaxException {
|
public void testInlineAssignment() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("inline-assignment");
|
compileAndCompare("inline-assignment");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInlineWord() throws IOException, URISyntaxException {
|
public void testInlineWord() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("inline-word");
|
compileAndCompare("inline-word");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSignedWords() throws IOException, URISyntaxException {
|
public void testSignedWords() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("signed-words");
|
compileAndCompare("signed-words");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSinusSprites() throws IOException, URISyntaxException {
|
public void testSinusSprites() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("sinus-sprites");
|
compileAndCompare("sinus-sprites");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConstantAbsMin() throws IOException, URISyntaxException {
|
public void testConstantAbsMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("constabsmin");
|
compileAndCompare("constabsmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testBasicFloats() throws IOException, URISyntaxException {
|
public void testBasicFloats() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("sinus-basic");
|
compileAndCompare("sinus-basic");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testDoubleImport() throws IOException, URISyntaxException {
|
public void testDoubleImport() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("double-import");
|
compileAndCompare("double-import");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testImporting() throws IOException, URISyntaxException {
|
public void testImporting() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("importing");
|
compileAndCompare("importing");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUnusedVars() throws IOException, URISyntaxException {
|
public void testUnusedVars() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("unused-vars");
|
compileAndCompare("unused-vars");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testFillscreen() throws IOException, URISyntaxException {
|
public void testFillscreen() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("fillscreen");
|
compileAndCompare("fillscreen");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLiverangeCallProblem() throws IOException, URISyntaxException {
|
public void testLiverangeCallProblem() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("liverange-call-problem");
|
compileAndCompare("liverange-call-problem");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testPrintProblem() throws IOException, URISyntaxException {
|
public void testPrintProblem() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("print-problem");
|
compileAndCompare("print-problem");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testPrintMsg() throws IOException, URISyntaxException {
|
public void testPrintMsg() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("printmsg");
|
compileAndCompare("printmsg");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUnusedMethod() throws IOException, URISyntaxException {
|
public void testUnusedMethod() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("unused-method");
|
compileAndCompare("unused-method");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInlineString() throws IOException, URISyntaxException {
|
public void testInlineString() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("inline-string");
|
compileAndCompare("inline-string");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLocalString() throws IOException, URISyntaxException {
|
public void testLocalString() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("local-string");
|
compileAndCompare("local-string");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInlineArrayProblem() throws IOException, URISyntaxException {
|
public void testInlineArrayProblem() throws IOException, URISyntaxException {
|
||||||
String filename = "inlinearrayproblem";
|
compileAndCompare("inlinearrayproblem");
|
||||||
compileAndCompare(filename);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testImmZero() throws IOException, URISyntaxException {
|
public void testImmZero() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("immzero");
|
compileAndCompare("immzero");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWordExpr() throws IOException, URISyntaxException {
|
public void testWordExpr() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("wordexpr");
|
compileAndCompare("wordexpr");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testZpptr() throws IOException, URISyntaxException {
|
public void testZpptr() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("zpptr");
|
compileAndCompare("zpptr");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testCasting() throws IOException, URISyntaxException {
|
public void testCasting() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("casting");
|
compileAndCompare("casting");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSignedBytes() throws IOException, URISyntaxException {
|
public void testSignedBytes() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("signed-bytes");
|
compileAndCompare("signed-bytes");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testScrollBig() throws IOException, URISyntaxException {
|
public void testScrollBig() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("scrollbig");
|
compileAndCompare("scrollbig");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testPtrComplex() throws IOException, URISyntaxException {
|
public void testPtrComplex() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("ptr-complex");
|
compileAndCompare("ptr-complex");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIncD020() throws IOException, URISyntaxException {
|
public void testIncD020() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("incd020");
|
compileAndCompare("incd020");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testOverlapAllocation2() throws IOException, URISyntaxException {
|
public void testOverlapAllocation2() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("overlap-allocation-2");
|
compileAndCompare("overlap-allocation-2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testOverlapAllocation() throws IOException, URISyntaxException {
|
public void testOverlapAllocation() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("overlap-allocation");
|
compileAndCompare("overlap-allocation");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testBitmapBresenham() throws IOException, URISyntaxException {
|
public void testBitmapBresenham() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("bitmap-bresenham");
|
compileAndCompare("bitmap-bresenham");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testAsmClobber() throws IOException, URISyntaxException {
|
public void testAsmClobber() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("asm-clobber");
|
compileAndCompare("asm-clobber");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInlineAsm() throws IOException, URISyntaxException {
|
public void testInlineAsm() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("inline-asm");
|
compileAndCompare("inline-asm");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testChargen() throws IOException, URISyntaxException {
|
public void testChargen() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("chargen");
|
compileAndCompare("chargen");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testBitmapPlotter() throws IOException, URISyntaxException {
|
public void testBitmapPlotter() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("bitmap-plotter");
|
compileAndCompare("bitmap-plotter");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConstIdentification() throws IOException, URISyntaxException {
|
public void testConstIdentification() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("const-identification");
|
compileAndCompare("const-identification");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testCallConstParam() throws IOException, URISyntaxException {
|
public void testCallConstParam() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("callconstparam");
|
compileAndCompare("callconstparam");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testScrollClobber() throws IOException, URISyntaxException {
|
public void testScrollClobber() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("scroll-clobber");
|
compileAndCompare("scroll-clobber");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testHalfscii() throws IOException, URISyntaxException {
|
public void testHalfscii() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("halfscii");
|
compileAndCompare("halfscii");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLiterals() throws IOException, URISyntaxException {
|
public void testLiterals() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("literals");
|
compileAndCompare("literals");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testScroll() throws IOException, URISyntaxException {
|
public void testScroll() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("scroll");
|
compileAndCompare("scroll");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConstantMin() throws IOException, URISyntaxException {
|
public void testConstantMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("constantmin");
|
compileAndCompare("constantmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLiveRange() throws IOException, URISyntaxException {
|
public void testLiveRange() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("liverange");
|
compileAndCompare("liverange");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testZpParamMin() throws IOException, URISyntaxException {
|
public void testZpParamMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("zpparammin");
|
compileAndCompare("zpparammin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInMemArray() throws IOException, URISyntaxException {
|
public void testInMemArray() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("inmemarray");
|
compileAndCompare("inmemarray");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInMemConstArray() throws IOException, URISyntaxException {
|
public void testInMemConstArray() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("inmem-const-array");
|
compileAndCompare("inmem-const-array");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInMemString() throws IOException, URISyntaxException {
|
public void testInMemString() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("inmemstring");
|
compileAndCompare("inmemstring");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testVoronoi() throws IOException, URISyntaxException {
|
public void testVoronoi() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("voronoi");
|
compileAndCompare("voronoi");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testFlipper() throws IOException, URISyntaxException {
|
public void testFlipper() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("flipper-rex2");
|
compileAndCompare("flipper-rex2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testBresenham() throws IOException, URISyntaxException {
|
public void testBresenham() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("bresenham");
|
compileAndCompare("bresenham");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testBresenhamArr() throws IOException, URISyntaxException {
|
public void testBresenhamArr() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("bresenhamarr");
|
compileAndCompare("bresenhamarr");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIterArray() throws IOException, URISyntaxException {
|
public void testIterArray() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("iterarray");
|
compileAndCompare("iterarray");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLoopMin() throws IOException, URISyntaxException {
|
public void testLoopMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("loopmin");
|
compileAndCompare("loopmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSumMin() throws IOException, URISyntaxException {
|
public void testSumMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("summin");
|
compileAndCompare("summin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLoopSplit() throws IOException, URISyntaxException {
|
public void testLoopSplit() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("loopsplit");
|
compileAndCompare("loopsplit");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLoopNest() throws IOException, URISyntaxException {
|
public void testLoopNest() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("loopnest");
|
compileAndCompare("loopnest");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLoopNest2() throws IOException, URISyntaxException {
|
@Test
|
||||||
|
public void testLoopNest2() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("loopnest2");
|
compileAndCompare("loopnest2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testFibMem() throws IOException, URISyntaxException {
|
public void testFibMem() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("fibmem");
|
compileAndCompare("fibmem");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testPtrTest() throws IOException, URISyntaxException {
|
public void testPtrTest() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("ptrtest");
|
compileAndCompare("ptrtest");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testPtrTestMin() throws IOException, URISyntaxException {
|
public void testPtrTestMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("ptrtestmin");
|
compileAndCompare("ptrtestmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUseGlobal() throws IOException, URISyntaxException {
|
public void testUseGlobal() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("useglobal");
|
compileAndCompare("useglobal");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testModGlobal() throws IOException, URISyntaxException {
|
public void testModGlobal() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("modglobal");
|
compileAndCompare("modglobal");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testModGlobalMin() throws IOException, URISyntaxException {
|
public void testModGlobalMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("modglobalmin");
|
compileAndCompare("modglobalmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIfMin() throws IOException, URISyntaxException {
|
public void testIfMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("ifmin");
|
compileAndCompare("ifmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testForClassicMin() throws IOException, URISyntaxException {
|
public void testForClassicMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("forclassicmin");
|
compileAndCompare("forclassicmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testForRangeMin() throws IOException, URISyntaxException {
|
public void testForRangeMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("forrangemin");
|
compileAndCompare("forrangemin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testAssignConst() throws IOException, URISyntaxException {
|
public void testAssignConst() throws IOException, URISyntaxException {
|
||||||
assertError("assign-const", "Constants can not be modified");
|
assertError("assign-const", "Constants can not be modified");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testStmtOutsideMethod() throws IOException, URISyntaxException {
|
public void testStmtOutsideMethod() throws IOException, URISyntaxException {
|
||||||
assertError("stmt-outside-method", "Error parsing");
|
assertError("stmt-outside-method", "Error parsing");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUseUndeclared() throws IOException, URISyntaxException {
|
public void testUseUndeclared() throws IOException, URISyntaxException {
|
||||||
assertError("useundeclared", "Unknown variable");
|
assertError("useundeclared", "Unknown variable");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUseUninitialized() throws IOException, URISyntaxException {
|
public void testUseUninitialized() throws IOException, URISyntaxException {
|
||||||
assertError("useuninitialized", "Variable used before being defined");
|
assertError("useuninitialized", "Variable used before being defined");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTypeMismatch() throws IOException, URISyntaxException {
|
public void testTypeMismatch() throws IOException, URISyntaxException {
|
||||||
assertError("typemismatch", "Type mismatch");
|
assertError("typemismatch", "Type mismatch");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testToManyParams() throws IOException, URISyntaxException {
|
public void testToManyParams() throws IOException, URISyntaxException {
|
||||||
assertError("tomanyparams", "Wrong number of parameters in call");
|
assertError("tomanyparams", "Wrong number of parameters in call");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testToFewParams() throws IOException, URISyntaxException {
|
public void testToFewParams() throws IOException, URISyntaxException {
|
||||||
assertError("tofewparams", "Wrong number of parameters in call");
|
assertError("tofewparams", "Wrong number of parameters in call");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testNoReturn() throws IOException, URISyntaxException {
|
public void testNoReturn() throws IOException, URISyntaxException {
|
||||||
assertError("noreturn", "Method must end with a return statement");
|
assertError("noreturn", "Method must end with a return statement");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testProcedureNotFound() throws IOException, URISyntaxException {
|
public void testProcedureNotFound() throws IOException, URISyntaxException {
|
||||||
assertError("procedurenotfound", "Called procedure not found");
|
assertError("procedurenotfound", "Called procedure not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIllegalLValue() throws IOException, URISyntaxException {
|
public void testIllegalLValue() throws IOException, URISyntaxException {
|
||||||
assertError("illegallvalue", "LValue is illegal");
|
assertError("illegallvalue", "LValue is illegal");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInvalidConstType() throws IOException, URISyntaxException {
|
public void testInvalidConstType() throws IOException, URISyntaxException {
|
||||||
assertError("invalid-consttype", "Constant variable has a non-matching type");
|
assertError("invalid-consttype", "Constant variable has a non-matching type");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testValueListError() throws IOException, URISyntaxException {
|
public void testValueListError() throws IOException, URISyntaxException {
|
||||||
assertError("valuelist-error", "Value list not resolved to word constructor");
|
assertError("valuelist-error", "Value list not resolved to word constructor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testArrayUninitialized() throws IOException, URISyntaxException {
|
public void testArrayUninitialized() throws IOException, URISyntaxException {
|
||||||
assertError("array-uninitialized", "Cannot determine array size.");
|
assertError("array-uninitialized", "Cannot determine array size.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testArrayLengthMismatch() throws IOException, URISyntaxException {
|
public void testArrayLengthMismatch() throws IOException, URISyntaxException {
|
||||||
assertError("array-length-mismatch", "Array length mismatch");
|
assertError("array-length-mismatch", "Array length mismatch");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testStringLengthMismatch() throws IOException, URISyntaxException {
|
public void testStringLengthMismatch() throws IOException, URISyntaxException {
|
||||||
assertError("string-length-mismatch", "Array length mismatch");
|
assertError("string-length-mismatch", "Array length mismatch");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIllegalAlignment() throws IOException, URISyntaxException {
|
public void testIllegalAlignment() throws IOException, URISyntaxException {
|
||||||
assertError("illegal-alignment", "Cannot align variable");
|
assertError("illegal-alignment", "Cannot align variable");
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
.const SCREEN = $400
|
.const SCREEN = $400
|
||||||
jsr main
|
jsr main
|
||||||
main: {
|
main: {
|
||||||
.label l = 2
|
.label k = 2
|
||||||
ldx #0
|
ldx #0
|
||||||
b1:
|
b1:
|
||||||
lda #0
|
lda #0
|
||||||
@ -17,21 +17,22 @@ main: {
|
|||||||
inx
|
inx
|
||||||
cpx #$65
|
cpx #$65
|
||||||
bne b1
|
bne b1
|
||||||
ldy #0
|
|
||||||
b3:
|
|
||||||
lda #0
|
lda #0
|
||||||
sta l
|
sta k
|
||||||
|
b3:
|
||||||
|
ldy #0
|
||||||
b4:
|
b4:
|
||||||
eor #$55
|
eor #$55
|
||||||
tax
|
tax
|
||||||
lda l
|
tya
|
||||||
sta SCREEN,y
|
ldx k
|
||||||
inc l
|
sta SCREEN,x
|
||||||
lda l
|
|
||||||
cmp #$65
|
|
||||||
bne b4
|
|
||||||
iny
|
iny
|
||||||
cpy #$65
|
cpy #$65
|
||||||
|
bne b4
|
||||||
|
inc k
|
||||||
|
lda k
|
||||||
|
cmp #$65
|
||||||
bne b3
|
bne b3
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
@ -594,11 +594,11 @@ REGISTER UPLIFT SCOPES
|
|||||||
Uplift Scope [main] 303: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 252.5: zp ZP_BYTE:5 [ main::l#2 main::l#1 ] 41.1: zp ZP_BYTE:2 [ main::i#4 main::i#1 ] 37: zp ZP_BYTE:4 [ main::k#4 main::k#1 ]
|
Uplift Scope [main] 303: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 252.5: zp ZP_BYTE:5 [ main::l#2 main::l#1 ] 41.1: zp ZP_BYTE:2 [ main::i#4 main::i#1 ] 37: zp ZP_BYTE:4 [ main::k#4 main::k#1 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 6638 combination reg byte a [ main::j#2 main::j#1 ] zp ZP_BYTE:5 [ main::l#2 main::l#1 ] reg byte x [ main::i#4 main::i#1 ] reg byte y [ main::k#4 main::k#1 ]
|
Uplifting [main] best 6028 combination reg byte a [ main::j#2 main::j#1 ] reg byte y [ main::l#2 main::l#1 ] reg byte x [ main::i#4 main::i#1 ] zp ZP_BYTE:4 [ main::k#4 main::k#1 ]
|
||||||
Uplifting [] best 6638 combination
|
Uplifting [] best 6028 combination
|
||||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::l#2 main::l#1 ]
|
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::k#4 main::k#1 ]
|
||||||
Uplifting [main] best 6638 combination zp ZP_BYTE:5 [ main::l#2 main::l#1 ]
|
Uplifting [main] best 6028 combination zp ZP_BYTE:4 [ main::k#4 main::k#1 ]
|
||||||
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ main::l#2 main::l#1 ]
|
Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:2 [ main::k#4 main::k#1 ]
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
//SEG0 Basic Upstart
|
//SEG0 Basic Upstart
|
||||||
@ -625,7 +625,7 @@ bend_from_b1:
|
|||||||
bend:
|
bend:
|
||||||
//SEG9 main
|
//SEG9 main
|
||||||
main: {
|
main: {
|
||||||
.label l = 2
|
.label k = 2
|
||||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||||
b1_from_main:
|
b1_from_main:
|
||||||
//SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
//SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||||
@ -666,8 +666,9 @@ main: {
|
|||||||
bne b1_from_b5
|
bne b1_from_b5
|
||||||
//SEG26 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
|
//SEG26 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
|
||||||
b3_from_b5:
|
b3_from_b5:
|
||||||
//SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- vbuyy=vbuc1
|
//SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1
|
||||||
ldy #0
|
lda #0
|
||||||
|
sta k
|
||||||
jmp b3
|
jmp b3
|
||||||
//SEG28 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3]
|
//SEG28 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3]
|
||||||
b3_from_b7:
|
b3_from_b7:
|
||||||
@ -677,9 +678,8 @@ main: {
|
|||||||
b3:
|
b3:
|
||||||
//SEG31 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
//SEG31 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
||||||
b4_from_b3:
|
b4_from_b3:
|
||||||
//SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1
|
//SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- vbuyy=vbuc1
|
||||||
lda #0
|
ldy #0
|
||||||
sta l
|
|
||||||
jmp b4
|
jmp b4
|
||||||
//SEG33 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4]
|
//SEG33 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4]
|
||||||
b4_from_b4:
|
b4_from_b4:
|
||||||
@ -690,22 +690,23 @@ main: {
|
|||||||
//SEG36 asm { eor#$55 tax }
|
//SEG36 asm { eor#$55 tax }
|
||||||
eor #$55
|
eor #$55
|
||||||
tax
|
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
|
//SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) -- pbuc1_derefidx_vbuz1=vbuyy
|
||||||
lda l
|
tya
|
||||||
sta SCREEN,y
|
ldx k
|
||||||
//SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1
|
sta SCREEN,x
|
||||||
inc l
|
//SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy=_inc_vbuyy
|
||||||
//SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1
|
iny
|
||||||
lda l
|
//SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy_neq_vbuc1_then_la1
|
||||||
cmp #$65
|
cpy #$65
|
||||||
bne b4_from_b4
|
bne b4_from_b4
|
||||||
jmp b7
|
jmp b7
|
||||||
//SEG40 main::@7
|
//SEG40 main::@7
|
||||||
b7:
|
b7:
|
||||||
//SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy=_inc_vbuyy
|
//SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1=_inc_vbuz1
|
||||||
iny
|
inc k
|
||||||
//SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy_neq_vbuc1_then_la1
|
//SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1_neq_vbuc1_then_la1
|
||||||
cpy #$65
|
lda k
|
||||||
|
cmp #$65
|
||||||
bne b3_from_b7
|
bne b3_from_b7
|
||||||
jmp breturn
|
jmp breturn
|
||||||
//SEG43 main::@return
|
//SEG43 main::@return
|
||||||
@ -775,20 +776,20 @@ FINAL SYMBOL TABLE
|
|||||||
(byte) main::j#1 reg byte a 151.5
|
(byte) main::j#1 reg byte a 151.5
|
||||||
(byte) main::j#2 reg byte a 151.5
|
(byte) main::j#2 reg byte a 151.5
|
||||||
(byte) main::k
|
(byte) main::k
|
||||||
(byte) main::k#1 reg byte y 16.5
|
(byte) main::k#1 k zp ZP_BYTE:2 16.5
|
||||||
(byte) main::k#4 reg byte y 20.499999999999996
|
(byte) main::k#4 k zp ZP_BYTE:2 20.499999999999996
|
||||||
(byte) main::l
|
(byte) main::l
|
||||||
(byte) main::l#1 l zp ZP_BYTE:2 151.5
|
(byte) main::l#1 reg byte y 151.5
|
||||||
(byte) main::l#2 l zp ZP_BYTE:2 101.0
|
(byte) main::l#2 reg byte y 101.0
|
||||||
|
|
||||||
reg byte x [ main::i#4 main::i#1 ]
|
reg byte x [ main::i#4 main::i#1 ]
|
||||||
reg byte a [ main::j#2 main::j#1 ]
|
reg byte a [ main::j#2 main::j#1 ]
|
||||||
reg byte y [ main::k#4 main::k#1 ]
|
zp ZP_BYTE:2 [ main::k#4 main::k#1 ]
|
||||||
zp ZP_BYTE:2 [ main::l#2 main::l#1 ]
|
reg byte y [ main::l#2 main::l#1 ]
|
||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 4682
|
Score: 4072
|
||||||
|
|
||||||
//SEG0 Basic Upstart
|
//SEG0 Basic Upstart
|
||||||
.pc = $801 "Basic"
|
.pc = $801 "Basic"
|
||||||
@ -806,7 +807,7 @@ Score: 4682
|
|||||||
//SEG8 @end
|
//SEG8 @end
|
||||||
//SEG9 main
|
//SEG9 main
|
||||||
main: {
|
main: {
|
||||||
.label l = 2
|
.label k = 2
|
||||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||||
//SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
//SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||||
ldx #0
|
ldx #0
|
||||||
@ -836,16 +837,16 @@ main: {
|
|||||||
cpx #$65
|
cpx #$65
|
||||||
bne b1
|
bne b1
|
||||||
//SEG26 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
|
//SEG26 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
|
||||||
//SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- vbuyy=vbuc1
|
//SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1
|
||||||
ldy #0
|
lda #0
|
||||||
|
sta k
|
||||||
//SEG28 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3]
|
//SEG28 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3]
|
||||||
//SEG29 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy
|
//SEG29 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy
|
||||||
//SEG30 main::@3
|
//SEG30 main::@3
|
||||||
b3:
|
b3:
|
||||||
//SEG31 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
//SEG31 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
||||||
//SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1
|
//SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- vbuyy=vbuc1
|
||||||
lda #0
|
ldy #0
|
||||||
sta l
|
|
||||||
//SEG33 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4]
|
//SEG33 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4]
|
||||||
//SEG34 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy
|
//SEG34 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy
|
||||||
//SEG35 main::@4
|
//SEG35 main::@4
|
||||||
@ -853,20 +854,21 @@ main: {
|
|||||||
//SEG36 asm { eor#$55 tax }
|
//SEG36 asm { eor#$55 tax }
|
||||||
eor #$55
|
eor #$55
|
||||||
tax
|
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
|
//SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) -- pbuc1_derefidx_vbuz1=vbuyy
|
||||||
lda l
|
tya
|
||||||
sta SCREEN,y
|
ldx k
|
||||||
//SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1
|
sta SCREEN,x
|
||||||
inc l
|
//SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy=_inc_vbuyy
|
||||||
//SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1
|
iny
|
||||||
lda l
|
//SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:2 [ main::k#4 main::l#1 ] ) -- vbuyy_neq_vbuc1_then_la1
|
||||||
cmp #$65
|
cpy #$65
|
||||||
bne b4
|
bne b4
|
||||||
//SEG40 main::@7
|
//SEG40 main::@7
|
||||||
//SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy=_inc_vbuyy
|
//SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1=_inc_vbuz1
|
||||||
iny
|
inc k
|
||||||
//SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuyy_neq_vbuc1_then_la1
|
//SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:2 [ main::k#1 ] ) -- vbuz1_neq_vbuc1_then_la1
|
||||||
cpy #$65
|
lda k
|
||||||
|
cmp #$65
|
||||||
bne b3
|
bne b3
|
||||||
//SEG43 main::@return
|
//SEG43 main::@return
|
||||||
//SEG44 [20] return [ ] ( main:2 [ ] )
|
//SEG44 [20] return [ ] ( main:2 [ ] )
|
||||||
|
@ -18,13 +18,13 @@
|
|||||||
(byte) main::j#1 reg byte a 151.5
|
(byte) main::j#1 reg byte a 151.5
|
||||||
(byte) main::j#2 reg byte a 151.5
|
(byte) main::j#2 reg byte a 151.5
|
||||||
(byte) main::k
|
(byte) main::k
|
||||||
(byte) main::k#1 reg byte y 16.5
|
(byte) main::k#1 k zp ZP_BYTE:2 16.5
|
||||||
(byte) main::k#4 reg byte y 20.499999999999996
|
(byte) main::k#4 k zp ZP_BYTE:2 20.499999999999996
|
||||||
(byte) main::l
|
(byte) main::l
|
||||||
(byte) main::l#1 l zp ZP_BYTE:2 151.5
|
(byte) main::l#1 reg byte y 151.5
|
||||||
(byte) main::l#2 l zp ZP_BYTE:2 101.0
|
(byte) main::l#2 reg byte y 101.0
|
||||||
|
|
||||||
reg byte x [ main::i#4 main::i#1 ]
|
reg byte x [ main::i#4 main::i#1 ]
|
||||||
reg byte a [ main::j#2 main::j#1 ]
|
reg byte a [ main::j#2 main::j#1 ]
|
||||||
reg byte y [ main::k#4 main::k#1 ]
|
zp ZP_BYTE:2 [ main::k#4 main::k#1 ]
|
||||||
zp ZP_BYTE:2 [ main::l#2 main::l#1 ]
|
reg byte y [ main::l#2 main::l#1 ]
|
||||||
|
@ -193,9 +193,9 @@ line_ydxi: {
|
|||||||
ldy y
|
ldy y
|
||||||
jsr plot
|
jsr plot
|
||||||
inc y
|
inc y
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
lda yd
|
lda yd
|
||||||
cmp e
|
cmp e
|
||||||
@ -253,9 +253,9 @@ line_xdyi: {
|
|||||||
ldy y
|
ldy y
|
||||||
jsr plot
|
jsr plot
|
||||||
inx
|
inx
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
lda xd
|
lda xd
|
||||||
cmp e
|
cmp e
|
||||||
@ -287,9 +287,9 @@ line_ydxd: {
|
|||||||
ldy y
|
ldy y
|
||||||
jsr plot
|
jsr plot
|
||||||
inc y
|
inc y
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
lda yd
|
lda yd
|
||||||
cmp e
|
cmp e
|
||||||
@ -321,9 +321,9 @@ line_xdyd: {
|
|||||||
ldy y
|
ldy y
|
||||||
jsr plot
|
jsr plot
|
||||||
inx
|
inx
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
lda xd
|
lda xd
|
||||||
cmp e
|
cmp e
|
||||||
@ -403,8 +403,8 @@ init_screen: {
|
|||||||
lda #>BITMAP
|
lda #>BITMAP
|
||||||
sta b+1
|
sta b+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
lda #0
|
||||||
tya
|
tay
|
||||||
sta (b),y
|
sta (b),y
|
||||||
inc b
|
inc b
|
||||||
bne !+
|
bne !+
|
||||||
@ -421,8 +421,8 @@ init_screen: {
|
|||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta c+1
|
sta c+1
|
||||||
b2:
|
b2:
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
inc c
|
inc c
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -4781,9 +4781,9 @@ line_ydxi: {
|
|||||||
//SEG183 [93] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG183 [93] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc y
|
inc y
|
||||||
//SEG184 [94] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG184 [94] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG185 [95] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG185 [95] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda yd
|
lda yd
|
||||||
@ -4863,8 +4863,8 @@ plot: {
|
|||||||
ora plot_bit,x
|
ora plot_bit,x
|
||||||
sta _1
|
sta _1
|
||||||
//SEG203 [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuz2
|
//SEG203 [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda _1
|
lda _1
|
||||||
|
ldy #0
|
||||||
sta (plotter),y
|
sta (plotter),y
|
||||||
jmp breturn
|
jmp breturn
|
||||||
//SEG204 plot::@return
|
//SEG204 plot::@return
|
||||||
@ -4912,9 +4912,9 @@ line_xdyi: {
|
|||||||
//SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc x
|
inc x
|
||||||
//SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda xd
|
lda xd
|
||||||
@ -4993,9 +4993,9 @@ line_ydxd: {
|
|||||||
//SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc y
|
inc y
|
||||||
//SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda yd
|
lda yd
|
||||||
@ -5074,9 +5074,9 @@ line_xdyd: {
|
|||||||
//SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc x
|
inc x
|
||||||
//SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda xd
|
lda xd
|
||||||
@ -5282,8 +5282,8 @@ init_screen: {
|
|||||||
//SEG342 init_screen::@1
|
//SEG342 init_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #0
|
lda #0
|
||||||
|
ldy #0
|
||||||
sta (b),y
|
sta (b),y
|
||||||
//SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc b
|
inc b
|
||||||
@ -5312,8 +5312,8 @@ init_screen: {
|
|||||||
//SEG350 init_screen::@2
|
//SEG350 init_screen::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
//SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc c
|
inc c
|
||||||
@ -6122,9 +6122,9 @@ line_ydxi: {
|
|||||||
//SEG183 [93] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG183 [93] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc y
|
inc y
|
||||||
//SEG184 [94] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG184 [94] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG185 [95] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG185 [95] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda yd
|
lda yd
|
||||||
@ -6236,9 +6236,9 @@ line_xdyi: {
|
|||||||
//SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
//SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
||||||
inx
|
inx
|
||||||
//SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda xd
|
lda xd
|
||||||
@ -6312,9 +6312,9 @@ line_ydxd: {
|
|||||||
//SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc y
|
inc y
|
||||||
//SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda yd
|
lda yd
|
||||||
@ -6388,9 +6388,9 @@ line_xdyd: {
|
|||||||
//SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
//SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
||||||
inx
|
inx
|
||||||
//SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda xd
|
lda xd
|
||||||
@ -6570,8 +6570,8 @@ init_screen: {
|
|||||||
//SEG342 init_screen::@1
|
//SEG342 init_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #0
|
lda #0
|
||||||
|
ldy #0
|
||||||
sta (b),y
|
sta (b),y
|
||||||
//SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc b
|
inc b
|
||||||
@ -6600,8 +6600,8 @@ init_screen: {
|
|||||||
//SEG350 init_screen::@2
|
//SEG350 init_screen::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
//SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc c
|
inc c
|
||||||
@ -6690,7 +6690,7 @@ Removing instruction lda yd
|
|||||||
Removing instruction ldy #0
|
Removing instruction ldy #0
|
||||||
Removing instruction lda #>0
|
Removing instruction lda #>0
|
||||||
Replacing instruction ldx #0 with TAX
|
Replacing instruction ldx #0 with TAX
|
||||||
Replacing instruction lda #0 with TYA
|
Replacing instruction ldy #0 with TAY
|
||||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||||
Replacing label b1_from_b5 with b1
|
Replacing label b1_from_b5 with b1
|
||||||
Replacing label b1_from_b3 with b1
|
Replacing label b1_from_b3 with b1
|
||||||
@ -7519,9 +7519,9 @@ line_ydxi: {
|
|||||||
//SEG183 [93] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG183 [93] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc y
|
inc y
|
||||||
//SEG184 [94] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG184 [94] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG185 [95] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG185 [95] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda yd
|
lda yd
|
||||||
@ -7617,9 +7617,9 @@ line_xdyi: {
|
|||||||
//SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
//SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
||||||
inx
|
inx
|
||||||
//SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda xd
|
lda xd
|
||||||
@ -7680,9 +7680,9 @@ line_ydxd: {
|
|||||||
//SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc y
|
inc y
|
||||||
//SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda xd
|
||||||
clc
|
clc
|
||||||
adc xd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda yd
|
lda yd
|
||||||
@ -7743,9 +7743,9 @@ line_xdyd: {
|
|||||||
//SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
//SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1
|
||||||
inx
|
inx
|
||||||
//SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda e
|
lda yd
|
||||||
clc
|
clc
|
||||||
adc yd
|
adc e
|
||||||
sta e
|
sta e
|
||||||
//SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
//SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1
|
||||||
lda xd
|
lda xd
|
||||||
@ -7891,8 +7891,8 @@ init_screen: {
|
|||||||
//SEG342 init_screen::@1
|
//SEG342 init_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
lda #0
|
||||||
tya
|
tay
|
||||||
sta (b),y
|
sta (b),y
|
||||||
//SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc b
|
inc b
|
||||||
@ -7917,8 +7917,8 @@ init_screen: {
|
|||||||
//SEG350 init_screen::@2
|
//SEG350 init_screen::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
//SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc c
|
inc c
|
||||||
|
@ -138,8 +138,8 @@ init_screen: {
|
|||||||
lda #>BITMAP
|
lda #>BITMAP
|
||||||
sta b+1
|
sta b+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
lda #0
|
||||||
tya
|
tay
|
||||||
sta (b),y
|
sta (b),y
|
||||||
inc b
|
inc b
|
||||||
bne !+
|
bne !+
|
||||||
@ -156,8 +156,8 @@ init_screen: {
|
|||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta c+1
|
sta c+1
|
||||||
b2:
|
b2:
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
inc c
|
inc c
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -1904,10 +1904,10 @@ plot: {
|
|||||||
lda plot_yhi,x
|
lda plot_yhi,x
|
||||||
sta _8
|
sta _8
|
||||||
//SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuz2
|
//SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuz2
|
||||||
lda #0
|
|
||||||
sta plotter_y
|
|
||||||
lda _8
|
lda _8
|
||||||
sta plotter_y+1
|
sta plotter_y+1
|
||||||
|
lda #<0
|
||||||
|
sta plotter_y
|
||||||
//SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
|
//SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
|
||||||
ldx y
|
ldx y
|
||||||
lda plot_ylo,x
|
lda plot_ylo,x
|
||||||
@ -1932,8 +1932,8 @@ plot: {
|
|||||||
ora plot_bit,x
|
ora plot_bit,x
|
||||||
sta _5
|
sta _5
|
||||||
//SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuz2
|
//SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda _5
|
lda _5
|
||||||
|
ldy #0
|
||||||
sta (plotter),y
|
sta (plotter),y
|
||||||
jmp breturn
|
jmp breturn
|
||||||
//SEG56 plot::@return
|
//SEG56 plot::@return
|
||||||
@ -2108,8 +2108,8 @@ init_screen: {
|
|||||||
//SEG110 init_screen::@1
|
//SEG110 init_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #0
|
lda #0
|
||||||
|
ldy #0
|
||||||
sta (b),y
|
sta (b),y
|
||||||
//SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc b
|
inc b
|
||||||
@ -2138,8 +2138,8 @@ init_screen: {
|
|||||||
//SEG118 init_screen::@2
|
//SEG118 init_screen::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
//SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc c
|
inc c
|
||||||
@ -2590,8 +2590,8 @@ init_screen: {
|
|||||||
//SEG110 init_screen::@1
|
//SEG110 init_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #0
|
lda #0
|
||||||
|
ldy #0
|
||||||
sta (b),y
|
sta (b),y
|
||||||
//SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc b
|
inc b
|
||||||
@ -2620,8 +2620,8 @@ init_screen: {
|
|||||||
//SEG118 init_screen::@2
|
//SEG118 init_screen::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
//SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc c
|
inc c
|
||||||
@ -2677,7 +2677,7 @@ Removing instruction ldx i
|
|||||||
Removing instruction ldy #0
|
Removing instruction ldy #0
|
||||||
Removing instruction lda #>0
|
Removing instruction lda #>0
|
||||||
Replacing instruction ldx #0 with TAX
|
Replacing instruction ldx #0 with TAX
|
||||||
Replacing instruction lda #0 with TYA
|
Replacing instruction ldy #0 with TAY
|
||||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||||
Replacing label b1_from_b3 with b1
|
Replacing label b1_from_b3 with b1
|
||||||
Replacing label b10_from_b1 with b10
|
Replacing label b10_from_b1 with b10
|
||||||
@ -3125,8 +3125,8 @@ init_screen: {
|
|||||||
//SEG110 init_screen::@1
|
//SEG110 init_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
lda #0
|
||||||
tya
|
tay
|
||||||
sta (b),y
|
sta (b),y
|
||||||
//SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc b
|
inc b
|
||||||
@ -3151,8 +3151,8 @@ init_screen: {
|
|||||||
//SEG118 init_screen::@2
|
//SEG118 init_screen::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #$14
|
lda #$14
|
||||||
|
ldy #0
|
||||||
sta (c),y
|
sta (c),y
|
||||||
//SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc c
|
inc c
|
||||||
|
@ -21,8 +21,8 @@ main: {
|
|||||||
lda #>SCREEN+4*$28+4
|
lda #>SCREEN+4*$28+4
|
||||||
sta cursor+1
|
sta cursor+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #STAR
|
lda #STAR
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
inc x
|
inc x
|
||||||
inc cursor
|
inc cursor
|
||||||
|
@ -640,8 +640,8 @@ main: {
|
|||||||
//SEG20 main::@1
|
//SEG20 main::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #STAR
|
lda #STAR
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:2 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:2 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc x
|
inc x
|
||||||
@ -788,8 +788,8 @@ main: {
|
|||||||
//SEG20 main::@1
|
//SEG20 main::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #STAR
|
lda #STAR
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:2 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:2 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc x
|
inc x
|
||||||
@ -968,8 +968,8 @@ main: {
|
|||||||
//SEG20 main::@1
|
//SEG20 main::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #STAR
|
lda #STAR
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:2 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- vbuz1=vbuz1_plus_1
|
//SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:2 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- vbuz1=vbuz1_plus_1
|
||||||
inc x
|
inc x
|
||||||
|
@ -46,9 +46,9 @@ main: {
|
|||||||
clc
|
clc
|
||||||
adc #<$28
|
adc #<$28
|
||||||
sta idx
|
sta idx
|
||||||
bcc !+
|
lda idx+1
|
||||||
inc idx+1
|
adc #>$28
|
||||||
!:
|
sta idx+1
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
sbc #xd
|
sbc #xd
|
||||||
|
@ -659,9 +659,9 @@ main: {
|
|||||||
clc
|
clc
|
||||||
adc #<$28
|
adc #<$28
|
||||||
sta idx
|
sta idx
|
||||||
bcc !+
|
lda idx+1
|
||||||
inc idx+1
|
adc #>$28
|
||||||
!:
|
sta idx+1
|
||||||
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuz1=vbuz1_minus_vbuc1
|
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuz1=vbuz1_minus_vbuc1
|
||||||
lda e
|
lda e
|
||||||
sec
|
sec
|
||||||
@ -708,10 +708,10 @@ REGISTER UPLIFT SCOPES
|
|||||||
Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 1238 combination reg byte y [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte x [ main::x#2 main::x#1 ]
|
Uplifting [main] best 1243 combination reg byte y [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte x [ main::x#2 main::x#1 ]
|
||||||
Uplifting [] best 1238 combination
|
Uplifting [] best 1243 combination
|
||||||
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||||
Uplifting [main] best 1238 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
Uplifting [main] best 1243 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||||
Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ]
|
Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
@ -806,9 +806,9 @@ main: {
|
|||||||
clc
|
clc
|
||||||
adc #<$28
|
adc #<$28
|
||||||
sta idx
|
sta idx
|
||||||
bcc !+
|
lda idx+1
|
||||||
inc idx+1
|
adc #>$28
|
||||||
!:
|
sta idx+1
|
||||||
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuyy=vbuyy_minus_vbuc1
|
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuyy=vbuyy_minus_vbuc1
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
@ -910,7 +910,7 @@ zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ]
|
|||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 1082
|
Score: 1087
|
||||||
|
|
||||||
//SEG0 Basic Upstart
|
//SEG0 Basic Upstart
|
||||||
.pc = $801 "Basic"
|
.pc = $801 "Basic"
|
||||||
@ -989,9 +989,9 @@ main: {
|
|||||||
clc
|
clc
|
||||||
adc #<$28
|
adc #<$28
|
||||||
sta idx
|
sta idx
|
||||||
bcc !+
|
lda idx+1
|
||||||
inc idx+1
|
adc #>$28
|
||||||
!:
|
sta idx+1
|
||||||
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuyy=vbuyy_minus_vbuc1
|
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuyy=vbuyy_minus_vbuc1
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
|
@ -462,8 +462,8 @@ line: {
|
|||||||
//SEG28 line::@1
|
//SEG28 line::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG29 [11] *((byte*) screen#10) ← (byte) line::x#2 [ line::x1#3 line::x#2 screen#10 ] ( main:2::line:5 [ line::x1#3 line::x#2 screen#10 ] main:2::line:7 [ line::x1#3 line::x#2 screen#10 ] ) -- _deref_pbuz1=vbuz2
|
//SEG29 [11] *((byte*) screen#10) ← (byte) line::x#2 [ line::x1#3 line::x#2 screen#10 ] ( main:2::line:5 [ line::x1#3 line::x#2 screen#10 ] main:2::line:7 [ line::x1#3 line::x#2 screen#10 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda x
|
lda x
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
//SEG30 [12] (byte*) screen#11 ← ++ (byte*) screen#10 [ line::x1#3 screen#11 line::x#2 ] ( main:2::line:5 [ line::x1#3 screen#11 line::x#2 ] main:2::line:7 [ line::x1#3 screen#11 line::x#2 ] ) -- pbuz1=_inc_pbuz1
|
//SEG30 [12] (byte*) screen#11 ← ++ (byte*) screen#10 [ line::x1#3 screen#11 line::x#2 ] ( main:2::line:5 [ line::x1#3 screen#11 line::x#2 ] main:2::line:7 [ line::x1#3 screen#11 line::x#2 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc screen
|
inc screen
|
||||||
|
@ -711,8 +711,8 @@ main: {
|
|||||||
//SEG36 main::@3
|
//SEG36 main::@3
|
||||||
b3:
|
b3:
|
||||||
//SEG37 [13] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- _deref_pbuz1=vbuz2
|
//SEG37 [13] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda c
|
lda c
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG38 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ( main:2 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG38 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ( main:2 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
|
@ -237,8 +237,8 @@ print_cls: {
|
|||||||
lda #>$400
|
lda #>$400
|
||||||
sta sc+1
|
sta sc+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
inc sc
|
inc sc
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -2897,8 +2897,8 @@ print_cls: {
|
|||||||
//SEG178 print_cls::@1
|
//SEG178 print_cls::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -3519,8 +3519,8 @@ print_cls: {
|
|||||||
//SEG178 print_cls::@1
|
//SEG178 print_cls::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -4202,8 +4202,8 @@ print_cls: {
|
|||||||
//SEG178 print_cls::@1
|
//SEG178 print_cls::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
|
@ -1602,8 +1602,8 @@ main: {
|
|||||||
asl
|
asl
|
||||||
sta bits_gen_7
|
sta bits_gen_7
|
||||||
//SEG73 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] ) -- _deref_pbuz1=vbuz2
|
//SEG73 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda bits_gen_7
|
lda bits_gen_7
|
||||||
|
ldy #0
|
||||||
sta (charset4),y
|
sta (charset4),y
|
||||||
//SEG74 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] ( main:2 [ main::chargen#10 main::charset4#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG74 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] ( main:2 [ main::chargen#10 main::charset4#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc charset4
|
inc charset4
|
||||||
|
@ -85,8 +85,8 @@ print_cls: {
|
|||||||
lda #>$400
|
lda #>$400
|
||||||
sta sc+1
|
sta sc+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
inc sc
|
inc sc
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -1177,8 +1177,8 @@ print_cls: {
|
|||||||
//SEG63 print_cls::@1
|
//SEG63 print_cls::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -1431,8 +1431,8 @@ print_cls: {
|
|||||||
//SEG63 print_cls::@1
|
//SEG63 print_cls::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -1705,8 +1705,8 @@ print_cls: {
|
|||||||
//SEG63 print_cls::@1
|
//SEG63 print_cls::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
|
@ -16,8 +16,8 @@ main: {
|
|||||||
lda his,y
|
lda his,y
|
||||||
sta w+1
|
sta w+1
|
||||||
stx w
|
stx w
|
||||||
ldy #0
|
|
||||||
lda #'*'
|
lda #'*'
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
inx
|
inx
|
||||||
cpx #8
|
cpx #8
|
||||||
|
@ -420,8 +420,8 @@ main: {
|
|||||||
lda w+1
|
lda w+1
|
||||||
sta sc+1
|
sta sc+1
|
||||||
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #'*'
|
lda #'*'
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1
|
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1
|
||||||
inc l
|
inc l
|
||||||
@ -540,8 +540,8 @@ main: {
|
|||||||
stx w
|
stx w
|
||||||
//SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
//SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
||||||
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #'*'
|
lda #'*'
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
|
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
@ -666,8 +666,8 @@ main: {
|
|||||||
stx w
|
stx w
|
||||||
//SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
//SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
||||||
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #'*'
|
lda #'*'
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
|
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
|
@ -325,9 +325,9 @@ main: {
|
|||||||
//SEG18 main::@3
|
//SEG18 main::@3
|
||||||
b3:
|
b3:
|
||||||
//SEG19 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
//SEG19 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] ) -- vbuz1=vbuz1_plus_vbuz2
|
||||||
lda s
|
lda i
|
||||||
clc
|
clc
|
||||||
adc i
|
adc s
|
||||||
sta s
|
sta s
|
||||||
//SEG20 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
//SEG20 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||||
b2_from_b1:
|
b2_from_b1:
|
||||||
|
@ -22,8 +22,8 @@ lvaluevar: {
|
|||||||
bcc b2
|
bcc b2
|
||||||
rts
|
rts
|
||||||
b2:
|
b2:
|
||||||
ldy #0
|
|
||||||
lda #b
|
lda #b
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
inc screen
|
inc screen
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -929,8 +929,8 @@ lvaluevar: {
|
|||||||
//SEG33 lvaluevar::@2
|
//SEG33 lvaluevar::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #b
|
lda #b
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
//SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 [ lvaluevar::i#2 lvaluevar::screen#1 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 [ lvaluevar::i#2 lvaluevar::screen#1 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc screen
|
inc screen
|
||||||
@ -1178,8 +1178,8 @@ lvaluevar: {
|
|||||||
//SEG33 lvaluevar::@2
|
//SEG33 lvaluevar::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #b
|
lda #b
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
//SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 [ lvaluevar::i#2 lvaluevar::screen#1 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 [ lvaluevar::i#2 lvaluevar::screen#1 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc screen
|
inc screen
|
||||||
@ -1462,8 +1462,8 @@ lvaluevar: {
|
|||||||
//SEG33 lvaluevar::@2
|
//SEG33 lvaluevar::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #b
|
lda #b
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
//SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 [ lvaluevar::i#2 lvaluevar::screen#1 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 [ lvaluevar::i#2 lvaluevar::screen#1 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc screen
|
inc screen
|
||||||
|
@ -64,8 +64,8 @@ fillscreen: {
|
|||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta cursor+1
|
sta cursor+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
inc cursor
|
inc cursor
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -1212,8 +1212,8 @@ fillscreen: {
|
|||||||
//SEG66 fillscreen::@1
|
//SEG66 fillscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc cursor
|
inc cursor
|
||||||
@ -1445,8 +1445,8 @@ fillscreen: {
|
|||||||
//SEG66 fillscreen::@1
|
//SEG66 fillscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc cursor
|
inc cursor
|
||||||
@ -1727,8 +1727,8 @@ fillscreen: {
|
|||||||
//SEG66 fillscreen::@1
|
//SEG66 fillscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc cursor
|
inc cursor
|
||||||
|
@ -169,8 +169,8 @@ fillscreen: {
|
|||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta cursor+1
|
sta cursor+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
inc cursor
|
inc cursor
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -2773,12 +2773,12 @@ scroll_bit: {
|
|||||||
rol
|
rol
|
||||||
sta c+1
|
sta c+1
|
||||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda #<CHARGEN
|
lda _4
|
||||||
clc
|
clc
|
||||||
adc _4
|
adc #<CHARGEN
|
||||||
sta current_chargen
|
sta current_chargen
|
||||||
lda #>CHARGEN
|
lda _4+1
|
||||||
adc _4+1
|
adc #>CHARGEN
|
||||||
sta current_chargen+1
|
sta current_chargen+1
|
||||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||||
b1_from_b8:
|
b1_from_b8:
|
||||||
@ -2857,8 +2857,8 @@ scroll_bit: {
|
|||||||
//SEG97 scroll_bit::@3
|
//SEG97 scroll_bit::@3
|
||||||
b3:
|
b3:
|
||||||
//SEG98 [40] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_pbuz1=vbuz2
|
//SEG98 [40] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda b
|
lda b
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG99 [41] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
|
//SEG99 [41] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
|
||||||
lda sc
|
lda sc
|
||||||
@ -3020,8 +3020,8 @@ fillscreen: {
|
|||||||
//SEG145 fillscreen::@1
|
//SEG145 fillscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc cursor
|
inc cursor
|
||||||
@ -3535,8 +3535,8 @@ fillscreen: {
|
|||||||
//SEG145 fillscreen::@1
|
//SEG145 fillscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc cursor
|
inc cursor
|
||||||
@ -4112,8 +4112,8 @@ fillscreen: {
|
|||||||
//SEG145 fillscreen::@1
|
//SEG145 fillscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #fill
|
lda #fill
|
||||||
|
ldy #0
|
||||||
sta (cursor),y
|
sta (cursor),y
|
||||||
//SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc cursor
|
inc cursor
|
||||||
|
@ -189,8 +189,8 @@ init: {
|
|||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta sc+1
|
sta sc+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
inc sc
|
inc sc
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -1817,8 +1817,8 @@ init: {
|
|||||||
//SEG87 init::@1
|
//SEG87 init::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG88 [42] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG88 [42] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG89 [43] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG89 [43] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -2277,8 +2277,8 @@ init: {
|
|||||||
//SEG87 init::@1
|
//SEG87 init::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG88 [42] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG88 [42] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG89 [43] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG89 [43] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -2776,8 +2776,8 @@ init: {
|
|||||||
//SEG87 init::@1
|
//SEG87 init::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG88 [42] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG88 [42] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG89 [43] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG89 [43] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
|
@ -2974,8 +2974,8 @@ print_byte: {
|
|||||||
print_char: {
|
print_char: {
|
||||||
.label ch = 6
|
.label ch = 6
|
||||||
//SEG122 [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 ] ) -- _deref_pbuz1=vbuz2
|
//SEG122 [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 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda ch
|
lda ch
|
||||||
|
ldy #0
|
||||||
sta (char_cursor),y
|
sta (char_cursor),y
|
||||||
//SEG123 [58] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#23 [ 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 ] ) -- pbuz1=_inc_pbuz1
|
//SEG123 [58] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#23 [ 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 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc char_cursor
|
inc char_cursor
|
||||||
|
@ -171,8 +171,8 @@ clear_screen: {
|
|||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta sc+1
|
sta sc+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
inc sc
|
inc sc
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -6630,8 +6630,8 @@ clear_screen: {
|
|||||||
//SEG148 clear_screen::@1
|
//SEG148 clear_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG149 [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG149 [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG150 [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG150 [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -7322,12 +7322,12 @@ gen_chargen_sprite: {
|
|||||||
rol
|
rol
|
||||||
sta _0+1
|
sta _0+1
|
||||||
//SEG374 [184] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
//SEG374 [184] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda #<CHARGEN
|
lda _1
|
||||||
clc
|
clc
|
||||||
adc _1
|
adc #<CHARGEN
|
||||||
sta chargen
|
sta chargen
|
||||||
lda #>CHARGEN
|
lda _1+1
|
||||||
adc _1+1
|
adc #>CHARGEN
|
||||||
sta chargen+1
|
sta chargen+1
|
||||||
//SEG375 asm { sei }
|
//SEG375 asm { sei }
|
||||||
sei
|
sei
|
||||||
@ -8379,8 +8379,8 @@ clear_screen: {
|
|||||||
//SEG148 clear_screen::@1
|
//SEG148 clear_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG149 [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG149 [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG150 [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG150 [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
@ -10278,8 +10278,8 @@ clear_screen: {
|
|||||||
//SEG148 clear_screen::@1
|
//SEG148 clear_screen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG149 [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG149 [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
//SEG150 [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG150 [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:46 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:65 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc sc
|
inc sc
|
||||||
|
@ -741,8 +741,8 @@ print_cls: {
|
|||||||
lda #>$400
|
lda #>$400
|
||||||
sta sc+1
|
sta sc+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #' '
|
lda #' '
|
||||||
|
ldy #0
|
||||||
sta (sc),y
|
sta (sc),y
|
||||||
inc sc
|
inc sc
|
||||||
bne !+
|
bne !+
|
||||||
|
File diff suppressed because one or more lines are too long
@ -183,8 +183,8 @@ initscreen: {
|
|||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta screen+1
|
sta screen+1
|
||||||
b1:
|
b1:
|
||||||
ldy #0
|
|
||||||
lda #FILL
|
lda #FILL
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
inc screen
|
inc screen
|
||||||
bne !+
|
bne !+
|
||||||
|
@ -2463,8 +2463,8 @@ initscreen: {
|
|||||||
//SEG148 initscreen::@1
|
//SEG148 initscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #FILL
|
lda #FILL
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
//SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc screen
|
inc screen
|
||||||
@ -3049,8 +3049,8 @@ initscreen: {
|
|||||||
//SEG148 initscreen::@1
|
//SEG148 initscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #FILL
|
lda #FILL
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
//SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc screen
|
inc screen
|
||||||
@ -3658,8 +3658,8 @@ initscreen: {
|
|||||||
//SEG148 initscreen::@1
|
//SEG148 initscreen::@1
|
||||||
b1:
|
b1:
|
||||||
//SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
//SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
ldy #0
|
|
||||||
lda #FILL
|
lda #FILL
|
||||||
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
//SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
//SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
inc screen
|
inc screen
|
||||||
|
@ -32,8 +32,8 @@ main: {
|
|||||||
}
|
}
|
||||||
sum2: {
|
sum2: {
|
||||||
.label c = 2
|
.label c = 2
|
||||||
stx $ff
|
|
||||||
tya
|
tya
|
||||||
|
stx $ff
|
||||||
clc
|
clc
|
||||||
adc $ff
|
adc $ff
|
||||||
clc
|
clc
|
||||||
@ -42,8 +42,8 @@ sum2: {
|
|||||||
}
|
}
|
||||||
sum: {
|
sum: {
|
||||||
.label c = 2
|
.label c = 2
|
||||||
stx $ff
|
|
||||||
tya
|
tya
|
||||||
|
stx $ff
|
||||||
clc
|
clc
|
||||||
adc $ff
|
adc $ff
|
||||||
clc
|
clc
|
||||||
|
@ -917,8 +917,8 @@ main: {
|
|||||||
sum2: {
|
sum2: {
|
||||||
.label c = 2
|
.label c = 2
|
||||||
//SEG36 [23] (byte/word~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
//SEG36 [23] (byte/word~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
||||||
stx $ff
|
|
||||||
tya
|
tya
|
||||||
|
stx $ff
|
||||||
clc
|
clc
|
||||||
adc $ff
|
adc $ff
|
||||||
//SEG37 [24] (byte) sum2::return#1 ← (byte/word~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
//SEG37 [24] (byte) sum2::return#1 ← (byte/word~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
||||||
@ -934,8 +934,8 @@ sum2: {
|
|||||||
sum: {
|
sum: {
|
||||||
.label c = 2
|
.label c = 2
|
||||||
//SEG41 [26] (byte/word~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
//SEG41 [26] (byte/word~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
||||||
stx $ff
|
|
||||||
tya
|
tya
|
||||||
|
stx $ff
|
||||||
clc
|
clc
|
||||||
adc $ff
|
adc $ff
|
||||||
//SEG42 [27] (byte) sum::return#1 ← (byte/word~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
//SEG42 [27] (byte) sum::return#1 ← (byte/word~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
||||||
@ -1116,8 +1116,8 @@ main: {
|
|||||||
sum2: {
|
sum2: {
|
||||||
.label c = 2
|
.label c = 2
|
||||||
//SEG36 [23] (byte/word~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
//SEG36 [23] (byte/word~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
||||||
stx $ff
|
|
||||||
tya
|
tya
|
||||||
|
stx $ff
|
||||||
clc
|
clc
|
||||||
adc $ff
|
adc $ff
|
||||||
//SEG37 [24] (byte) sum2::return#1 ← (byte/word~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
//SEG37 [24] (byte) sum2::return#1 ← (byte/word~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
||||||
@ -1131,8 +1131,8 @@ sum2: {
|
|||||||
sum: {
|
sum: {
|
||||||
.label c = 2
|
.label c = 2
|
||||||
//SEG41 [26] (byte/word~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
//SEG41 [26] (byte/word~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuxx_plus_vbuyy
|
||||||
stx $ff
|
|
||||||
tya
|
tya
|
||||||
|
stx $ff
|
||||||
clc
|
clc
|
||||||
adc $ff
|
adc $ff
|
||||||
//SEG42 [27] (byte) sum::return#1 ← (byte/word~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
//SEG42 [27] (byte) sum::return#1 ← (byte/word~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuz1
|
||||||
|
@ -518,8 +518,8 @@ main: {
|
|||||||
adc zpptr2+1
|
adc zpptr2+1
|
||||||
sta w+1
|
sta w+1
|
||||||
//SEG28 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_pbuz1=vbuz2
|
//SEG28 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_pbuz1=vbuz2
|
||||||
ldy #0
|
|
||||||
lda k
|
lda k
|
||||||
|
ldy #0
|
||||||
sta (zpptr2_1),y
|
sta (zpptr2_1),y
|
||||||
//SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:2 [ main::j#6 main::i#4 main::k#1 ] ) -- vbuz1=_inc_vbuz1
|
//SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:2 [ main::j#6 main::i#4 main::k#1 ] ) -- vbuz1=_inc_vbuz1
|
||||||
inc k
|
inc k
|
||||||
|
Loading…
Reference in New Issue
Block a user