summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/h16/h16dasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/h16/h16dasm.cpp')
-rw-r--r--src/devices/cpu/h16/h16dasm.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/devices/cpu/h16/h16dasm.cpp b/src/devices/cpu/h16/h16dasm.cpp
index ac502508e89..a8643555cb5 100644
--- a/src/devices/cpu/h16/h16dasm.cpp
+++ b/src/devices/cpu/h16/h16dasm.cpp
@@ -800,7 +800,7 @@ offs_t h16_disassembler::disassemble(std::ostream &stream, offs_t pc, const h16_
}
else
{
- util::stream_format(stream, "S%s/%c.%c ", (xb1 & 0x30) == 0 ? "MOV" : "STR", "FB"[BIT(xb1, 6)], "BW"[BIT(op, 0)]);
+ util::stream_format(stream, "S%s/%c.%c ", (xb1 & 0x30) == 0 ? "STR" : "MOV", "FB"[BIT(xb1, 6)], "BW"[BIT(op, 0)]);
format_register_to_register(stream, xb2);
stream << ", ";
format_register(stream, 0, xb1 & 0x0f);
@@ -832,9 +832,14 @@ offs_t h16_disassembler::disassemble(std::ostream &stream, offs_t pc, const h16_
break;
case 0xa4: case 0xa5: case 0xa6:
- util::stream_format(stream, "%-9s", string_format("B%s.%c", s_conditions[opcodes.r8(pc++) & 0x0f], "BWL"[op & 0x03]));
+ {
+ u8 xb = opcodes.r8(pc++);
+ util::stream_format(stream, "%-9s", string_format("B%s.%c", s_conditions[xb & 0x0f], "BWL"[op & 0x03]));
dasm_branch_disp(stream, pc, opcodes, op & 0x03);
+ if ((xb & 0x0e) != 0)
+ flags |= STEP_COND;
break;
+ }
case 0xa8: case 0xa9: case 0xaa:
util::stream_format(stream, "%-9s", string_format("BSR.%c", "BWL"[op & 0x03]));
@@ -865,6 +870,7 @@ offs_t h16_disassembler::disassemble(std::ostream &stream, offs_t pc, const h16_
format_register(stream, 0, xb >> 4);
stream << ", ";
dasm_branch_disp(stream, pc, opcodes, op & 0x03);
+ flags |= STEP_COND;
break;
}
@@ -995,9 +1001,14 @@ offs_t h16_disassembler::disassemble(std::ostream &stream, offs_t pc, const h16_
break;
case 0xf3:
- util::stream_format(stream, "TRAP/%s", s_conditions[opcodes.r8(pc++) & 0x0f]);
+ {
+ u8 xb = opcodes.r8(pc++);
+ util::stream_format(stream, "TRAP/%s", s_conditions[xb & 0x0f]);
flags |= STEP_OVER;
+ if ((xb & 0x0e) != 0)
+ flags |= STEP_COND;
break;
+ }
case 0xf4:
stream << "RTR";