Merge remote-tracking branch 'origin/main'

# Conflicts:
#	src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java
This commit is contained in:
2024-05-06 16:43:32 +02:00
2 changed files with 16 additions and 1 deletions

View File

@ -297,7 +297,7 @@ public class Commands {
int fcontent = DataRegister.getRegister(file);
int carry = DataRegister.getCarryFlag() << 7;
int contentlow = fcontent & 0b1;
int result = fcontent >> 1 | carry;
int result = (fcontent >> 1) | carry;
DataRegister.setCarryFlag(contentlow);
if (destination == 0){
wRegister = result & 0xFF;

View File

@ -89,6 +89,9 @@ public class DataRegister {
else {
dataRegister[address] = content;
dataRegister[0x80 + address] = content;
if (address == STATUS){
setFlags();
}
}
}
@ -116,6 +119,9 @@ public class DataRegister {
if (getBit(address, bit) == 1) {
dataRegister[address] -= (int) Math.pow(2, bit);
dataRegister[0x80 + address] = dataRegister[address];
if (address == STATUS){
setFlags();
}
}
}
}
@ -135,6 +141,9 @@ public class DataRegister {
if (getBit(address, bit) == 0) {
dataRegister[address] += (int) Math.pow(2, bit);
dataRegister[0x80 + address] = dataRegister[address];
if (address == STATUS){
setFlags();
}
}
}
}
@ -173,6 +182,12 @@ public class DataRegister {
return programCounter;
}
private static void setFlags() {
carryFlag = getDirectBit(STATUS, C);
digitCarryFlag = getDirectBit(STATUS, DC);
zeroFlag = getDirectBit(STATUS, Z);
}
private static int zeroFlag = 0;
public static void determineZeroFlag(int result){