summaryrefslogtreecommitdiffstats
path: root/src/devices/cpu/pace/pacedasm.cpp
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-03-27 14:23:03 -0400
committer AJR <ajrhacker@users.noreply.github.com>2022-03-27 14:29:51 -0400
commitc7597225b4f0a3531d53dd806048b136956eb850 (patch)
tree3ed5b758cbd0a94a43d9c6fe9f83f402b169657d /src/devices/cpu/pace/pacedasm.cpp
parentc3162e739d625d31ca207ab8b591ea87c5f1fe03 (diff)
Debugger feature improvements
- Add 'gbt' and 'gbf' debugger commands to step until a true or false conditional branch has been detected. - Update over 100 of the disassemblers in MAME to output a new STEP_COND flag for all conditional branches. Besides being used for execution of the new 'gbt' and 'gbf' commands, this flag also now helps the debugger 'out' command to properly handle conditional return instructions. - Remove STEP_OVER from many instructions that aren't actually subroutine calls (e.g. DJNZ on Z80). A 'gni' debugger command (go next instruction) has been added to accommodate some of the misuse. - Add instruction flag support to several more disassemblers that lacked them entirely (e.g. st62xx) - Don't pass over delay slots for debugging in ASAP core
Diffstat (limited to 'src/devices/cpu/pace/pacedasm.cpp')
-rw-r--r--src/devices/cpu/pace/pacedasm.cpp90
1 files changed, 45 insertions, 45 deletions
diff --git a/src/devices/cpu/pace/pacedasm.cpp b/src/devices/cpu/pace/pacedasm.cpp
index 6ab93f8f75d..f6c8b438813 100644
--- a/src/devices/cpu/pace/pacedasm.cpp
+++ b/src/devices/cpu/pace/pacedasm.cpp
@@ -111,211 +111,211 @@ offs_t pace_disassembler::disassemble(std::ostream &stream, offs_t pc, const pac
{
case 0x0000:
stream << "HALT";
- return 1;
+ return 1 | SUPPORTED;
case 0x0400:
util::stream_format(stream, "%-8sAC%d", "CFR", (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x0800:
util::stream_format(stream, "%-8sAC%d", "CRF", (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x0c00:
stream << "PUSHF";
- return 1;
+ return 1 | SUPPORTED;
case 0x1000:
stream << "PULLF";
- return 1;
+ return 1 | SUPPORTED;
case 0x1400:
util::stream_format(stream, "%-8s", "JSR");
format_ea(stream, pc, inst);
- return 1 | STEP_OVER;
+ return 1 | STEP_OVER | SUPPORTED;
case 0x1800:
util::stream_format(stream, "%-8s", "JMP");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0x1c00:
util::stream_format(stream, "%-8sAC%d", "XCHRS", (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x2000:
util::stream_format(stream, "%-8sAC%d,%d,%d", "ROL", (inst & 0x0300) >> 8, (inst & 0x00fe) >> 1, inst & 0x0001);
- return 1;
+ return 1 | SUPPORTED;
case 0x2400:
util::stream_format(stream, "%-8sAC%d,%d,%d", "ROR", (inst & 0x0300) >> 8, (inst & 0x00fe) >> 1, inst & 0x0001);
- return 1;
+ return 1 | SUPPORTED;
case 0x2800:
util::stream_format(stream, "%-8sAC%d,%d,%d", "SHL", (inst & 0x0300) >> 8, (inst & 0x00fe) >> 1, inst & 0x0001);
- return 1;
+ return 1 | SUPPORTED;
case 0x2c00:
util::stream_format(stream, "%-8sAC%d,%d,%d", "SHR", (inst & 0x0300) >> 8, (inst & 0x00fe) >> 1, inst & 0x0001);
- return 1;
+ return 1 | SUPPORTED;
case 0x3000: case 0x3400: case 0x3800: case 0x3c00:
util::stream_format(stream, "%-8s%s", BIT(inst, 7) ? "SFLG" : "PFLG", s_flags[(inst & 0x0f00) >> 8]);
- return 1;
+ return 1 | SUPPORTED;
case 0x4000: case 0x4400: case 0x4800: case 0x4c00:
util::stream_format(stream, "%-8s%s,", "BOC", s_cc[(inst & 0x0f00) >> 8]);
format_addr(stream, pc + 1 + s8(inst & 0x00ff));
- return 1;
+ return 1 | STEP_COND | SUPPORTED;
case 0x5000:
util::stream_format(stream, "%-8sAC%d,", "LI", (inst & 0x0300) >> 8);
format_disp(stream, inst & 0x00ff);
- return 1;
+ return 1 | SUPPORTED;
case 0x5400:
util::stream_format(stream, "%-8sAC%d,AC%d", "RAND", (inst & 0x00c0) >> 6, (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x5800:
util::stream_format(stream, "%-8sAC%d,AC%d", "RXOR", (inst & 0x00c0) >> 6, (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x5c00:
if ((inst & 0x0300) >> 2 == (inst & 0x00c0))
stream << "NOP";
else
util::stream_format(stream, "%-8sAC%d,AC%d", "RCPY", (inst & 0x00c0) >> 6, (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x6000:
util::stream_format(stream, "%-8sAC%d", "PUSH", (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x6400:
util::stream_format(stream, "%-8sAC%d", "PULL", (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x6800:
util::stream_format(stream, "%-8sAC%d,AC%d", "RADD", (inst & 0x00c0) >> 6, (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x6c00:
util::stream_format(stream, "%-8sAC%d,AC%d", "RXCH", (inst & 0x00c0) >> 6, (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x7000:
util::stream_format(stream, "%-8sAC%d,", "CAI", (inst & 0x0300) >> 8);
format_disp(stream, inst & 0x00ff);
- return 1;
+ return 1 | SUPPORTED;
case 0x7400:
util::stream_format(stream, "%-8sAC%d,AC%d", "RADC", (inst & 0x00c0) >> 6, (inst & 0x0300) >> 8);
- return 1;
+ return 1 | SUPPORTED;
case 0x7800:
util::stream_format(stream, "%-8sAC%d,", "AISZ", (inst & 0x0300) >> 8);
format_disp(stream, inst & 0x00ff);
- return 1 | STEP_OVER;
+ return 1 | STEP_COND | SUPPORTED;
case 0x7c00:
util::stream_format(stream, "%-8s", "RTI");
format_disp(stream, inst & 0x00ff);
- return 1 | STEP_OUT;
+ return 1 | STEP_OUT | SUPPORTED;
case 0x8000:
util::stream_format(stream, "%-8s", "RTS");
format_disp(stream, inst & 0x00ff);
- return 1 | STEP_OUT;
+ return 1 | STEP_OUT | SUPPORTED;
case 0x8800:
util::stream_format(stream, "%-8sAC0,", "DECA");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0x8c00:
util::stream_format(stream, "%-8s", "ISZ");
format_ea(stream, pc, inst);
- return 1 | STEP_OVER;
+ return 1 | STEP_COND | SUPPORTED;
case 0x9000:
util::stream_format(stream, "%-8sAC0,", "SUBB");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0x9400:
util::stream_format(stream, "%-8s@", "JSR");
format_ea(stream, pc, inst);
- return 1 | STEP_OVER;
+ return 1 | STEP_OVER | SUPPORTED;
case 0x9800:
util::stream_format(stream, "%-8s@", "JMP");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0x9c00:
util::stream_format(stream, "%-8sAC0,", "SKG");
format_ea(stream, pc, inst);
- return 1 | STEP_OVER;
+ return 1 | STEP_COND | SUPPORTED;
case 0xa000:
util::stream_format(stream, "%-8sAC0,@", "LD");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xa400:
util::stream_format(stream, "%-8sAC0,", "OR");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xa800:
util::stream_format(stream, "%-8sAC0,", "AND");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xac00:
util::stream_format(stream, "%-8s", "DSZ");
format_ea(stream, pc, inst);
- return 1 | STEP_OVER;
+ return 1 | STEP_COND | SUPPORTED;
case 0xb000:
util::stream_format(stream, "%-8sAC0,@", "ST");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xb800:
util::stream_format(stream, "%-8sAC0,", "SKAZ");
format_ea(stream, pc, inst);
- return 1 | STEP_OVER;
+ return 1 | STEP_COND | SUPPORTED;
case 0xbc00:
util::stream_format(stream, "%-8sAC0,", "LSEX");
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xc000: case 0xc400: case 0xc800: case 0xcc00:
util::stream_format(stream, "%-8sAC%d,", "LD", (inst & 0x0c00) >> 10);
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xd000: case 0xd400: case 0xd800: case 0xdc00:
util::stream_format(stream, "%-8sAC%d,", "ST", (inst & 0x0c00) >> 10);
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xe000: case 0xe400: case 0xe800: case 0xec00:
util::stream_format(stream, "%-8sAC%d,", "ADD", (inst & 0x0c00) >> 10);
format_ea(stream, pc, inst);
- return 1;
+ return 1 | SUPPORTED;
case 0xf000: case 0xf400: case 0xf800: case 0xfc00:
util::stream_format(stream, "%-8sAC%d,", "SKNE", (inst & 0x0c00) >> 10);
format_ea(stream, pc, inst);
- return 1 | STEP_OVER;
+ return 1 | STEP_COND | SUPPORTED;
default:
util::stream_format(stream, "%-8s", ".WORD");
format_addr(stream, inst);
- return 1;
+ return 1 | SUPPORTED;
}
}