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