This commit is contained in:
2024-06-03 14:18:39 +02:00
parent 1d89bf16cc
commit c8f23176d2
4 changed files with 13 additions and 11 deletions

View File

@ -488,7 +488,7 @@ public class Commands {
} }
DataRegister.determineZeroFlag(result); DataRegister.determineZeroFlag(result);
DataRegister.determineCarryFlag(result); DataRegister.determineCarryFlag(result);
DataRegister.determineDigitCarryFlag(result); DataRegister.determineDigitCarryFlag((wRegister&0b11101111) & (DataRegister.getRegister(file)&0b1111));
} }
@ -500,7 +500,7 @@ public class Commands {
} }
else { else {
DataRegister.determineCarryFlag(result); DataRegister.determineCarryFlag(result);
DataRegister.determineDigitCarryFlag(result); DataRegister.determineDigitCarryFlag((wRegister&0b11101111) + (DataRegister.getRegister(file)&0b1111));
} }
if (destination == 0) { if (destination == 0) {
wRegister = result & 0xFF; wRegister = result & 0xFF;
@ -533,7 +533,7 @@ public class Commands {
wRegister = result & 0xFF; wRegister = result & 0xFF;
DataRegister.determineZeroFlag(result); DataRegister.determineZeroFlag(result);
DataRegister.determineCarryFlag(result); DataRegister.determineCarryFlag(result);
DataRegister.determineDigitCarryFlag(result); DataRegister.determineDigitCarryFlag((wRegister&0b11101111) + (literal&0b1111));
} }
public static void RETLW(int literal) { public static void RETLW(int literal) {

View File

@ -44,6 +44,9 @@ public class DataRegister {
dataRegister[TRISB] = 0b11111111; dataRegister[TRISB] = 0b11111111;
dataRegister[0x80 + PCLATH] = dataRegister[PCLATH]; dataRegister[0x80 + PCLATH] = dataRegister[PCLATH];
dataRegister[0x80 + INTCON] = dataRegister[INTCON]; dataRegister[0x80 + INTCON] = dataRegister[INTCON];
carryFlag = 0;
zeroFlag = 0;
digitCarryFlag = 0;
IOPorts.resetTRIS(); IOPorts.resetTRIS();
System.out.println(Arrays.toString(dataRegister)); System.out.println(Arrays.toString(dataRegister));
} }
@ -294,7 +297,7 @@ public class DataRegister {
} }
public static void determineDigitCarryFlag(int result){ public static void determineDigitCarryFlag(int result){
if (result > 0xF){ if (result >> 4 == 1){
setDigitCarryFlag(1); setDigitCarryFlag(1);
} }
else { else {

View File

@ -22,7 +22,7 @@ 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 = 420; // Breite der TableView private static final double TABLE_WIDTH = 425; // Breite der TableView
private static final double TABLE_HEIGHT = 600; // Höhe der TableView private static final double TABLE_HEIGHT = 600; // Höhe der TableView
private static String formatHex(String s) { private static String formatHex(String s) {
@ -90,17 +90,16 @@ public class Table {
Label spacing = new Label(" "); Label spacing = new Label(" ");
Label spacing2 = new Label(" "); Label spacing2 = new Label(" ");
Label wRegisterLabel = new Label("W-Register: 0x" + formatHex(Integer.toHexString(Commands.get_wRegister()).toUpperCase())); 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 cLabel = new Label("Carry-Flag: " + DataRegister.getCarryFlag());
Label dcLabel = new Label("Digit-Carry: 0x" + formatHex(Integer.toHexString(DataRegister.getDigitCarryFlag()))); Label dcLabel = new Label("DigitCarry-Flag: " + DataRegister.getDigitCarryFlag());
Label zLabel = new Label("Zero-Flag: 0x" + formatHex(Integer.toHexString(DataRegister.getZeroFlag()))); Label zLabel = new Label("Zero-Flag: " + DataRegister.getZeroFlag());
Label pcLabel = new Label("PC: 0x" + formatHex(Integer.toHexString(DataRegister.getPC()).toUpperCase())); 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 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 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 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 fsrLabel = new Label("FSR: 0x" + formatHex(Integer.toHexString(DataRegister.getFSR()).toUpperCase()));
Label prescalerLabel = new Label("Prescaler: 0x" + formatHex(Integer.toHexString(PreScaler.getScaler())).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()) + ")"); 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"); wRegisterLabel.setStyle("-fx-font-weight: bold");
pcLabel.setStyle("-fx-font-weight: bold"); pcLabel.setStyle("-fx-font-weight: bold");
statusLabel.setStyle("-fx-font-weight: bold"); statusLabel.setStyle("-fx-font-weight: bold");

View File

@ -14,7 +14,7 @@
<AnchorPane stylesheets="@styles.css" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fabrik.simulator.pic16f84.Controller_Frontend"> <AnchorPane stylesheets="@styles.css" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fabrik.simulator.pic16f84.Controller_Frontend">
<children> <children>
<ListView fx:id="lstContentListView" layoutY="31.0" prefHeight="645.0" prefWidth="550.0"> <ListView fx:id="lstContentListView" layoutY="31.0" prefHeight="645.0" prefWidth="600.0">
</ListView> </ListView>
<HBox layoutY="688.0" prefHeight="24.0" prefWidth="550.0"> <HBox layoutY="688.0" prefHeight="24.0" prefWidth="550.0">