diff --git a/cpu.cpp b/cpu.cpp index 3370a25..93f3dce 100644 --- a/cpu.cpp +++ b/cpu.cpp @@ -491,23 +491,20 @@ gam_rc_t cpu::getGAM(const uint8_t mode, const uint8_t reg, const word_mode_t wo if (read_value) g.value = b->read(g.addr.value(), word_mode, rm_cur, isR7_space); add_register(reg, word_mode == wm_word || reg == 7 || reg == 6 ? 2 : 1); - if (reg != 7) - g.mmr1_update = { word_mode == wm_word || reg == 6 ? 2 : 1, reg }; + g.mmr1_update = { word_mode == wm_word || reg == 7 || reg == 6 ? 2 : 1, reg }; break; case 3: // @(Rn)+ / @#a g.addr = b->read(get_register(reg), wm_word, rm_cur, isR7_space); // might be wrong: the adds should happen when the read is really performed, because of traps add_register(reg, 2); - if (reg != 7) - g.mmr1_update = { 2, reg }; + g.mmr1_update = { 2, reg }; g.space = d_space; if (read_value) g.value = b->read(g.addr.value(), word_mode, rm_cur, g.space); break; case 4: // -(Rn) add_register(reg, word_mode == wm_word || reg == 7 || reg == 6 ? -2 : -1); - if (reg != 7) - g.mmr1_update = { word_mode == wm_word || reg == 6 ? -2 : -1, reg }; + g.mmr1_update = { word_mode == wm_word || reg == 7 || reg == 6 ? -2 : -1, reg }; g.space = d_space; g.addr = get_register(reg); if (read_value) @@ -515,8 +512,7 @@ gam_rc_t cpu::getGAM(const uint8_t mode, const uint8_t reg, const word_mode_t wo break; case 5: // @-(Rn) add_register(reg, -2); - if (reg != 7) - g.mmr1_update = { -2, reg }; + g.mmr1_update = { -2, reg }; g.addr = b->read(get_register(reg), wm_word, rm_cur, isR7_space); g.space = d_space; if (read_value)