|
@@ -0,0 +1,114 @@
|
|
|
+/**
|
|
|
+ * MCS Media Computer Software
|
|
|
+ * Copyright 2019 by Wilfried Klaas
|
|
|
+ * Project: SPSEmulator
|
|
|
+ * File: AbstractEmulator.java
|
|
|
+ * EMail: W.Klaas@gmx.de
|
|
|
+ * Created: 31.01.2019 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.emulator;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import de.mcs.tools.sps.SPSAssembler;
|
|
|
+import de.mcs.tools.sps.emulator.model.WebSessionModel;
|
|
|
+import de.mcs.tools.sps.emulator.model.WorkingModel;
|
|
|
+import de.mcs.tools.sps.emulator.model.WorkingModel.WORKINGSTATE;
|
|
|
+import de.mcs.tools.sps.mnemonic.Mnemonic;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author wklaa_000
|
|
|
+ *
|
|
|
+ */
|
|
|
+public abstract class AbstractEmulator implements Emulator {
|
|
|
+
|
|
|
+ private WebSessionModel model;
|
|
|
+
|
|
|
+ public AbstractEmulator(WebSessionModel model) {
|
|
|
+ this.model = model;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return the model
|
|
|
+ */
|
|
|
+ public WebSessionModel getModel() {
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * starting the emulatiing process. Resetting all registers, addresses,
|
|
|
+ * stacks, outputs...
|
|
|
+ *
|
|
|
+ * @return return true, if everything is ok.
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean start() {
|
|
|
+ WorkingModel work = model.getWork();
|
|
|
+ work.setAddress((short) 0);
|
|
|
+ work.setRaddress((short) 0);
|
|
|
+ work.setPage((byte) 0);
|
|
|
+ work.setRegisterA((byte) 0);
|
|
|
+ work.setRegisterB((byte) 0);
|
|
|
+ work.setRegisterC((byte) 0);
|
|
|
+ work.setRegisterD((byte) 0);
|
|
|
+ work.setRegisterE((byte) 0);
|
|
|
+ work.setRegisterF((byte) 0);
|
|
|
+ work.setStack(new ArrayList<>());
|
|
|
+ work.setWorkingstate(WORKINGSTATE.EMULATE);
|
|
|
+
|
|
|
+ model.getProgram().setActualLine(0);
|
|
|
+
|
|
|
+ model.getOutput().setOutput1(false);
|
|
|
+ model.getOutput().setOutput2(false);
|
|
|
+ model.getOutput().setOutput3(false);
|
|
|
+ model.getOutput().setOutput4(false);
|
|
|
+ model.getOutput().setPwm1((byte) 0);
|
|
|
+ model.getOutput().setPwm2((byte) 0);
|
|
|
+ model.getOutput().setServo1((byte) 0);
|
|
|
+ model.getOutput().setServo2((byte) 0);
|
|
|
+ model.getOutput().setTone((byte) 0);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * processing the next command from the program
|
|
|
+ *
|
|
|
+ * @return return true, if everything is ok.
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean next() {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean stop() {
|
|
|
+ model.getWork().setWorkingstate(WORKINGSTATE.NN);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean compile() {
|
|
|
+ SPSAssembler spsAssembler = new SPSAssembler();
|
|
|
+ spsAssembler.doWork(source);
|
|
|
+
|
|
|
+ List<Mnemonic> mnemonics = spsAssembler.getMnemonics();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|