summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6800/6800dasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6800/6800dasm.cpp')
-rw-r--r--src/devices/cpu/m6800/6800dasm.cpp14
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;