diff --git a/bin/Control/MyControlView.class b/bin/Control/MyControlView.class index 202c009..1730438 100644 Binary files a/bin/Control/MyControlView.class and b/bin/Control/MyControlView.class differ diff --git a/bin/Model/MyModel.class b/bin/Model/MyModel.class index 7263bc9..ac0acc8 100644 Binary files a/bin/Model/MyModel.class and b/bin/Model/MyModel.class differ diff --git a/bin/Runtime/Main.class b/bin/Runtime/Main.class index 428fc79..8215660 100644 Binary files a/bin/Runtime/Main.class and b/bin/Runtime/Main.class differ diff --git a/bin/View/GUIStackButtons.class b/bin/View/GUIStackButtons.class deleted file mode 100644 index bb083b7..0000000 Binary files a/bin/View/GUIStackButtons.class and /dev/null differ diff --git a/src/Control/MyControlView.java b/src/Control/MyControlView.java index 7c11b06..5cc8feb 100644 --- a/src/Control/MyControlView.java +++ b/src/Control/MyControlView.java @@ -1,6 +1,10 @@ package Control; import java.util.ArrayList; +import java.util.concurrent.ConcurrentLinkedQueue; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; import Model.Microcontroller.PIC; import View.MyView; @@ -12,10 +16,12 @@ public class MyControlView { MyView oMyView; PIC oPIC; + ConcurrentLinkedQueue qCommandsToModel; - public MyControlView(PIC oPIC, MyView view) { + public MyControlView(PIC oPIC, MyView view, ConcurrentLinkedQueue qCommands) { oMyView = view; this.oPIC = oPIC; + qCommandsToModel = qCommands; updateView(); } @@ -29,6 +35,7 @@ public class MyControlView { setTestFileTable(); setMCMenu(); showStackPrompt(); + showTimer0InterruptPrompt(); } /** @@ -198,11 +205,50 @@ public class MyControlView { } } + public void showTimer0InterruptPrompt() { + if (oPIC.getRam().get_GIE() && oPIC.getRam().get_T0IE() && oPIC.getRam().get_T0IF()) { + Object[] options = {"Ok"}; + int n = JOptionPane.showOptionDialog(new JFrame(),"Information Timer 0 Interrupt\nISR will be executed", "Timer 0 Interrupt Acknowledged", JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[1]); + } + } + public void showStackPrompt() { if (oPIC.getStack().getStackOverflow()) { - //TODO + oPIC.getStack().resetStackOverflow(); + Object[] options = {"Continue", "Reset"}; + int n = JOptionPane.showOptionDialog(new JFrame(),"Warning! A stack overflow has occured!", "Stack Overflow", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]); + qCommandsToModel.add(5); + switch (n) { + case (0): { + //Start program + qCommandsToModel.add(1); + }break; + case (1): { + //Reset program + qCommandsToModel.add(3); + }break; + case (-1): { + //Nothing happens / pause + }break; + } } else if (oPIC.getStack().getStackUnderflow()) { - //TODO + oPIC.getStack().resetStackUnderflow(); + Object[] options = {"Continue", "Reset"}; + int n = JOptionPane.showOptionDialog(new JFrame(),"Warning! A stack underflow has occured!", "Stack Underflow", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); + qCommandsToModel.add(6); + switch (n) { + case (0): { + //Start program + qCommandsToModel.add(1); + }break; + case (1): { + //Reset program + qCommandsToModel.add(3); + }break; + case (-1): { + //Nothing happens / pause + }break; + } } } diff --git a/src/Model/MyModel.java b/src/Model/MyModel.java index be1f142..667a8ce 100644 --- a/src/Model/MyModel.java +++ b/src/Model/MyModel.java @@ -65,6 +65,7 @@ public class MyModel extends Thread { if (abBreakpoints != null) { //Check if stack overflowed or underflowed if (oPIC.getStack().getStackOverflow() || oPIC.getStack().getStackUnderflow()) { + iProgState = 2; qDataToView.add(oPIC); //If stack did not over or underflow } else { @@ -93,7 +94,11 @@ public class MyModel extends Thread { }break; //Program paused case (2): { - + try { + Thread.sleep(20); + } catch (InterruptedException e) { + e.printStackTrace(); + } }break; //Reset program case (3): { @@ -115,6 +120,12 @@ public class MyModel extends Thread { System.out.println("Please load file!"); } }break; + case (5): { + oPIC.getStack().resetStackOverflow(); + }break; + case (6): { + oPIC.getStack().resetStackUnderflow(); + }break; } } diff --git a/src/Runtime/Main.java b/src/Runtime/Main.java index 0c55d3f..4c34fc9 100755 --- a/src/Runtime/Main.java +++ b/src/Runtime/Main.java @@ -23,7 +23,7 @@ public class Main { MyView oView = new MyView(); - MyControlView oControlView = new MyControlView(oPIC, oView); + MyControlView oControlView = new MyControlView(oPIC, oView, qCommandsToModel); new MyControlModel(oView, qCommandsToModel, qDataToModel); diff --git a/src/View/GUIMainFrame.java b/src/View/GUIMainFrame.java index c269c37..03ca27a 100755 --- a/src/View/GUIMainFrame.java +++ b/src/View/GUIMainFrame.java @@ -115,7 +115,7 @@ public class GUIMainFrame extends JFrame { oPanel3.add(oMyView.getGUIStack(), oConstraints); oConstraints.insets = new Insets(0,40,0,0); oConstraints.gridx = 1; - oPanel3.add(oMyView.getGUITime(), oConstraints); + oPanel3.add(oMyView.getGUITime(), oConstraints); //Build MainPanel oConstraints.gridx = 0; diff --git a/src/View/GUIStackButtons.java b/src/View/GUIStackButtons.java deleted file mode 100644 index bbda50f..0000000 --- a/src/View/GUIStackButtons.java +++ /dev/null @@ -1,7 +0,0 @@ -package View; - -import javax.swing.JPanel; - -public class GUIStackButtons extends JPanel { - -} \ No newline at end of file