Fix Flags

This commit is contained in:
2024-05-06 16:14:07 +02:00
parent 0db7c7d840
commit 061021748e
2 changed files with 16 additions and 1 deletions

View File

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

View File

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