always set g.space as read_value is optional, but g.space may be used by putGAM
This commit is contained in:
parent
a09460dc20
commit
0586b78f97
1 changed files with 11 additions and 14 deletions
13
cpu.cpp
13
cpu.cpp
|
@ -342,10 +342,9 @@ gam_rc_t cpu::getGAM(const uint8_t mode, const uint8_t reg, const word_mode_t wo
|
|||
case 3: // @(Rn)+ / @#a
|
||||
g.addr = b->read(getRegister(reg, mode_selection), wm_word, mode_selection, false, isR7_space);
|
||||
addRegister(reg, mode_selection, 2);
|
||||
if (read_value) {
|
||||
g.space = d_space;
|
||||
if (read_value)
|
||||
g.value = b->read(g.addr.value(), word_mode, mode_selection, false, g.space);
|
||||
}
|
||||
addToMMR1(mode, reg, word_mode);
|
||||
break;
|
||||
case 4: // -(Rn)
|
||||
|
@ -358,29 +357,26 @@ gam_rc_t cpu::getGAM(const uint8_t mode, const uint8_t reg, const word_mode_t wo
|
|||
case 5: // @-(Rn)
|
||||
addRegister(reg, mode_selection, -2);
|
||||
g.addr = b->read(getRegister(reg, mode_selection), wm_word, mode_selection, false, isR7_space);
|
||||
if (read_value) {
|
||||
g.space = d_space;
|
||||
if (read_value)
|
||||
g.value = b->read(g.addr.value(), word_mode, mode_selection, false, g.space);
|
||||
}
|
||||
addToMMR1(mode, reg, word_mode);
|
||||
break;
|
||||
case 6: // x(Rn) / a
|
||||
next_word = b->read(getPC(), wm_word, mode_selection, false, i_space);
|
||||
addRegister(7, mode_selection, + 2);
|
||||
g.addr = getRegister(reg, mode_selection) + next_word;
|
||||
if (read_value) {
|
||||
g.space = d_space;
|
||||
if (read_value)
|
||||
g.value = b->read(g.addr.value(), word_mode, mode_selection, false, g.space);
|
||||
}
|
||||
break;
|
||||
case 7: // @x(Rn) / @a
|
||||
next_word = b->read(getPC(), wm_word, mode_selection, false, i_space);
|
||||
addRegister(7, mode_selection, + 2);
|
||||
g.addr = b->read(getRegister(reg, mode_selection) + next_word, wm_word, mode_selection, false, d_space);
|
||||
if (read_value) {
|
||||
g.space = d_space;
|
||||
if (read_value)
|
||||
g.value = b->read(g.addr.value(), word_mode, mode_selection, false, g.space);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2144,6 +2140,7 @@ std::map<std::string, std::vector<std::string> > cpu::disassemble(const uint16_t
|
|||
out.insert({ "MMR0", { format("%06o", b->getMMR0()) } });
|
||||
out.insert({ "MMR1", { format("%06o", b->getMMR1()) } });
|
||||
out.insert({ "MMR2", { format("%06o", b->getMMR2()) } });
|
||||
out.insert({ "MMR3", { format("%06o", b->getMMR3()) } });
|
||||
|
||||
return out;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue