diff options
Diffstat (limited to 'src/devices/cpu/mb86233/mb86233d.cpp')
-rw-r--r-- | src/devices/cpu/mb86233/mb86233d.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/devices/cpu/mb86233/mb86233d.cpp b/src/devices/cpu/mb86233/mb86233d.cpp index e4b82cf5484..ab5cf9c783d 100644 --- a/src/devices/cpu/mb86233/mb86233d.cpp +++ b/src/devices/cpu/mb86233/mb86233d.cpp @@ -259,6 +259,7 @@ std::string mb86233_disassembler::alu0_func(u32 alu) offs_t mb86233_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) { u32 opcode = opcodes.r32(pc); + offs_t flags = 0; switch((opcode >> 26) & 0x3f) { case 0x00: { // Dual move AB @@ -311,7 +312,7 @@ offs_t mb86233_disassembler::disassemble(std::ostream &stream, offs_t pc, const break; case 1: - util::stream_format(stream, "mov {1} %s, %s (e)", memory(r1, false, false), memory(r2, true, false)); + util::stream_format(stream, "mov %s, %s (e)", memory(r1, false, false), memory(r2, true, false)); break; case 2: @@ -467,6 +468,8 @@ offs_t mb86233_disassembler::disassemble(std::ostream &stream, offs_t pc, const switch(subtype) { case 0: util::stream_format(stream, "brif %s #0x%x", condition(cond, invert), data); + if (cond != 0x16) + flags = STEP_COND; break; case 1: @@ -475,10 +478,13 @@ offs_t mb86233_disassembler::disassemble(std::ostream &stream, offs_t pc, const util::stream_format(stream, "%s", regs(opcode & 0x1f)); else util::stream_format(stream, "(%s)", memory(opcode & 0x1ff, false, false)); + if (cond != 0x16) + flags = STEP_COND; break; case 2: util::stream_format(stream, "bsif %s #0x%x", condition(cond, invert), data); + flags = STEP_OVER | (cond != 0x16 ? STEP_COND : 0); break; case 3: @@ -487,10 +493,12 @@ offs_t mb86233_disassembler::disassemble(std::ostream &stream, offs_t pc, const util::stream_format(stream, "%s", regs(opcode & 0x1f)); else util::stream_format(stream, "(%s)", memory(opcode & 0x1ff, false, false)); + flags = STEP_OVER | (cond != 0x16 ? STEP_COND : 0); break; case 5: util::stream_format(stream, "rtif %s", condition(cond, invert)); + flags = STEP_OUT | (cond != 0x16 ? STEP_COND : 0); break; case 6: @@ -499,6 +507,7 @@ offs_t mb86233_disassembler::disassemble(std::ostream &stream, offs_t pc, const case 7: util::stream_format(stream, "iret"); + flags = STEP_OUT; break; default: @@ -513,7 +522,7 @@ offs_t mb86233_disassembler::disassemble(std::ostream &stream, offs_t pc, const break; } - return 1 | SUPPORTED; + return 1 | flags | SUPPORTED; } u32 mb86233_disassembler::opcode_alignment() const |