1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Next part of fragment renaming completed (zpby1/zpsby1 => vbuz1/vbsz1)

This commit is contained in:
jespergravgaard 2017-12-12 20:53:22 +01:00
parent 7f6f1583a2
commit 07478e86b1
330 changed files with 4134 additions and 4098 deletions

View File

@ -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");
}

View File

@ -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);

View File

@ -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;

View File

@ -0,0 +1,2 @@
lda {z1}
sta {cowo1}

View File

@ -1,2 +0,0 @@
lda {zpby1}
sta {cowo1}

View File

@ -0,0 +1,3 @@
ldy #0
lda {z1}
sta ({zpptrby1}),y

View File

@ -1,3 +0,0 @@
ldy #0
lda {zpby1}
sta ({zpptrby1}),y

View File

@ -0,0 +1,3 @@
lda #{coby1}
cmp {z1}
bcs {la1}

View File

@ -1,3 +0,0 @@
lda #{coby1}
cmp {zpby1}
bcs {la1}

View File

@ -0,0 +1,3 @@
lda #{coby1}
cmp {z1}
bcc {la1}

View File

@ -1,3 +0,0 @@
lda #{coby1}
cmp {zpby1}
bcc {la1}

View File

@ -0,0 +1,3 @@
tax
lda {z1}
sta {cowo1},x

View File

@ -1,3 +0,0 @@
tax
lda {zpby1}
sta {cowo1},x

View File

@ -0,0 +1,2 @@
lda {z1}
sta {cowo1},x

View File

@ -1,2 +0,0 @@
lda {zpby1}
sta {cowo1},x

View File

@ -0,0 +1,2 @@
lda {z1}
sta {cowo1},y

View File

@ -1,2 +0,0 @@
lda {zpby1}
sta {cowo1},y

View File

@ -0,0 +1,3 @@
lda #{coby2}
ldx {z1}
sta {cowo1},x

View File

@ -0,0 +1,2 @@
ldx {z1}
sta {cowo1},x

View File

@ -0,0 +1,2 @@
ldx {z1}
sta {cowo1},x

View File

@ -0,0 +1,3 @@
txa
ldx {z1}
sta {cowo1},x

View File

@ -0,0 +1,3 @@
tya
ldy {z1}
sta {cowo1},y

View File

@ -0,0 +1,3 @@
ldx {z1}
txa
sta {cowo1},x

View File

@ -1,3 +0,0 @@
lda #{coby2}
ldx {zpby1}
sta {cowo1},x

View File

@ -1,2 +0,0 @@
ldx {zpby1}
sta {cowo1},x

View File

@ -1,2 +0,0 @@
ldx {zpby1}
sta {cowo1},x

View File

@ -1,3 +0,0 @@
txa
ldx {zpby1}
sta {cowo1},x

View File

@ -1,3 +0,0 @@
tya
ldy {zpby1}
sta {cowo1},y

View File

@ -1,3 +0,0 @@
ldx {zpby1}
txa
sta {cowo1},x

View File

@ -0,0 +1 @@
ldx {z1}

View File

@ -0,0 +1,3 @@
lda {z1}
sec
sbc #1

View File

@ -1,3 +0,0 @@
lda {zpby1}
sec
sbc #1

View File

@ -0,0 +1,3 @@
lda {z1}
clc
adc #1

View File

@ -1,3 +0,0 @@
lda {zpby1}
clc
adc #1

View File

@ -0,0 +1,3 @@
lda {z1}
clc
adc #{coby1}

View File

@ -1,3 +0,0 @@
lda {zpby1}
clc
adc #{coby1}

View File

@ -0,0 +1,2 @@
ldx {z1}
lda {cowo1},x

View File

@ -1,2 +0,0 @@
ldx {zpby1}
lda {cowo1},x

View File

@ -0,0 +1 @@
and {z1}

View File

@ -0,0 +1 @@
ora {z1}

View File

@ -0,0 +1 @@
xor {z1}

View File

@ -0,0 +1,2 @@
sec
sbc {z1}

View File

@ -0,0 +1,2 @@
clc
adc {z1}

View File

@ -0,0 +1,3 @@
txa
sec
sbc {z1}

View File

@ -1,3 +0,0 @@
txa
sec
sbc {zpby1}

View File

@ -0,0 +1,3 @@
txa
clc
adc {z1}

View File

@ -1,3 +0,0 @@
txa
clc
adc {zpby1}

View File

@ -0,0 +1,3 @@
tya
sec
sbc {z1}

View File

@ -1,3 +0,0 @@
tya
sec
sbc {zpby1}

View File

@ -0,0 +1,3 @@
tya
clc
adc {z1}

View File

@ -1,3 +0,0 @@
tya
clc
adc {zpby1}

View File

@ -0,0 +1 @@
lda {z1}

View File

@ -0,0 +1,3 @@
lda {z1}
ldx {z2}
ora {cowo1},x

View File

@ -0,0 +1,3 @@
lda {z1}
sec
sbc #1

View File

@ -0,0 +1,3 @@
lda {z1}
sec
sbc #{coby1}

View File

@ -0,0 +1,3 @@
lda {z1}
sec
sbc {z2}

View File

@ -0,0 +1,3 @@
lda {z1}
clc
adc #1

View File

@ -0,0 +1,3 @@
lda {z1}
clc
adc #{coby1}

View File

@ -0,0 +1,2 @@
clc
adc {z1}

View File

@ -0,0 +1,3 @@
txa
clc
adc {z1}

View File

@ -0,0 +1,3 @@
tya
clc
adc {z1}

View File

@ -0,0 +1,3 @@
lda {z1}
clc
adc {z2}

View File

@ -0,0 +1,3 @@
lda {z1}
lsr
lsr

View File

@ -1,3 +0,0 @@
lda {zpby1}
ldx {zpby2}
ora {cowo1},x

View File

@ -1,3 +0,0 @@
lda {zpby1}
sec
sbc #1

View File

@ -1,3 +0,0 @@
lda {zpby1}
sec
sbc #{coby1}

View File

@ -1,3 +0,0 @@
lda {zpby1}
sec
sbc {zpby2}

View File

@ -1,3 +0,0 @@
lda {zpby1}
clc
adc #1

View File

@ -1,3 +0,0 @@
lda {zpby1}
clc
adc #{coby1}

View File

@ -1,3 +0,0 @@
txa
clc
adc {zpby1}

View File

@ -1,3 +0,0 @@
tya
clc
adc {zpby1}

View File

@ -1,3 +0,0 @@
lda {zpby1}
clc
adc {zpby2}

View File

@ -1,3 +0,0 @@
lda {zpby1}
lsr
lsr

View File

@ -0,0 +1,2 @@
ldy {z1}
lda ({zpptrby1}),y

View File

@ -1,2 +0,0 @@
ldy {zpby1}
lda ({zpptrby1}),y

View File

@ -0,0 +1,2 @@
cmp {z1}
beq {la1}

View File

@ -1,2 +0,0 @@
cmp {zpby1}
beq {la1}

View File

@ -0,0 +1,2 @@
cmp {z1}
bcs {la1}

View File

@ -1,2 +0,0 @@
cmp {zpby1}
bcs {la1}

View File

@ -0,0 +1,3 @@
cmp {z1}
bcc {la1}
beq {la1}

View File

@ -1,3 +0,0 @@
cmp {zpby1}
bcc {la1}
beq {la1}

View File

@ -0,0 +1,2 @@
cmp {z1}
bcc {la1}

View File

@ -1,2 +0,0 @@
cmp {zpby1}
bcc {la1}

View File

@ -0,0 +1,2 @@
sec
sbc {z1}

View File

@ -1,2 +0,0 @@
sec
sbc {zpby1}

View File

@ -0,0 +1,2 @@
cmp {z1}
bne {la1}

View File

@ -1,2 +0,0 @@
cmp {zpby1}
bne {la1}

View File

@ -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