|
@@ -1,548 +0,0 @@
|
|
|
-/**
|
|
|
- *
|
|
|
- */
|
|
|
-package de.mcs.tools.sps.emulator.emulator.holtek;
|
|
|
-
|
|
|
-import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
-import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
|
-import static org.junit.jupiter.api.Assertions.assertNull;
|
|
|
-
|
|
|
-import org.junit.jupiter.api.BeforeAll;
|
|
|
-import org.junit.jupiter.api.Test;
|
|
|
-
|
|
|
-import de.mcs.tools.sps.emulator.EmulatorInput;
|
|
|
-import de.mcs.tools.sps.emulator.EmulatorInternals;
|
|
|
-import de.mcs.tools.sps.emulator.EmulatorOutput;
|
|
|
-import de.mcs.tools.sps.emulator.SPSCommandData;
|
|
|
-import de.mcs.tools.sps.emulator.SPSEmulator;
|
|
|
-import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulator;
|
|
|
-import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulatorInput;
|
|
|
-import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulatorInternals;
|
|
|
-import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulatorOutput;
|
|
|
-
|
|
|
-/**
|
|
|
- * @author w.klaas
|
|
|
- *
|
|
|
- */
|
|
|
-public class TestHoltekCommands {
|
|
|
-
|
|
|
- private static SPSEmulator holtekEmulator;
|
|
|
- private static EmulatorInput input;
|
|
|
- private static EmulatorOutput output;
|
|
|
- private static EmulatorInternals internals;
|
|
|
-
|
|
|
- @BeforeAll
|
|
|
- static void setUp() throws Exception {
|
|
|
- holtekEmulator = new HoltekEmulator();
|
|
|
- input = new HoltekEmulatorInput();
|
|
|
- output = new HoltekEmulatorOutput();
|
|
|
- internals = new HoltekEmulatorInternals();
|
|
|
- }
|
|
|
-
|
|
|
- SPSCommandData getCommandData(byte command) {
|
|
|
- return holtekEmulator.getCommandData(command);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void test0x70Empty() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x70);
|
|
|
- assertNull(data);
|
|
|
- }
|
|
|
-
|
|
|
- // A = A + 1
|
|
|
- @Test
|
|
|
- public void testIncA() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x71);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x04, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A - 1
|
|
|
- @Test
|
|
|
- public void testDecA() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x72);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x02, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x00);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0F, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A + B
|
|
|
- @Test
|
|
|
- public void testADDB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x73);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x03);
|
|
|
- internals.setRegister("B", (byte) 0x04);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x07, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x07);
|
|
|
- internals.setRegister("B", (byte) 0x07);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0e, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x08);
|
|
|
- internals.setRegister("B", (byte) 0x08);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A - B
|
|
|
- @Test
|
|
|
- public void testSUBB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x74);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x04);
|
|
|
- internals.setRegister("B", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x01, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x07);
|
|
|
- internals.setRegister("B", (byte) 0x07);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x08);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0E, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A * B
|
|
|
- @Test
|
|
|
- public void testMULB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x75);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x02);
|
|
|
- internals.setRegister("B", (byte) 0x02);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x04, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x03);
|
|
|
- internals.setRegister("B", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x09, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x08);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A / B
|
|
|
- @Test
|
|
|
- public void testDIVB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x76);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x02);
|
|
|
- internals.setRegister("B", (byte) 0x02);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x01, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x02, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x04);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x01, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x07);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A AND B
|
|
|
- @Test
|
|
|
- public void testANDB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x77);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x02);
|
|
|
- internals.setRegister("B", (byte) 0x02);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x02, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x02, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- internals.setRegister("B", (byte) 0x00);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- internals.setRegister("B", (byte) 0x0F);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0F, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A OR B
|
|
|
- @Test
|
|
|
- public void testORB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x78);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x02);
|
|
|
- internals.setRegister("B", (byte) 0x02);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x02, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x07, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- internals.setRegister("B", (byte) 0x00);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0F, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- internals.setRegister("B", (byte) 0x0F);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0F, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = A XOR B
|
|
|
- @Test
|
|
|
- public void testXORB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x79);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x02);
|
|
|
- internals.setRegister("B", (byte) 0x02);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- internals.setRegister("B", (byte) 0x03);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x05, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- internals.setRegister("B", (byte) 0x00);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0F, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- internals.setRegister("B", (byte) 0x0F);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // A = NOT A
|
|
|
- @Test
|
|
|
- public void testNOTA() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0x7A);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister("A", (byte) 0x02);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0D, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x06);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x09, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x0F);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x00, internals.getRegister("A"));
|
|
|
-
|
|
|
- internals.setRegister("A", (byte) 0x00);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x0F, internals.getRegister("A"));
|
|
|
- }
|
|
|
-
|
|
|
- // PAGE = #
|
|
|
- @Test
|
|
|
- public void testPage() {
|
|
|
- for (int i = 0; i < 16; i++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0x80 + i));
|
|
|
- if (i < 0x08) {
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(i, internals.getRegister(HoltekEmulatorInternals.REGISTER_PAGE));
|
|
|
- } else {
|
|
|
- assertNull(data);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // JUMP #
|
|
|
- @Test
|
|
|
- public void testJump() {
|
|
|
- for (int page = 0; page < 16; page++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0x80 + page));
|
|
|
- if (page < 0x08) {
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(page, internals.getRegister(HoltekEmulatorInternals.REGISTER_PAGE));
|
|
|
- for (int x = 0; x < 16; x++) {
|
|
|
- data = getCommandData((byte) (0x90 + x));
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals((x + 16 * page), internals.getAddress());
|
|
|
- }
|
|
|
- } else {
|
|
|
- assertNull(data);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // C LOOP #
|
|
|
- @Test
|
|
|
- public void testCLoop() {
|
|
|
- for (int page = 0; page < 16; page++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0x80 + page));
|
|
|
- if (page < 0x08) {
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(page, internals.getRegister(HoltekEmulatorInternals.REGISTER_PAGE));
|
|
|
- for (int x = 0; x < 16; x++) {
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_C, (byte) 4);
|
|
|
- data = getCommandData((byte) (0xA0 + x));
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals((x + 16 * page), internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(0);
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_C, (byte) 0);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x01, internals.getAddress());
|
|
|
- }
|
|
|
- } else {
|
|
|
- assertNull(data);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // D LOOP #
|
|
|
- @Test
|
|
|
- public void testDLoop() {
|
|
|
- for (int page = 0; page < 16; page++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0x80 + page));
|
|
|
- if (page < 0x08) {
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(page, internals.getRegister(HoltekEmulatorInternals.REGISTER_PAGE));
|
|
|
- for (int x = 0; x < 16; x++) {
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_D, (byte) 4);
|
|
|
- data = getCommandData((byte) (0xB0 + x));
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals((x + 16 * page), internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(0);
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_D, (byte) 0);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(0x01, internals.getAddress());
|
|
|
- }
|
|
|
- } else {
|
|
|
- assertNull(data);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // SKIP IF A > B
|
|
|
- @Test
|
|
|
- public void testSkipIfAgtB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0xC1);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_A, (byte) 0x03);
|
|
|
-
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_B, (byte) 0x04);
|
|
|
- internals.setAddress(1);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_B, (byte) 0x02);
|
|
|
- internals.setAddress(1);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
- }
|
|
|
-
|
|
|
- // SKIP IF A < B
|
|
|
- @Test
|
|
|
- public void testSkipIfAltB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0xC2);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_A, (byte) 0x03);
|
|
|
-
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_B, (byte) 0x02);
|
|
|
- internals.setAddress(1);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_B, (byte) 0x04);
|
|
|
- internals.setAddress(1);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
- }
|
|
|
-
|
|
|
- // SKIP IF A = B
|
|
|
- @Test
|
|
|
- public void testSkipIfAeqB() {
|
|
|
- SPSCommandData data = getCommandData((byte) 0xC3);
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_A, (byte) 0x03);
|
|
|
-
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_B, (byte) 0x02);
|
|
|
- internals.setAddress(1);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_B, (byte) 0x04);
|
|
|
- internals.setAddress(1);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_B, (byte) 0x03);
|
|
|
- internals.setAddress(1);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
- }
|
|
|
-
|
|
|
- // SKIP IF Input = 1
|
|
|
- @Test
|
|
|
- public void testSkipIfIn1() {
|
|
|
- for (int i = 0; i < 4; i++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0xC4 + i));
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setAddress(1);
|
|
|
- input.setInput((byte) 0x00);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(1);
|
|
|
- input.setInput((byte) (0x01 << i));
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // SKIP IF Input = 0
|
|
|
- @Test
|
|
|
- public void testSkipIfIn0() {
|
|
|
- for (int i = 0; i < 4; i++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0xC8 + i));
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setAddress(1);
|
|
|
- input.setInput((byte) 0x00);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(1);
|
|
|
- input.setInput((byte) (0x01 << i));
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // SKIP IF S1, S2
|
|
|
- @Test
|
|
|
- public void testSkipIfS12() {
|
|
|
- for (int i = 0; i < 4; i++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0xCC));
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S1, false);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S1, true);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- data = getCommandData((byte) (0xCD));
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S2, false);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S2, true);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- data = getCommandData((byte) (0xCE));
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S1, true);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S1, false);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
-
|
|
|
- data = getCommandData((byte) (0xCF));
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S2, true);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(3, internals.getAddress());
|
|
|
-
|
|
|
- internals.setAddress(1);
|
|
|
- input.setFeature(HoltekEmulatorInput.S2, false);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(2, internals.getAddress());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // Call & Return
|
|
|
- @Test
|
|
|
- public void testCallReturn() {
|
|
|
- for (int i = 0; i < 16; i++) {
|
|
|
- SPSCommandData data = getCommandData((byte) (0xD0 + i));
|
|
|
- assertNotNull(data);
|
|
|
- internals.reset();
|
|
|
- internals.setAddress(i);
|
|
|
- internals.setRegister(HoltekEmulatorInternals.REGISTER_PAGE, (byte) i);
|
|
|
-
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(i + 16 * i, internals.getAddress());
|
|
|
- assertEquals(i, ((HoltekEmulatorInternals) internals).rtrAddress);
|
|
|
-
|
|
|
- data = getCommandData((byte) 0xE0);
|
|
|
- assertNotNull(data);
|
|
|
- data.doWork(input, internals, output);
|
|
|
- assertEquals(i, internals.getAddress());
|
|
|
- }
|
|
|
- }
|
|
|
-}
|