|
@@ -55,11 +55,8 @@ public class HoltekEmulator extends AbstractEmulator implements SPSEmulator {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
byte data = getData();
|
|
|
- HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
- emulatorOutput.d0 = (data & (byte) 0x01) > 0;
|
|
|
- emulatorOutput.d1 = (data & (byte) 0x02) > 0;
|
|
|
- emulatorOutput.d2 = (data & (byte) 0x04) > 0;
|
|
|
- emulatorOutput.d3 = (data & (byte) 0x08) > 0;
|
|
|
+ HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) output;
|
|
|
+ emulatorOutput.setOutput(data);
|
|
|
internals.incAddress(1);
|
|
|
return emulatorOutput;
|
|
|
}
|
|
@@ -97,8 +94,10 @@ public class HoltekEmulator extends AbstractEmulator implements SPSEmulator {
|
|
|
SPS_A_EQUALS.getCommandDatas().add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
- ((HoltekEmulatorInternals) internals).address++;
|
|
|
- return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
+ byte data = getData();
|
|
|
+ internals.setRegister("A", data);
|
|
|
+ internals.incAddress(1);
|
|
|
+ return output;
|
|
|
}
|
|
|
}.setName("A= " + Integer.toString(i)).setMnemonic(String.format("A%02d", i))
|
|
|
.setCommandByte((byte) (SPS_A_EQUALS.getCommandByte() + i)).setCommand(SPS_A_EQUALS));
|
|
@@ -112,14 +111,16 @@ public class HoltekEmulator extends AbstractEmulator implements SPSEmulator {
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ internals.setRegister("B", internals.getRegister("A"));
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
- return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
+ return output;
|
|
|
}
|
|
|
}.setName("B=A").setMnemonic("BEA").setCommandByte((byte) (SPS_EQUALS_A.getCommandByte() + 0x01))
|
|
|
.setCommand(SPS_EQUALS_A));
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ internals.setRegister("C", internals.getRegister("A"));
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
}
|
|
@@ -128,6 +129,7 @@ public class HoltekEmulator extends AbstractEmulator implements SPSEmulator {
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ internals.setRegister("D", internals.getRegister("A"));
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
}
|
|
@@ -136,6 +138,8 @@ public class HoltekEmulator extends AbstractEmulator implements SPSEmulator {
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) output;
|
|
|
+ emulatorOutput.setOutput(internals.getRegister("A"));
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
}
|
|
@@ -144,40 +148,62 @@ public class HoltekEmulator extends AbstractEmulator implements SPSEmulator {
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) output;
|
|
|
+ byte dataNew = internals.getRegister("A");
|
|
|
+ byte dataOld = emulatorOutput.getOutput();
|
|
|
+ byte data = (byte) ((dataOld & 0b00001110) + (dataNew & 0x01));
|
|
|
+ emulatorOutput.setOutput(data);
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
- return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
+ return emulatorOutput;
|
|
|
}
|
|
|
}.setName("Output.1=A").setMnemonic("O1EA").setCommandByte((byte) (SPS_EQUALS_A.getCommandByte() + 0x05))
|
|
|
.setCommand(SPS_EQUALS_A));
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) output;
|
|
|
+ byte dataNew = internals.getRegister("A");
|
|
|
+ byte dataOld = emulatorOutput.getOutput();
|
|
|
+ byte data = (byte) ((dataOld & 0b00001101) + ((dataNew & 0x01) << 1));
|
|
|
+ emulatorOutput.setOutput(data);
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
- return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
+ return emulatorOutput;
|
|
|
}
|
|
|
}.setName("Output.2=A").setMnemonic("O2EA").setCommandByte((byte) (SPS_EQUALS_A.getCommandByte() + 0x06))
|
|
|
.setCommand(SPS_EQUALS_A));
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) output;
|
|
|
+ byte dataNew = internals.getRegister("A");
|
|
|
+ byte dataOld = emulatorOutput.getOutput();
|
|
|
+ byte data = (byte) ((dataOld & 0b00001011) + ((dataNew & 0x01) << 2));
|
|
|
+ emulatorOutput.setOutput(data);
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
- return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
+ return emulatorOutput;
|
|
|
}
|
|
|
}.setName("Output.3=A").setMnemonic("O3EA").setCommandByte((byte) (SPS_EQUALS_A.getCommandByte() + 0x07))
|
|
|
.setCommand(SPS_EQUALS_A));
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) output;
|
|
|
+ byte dataNew = internals.getRegister("A");
|
|
|
+ byte dataOld = emulatorOutput.getOutput();
|
|
|
+ byte data = (byte) ((dataOld & 0b00000111) + ((dataNew & 0x01) << 3));
|
|
|
+ emulatorOutput.setOutput(data);
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
- return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
+ return emulatorOutput;
|
|
|
}
|
|
|
}.setName("Output.4=A").setMnemonic("O4EA").setCommandByte((byte) (SPS_EQUALS_A.getCommandByte() + 0x08))
|
|
|
.setCommand(SPS_EQUALS_A));
|
|
|
datas.add(new SPSCommandDataImpl() {
|
|
|
@Override
|
|
|
public EmulatorOutput doWork(EmulatorInput input, EmulatorInternals internals, EmulatorOutput output) {
|
|
|
+ HoltekEmulatorOutput emulatorOutput = (HoltekEmulatorOutput) output;
|
|
|
+ emulatorOutput.setFeature("PWM", internals.getRegister("A"));
|
|
|
((HoltekEmulatorInternals) internals).address++;
|
|
|
- return HoltekEmulator.getInstance().getEmulatorOutput();
|
|
|
+ return emulatorOutput;
|
|
|
}
|
|
|
}.setName("PWM=A").setMnemonic("PEA").setCommandByte((byte) (SPS_EQUALS_A.getCommandByte() + 0x09))
|
|
|
.setCommand(SPS_EQUALS_A));
|