register access fix

This commit is contained in:
folkert van heusden 2022-03-24 18:31:26 +01:00
parent 15fd3411a5
commit 6951e1b520

18
cpu.cpp
View file

@ -198,20 +198,14 @@ uint16_t cpu::getGAM(const uint8_t mode, const uint8_t reg, const bool word_mode
return b -> read(getRegister(reg, prev_mode), word_mode, prev_mode); return b -> read(getRegister(reg, prev_mode), word_mode, prev_mode);
case 2: case 2:
temp = b -> read(getRegister(reg, prev_mode), word_mode, prev_mode); temp = b -> read(getRegister(reg, prev_mode), word_mode, prev_mode);
if (reg == 7 || reg == 6) addRegister(reg, prev_mode, !word_mode || reg == 7 || reg == 6 ? 2 : 1);
addRegister(reg, prev_mode, 2);
else
addRegister(reg, prev_mode, word_mode ? 1 : 2);
return temp; return temp;
case 3: case 3:
temp = b -> read(b -> read(getRegister(reg, prev_mode), false, prev_mode), word_mode, prev_mode); temp = b -> read(b -> read(getRegister(reg, prev_mode), false, prev_mode), word_mode, prev_mode);
addRegister(reg, prev_mode, 2); addRegister(reg, prev_mode, 2);
return temp; return temp;
case 4: case 4:
if (reg == 7 || reg == 6) addRegister(reg, prev_mode, !word_mode || reg == 7 || reg == 6 ? -2 : -1);
addRegister(reg, prev_mode, - 2);
else
addRegister(reg, prev_mode, word_mode ? -1 : -2);
return b -> read(getRegister(reg, prev_mode), word_mode, prev_mode); return b -> read(getRegister(reg, prev_mode), word_mode, prev_mode);
case 5: case 5:
addRegister(reg, prev_mode, -2); addRegister(reg, prev_mode, -2);
@ -236,15 +230,7 @@ void cpu::putGAM(const uint8_t mode, const int reg, const bool word_mode, const
switch(mode) { switch(mode) {
case 0: case 0:
if (word_mode) {
uint16_t temp = getRegister(reg, prev_mode);
temp &= 0xff00;
temp |= value;
setRegister(reg, prev_mode, temp);
}
else {
setRegister(reg, prev_mode, value); setRegister(reg, prev_mode, value);
}
break; break;
case 1: case 1:
b -> write(getRegister(reg, prev_mode), word_mode, value); b -> write(getRegister(reg, prev_mode), word_mode, value);