mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-14 10:37:36 +00:00
Next part of fragment renaming completed (zpby1/zpsby1 => vbuz1/vbsz1)
This commit is contained in:
parent
7f6f1583a2
commit
07478e86b1
@ -62,7 +62,20 @@ public class AsmFragment {
|
||||
* @return The bound value to use in the generated ASM code
|
||||
*/
|
||||
public AsmParameter getBoundValue(String name) {
|
||||
Value boundValue = getBinding(name);
|
||||
Value boundValue = null;
|
||||
if(name.length()==2) {
|
||||
// Short name!
|
||||
for (String boundName : bindings.keySet()) {
|
||||
if(boundName.substring(boundName.length()-2).equals(name)) {
|
||||
boundValue = getBinding(boundName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Long name
|
||||
boundValue = getBinding(name);
|
||||
}
|
||||
|
||||
if (boundValue == null) {
|
||||
throw new RuntimeException("Binding '" + name + "' not found in fragment " + this.name + ".asm");
|
||||
}
|
||||
|
@ -86,12 +86,13 @@ public class AsmFragmentManager {
|
||||
*/
|
||||
private static CharStream synthesizeFragment(String signature, CompileLog log) {
|
||||
|
||||
Map<String, String> mapZpsby = new LinkedHashMap<>();
|
||||
mapZpsby.put("zpsby2", "zpsby1");
|
||||
mapZpsby.put("zpsby3", "zpsby2");
|
||||
Map<String, String> mapZpby = new LinkedHashMap<>();
|
||||
mapZpby.put("zpby2", "zpby1");
|
||||
mapZpby.put("zpby3", "zpby2");
|
||||
Map<String, String> mapZ = new LinkedHashMap<>();
|
||||
mapZ.put("vbsz2", "vbsz1");
|
||||
mapZ.put("vbsz3", "vbsz2");
|
||||
mapZ.put("vbuz2", "vbuz1");
|
||||
mapZ.put("vbuz3", "vbuz2");
|
||||
mapZ.put("z2", "z1");
|
||||
mapZ.put("z3", "z2");
|
||||
Map<String, String> mapZpptrby = new LinkedHashMap<>();
|
||||
mapZpptrby.put("zpptrby2", "zpptrby1");
|
||||
mapZpptrby.put("zpptrby3", "zpptrby2");
|
||||
@ -112,9 +113,9 @@ public class AsmFragmentManager {
|
||||
mapZpptrToWord3.put("zpptrby1", "zpwo1");
|
||||
mapZpptrToWord3.put("zpptrby2", "zpwo2");
|
||||
Map<String, String> mapSbyToBy = new LinkedHashMap<>();
|
||||
mapSbyToBy.put("zpsby1", "zpby1");
|
||||
mapSbyToBy.put("zpsby2", "zpby2");
|
||||
mapSbyToBy.put("zpsby3", "zpby3");
|
||||
mapSbyToBy.put("vbsz1", "vbuz1");
|
||||
mapSbyToBy.put("vbsz2", "vbuz2");
|
||||
mapSbyToBy.put("vbsz3", "vbuz3");
|
||||
mapSbyToBy.put("cosby1", "coby1");
|
||||
mapSbyToBy.put("cosby2", "coby2");
|
||||
mapSbyToBy.put("cosby3", "coby3");
|
||||
@ -129,19 +130,19 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_(band|bor|bxor|plus)_(vb.yy)", ".*=vb.[axy][axy]_.*", null, "$1=$4_$3_$2", null, null));
|
||||
|
||||
synths.add(new FragmentSynthesis("vbuxx=(.*)", null, null, "vbuaa=$1", "tax\n", null));
|
||||
synths.add(new FragmentSynthesis("vbsxx=(.*)", null, null, "vbuaa=$1", "tax\n", null));
|
||||
synths.add(new FragmentSynthesis("vbsxx=(.*)", null, null, "vbsaa=$1", "tax\n", null));
|
||||
synths.add(new FragmentSynthesis("vbuyy=(.*)", null, null, "vbuaa=$1", "tay\n", null));
|
||||
synths.add(new FragmentSynthesis("vbsyy=(.*)", null, null, "vbsaa=$1", "tay\n", null));
|
||||
synths.add(new FragmentSynthesis("zpby1=(.*)", ".*=.*zpby1.*", null, "vbuaa=$1", "sta {zpby1}\n", mapZpby));
|
||||
synths.add(new FragmentSynthesis("zpsby1=(.*)", ".*=.*zpsby1.*", null, "vbsaa=$1", "sta {zpsby1}\n", mapZpsby));
|
||||
synths.add(new FragmentSynthesis("vbuz1=(.*)", ".*=.*vb.z1.*", null, "vbuaa=$1", "sta {vbuz1}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("vbsz1=(.*)", ".*=.*vb.z1.*", null, "vbsaa=$1", "sta {vbsz1}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("_deref_cowo1=(.*)", null, null, "vbuaa=$1", "sta {cowo1}\n", mapConst));
|
||||
synths.add(new FragmentSynthesis("_deref_zpptrby1=(.*)", ".*=.*zpptrby1.*", null, "vbuaa=$1", "ldy #0\n" + "sta ({zpptrby1}),y\n", mapZpptrby));
|
||||
synths.add(new FragmentSynthesis("cowo1_derefidx_zpby1=(.*)", null, null, "vbuaa=$1", "ldx {zpby1}\n"+"sta {cowo1},x\n", mapZpby));
|
||||
synths.add(new FragmentSynthesis("cowo1_derefidx_vbuz1=(.*)", null, null, "vbuaa=$1", "ldx {vbuz1}\n"+"sta {cowo1},x\n", mapZ));
|
||||
|
||||
synths.add(new FragmentSynthesis("(.*)=vbuxx(.*)", ".*=.*vb.aa.*", "txa\n", "$1=vbuaa$2", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=vbuyy(.*)", ".*=.*vb.aa.*", "tya\n", "$1=vbuaa$2", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=zpby1(.*)", ".*=.*vb.aa.*|zpby1=.*", "lda {zpby1}\n", "$1=vbuaa$2", null, mapZpby));
|
||||
synths.add(new FragmentSynthesis("(.*)=zpsby1(.*)", ".*=.*vb.aa.*|zpsby1=.*", "lda {zpsby1}\n", "$1=vbuaa$2", null, mapZpsby));
|
||||
synths.add(new FragmentSynthesis("(.*)=vbuz1(.*)", ".*=.*vb.aa.*|vbuz1=.*", "lda {vbuz1}\n", "$1=vbuaa$2", null, mapZ));
|
||||
synths.add(new FragmentSynthesis("(.*)=vbsz1(.*)", ".*=.*vb.aa.*|vbsz1=.*", "lda {vbsz1}\n", "$1=vbuaa$2", null, mapZ));
|
||||
synths.add(new FragmentSynthesis("(.*)=_deref_cowo1(.*)", ".*=.*vb.aa.*", "lda {cowo1}\n", "$1=vbuaa$2", null, mapConst));
|
||||
synths.add(new FragmentSynthesis("(.*)=_deref_zpptrby1(.*)", ".*=.*vb.aa.*|.*=.*vb.yy.*", "ldy #0\n" + "lda ({zpptrby1}),y\n", "$1=vbuaa$2", null, mapZpptrby));
|
||||
|
||||
@ -149,19 +150,19 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsxx", ".*=vb.[ax][ax].*vb.xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbsaa", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuyy", ".*=[ay]s?by.*vb.yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbuaa", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsyy", ".*=[ay]s?by.*vb.yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbsaa", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_zpby1", ".*=.*vb.aa.*|.*zps?by1.*_zps?by1", "lda {zpby1}\n", "$1=$2_vbuaa", null, mapZpby));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_zpsby1", ".*=.*vb.aa.*|.*zps?by1.*_zps?by1", "lda {zpsby1}\n", "$1=$2_vbsaa", null, mapZpsby));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuz1", ".*=.*vb.aa.*|.*vb.z1.*_vb.z1", "lda {vbuz1}\n", "$1=$2_vbuaa", null, mapZ));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsz1", ".*=.*vb.aa.*|.*vb.z1.*_vb.z1", "lda {vbsz1}\n", "$1=$2_vbsaa", null, mapZ));
|
||||
|
||||
synths.add(new FragmentSynthesis("zpby1=zpby1(.*)", ".*=.*vb.aa.*", "lda {zpby1}\n", "vbuaa=vbuaa$1", "sta {zpby1}\n", mapZpby));
|
||||
synths.add(new FragmentSynthesis("zpsby1=zpsby1(.*)", ".*=.*vb.aa.*", "lda {zpsby1}\n", "vbsaa=vbsaa$1", "sta {zpsby1}\n", mapZpby));
|
||||
synths.add(new FragmentSynthesis("vbuz1=vbuz1(.*)", ".*=.*vb.aa.*", "lda {vbuz1}\n", "vbuaa=vbuaa$1", "sta {vbuz1}\n", mapZ));
|
||||
synths.add(new FragmentSynthesis("vbsz1=vbsz1(.*)", ".*=.*vb.aa.*", "lda {vbsz1}\n", "vbsaa=vbsaa$1", "sta {vbsz1}\n", mapZ));
|
||||
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*vb.yy.*", "tay\n", "$1=$2_derefidx_vbuyy", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*vb.xx.*", "tax\n", "$1=$2_derefidx_vbuxx", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_zpby1", ".*=.*vb.yy.*", "ldy {zpby1}\n", "$1=$2_derefidx_vbuyy", null, mapZpby));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_zpby1", ".*=.*vb.xx.*", "ldx {zpby1}\n", "$1=$2_derefidx_vbuxx", null, mapZpby));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*vb.yy.*", "ldy {vbuz1}\n", "$1=$2_derefidx_vbuyy", null, mapZ));
|
||||
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*vb.xx.*", "ldx {vbuz1}\n", "$1=$2_derefidx_vbuxx", null, mapZ));
|
||||
|
||||
synths.add(new FragmentSynthesis("zpby1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {zpby1}\n", "vbuaa_$1_$2", null, mapZpby));
|
||||
synths.add(new FragmentSynthesis("zpsby1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {zpsby1}\n", "vbsaa_$1_$2", null, mapZpsby));
|
||||
synths.add(new FragmentSynthesis("vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {vbuz1}\n", "vbuaa_$1_$2", null, mapZ));
|
||||
synths.add(new FragmentSynthesis("vbsz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {vbsz1}\n", "vbsaa_$1_$2", null, mapZ));
|
||||
synths.add(new FragmentSynthesis("_deref_cowo1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {cowo1}\n", "vbuaa_$1_$2", null, mapConst));
|
||||
synths.add(new FragmentSynthesis("_deref_zpptrby1_(lt|gt|le|ge|eq|neq)_(.*)", ".*=.*vb.aa.*|.*=.*vb.yy.*", "ldy #0\n" + "lda ({zpptrby1}),y\n", "vbuaa_$1_$2", null, mapZpptrby));
|
||||
synths.add(new FragmentSynthesis("(.*)_ge_(vb.aa)_then_(.*)", ".*vb.aa.*_ge.*", null, "$2_lt_$1_then_$3", null, null));
|
||||
@ -188,9 +189,10 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("zpptrby1=zpptrby1_(sethi|setlo|plus|minus)_zpwo1", null, null, "zpptrby1=zpptrby1_$1_zpwo1", null, mapZpptrToWord2));
|
||||
synths.add(new FragmentSynthesis("zpptrby1=zpptrby2_(sethi|setlo|plus|minus)_zpwo1", null, null, "zpptrby1=zpptrby2_$1_zpwo1", null, mapZpptrToWord3));
|
||||
|
||||
synths.add(new FragmentSynthesis("(zpsby.|vbsaa|vbsxx|vbsyy)_(eq|neq)_(zpsby.|csoby.|vbsaa|vbsxx|vbsyy)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSbyToBy));
|
||||
synths.add(new FragmentSynthesis("(zpsby.|vbsaa|vbsxx|vbsyy)=(zpsby.|cosby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2", null, mapSbyToBy));
|
||||
synths.add(new FragmentSynthesis("(zpsby.|vbsaa|vbsxx|vbsyy)=(zpsby.|csoby.|vbsaa|vbsxx|vbsyy)_(plus|band|bxor|bor)_(zpsby.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2_$3_$4", null, mapSbyToBy));
|
||||
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)_(eq|neq)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSbyToBy));
|
||||
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|cosby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2", null, mapSbyToBy));
|
||||
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)_(plus|band|bxor|bor)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2_$3_$4", null, mapSbyToBy));
|
||||
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=_(inc|dec)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=_$2_$3", null, mapSbyToBy));
|
||||
|
||||
for (FragmentSynthesis synth : synths) {
|
||||
CharStream synthesized = synth.synthesize(signature, log);
|
||||
@ -208,7 +210,7 @@ public class AsmFragmentManager {
|
||||
|
||||
/**
|
||||
* Bindings/mappings used when synthesizing one fragment from another fragment.
|
||||
* Eg. when synthesizing zpby1=zpby2_plus_zpby3 from vbuaa=zpby1_plus_zpby2 the bindings (zpby2->zpby1, zpby3->zpby2) are used.
|
||||
* Eg. when synthesizing vbuz1=vbuz2_plus_vbuz3 from vbuaa=vbuz1_plus_vbuz2 the bindings (vbuz2->vbuz1, vbuz3->vbuz2) are used.
|
||||
* <p>
|
||||
* Often the same bindings are used in the signature-name and in the asm-code, but the bindings can be different.
|
||||
* Eg. when synthesizing zpptrby1=zpptrby2_plus_zpwo1 from zpwo1=zpwo2_plus_zpwo3 the bindings (zpptrby1->zpwo1, zpptrby2->zpwo2, zpwo1->zpwo3)
|
||||
@ -268,7 +270,7 @@ public class AsmFragmentManager {
|
||||
List<String> reverse = new ArrayList<>(bindMappings.keySet());
|
||||
Collections.reverse(reverse);
|
||||
for (String bound : reverse) {
|
||||
subFragment = subFragment.replace(bindMappings.get(bound), bound);
|
||||
subFragment = subFragment.replace("{"+bindMappings.get(bound)+"}", "{"+bound+"}");
|
||||
}
|
||||
}
|
||||
newFragment.append(subFragment);
|
||||
|
@ -241,15 +241,9 @@ public class AsmFragmentSignature {
|
||||
// Create a new suitable name
|
||||
if (Registers.RegisterType.ZP_BYTE.equals(register.getType())) {
|
||||
SymbolType varType = ((Variable) value).getType();
|
||||
if (SymbolType.isByte(varType)) {
|
||||
String name = "zpby" + nextZpByteIdx++;
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
} else if (SymbolType.isSByte(varType)) {
|
||||
String name = "zpsby" + nextZpSByteIdx++;
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
}
|
||||
String name = getTypePrefix(varType) + getRegisterName(register);
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
} else if (Registers.RegisterType.REG_X_BYTE.equals(register.getType())) {
|
||||
SymbolType varType = ((Variable) value).getType();
|
||||
if (SymbolType.isByte(varType)) {
|
||||
@ -336,6 +330,59 @@ public class AsmFragmentSignature {
|
||||
throw new RuntimeException("Binding of value type not supported " + value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the symbol type part of the binding name (eg. vbu/pws/...)
|
||||
* @param type The type
|
||||
* @return The type name
|
||||
*/
|
||||
private String getTypePrefix(SymbolType type) {
|
||||
if (SymbolType.isByte(type)) {
|
||||
return "vbu";
|
||||
} else if (SymbolType.isSByte(type)) {
|
||||
return "vbs";
|
||||
} else {
|
||||
throw new RuntimeException("Not implemented "+type);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the register part of the binding name (eg. aa, z1, c2, ...).
|
||||
* Examines all previous bindings to reuse register index if the same register is bound multiple times.
|
||||
* @param register The register
|
||||
* @return The register part of the binding name.
|
||||
*/
|
||||
private String getRegisterName(Registers.Register register) {
|
||||
if(Registers.RegisterType.ZP_BYTE.equals(register.getType())) {
|
||||
return "z"+ getRegisterZpNameIdx((Registers.RegisterZp) register);
|
||||
} else {
|
||||
throw new RuntimeException("Not implemented "+register.getType());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the register ZP name index to use for a specific register.
|
||||
* Examines all previous bindings to reuse register index if the same register is bound multiple times.
|
||||
* @param register The register to find an index for
|
||||
* @return The index. Either reused ot allocated from {@link #nextZpByteIdx}
|
||||
*/
|
||||
private String getRegisterZpNameIdx(Registers.RegisterZp register) {
|
||||
Registers.RegisterZp registerZp = register;
|
||||
for (String boundName : bindings.keySet()) {
|
||||
Value boundValue = bindings.get(boundName);
|
||||
if(boundValue instanceof Variable) {
|
||||
Registers.Register boundRegister = ((Variable) boundValue).getAllocation();
|
||||
if(boundRegister!=null && boundRegister.isZp()) {
|
||||
Registers.RegisterZp boundRegisterZp = (Registers.RegisterZp) boundRegister;
|
||||
if(registerZp.getZp()==boundRegisterZp.getZp()) {
|
||||
// Found other register with same ZP address!
|
||||
return boundName.substring(boundName.length()-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Integer.toString(nextZpByteIdx++);
|
||||
}
|
||||
|
||||
|
||||
public Program getProgram() {
|
||||
return program;
|
||||
|
@ -0,0 +1,2 @@
|
||||
lda {z1}
|
||||
sta {cowo1}
|
@ -1,2 +0,0 @@
|
||||
lda {zpby1}
|
||||
sta {cowo1}
|
@ -0,0 +1,3 @@
|
||||
ldy #0
|
||||
lda {z1}
|
||||
sta ({zpptrby1}),y
|
@ -1,3 +0,0 @@
|
||||
ldy #0
|
||||
lda {zpby1}
|
||||
sta ({zpptrby1}),y
|
@ -0,0 +1,3 @@
|
||||
lda #{coby1}
|
||||
cmp {z1}
|
||||
bcs {la1}
|
@ -1,3 +0,0 @@
|
||||
lda #{coby1}
|
||||
cmp {zpby1}
|
||||
bcs {la1}
|
@ -1,4 +1,4 @@
|
||||
lda #{coby1}
|
||||
cmp {zpby1}
|
||||
cmp {z1}
|
||||
bcc {la1}
|
||||
beq {la1}
|
||||
beq {la1}
|
@ -0,0 +1,3 @@
|
||||
lda #{coby1}
|
||||
cmp {z1}
|
||||
bcc {la1}
|
@ -1,3 +0,0 @@
|
||||
lda #{coby1}
|
||||
cmp {zpby1}
|
||||
bcc {la1}
|
@ -0,0 +1,3 @@
|
||||
tax
|
||||
lda {z1}
|
||||
sta {cowo1},x
|
@ -1,3 +0,0 @@
|
||||
tax
|
||||
lda {zpby1}
|
||||
sta {cowo1},x
|
@ -0,0 +1,2 @@
|
||||
lda {z1}
|
||||
sta {cowo1},x
|
@ -1,2 +0,0 @@
|
||||
lda {zpby1}
|
||||
sta {cowo1},x
|
@ -0,0 +1,2 @@
|
||||
lda {z1}
|
||||
sta {cowo1},y
|
@ -1,2 +0,0 @@
|
||||
lda {zpby1}
|
||||
sta {cowo1},y
|
@ -0,0 +1,3 @@
|
||||
lda #{coby2}
|
||||
ldx {z1}
|
||||
sta {cowo1},x
|
@ -0,0 +1,2 @@
|
||||
ldx {z1}
|
||||
sta {cowo1},x
|
@ -0,0 +1,2 @@
|
||||
ldx {z1}
|
||||
sta {cowo1},x
|
@ -0,0 +1,3 @@
|
||||
txa
|
||||
ldx {z1}
|
||||
sta {cowo1},x
|
@ -0,0 +1,3 @@
|
||||
tya
|
||||
ldy {z1}
|
||||
sta {cowo1},y
|
@ -0,0 +1,3 @@
|
||||
ldx {z1}
|
||||
txa
|
||||
sta {cowo1},x
|
@ -1,3 +0,0 @@
|
||||
lda #{coby2}
|
||||
ldx {zpby1}
|
||||
sta {cowo1},x
|
@ -1,2 +0,0 @@
|
||||
ldx {zpby1}
|
||||
sta {cowo1},x
|
@ -1,2 +0,0 @@
|
||||
ldx {zpby1}
|
||||
sta {cowo1},x
|
@ -1,3 +0,0 @@
|
||||
txa
|
||||
ldx {zpby1}
|
||||
sta {cowo1},x
|
@ -1,3 +0,0 @@
|
||||
tya
|
||||
ldy {zpby1}
|
||||
sta {cowo1},y
|
@ -1,3 +0,0 @@
|
||||
ldx {zpby1}
|
||||
txa
|
||||
sta {cowo1},x
|
@ -0,0 +1 @@
|
||||
ldx {z1}
|
@ -1 +0,0 @@
|
||||
ldx {zpby1}
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
sec
|
||||
sbc #1
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
sec
|
||||
sbc #1
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
clc
|
||||
adc #1
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
clc
|
||||
adc #1
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
clc
|
||||
adc #{coby1}
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
clc
|
||||
adc #{coby1}
|
@ -0,0 +1,2 @@
|
||||
ldx {z1}
|
||||
lda {cowo1},x
|
@ -1,2 +0,0 @@
|
||||
ldx {zpby1}
|
||||
lda {cowo1},x
|
@ -0,0 +1 @@
|
||||
and {z1}
|
@ -1 +0,0 @@
|
||||
and {zpby1}
|
@ -0,0 +1 @@
|
||||
ora {z1}
|
@ -1 +0,0 @@
|
||||
ora {zpby1}
|
@ -0,0 +1 @@
|
||||
xor {z1}
|
@ -1 +0,0 @@
|
||||
xor {zpby1}
|
@ -0,0 +1,2 @@
|
||||
sec
|
||||
sbc {z1}
|
@ -1,2 +0,0 @@
|
||||
sec
|
||||
sbc {zpby1}
|
@ -0,0 +1,2 @@
|
||||
clc
|
||||
adc {z1}
|
@ -1,2 +0,0 @@
|
||||
clc
|
||||
adc {zpby1}
|
@ -0,0 +1,3 @@
|
||||
txa
|
||||
sec
|
||||
sbc {z1}
|
@ -1,3 +0,0 @@
|
||||
txa
|
||||
sec
|
||||
sbc {zpby1}
|
@ -0,0 +1,3 @@
|
||||
txa
|
||||
clc
|
||||
adc {z1}
|
@ -1,3 +0,0 @@
|
||||
txa
|
||||
clc
|
||||
adc {zpby1}
|
@ -0,0 +1,3 @@
|
||||
tya
|
||||
sec
|
||||
sbc {z1}
|
@ -1,3 +0,0 @@
|
||||
tya
|
||||
sec
|
||||
sbc {zpby1}
|
@ -0,0 +1,3 @@
|
||||
tya
|
||||
clc
|
||||
adc {z1}
|
@ -1,3 +0,0 @@
|
||||
tya
|
||||
clc
|
||||
adc {zpby1}
|
@ -0,0 +1 @@
|
||||
lda {z1}
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
ldx {z2}
|
||||
ora {cowo1},x
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
sec
|
||||
sbc #1
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
sec
|
||||
sbc #{coby1}
|
@ -1,3 +1,3 @@
|
||||
eor #$ff
|
||||
sec
|
||||
adc {zpby1}
|
||||
adc {z1}
|
@ -1,4 +1,4 @@
|
||||
stx $ff
|
||||
lda {zpby1}
|
||||
lda {z1}
|
||||
sec
|
||||
sbc $ff
|
@ -1,4 +1,4 @@
|
||||
sty $ff
|
||||
lda {zpby1}
|
||||
lda {z1}
|
||||
sec
|
||||
sbc $ff
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
sec
|
||||
sbc {z2}
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
clc
|
||||
adc #1
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
clc
|
||||
adc #{coby1}
|
@ -0,0 +1,2 @@
|
||||
clc
|
||||
adc {z1}
|
@ -0,0 +1,3 @@
|
||||
txa
|
||||
clc
|
||||
adc {z1}
|
@ -0,0 +1,3 @@
|
||||
tya
|
||||
clc
|
||||
adc {z1}
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
clc
|
||||
adc {z2}
|
@ -0,0 +1,3 @@
|
||||
lda {z1}
|
||||
lsr
|
||||
lsr
|
@ -1 +0,0 @@
|
||||
lda {zpby1}
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
ldx {zpby2}
|
||||
ora {cowo1},x
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
sec
|
||||
sbc #1
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
sec
|
||||
sbc #{coby1}
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
sec
|
||||
sbc {zpby2}
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
clc
|
||||
adc #1
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
clc
|
||||
adc #{coby1}
|
@ -1,2 +0,0 @@
|
||||
clc
|
||||
adc {zpby1}
|
@ -1,3 +0,0 @@
|
||||
txa
|
||||
clc
|
||||
adc {zpby1}
|
@ -1,3 +0,0 @@
|
||||
tya
|
||||
clc
|
||||
adc {zpby1}
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
clc
|
||||
adc {zpby2}
|
@ -1,3 +0,0 @@
|
||||
lda {zpby1}
|
||||
lsr
|
||||
lsr
|
@ -0,0 +1,2 @@
|
||||
ldy {z1}
|
||||
lda ({zpptrby1}),y
|
@ -1,2 +0,0 @@
|
||||
ldy {zpby1}
|
||||
lda ({zpptrby1}),y
|
@ -0,0 +1,2 @@
|
||||
cmp {z1}
|
||||
beq {la1}
|
@ -1,2 +0,0 @@
|
||||
cmp {zpby1}
|
||||
beq {la1}
|
@ -0,0 +1,2 @@
|
||||
cmp {z1}
|
||||
bcs {la1}
|
@ -1,2 +0,0 @@
|
||||
cmp {zpby1}
|
||||
bcs {la1}
|
@ -0,0 +1,3 @@
|
||||
cmp {z1}
|
||||
bcc {la1}
|
||||
beq {la1}
|
@ -1,3 +0,0 @@
|
||||
cmp {zpby1}
|
||||
bcc {la1}
|
||||
beq {la1}
|
@ -0,0 +1,2 @@
|
||||
cmp {z1}
|
||||
bcc {la1}
|
@ -1,2 +0,0 @@
|
||||
cmp {zpby1}
|
||||
bcc {la1}
|
@ -0,0 +1,2 @@
|
||||
sec
|
||||
sbc {z1}
|
@ -1,2 +0,0 @@
|
||||
sec
|
||||
sbc {zpby1}
|
@ -0,0 +1,2 @@
|
||||
cmp {z1}
|
||||
bne {la1}
|
@ -1,2 +0,0 @@
|
||||
cmp {zpby1}
|
||||
bne {la1}
|
@ -0,0 +1,3 @@
|
||||
ldx {z1}
|
||||
lda {cowo1},x
|
||||
tax
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user