summaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu')
-rw-r--r--src/cpu/instructions.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/cpu/instructions.c b/src/cpu/instructions.c
index 2b034c4..0f002d3 100644
--- a/src/cpu/instructions.c
+++ b/src/cpu/instructions.c
@@ -226,9 +226,11 @@ void fLSR(Addressing addr) {
void fROL(Addressing addr){
byte m = (addr == eAccumulator) ? acc : idata.value;
- SetFlag(flag_C, (m & 0b10000000));
+ byte flag_store = (m & 0b10000000);
+ //SetFlag(flag_C, (m & 0b10000000));
m = (m << 1) & 0b11111110;
m |= (getFlag(flag_C)) ? 0b00000001 : 0;
+ SetFlag(flag_C, flag_store);
SetFlagN(m);
SetFlagZ(m);
@@ -239,13 +241,16 @@ void fROL(Addressing addr){
void fROR(Addressing addr){
byte m = (addr == eAccumulator) ? acc : idata.value;
-
- SetFlag(flag_C, (m & 0b00000001));
+
+ byte flag_store = (m & 0b00000001);
+ //SetFlag(flag_C, (m & 0b00000001));
m = (m >> 1) & 0b01111111;
m |= (getFlag(flag_C)) ? 0b10000000 : 0;
+ SetFlag(flag_C, flag_store);
SetFlagN(m);
SetFlagZ(m);
+
(addr == eAccumulator)
? acc = m
: SetMemory(idata.add, m);