summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/bcp/bcpdasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/bcp/bcpdasm.cpp')
-rw-r--r--src/devices/cpu/bcp/bcpdasm.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/devices/cpu/bcp/bcpdasm.cpp b/src/devices/cpu/bcp/bcpdasm.cpp
index 84b77327f37..c7fc6fdf6f6 100644
--- a/src/devices/cpu/bcp/bcpdasm.cpp
+++ b/src/devices/cpu/bcp/bcpdasm.cpp
@@ -7,15 +7,8 @@
***************************************************************************/
#include "emu.h"
-#include "util/disasmintf.h"
#include "bcpdasm.h"
-#include "util/strformat.h"
-
-using osd::u32;
-using util::BIT;
-using offs_t = u32;
-
//**************************************************************************
// BCP DISASSEMBLER
@@ -230,12 +223,13 @@ offs_t dp8344_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
{
// 8C00-8DFF, 0000-FFFF: LJMP Rs,p,s,nn (2 + 2 T-states)
util::stream_format(stream, "%-8s", "ljmp");
+ words |= STEP_COND;
}
else
{
// 8E00-8FFF, 0000-FFFF: LCALL Rs,p,s,nn (2 + 2 T-states)
util::stream_format(stream, "%-8s", "lcall");
- words |= STEP_OVER;
+ words |= STEP_OVER | STEP_COND;
}
format_register(stream, inst & 0x001f);
util::stream_format(stream, ",%d,%d,", (inst & 0x00e0) >> 5, BIT(inst, 8));
@@ -304,7 +298,10 @@ offs_t dp8344_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
// AF00-A7FF: RETF f,s{,{g}{,rf}} (2 or 3 T-states)
// AF80-AFF0: RET {g{,rf}} (2 T-states)
if (!BIT(inst, 7))
+ {
util::stream_format(stream, (inst & 0x0070) == 0 ? "r%s" : "r%-7s", cc_to_string(inst & 0x0007, BIT(inst, 3)));
+ words |= STEP_COND;
+ }
else
util::stream_format(stream, (inst & 0x0070) == 0 ? "%s" : "%-8s", "ret");
@@ -387,7 +384,7 @@ offs_t dp8344_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
// C900-C9FF: SHL Rsd,b (2 T-states)
util::stream_format(stream, "%-8s", "shl");
format_register(stream, inst & 0x001f);
- util::stream_format(stream, ",%d", (inst & 0x00e0) >> 5);
+ util::stream_format(stream, ",%d", (inst & 0x00e0) == 0 ? 0 : 8 - ((inst & 0x00e0) >> 5));
break;
case 0xa00: case 0xa80:
@@ -455,6 +452,7 @@ offs_t dp8344_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
// D000-DFFF: JMP f,s,n (2 or 3 T-states)
util::stream_format(stream, "j%-7s", cc_to_string((inst & 0x0700) >> 8, BIT(inst, 11)));
format_address(stream, pc + 1 + s8(inst & 0x00ff));
+ words |= STEP_COND;
break;
case 0xe000: case 0xf000: