Merge remote-tracking branch 'origin/main'
# Conflicts: # src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java
This commit is contained in:
@ -297,7 +297,7 @@ public class Commands {
|
|||||||
int fcontent = DataRegister.getRegister(file);
|
int fcontent = DataRegister.getRegister(file);
|
||||||
int carry = DataRegister.getCarryFlag() << 7;
|
int carry = DataRegister.getCarryFlag() << 7;
|
||||||
int contentlow = fcontent & 0b1;
|
int contentlow = fcontent & 0b1;
|
||||||
int result = fcontent >> 1 | carry;
|
int result = (fcontent >> 1) | carry;
|
||||||
DataRegister.setCarryFlag(contentlow);
|
DataRegister.setCarryFlag(contentlow);
|
||||||
if (destination == 0){
|
if (destination == 0){
|
||||||
wRegister = result & 0xFF;
|
wRegister = result & 0xFF;
|
||||||
|
|||||||
@ -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){
|
||||||
|
|||||||
Reference in New Issue
Block a user