Selaa lähdekoodia

next iteration

Klaas, Wilfried 6 vuotta sitten
vanhempi
sitoutus
d04fc18b51

+ 30 - 0
src/main/java/de/mcs/tools/sps/emulator/model/WebSessionModel.java

@@ -32,6 +32,8 @@ public class WebSessionModel {
   private InputModel input;
   private OutputModel output;
   private WorkingModel work;
+  private String message;
+  private boolean error;
 
   public WebSessionModel() {
     program = new ProgramModel();
@@ -123,4 +125,32 @@ public class WebSessionModel {
   public void setCommand(CommandModel command) {
     this.command = command;
   }
+
+  /**
+   * @return the message
+   */
+  public String getMessage() {
+    return message;
+  }
+
+  /**
+   * @param message the message to set
+   */
+  public void setMessage(String message) {
+    this.message = message;
+  }
+
+  /**
+   * @return the error
+   */
+  public boolean isError() {
+    return error;
+  }
+
+  /**
+   * @param error the error to set
+   */
+  public void setError(boolean error) {
+    this.error = error;
+  }
 }

+ 57 - 2
src/main/java/de/mcs/tools/sps/emulator/model/WorkingModel.java

@@ -1,7 +1,14 @@
 package de.mcs.tools.sps.emulator.model;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class WorkingModel {
 
+  public enum WORKINGSTATE {
+    NN, EMULATE
+  }
+
   private byte registerA;
   private byte registerB;
   private byte registerC;
@@ -13,13 +20,17 @@ public class WorkingModel {
   private short raddress;
   private short address;
 
+  private List<Integer> stack = new ArrayList<>();
+  private int[] bin2SrcLine;
+  private WORKINGSTATE workingstate;
+
   @Override
   public String toString() {
     StringBuilder b = new StringBuilder();
     b.append(String.format(
-        "%s:[registerA: 0x%02x, registerB: 0x%02x, registerC: 0x%02x, registerD: 0x%02x, registerE: 0x%02x, registerF: 0x%02x, page: 0x%02x, address: 0x%04x, raddress: 0x%04x ]",
+        "%s:[registerA: 0x%02x, registerB: 0x%02x, registerC: 0x%02x, registerD: 0x%02x, registerE: 0x%02x, registerF: 0x%02x, page: 0x%02x, address: 0x%04x, raddress: 0x%04x, stack: %d ]",
         this.getClass().getSimpleName(), registerA, registerB, registerC, registerD, registerE, registerF, page,
-        address, raddress));
+        address, raddress, stack.size()));
     return b.toString();
   }
 
@@ -158,4 +169,48 @@ public class WorkingModel {
     this.registerF = registerF;
   }
 
+  /**
+   * @return the stack
+   */
+  public List<Integer> getStack() {
+    return stack;
+  }
+
+  /**
+   * @param stack
+   *          the stack to set
+   */
+  public void setStack(List<Integer> stack) {
+    this.stack = stack;
+  }
+
+  /**
+   * @return the bin2SrcLine
+   */
+  public int[] getBin2SrcLine() {
+    return bin2SrcLine;
+  }
+
+  /**
+   * @param bin2SrcLine
+   *          the bin2SrcLine to set
+   */
+  public void setBin2SrcLine(int[] bin2SrcLine) {
+    this.bin2SrcLine = bin2SrcLine;
+  }
+
+  /**
+   * @return the workingstate
+   */
+  public WORKINGSTATE getWorkingstate() {
+    return workingstate;
+  }
+
+  /**
+   * @param workingstate the workingstate to set
+   */
+  public void setWorkingstate(WORKINGSTATE workingstate) {
+    this.workingstate = workingstate;
+  }
+
 }

+ 10 - 0
src/main/java/de/mcs/tools/sps/emulator/resources/EmulatorResource.java

@@ -8,6 +8,7 @@ import javax.ws.rs.core.MediaType;
 
 import de.mcs.tools.sps.emulator.model.CommandModel.COMMAND;
 import de.mcs.tools.sps.emulator.model.WebSessionModel;
+import de.mcs.tools.sps.emulator.model.WorkingModel.WORKINGSTATE;
 
 @Path("/emulator")
 @Produces(MediaType.APPLICATION_JSON)
@@ -20,9 +21,18 @@ public class EmulatorResource {
 
   @POST
   public WebSessionModel getSession(WebSessionModel model) {
+    model = checkModel(model);
+    return model;
+  }
+
+  private WebSessionModel checkModel(WebSessionModel model) {
     model.getProgram().rebuildHash();
     COMMAND actualCommand = model.getCommand().getActualCommand();
     model.getCommand().evaluateAvailableCommands(actualCommand);
+    if (model.getProgram().isModified() && WORKINGSTATE.EMULATE.equals(model.getWork().getWorkingstate())) {
+      model.setError(false);
+      model.setMessage("emulator active: can't changed the source.");
+    }
     return model;
   }
 }