Jelajahi Sumber

starting assembler

Wilfried Klaas 6 tahun lalu
induk
melakukan
c7f9aad9a2
33 mengubah file dengan 372 tambahan dan 33 penghapusan
  1. 1 1
      .classpath
  2. 11 0
      SimpleServo.tps
  3. 153 0
      src/main/java/de/mcs/tools/sps/SPSAssembler.java
  4. 1 1
      src/main/java/de/mcs/tools/sps/emulator/EmulatorInput.java
  5. 1 1
      src/main/java/de/mcs/tools/sps/emulator/EmulatorInternals.java
  6. 1 1
      src/main/java/de/mcs/tools/sps/emulator/EmulatorOutput.java
  7. 1 1
      src/main/java/de/mcs/tools/sps/emulator/SPSCommand.java
  8. 1 1
      src/main/java/de/mcs/tools/sps/emulator/SPSCommandData.java
  9. 1 1
      src/main/java/de/mcs/tools/sps/emulator/SPSCommandDataImpl.java
  10. 1 1
      src/main/java/de/mcs/tools/sps/emulator/SPSCommandImpl.java
  11. 2 2
      src/main/java/de/mcs/tools/sps/emulator/SPSEmulator.java
  12. 1 1
      src/main/java/de/mcs/tools/sps/emulator/TOutputCallback.java
  13. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/AbstractEmulator.java
  14. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulator.java
  15. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulatorInput.java
  16. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulatorInternals.java
  17. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulatorOutput.java
  18. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/SPSCommandDataJumpDown.java
  19. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/SPSCommandDataNOP.java
  20. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/SPSCommandDataWait.java
  21. 0 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/package-info.java
  22. 26 0
      src/main/java/de/mcs/tools/sps/emulator/emulator/package-info.java
  23. 0 0
      src/main/java/de/mcs/tools/sps/emulator/exceptions/WrongProgramSizeException.java
  24. 0 0
      src/main/java/de/mcs/tools/sps/emulator/exceptions/package-info.java
  25. 0 0
      src/main/java/de/mcs/tools/sps/emulator/package-info.java
  26. 41 0
      src/main/java/de/mcs/tools/sps/mnemonic/AbstractMnemonic.java
  27. 5 0
      src/main/java/de/mcs/tools/sps/mnemonic/Mnemonic.java
  28. 37 0
      src/main/java/de/mcs/tools/sps/mnemonic/MnemonicFactory.java
  29. 34 0
      src/main/java/de/mcs/tools/sps/mnemonic/Not.java
  30. 26 0
      src/main/java/de/mcs/tools/sps/mnemonic/package-info.java
  31. 10 6
      src/test/java/de/mcs/tools/sps/emulator/emulator/holtek/TestHoltekCommands.java
  32. 10 10
      src/test/java/de/mcs/tools/sps/emulator/emulator/holtek/TestHoltekEmulator.java
  33. 8 6
      src/test/java/de/mcs/tools/sps/emulator/emulator/holtek/TestHoltekProgram.java

+ 1 - 1
.classpath

@@ -24,7 +24,7 @@
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-10">
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
 		<attributes>
 			<attribute name="module" value="true"/>
 			<attribute name="maven.pomderived" value="true"/>

+ 11 - 0
SimpleServo.tps

@@ -0,0 +1,11 @@
+:loop
+; kommentar
+PORT 5
+WAIT 200
+/*
+block
+*/
+PORT 0x0F
+WAIT 200  ; line komment
+NOP
+JMP- :loop

+ 153 - 0
src/main/java/de/mcs/tools/sps/SPSAssembler.java

@@ -0,0 +1,153 @@
+/**
+ * MCS Media Computer Software
+ * Copyright 2018 by Wilfried Klaas
+ * Project: SPSEmulator
+ * File: SPSAssembler.java
+ * EMail: W.Klaas@gmx.de
+ * Created: 25.11.2018 wklaa_000
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ */
+package de.mcs.tools.sps;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.commons.lang3.StringUtils;
+
+import de.mcs.tools.sps.mnemonic.Mnemonic;
+import de.mcs.tools.sps.mnemonic.MnemonicFactory;
+
+/**
+ * @author wklaa_000
+ *
+ */
+public class SPSAssembler {
+
+  private static File source;
+  private static File destination;
+  private static int lineNumber;
+  private static Map<String, Integer> labels = new HashMap<>();
+  private static boolean inBlockComment;
+  private static List<Mnemonic> mnemonics = new ArrayList<>();
+
+  /**
+   * 
+   */
+  public SPSAssembler() {
+    // TODO Auto-generated constructor stub
+  }
+
+  /**
+   * @param args
+   * @throws IOException
+   */
+  public static void main(String[] args) throws IOException {
+    if (args.length == 0) {
+      showHelp();
+    }
+    source = new File(args[0]);
+    if (!source.exists()) {
+      throw new FileNotFoundException(String.format("source file not found. %s", source.getAbsolutePath()));
+    }
+    System.out.printf("source file: %s \r\n", source.getName());
+    if (args.length > 1) {
+      destination = new File(args[1]);
+    } else {
+      String name = source.getName();
+      name = name.substring(0, source.getName().lastIndexOf("."));
+      destination = new File(source.getParentFile(), name + ".hex");
+    }
+    System.out.printf("destination file: %s \r\n", destination.getName());
+    System.out.println();
+
+    List<String> sourceFile = Files.readAllLines(source.toPath(), Charset.forName("UTF-8"));
+    sourceFile.forEach(line -> parseLine(line));
+
+    System.out.println("Mnemonics");
+    int pos = 0;
+    for (Iterator<Mnemonic> iterator = mnemonics.iterator(); iterator.hasNext();) {
+      Mnemonic mnemonic = iterator.next();
+      System.out.printf("%03d: %s\r\n", pos, mnemonic.toString());
+      pos++;
+    }
+
+    System.out.println();
+    System.out.println("labels");
+    for (Entry<String, Integer> entry : labels.entrySet()) {
+      System.out.printf("%s: %03d\r\n", entry.getKey(), entry.getValue());
+    }
+  }
+
+  private static void parseLine(String line) {
+    if (line.startsWith(":")) {
+      String label = getLabel(line);
+      labels.put(label, lineNumber);
+    } else {
+      Mnemonic mnemonic = getMnemonic(line);
+      if (mnemonic != null) {
+        lineNumber++;
+        mnemonics.add(mnemonic);
+      }
+    }
+  }
+
+  private static Mnemonic getMnemonic(String line) {
+    String newLine = stripComments(line);
+    if (StringUtils.isNotEmpty(newLine)) {
+      Mnemonic mnemonic = MnemonicFactory.getMnemonic(newLine);
+      return mnemonic;
+    }
+    return null;
+  }
+
+  private static String stripComments(String line) {
+    if (line.indexOf("*/") >= 0) {
+      inBlockComment = false;
+      return null;
+    }
+    if (inBlockComment) {
+      return null;
+    }
+    if (line.indexOf(";") >= 0) {
+      line = line.substring(0, line.indexOf(";")).trim();
+      return line;
+    }
+    if (line.startsWith("/*")) {
+      inBlockComment = true;
+      return null;
+    }
+    return line.trim();
+  }
+
+  private static String getLabel(String line) {
+    line = stripComments(line);
+    return line;
+  }
+
+  private static void showHelp() {
+    System.out.println("usage SPSAssembler <sorucefile> [<destination>]");
+    System.exit(0);
+  }
+
+}

+ 1 - 1
src/main/java/de/mcs/tools/sps/EmulatorInput.java → src/main/java/de/mcs/tools/sps/emulator/EmulatorInput.java

@@ -1,4 +1,4 @@
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 public interface EmulatorInput {
 

+ 1 - 1
src/main/java/de/mcs/tools/sps/EmulatorInternals.java → src/main/java/de/mcs/tools/sps/emulator/EmulatorInternals.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 /**
  * This interface is for getting the emualtor internal

+ 1 - 1
src/main/java/de/mcs/tools/sps/EmulatorOutput.java → src/main/java/de/mcs/tools/sps/emulator/EmulatorOutput.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 /**
  * this is the interface of all Emulatoroutputs

+ 1 - 1
src/main/java/de/mcs/tools/sps/SPSCommand.java → src/main/java/de/mcs/tools/sps/emulator/SPSCommand.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 import java.util.List;
 

+ 1 - 1
src/main/java/de/mcs/tools/sps/SPSCommandData.java → src/main/java/de/mcs/tools/sps/emulator/SPSCommandData.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 /**
  * a single command data for the emulator

+ 1 - 1
src/main/java/de/mcs/tools/sps/SPSCommandDataImpl.java → src/main/java/de/mcs/tools/sps/emulator/SPSCommandDataImpl.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 /**
  * @author w.klaas

+ 1 - 1
src/main/java/de/mcs/tools/sps/SPSCommandImpl.java → src/main/java/de/mcs/tools/sps/emulator/SPSCommandImpl.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 import java.util.ArrayList;
 import java.util.List;

+ 2 - 2
src/main/java/de/mcs/tools/sps/SPSEmulator.java → src/main/java/de/mcs/tools/sps/emulator/SPSEmulator.java

@@ -1,11 +1,11 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 import java.util.List;
 
-import de.mcs.tools.sps.exceptions.WrongProgramSizeException;
+import de.mcs.tools.sps.emulator.exceptions.WrongProgramSizeException;
 
 /**
  * @author w.klaas

+ 1 - 1
src/main/java/de/mcs/tools/sps/TOutputCallback.java → src/main/java/de/mcs/tools/sps/emulator/TOutputCallback.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps;
+package de.mcs.tools.sps.emulator;
 
 /**
  * Interface for the callbacks on the emulator

+ 0 - 0
src/main/java/de/mcs/tools/sps/AbstractEmulator.java → src/main/java/de/mcs/tools/sps/emulator/emulator/AbstractEmulator.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/HoltekEmulator.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulator.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/HoltekEmulatorInput.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulatorInput.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/HoltekEmulatorInternals.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulatorInternals.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/HoltekEmulatorOutput.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/HoltekEmulatorOutput.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/SPSCommandDataJumpDown.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/SPSCommandDataJumpDown.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/SPSCommandDataNOP.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/SPSCommandDataNOP.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/SPSCommandDataWait.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/SPSCommandDataWait.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/holtek/package-info.java → src/main/java/de/mcs/tools/sps/emulator/emulator/holtek/package-info.java


+ 26 - 0
src/main/java/de/mcs/tools/sps/emulator/emulator/package-info.java

@@ -0,0 +1,26 @@
+/**
+ * MCS Media Computer Software
+ * Copyright 2018 by Wilfried Klaas
+ * Project: SPSEmulator
+ * File: package-info.java
+ * EMail: W.Klaas@gmx.de
+ * Created: 25.11.2018 wklaa_000
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ */
+/**
+ * @author wklaa_000
+ *
+ */
+package de.mcs.tools.sps.emulator.emulator;

+ 0 - 0
src/main/java/de/mcs/tools/sps/exceptions/WrongProgramSizeException.java → src/main/java/de/mcs/tools/sps/emulator/exceptions/WrongProgramSizeException.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/exceptions/package-info.java → src/main/java/de/mcs/tools/sps/emulator/exceptions/package-info.java


+ 0 - 0
src/main/java/de/mcs/tools/sps/package-info.java → src/main/java/de/mcs/tools/sps/emulator/package-info.java


+ 41 - 0
src/main/java/de/mcs/tools/sps/mnemonic/AbstractMnemonic.java

@@ -0,0 +1,41 @@
+/**
+ * MCS Media Computer Software
+ * Copyright 2018 by Wilfried Klaas
+ * Project: SPSEmulator
+ * File: AbstractMnemonic.java
+ * EMail: W.Klaas@gmx.de
+ * Created: 25.11.2018 wklaa_000
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ */
+package de.mcs.tools.sps.mnemonic;
+
+/**
+ * @author wklaa_000
+ *
+ */
+public class AbstractMnemonic implements Mnemonic {
+
+  private String srcLine;
+
+  AbstractMnemonic(String line) {
+    this.srcLine = line;
+  }
+
+  @Override
+  public String toString() {
+    return srcLine;
+  }
+
+}

+ 5 - 0
src/main/java/de/mcs/tools/sps/mnemonic/Mnemonic.java

@@ -0,0 +1,5 @@
+package de.mcs.tools.sps.mnemonic;
+
+public interface Mnemonic {
+
+}

+ 37 - 0
src/main/java/de/mcs/tools/sps/mnemonic/MnemonicFactory.java

@@ -0,0 +1,37 @@
+/**
+ * MCS Media Computer Software
+ * Copyright 2018 by Wilfried Klaas
+ * Project: SPSEmulator
+ * File: Mnemonic.java
+ * EMail: W.Klaas@gmx.de
+ * Created: 25.11.2018 wklaa_000
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ */
+package de.mcs.tools.sps.mnemonic;
+
+/**
+ * @author wklaa_000
+ *
+ */
+public class MnemonicFactory {
+
+  public MnemonicFactory() {
+  }
+
+  public static Mnemonic getMnemonic(String line) {
+    return new AbstractMnemonic(line);
+  }
+
+}

+ 34 - 0
src/main/java/de/mcs/tools/sps/mnemonic/Not.java

@@ -0,0 +1,34 @@
+/**
+ * MCS Media Computer Software
+ * Copyright 2018 by Wilfried Klaas
+ * Project: SPSEmulator
+ * File: Not.java
+ * EMail: W.Klaas@gmx.de
+ * Created: 25.11.2018 wklaa_000
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ */
+package de.mcs.tools.sps.mnemonic;
+
+/**
+ * @author wklaa_000
+ *
+ */
+public class Not extends AbstractMnemonic implements Mnemonic {
+
+  Not(String line) {
+    super(line);
+  }
+
+}

+ 26 - 0
src/main/java/de/mcs/tools/sps/mnemonic/package-info.java

@@ -0,0 +1,26 @@
+/**
+ * MCS Media Computer Software
+ * Copyright 2018 by Wilfried Klaas
+ * Project: SPSEmulator
+ * File: package-info.java
+ * EMail: W.Klaas@gmx.de
+ * Created: 25.11.2018 wklaa_000
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ */
+/**
+ * @author wklaa_000
+ *
+ */
+package de.mcs.tools.sps.mnemonic;

+ 10 - 6
src/test/java/de/mcs/tools/sps/holtek/TestHoltekCommands.java → src/test/java/de/mcs/tools/sps/emulator/emulator/holtek/TestHoltekCommands.java

@@ -1,7 +1,7 @@
 /**
  * 
  */
-package de.mcs.tools.sps.holtek;
+package de.mcs.tools.sps.emulator.emulator.holtek;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -10,11 +10,15 @@ 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.EmulatorInput;
-import de.mcs.tools.sps.EmulatorInternals;
-import de.mcs.tools.sps.EmulatorOutput;
-import de.mcs.tools.sps.SPSCommandData;
-import de.mcs.tools.sps.SPSEmulator;
+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

+ 10 - 10
src/test/java/de/mcs/tools/sps/holtek/TestHoltekEmulator.java → src/test/java/de/mcs/tools/sps/emulator/emulator/holtek/TestHoltekEmulator.java

@@ -1,4 +1,4 @@
-package de.mcs.tools.sps.holtek;
+package de.mcs.tools.sps.emulator.emulator.holtek;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -12,15 +12,15 @@ import java.util.List;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import de.mcs.tools.sps.EmulatorInternals;
-import de.mcs.tools.sps.EmulatorOutput;
-import de.mcs.tools.sps.SPSCommand;
-import de.mcs.tools.sps.SPSCommandData;
-import de.mcs.tools.sps.SPSEmulator;
-import de.mcs.tools.sps.TOutputCallback;
-import de.mcs.tools.sps.exceptions.WrongProgramSizeException;
-import de.mcs.tools.sps.holtek.HoltekEmulator;
-import de.mcs.tools.sps.holtek.HoltekEmulatorOutput;
+import de.mcs.tools.sps.emulator.EmulatorInternals;
+import de.mcs.tools.sps.emulator.EmulatorOutput;
+import de.mcs.tools.sps.emulator.SPSCommand;
+import de.mcs.tools.sps.emulator.SPSCommandData;
+import de.mcs.tools.sps.emulator.SPSEmulator;
+import de.mcs.tools.sps.emulator.TOutputCallback;
+import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulator;
+import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulatorOutput;
+import de.mcs.tools.sps.emulator.exceptions.WrongProgramSizeException;
 
 class TestHoltekEmulator implements TOutputCallback {
 

+ 8 - 6
src/test/java/de/mcs/tools/sps/holtek/TestHoltekProgram.java → src/test/java/de/mcs/tools/sps/emulator/emulator/holtek/TestHoltekProgram.java

@@ -1,13 +1,15 @@
-package de.mcs.tools.sps.holtek;
+package de.mcs.tools.sps.emulator.emulator.holtek;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import de.mcs.tools.sps.EmulatorInput;
-import de.mcs.tools.sps.EmulatorInternals;
-import de.mcs.tools.sps.EmulatorOutput;
-import de.mcs.tools.sps.TOutputCallback;
-import de.mcs.tools.sps.exceptions.WrongProgramSizeException;
+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.TOutputCallback;
+import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulator;
+import de.mcs.tools.sps.emulator.emulator.holtek.HoltekEmulatorInternals;
+import de.mcs.tools.sps.emulator.exceptions.WrongProgramSizeException;
 
 class TestHoltekProgram implements TOutputCallback {