diff options
Diffstat (limited to 'src/devices/cpu/m6800/6800dasm.cpp')
-rw-r--r-- | src/devices/cpu/m6800/6800dasm.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/devices/cpu/m6800/6800dasm.cpp b/src/devices/cpu/m6800/6800dasm.cpp index 7b5e1227425..f8e59b3f4c2 100644 --- a/src/devices/cpu/m6800/6800dasm.cpp +++ b/src/devices/cpu/m6800/6800dasm.cpp @@ -40,7 +40,7 @@ const char *const m680x_disassembler::op_name_str[] = { * 2 invalid opcode for 1:6800/6802/6808, 2:6801/6803, 4:HD63701 */ -const uint8_t m680x_disassembler::table[0x104][3] = { +const u8 m680x_disassembler::table[0x104][3] = { {ill, inh,7},{nop, inh,0},{ill, inh,7},{ill, inh,7},/* 00 */ {lsrd,inh,1},{asld,inh,1},{tap, inh,0},{tpa, inh,0}, {inx, inh,0},{dex, inh,0},{clv, inh,0},{sev, inh,0}, @@ -130,7 +130,7 @@ offs_t m680x_disassembler::disassemble(std::ostream &stream, offs_t pc, const da offs_t flags = 0; int invalid_mask; int code = opcodes.r8(pc); - uint8_t opcode, args, invalid; + u8 opcode, args, invalid; switch( m_subtype ) { @@ -165,6 +165,8 @@ offs_t m680x_disassembler::disassemble(std::ostream &stream, offs_t pc, const da flags = STEP_OVER; else if (opcode == rti || opcode == rts) flags = STEP_OUT; + else if (args == rel && opcode != bra && opcode != brn && opcode != bsr) + flags = STEP_COND; if ( invalid & invalid_mask ) /* invalid for this cpu type ? */ { @@ -177,7 +179,7 @@ offs_t m680x_disassembler::disassemble(std::ostream &stream, offs_t pc, const da switch( args ) { case rel: /* relative */ - util::stream_format(stream, "$%04X", pc + (int8_t)params.r8(pc+1) + 2); + util::stream_format(stream, "$%04X", pc + (s8)params.r8(pc+1) + 2); return 2 | flags | SUPPORTED; case imb: /* immediate (byte) */ util::stream_format(stream, "#$%02X", params.r8(pc+1)); @@ -186,10 +188,10 @@ offs_t m680x_disassembler::disassemble(std::ostream &stream, offs_t pc, const da util::stream_format(stream, "#$%04X", params.r16(pc+1)); return 3 | flags | SUPPORTED; case idx: /* indexed + byte offset */ - util::stream_format(stream, "(x+$%02X)", params.r8(pc+1)); + util::stream_format(stream, "$%02X,x", params.r8(pc+1)); return 2 | flags | SUPPORTED; case imx: /* immediate, indexed + byte offset */ - util::stream_format(stream, "#$%02X,(x+$%02x)", params.r8(pc+1), params.r8(pc+2)); + util::stream_format(stream, "#$%02X,$%02x,x", params.r8(pc+1), params.r8(pc+2)); return 3 | flags | SUPPORTED; case dir: /* direct address */ util::stream_format(stream, "$%02X", params.r8(pc+1)); @@ -201,7 +203,7 @@ offs_t m680x_disassembler::disassemble(std::ostream &stream, offs_t pc, const da util::stream_format(stream, "$%04X", params.r16(pc+1)); return 3 | flags | SUPPORTED; case sx1: /* byte from address (s + 1) */ - util::stream_format(stream, "(s+1)"); + util::stream_format(stream, "1,s"); return 1 | flags | SUPPORTED; default: return 1 | flags | SUPPORTED; |