Labels
This commit is contained in:
@ -72,27 +72,6 @@ public class Controller_Frontend {
|
|||||||
@FXML
|
@FXML
|
||||||
private ListView<String> lstContentListView;
|
private ListView<String> lstContentListView;
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Label pclLabel;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Label PrescalerLabel;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Label statusLabel;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Label fsrLabel;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Label pclathLabel;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Label intconLabel;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Button stepButton;
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private Button autoRunGUI;
|
private Button autoRunGUI;
|
||||||
|
|
||||||
@ -109,6 +88,7 @@ public class Controller_Frontend {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static volatile boolean isAutoRunActive = false;
|
private static volatile boolean isAutoRunActive = false;
|
||||||
private static volatile boolean isSleeping = false;
|
private static volatile boolean isSleeping = false;
|
||||||
|
|
||||||
@ -208,7 +188,7 @@ public class Controller_Frontend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private void stepintoButton(ActionEvent event) throws IOException {
|
public void stepintoButton(ActionEvent event) throws IOException {
|
||||||
if (lstContentListView.getItems().isEmpty()) {
|
if (lstContentListView.getItems().isEmpty()) {
|
||||||
// Datei ist nicht geladen oder leer
|
// Datei ist nicht geladen oder leer
|
||||||
return;
|
return;
|
||||||
@ -318,6 +298,7 @@ public class Controller_Frontend {
|
|||||||
IOPorts.setPORTfromUI(toggleButtonGroup);
|
IOPorts.setPORTfromUI(toggleButtonGroup);
|
||||||
} catch (NullPointerException ignored) {}
|
} catch (NullPointerException ignored) {}
|
||||||
}
|
}
|
||||||
|
ProgramStack.reset();
|
||||||
wakeUpFromSleep();
|
wakeUpFromSleep();
|
||||||
breakpoints.clear();
|
breakpoints.clear();
|
||||||
IOPorts.refreshUI(getTRISbuttons(), getPORTbuttons());
|
IOPorts.refreshUI(getTRISbuttons(), getPORTbuttons());
|
||||||
@ -337,18 +318,14 @@ public class Controller_Frontend {
|
|||||||
int lastDot = fileAddress.lastIndexOf('.');
|
int lastDot = fileAddress.lastIndexOf('.');
|
||||||
String stageTitle;
|
String stageTitle;
|
||||||
if (lastDot > lastSlash)
|
if (lastDot > lastSlash)
|
||||||
stageTitle = "Simulator - " + fileAddress.substring(lastSlash + 1, lastDot);
|
stageTitle = "Simulator - " + fileAddress.substring(lastSlash + 1, lastDot);
|
||||||
else {
|
else {
|
||||||
stageTitle = "Simulator - " + fileAddress.substring(lastSlash + 1);
|
stageTitle = "Simulator - " + fileAddress.substring(lastSlash + 1);
|
||||||
}
|
}
|
||||||
Stage stage = (Stage) stepintoButton.getScene().getWindow();
|
Stage stage = (Stage) stepintoButton.getScene().getWindow();
|
||||||
stage.setTitle(stageTitle);
|
stage.setTitle(stageTitle);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void initializeBreakpoints() {
|
private void initializeBreakpoints() {
|
||||||
lstContentListView.setCellFactory(createBreakpointCell());
|
lstContentListView.setCellFactory(createBreakpointCell());
|
||||||
@ -601,6 +578,15 @@ public class Controller_Frontend {
|
|||||||
stackVisual.setItems(observedList);
|
stackVisual.setItems(observedList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @FXML
|
||||||
|
// private static Label dummyLabel;
|
||||||
|
//
|
||||||
|
// public static void triggerTableRefresh(){
|
||||||
|
// dummyLabel.setText(" ");
|
||||||
|
// CreateWindow.refreshTable((Stage) dummyLabel.getScene().getWindow());
|
||||||
|
// }
|
||||||
|
|
||||||
private void updateWatchdog (){
|
private void updateWatchdog (){
|
||||||
wdtCheck.setText("Watchdog-Timer: " + WatchdogTimer.get() + "µs");
|
wdtCheck.setText("Watchdog-Timer: " + WatchdogTimer.get() + "µs");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class CreateWindow extends Application {
|
|||||||
grid.relocate(0, 0);
|
grid.relocate(0, 0);
|
||||||
|
|
||||||
grid.getStylesheets().add(Objects.requireNonNull(getClass().getResource("styles.css")).toExternalForm());
|
grid.getStylesheets().add(Objects.requireNonNull(getClass().getResource("styles.css")).toExternalForm());
|
||||||
Scene scene = new Scene(grid, 1800, 800);
|
Scene scene = new Scene(grid, 1845, 800);
|
||||||
primaryStage.setScene(scene);
|
primaryStage.setScene(scene);
|
||||||
primaryStage.setTitle("Simulator");
|
primaryStage.setTitle("Simulator");
|
||||||
primaryStage.show();
|
primaryStage.show();
|
||||||
|
|||||||
@ -239,6 +239,10 @@ public class DataRegister {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getZeroFlag(){
|
||||||
|
return zeroFlag;
|
||||||
|
}
|
||||||
|
|
||||||
private static int carryFlag = 0;
|
private static int carryFlag = 0;
|
||||||
|
|
||||||
public static void setCarryFlag(int value){
|
public static void setCarryFlag(int value){
|
||||||
@ -323,6 +327,7 @@ public class DataRegister {
|
|||||||
public static int getDirectRegister(int address) {
|
public static int getDirectRegister(int address) {
|
||||||
return dataRegister[address];
|
return dataRegister[address];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,11 @@ public class ProgramStack {
|
|||||||
return returnStack.get(stackIndex)-1;
|
return returnStack.get(stackIndex)-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void reset (){
|
||||||
|
returnStack.clear();
|
||||||
|
stackIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
public static int getStackPointer(){
|
public static int getStackPointer(){
|
||||||
return stackIndex;
|
return stackIndex;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,16 +3,16 @@ package fabrik.simulator.pic16f84;
|
|||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
|
|
||||||
|
import javafx.scene.chart.PieChart;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.TableColumn;
|
import javafx.scene.control.TableColumn;
|
||||||
import javafx.scene.control.TableView;
|
import javafx.scene.control.TableView;
|
||||||
|
|
||||||
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import static javafx.application.Application.launch;
|
import static javafx.application.Application.launch;
|
||||||
|
|
||||||
public class Table {
|
public class Table {
|
||||||
@ -22,13 +22,25 @@ public class Table {
|
|||||||
//Tabelle aktualisieren
|
//Tabelle aktualisieren
|
||||||
|
|
||||||
private static final int NUM_COLUMNS = 8; // Anzahl der Spalten
|
private static final int NUM_COLUMNS = 8; // Anzahl der Spalten
|
||||||
private static final double TABLE_WIDTH = 400; // Breite der TableView
|
private static final double TABLE_WIDTH = 420; // Breite der TableView
|
||||||
private static final double TABLE_HEIGHT = 650; // Höhe der TableView
|
private static final double TABLE_HEIGHT = 600; // Höhe der TableView
|
||||||
|
|
||||||
private static String format (String s) {
|
private static String formatHex(String s) {
|
||||||
return (s.length() == 1) ? "0" + s : s;
|
return (s.length() == 1) ? "0" + s : s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String formatBin (String s){
|
||||||
|
int l = s.length();
|
||||||
|
if (l < 8){
|
||||||
|
StringBuilder sBuilder = new StringBuilder(s);
|
||||||
|
for (int i = 0; i < 8 - l; i++){
|
||||||
|
sBuilder.insert(0, "0");
|
||||||
|
}
|
||||||
|
s = sBuilder.toString();
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static VBox refresh(){
|
public static VBox refresh(){
|
||||||
// Erstelle eine Instanz der DataRegister-Klasse
|
// Erstelle eine Instanz der DataRegister-Klasse
|
||||||
@ -63,8 +75,8 @@ public class Table {
|
|||||||
for (int col = 0; col < NUM_COLUMNS; col++) {
|
for (int col = 0; col < NUM_COLUMNS; col++) {
|
||||||
int index = row * NUM_COLUMNS + col;
|
int index = row * NUM_COLUMNS + col;
|
||||||
if (index < DataRegister.getDataRegister().length) {
|
if (index < DataRegister.getDataRegister().length) {
|
||||||
String address = "0x" + format(Integer.toHexString(index).toUpperCase());
|
String address = "0x" + formatHex(Integer.toHexString(index).toUpperCase());
|
||||||
String value = "0x" + format(Integer.toHexString(DataRegister.getDataRegister()[index]).toUpperCase());
|
String value = "0x" + formatHex(Integer.toHexString(DataRegister.getDataRegister()[index]).toUpperCase());
|
||||||
rowData[col] = new DataEntry(address, value);
|
rowData[col] = new DataEntry(address, value);
|
||||||
} else {
|
} else {
|
||||||
rowData[col] = new DataEntry("", "");
|
rowData[col] = new DataEntry("", "");
|
||||||
@ -73,28 +85,57 @@ public class Table {
|
|||||||
tableView.getItems().add(rowData);
|
tableView.getItems().add(rowData);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Erstelle Labels für die Spezialregister
|
// Erstelle Labels für die Spezialregister;
|
||||||
Label pclLabel = new Label("PCL: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getPCL())).toUpperCase()));
|
|
||||||
Label statusLabel = new Label("STATUS: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getSTATUS())).toUpperCase()));
|
|
||||||
Label fsrLabel = new Label("FSR: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getFSR())).toUpperCase()));
|
|
||||||
Label pclathLabel = new Label("PCLATH: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getPCLATH())).toUpperCase()));
|
|
||||||
Label intconLabel = new Label("INTCON: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getINTCON())).toUpperCase()));
|
|
||||||
Label wRegisterLabel = new Label("W-Register: 0x" + format(Integer.toHexString(Commands.get_wRegister()).toUpperCase()));
|
|
||||||
Label PCLabel = new Label("PC: 0x" + format(Integer.toHexString(DataRegister.getPC()).toUpperCase()));
|
|
||||||
Label Prescaler = new Label("Prescaler: 0x" + format(Integer.toHexString(PreScaler.getScaler())).toUpperCase());
|
|
||||||
|
|
||||||
|
Label spacing = new Label(" ");
|
||||||
|
Label spacing2 = new Label(" ");
|
||||||
|
Label wRegisterLabel = new Label("W-Register: 0x" + formatHex(Integer.toHexString(Commands.get_wRegister()).toUpperCase()));
|
||||||
|
Label cLabel = new Label("Carry: 0x" + formatHex(Integer.toHexString(DataRegister.getCarryFlag())));
|
||||||
|
Label dcLabel = new Label("Digit-Carry: 0x" + formatHex(Integer.toHexString(DataRegister.getDigitCarryFlag())));
|
||||||
|
Label zLabel = new Label("Zero-Flag: 0x" + formatHex(Integer.toHexString(DataRegister.getZeroFlag())));
|
||||||
|
Label pcLabel = new Label("PC: 0x" + formatHex(Integer.toHexString(DataRegister.getPC()).toUpperCase()));
|
||||||
|
Label pclLabel = new Label("PCL: 0x" + formatHex(Integer.toHexString(DataRegister.getRegister(DataRegister.getPCL())).toUpperCase()));
|
||||||
|
Label pclathLabel = new Label("PCLATH: 0x" + formatHex(Integer.toHexString(DataRegister.getRegister(DataRegister.getPCLATH())).toUpperCase()));
|
||||||
|
Label statusLabel = new Label("STATUS: 0b" + formatBin(Integer.toBinaryString(DataRegister.getRegister(DataRegister.getSTATUS())))+ " (0x" + formatHex(Integer.toHexString(DataRegister.getRegister(DataRegister.getSTATUS())).toUpperCase()) + ")");
|
||||||
|
Label fsrLabel = new Label("FSR: 0x" + formatHex(Integer.toHexString(DataRegister.getRegister(DataRegister.getFSR())).toUpperCase()));
|
||||||
|
Label prescalerLabel = new Label("Prescaler: 0x" + formatHex(Integer.toHexString(PreScaler.getScaler())).toUpperCase());
|
||||||
|
Label intconLabel = new Label("INTCON: 0b" + formatBin(Integer.toBinaryString(DataRegister.getRegister(DataRegister.getINTCON()))) + " (0x" + formatHex(Integer.toHexString(DataRegister.getRegister(DataRegister.getINTCON())).toUpperCase()) + ")");
|
||||||
|
|
||||||
|
wRegisterLabel.setStyle("-fx-font-weight: bold");
|
||||||
|
pcLabel.setStyle("-fx-font-weight: bold");
|
||||||
|
statusLabel.setStyle("-fx-font-weight: bold");
|
||||||
|
intconLabel.setStyle("-fx-font-weight: bold");
|
||||||
|
|
||||||
|
HBox labelsAndButton = new HBox();
|
||||||
|
VBox labels = new VBox();
|
||||||
|
labels.getChildren().addAll(spacing, pcLabel, pclLabel, pclathLabel, wRegisterLabel, cLabel, dcLabel, zLabel, statusLabel, fsrLabel, prescalerLabel, intconLabel);
|
||||||
|
VBox button = new VBox();
|
||||||
|
Button resetButton = new Button("Register reset");
|
||||||
|
resetButton.setOnAction(e -> {
|
||||||
|
DataRegister.initDataRegister();
|
||||||
|
DataRegister.setPC(DataRegister.getPC()-1);
|
||||||
|
triggerRefresh();
|
||||||
|
});
|
||||||
|
|
||||||
|
button.getChildren().addAll(spacing2, resetButton);
|
||||||
|
|
||||||
|
labelsAndButton.getChildren().addAll(labels, button);
|
||||||
|
|
||||||
|
|
||||||
// Erstelle einen VBox, um die TableView und Labels anzuzeigen
|
// Erstelle einen VBox, um die TableView und Labels anzuzeigen
|
||||||
VBox table = new VBox();
|
VBox table = new VBox();
|
||||||
table.getChildren().addAll(tableView, pclLabel, statusLabel, fsrLabel, pclathLabel, intconLabel, wRegisterLabel, PCLabel, Prescaler);
|
table.getChildren().addAll(tableView, labelsAndButton);
|
||||||
VBox.setMargin(tableView, new Insets(0, 0, 0, 0));
|
VBox.setMargin(tableView, new Insets(0, 0, 0, 0));
|
||||||
|
|
||||||
return table;
|
return table;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void triggerRefresh() {
|
||||||
|
Controller_Frontend.triggerTableRefresh();
|
||||||
|
IOPorts.refreshUI(Controller_Frontend.getTRISbuttons(), Controller_Frontend.getPORTbuttons());
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
launch(args);
|
launch(args);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1060,4 +1060,5 @@
|
|||||||
<padding>
|
<padding>
|
||||||
<Insets right="50.0" />
|
<Insets right="50.0" />
|
||||||
</padding>
|
</padding>
|
||||||
|
<Label fx:id="dummyLabel" text=" "/>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
|
|||||||
Reference in New Issue
Block a user