Implemented Stack over and underflow information
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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<Integer> qCommandsToModel;
|
||||
|
||||
public MyControlView(PIC oPIC, MyView view) {
|
||||
public MyControlView(PIC oPIC, MyView view, ConcurrentLinkedQueue<Integer> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
package View;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class GUIStackButtons extends JPanel {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user