register access fix
This commit is contained in:
parent
15fd3411a5
commit
6951e1b520
1 changed files with 3 additions and 17 deletions
20
cpu.cpp
20
cpu.cpp
|
@ -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) {
|
setRegister(reg, prev_mode, value);
|
||||||
uint16_t temp = getRegister(reg, prev_mode);
|
|
||||||
temp &= 0xff00;
|
|
||||||
temp |= value;
|
|
||||||
setRegister(reg, prev_mode, temp);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue