wudsn-ide/com.wudsn.ide.asm.compilers/src/com/wudsn/ide/lng/asm/compiler/kickass/KickAssCompiler.txt
2021-09-23 02:36:10 +02:00

52 lines
1.7 KiB
Plaintext

if (title.equals(name)) {
int index = name.indexOf("_");
String opcode;
String addressing;
if (index >= 0) {
opcode = name.substring(0, index);
addressing = name.substring(index + 1);
} else {
index=name.length();
opcode = name;
addressing = "";
}
StringBuilder result = new StringBuilder("Opcode ");
for (int i = 0; i < index; i++) {
result.append("_");
result.append(opcode.charAt(i));
}
if (addressing.equals("ABS")) {
result.append(" _a_b_solute");
} else if (addressing.equals("ABSX")) {
result.append(" _a_b_solute,_x");
} else if (addressing.equals("ABSY")) {
result.append(" _a_b_solute,_y");
} else if (addressing.equals("IMM")) {
result.append(" #_i_m_mediate");
} else if (addressing.equals("IZPX")) {
result.append(" (_indirect _zero_page,_x)");
} else if (addressing.equals("IZPY")) {
result.append(" (_indirect _zero_page),_y");
} else if (addressing.equals("ZP")) {
result.append(" _zero_page");
} else if (addressing.equals("ZPX")) {
result.append(" _zero_page,_x");
} else if (addressing.equals("ZPY")) {
result.append(" _zero_page,_y");
}else if (addressing.equals("REL")) {
result.append(" _r_e_lative");
} else if (addressing.equals("IND")) {
result.append(" (_i_n_direct)");
} else if (addressing.equals("")) {
} else {
throw new RuntimeException(
"Unknown addressing mode " + addressing);
}
title = result.toString();
}
System.out.println(" <constant cpu=\"" + cpuString
+ "\" name=\"" + name + "\" title=\"" + title
+ "\"/>");
}