summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/upd7725/dasm7725.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/upd7725/dasm7725.cpp')
-rw-r--r--src/devices/cpu/upd7725/dasm7725.cpp76
1 files changed, 39 insertions, 37 deletions
diff --git a/src/devices/cpu/upd7725/dasm7725.cpp b/src/devices/cpu/upd7725/dasm7725.cpp
index 4298b5d3930..12d6b0e36e8 100644
--- a/src/devices/cpu/upd7725/dasm7725.cpp
+++ b/src/devices/cpu/upd7725/dasm7725.cpp
@@ -21,6 +21,7 @@ offs_t necdsp_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
{
uint32_t opcode = opcodes.r32(pc) >> 8;
uint32_t type = (opcode >> 22);
+ offs_t flags = 0;
// printf("dasm: PC %x opcode %08x\n", pc, opcode);
@@ -145,6 +146,7 @@ offs_t necdsp_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
if(type == 1) {
stream << " | ret";
+ flags = STEP_OUT;
}
}
@@ -154,44 +156,44 @@ offs_t necdsp_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
switch(brch) {
case 0x000: stream << "jmpso "; break;
- case 0x080: stream << "jnca "; break;
- case 0x082: stream << "jca "; break;
- case 0x084: stream << "jncb "; break;
- case 0x086: stream << "jcb "; break;
- case 0x088: stream << "jnza "; break;
- case 0x08a: stream << "jza "; break;
- case 0x08c: stream << "jnzb "; break;
- case 0x08e: stream << "jzb "; break;
- case 0x090: stream << "jnova0 "; break;
- case 0x092: stream << "jova0 "; break;
- case 0x094: stream << "jnovb0 "; break;
- case 0x096: stream << "jovb0 "; break;
- case 0x098: stream << "jnova1 "; break;
- case 0x09a: stream << "jova1 "; break;
- case 0x09c: stream << "jnovb1 "; break;
- case 0x09e: stream << "jovb1 "; break;
- case 0x0a0: stream << "jnsa0 "; break;
- case 0x0a2: stream << "jsa0 "; break;
- case 0x0a4: stream << "jnsb0 "; break;
- case 0x0a6: stream << "jsb0 "; break;
- case 0x0a8: stream << "jnsa1 "; break;
- case 0x0aa: stream << "jsa1 "; break;
- case 0x0ac: stream << "jnsb1 "; break;
- case 0x0ae: stream << "jsb1 "; break;
- case 0x0b0: stream << "jdpl0 "; break;
- case 0x0b1: stream << "jdpln0 "; break;
- case 0x0b2: stream << "jdplf "; break;
- case 0x0b3: stream << "jdplnf "; break;
- case 0x0b4: stream << "jnsiak "; break;
- case 0x0b6: stream << "jsiak "; break;
- case 0x0b8: stream << "jnsoak "; break;
- case 0x0ba: stream << "jsoak "; break;
- case 0x0bc: stream << "jnrqm "; break;
- case 0x0be: stream << "jrqm "; break;
+ case 0x080: stream << "jnca "; flags = STEP_COND; break;
+ case 0x082: stream << "jca "; flags = STEP_COND; break;
+ case 0x084: stream << "jncb "; flags = STEP_COND; break;
+ case 0x086: stream << "jcb "; flags = STEP_COND; break;
+ case 0x088: stream << "jnza "; flags = STEP_COND; break;
+ case 0x08a: stream << "jza "; flags = STEP_COND; break;
+ case 0x08c: stream << "jnzb "; flags = STEP_COND; break;
+ case 0x08e: stream << "jzb "; flags = STEP_COND; break;
+ case 0x090: stream << "jnova0 "; flags = STEP_COND; break;
+ case 0x092: stream << "jova0 "; flags = STEP_COND; break;
+ case 0x094: stream << "jnovb0 "; flags = STEP_COND; break;
+ case 0x096: stream << "jovb0 "; flags = STEP_COND; break;
+ case 0x098: stream << "jnova1 "; flags = STEP_COND; break;
+ case 0x09a: stream << "jova1 "; flags = STEP_COND; break;
+ case 0x09c: stream << "jnovb1 "; flags = STEP_COND; break;
+ case 0x09e: stream << "jovb1 "; flags = STEP_COND; break;
+ case 0x0a0: stream << "jnsa0 "; flags = STEP_COND; break;
+ case 0x0a2: stream << "jsa0 "; flags = STEP_COND; break;
+ case 0x0a4: stream << "jnsb0 "; flags = STEP_COND; break;
+ case 0x0a6: stream << "jsb0 "; flags = STEP_COND; break;
+ case 0x0a8: stream << "jnsa1 "; flags = STEP_COND; break;
+ case 0x0aa: stream << "jsa1 "; flags = STEP_COND; break;
+ case 0x0ac: stream << "jnsb1 "; flags = STEP_COND; break;
+ case 0x0ae: stream << "jsb1 "; flags = STEP_COND; break;
+ case 0x0b0: stream << "jdpl0 "; flags = STEP_COND; break;
+ case 0x0b1: stream << "jdpln0 "; flags = STEP_COND; break;
+ case 0x0b2: stream << "jdplf "; flags = STEP_COND; break;
+ case 0x0b3: stream << "jdplnf "; flags = STEP_COND; break;
+ case 0x0b4: stream << "jnsiak "; flags = STEP_COND; break;
+ case 0x0b6: stream << "jsiak "; flags = STEP_COND; break;
+ case 0x0b8: stream << "jnsoak "; flags = STEP_COND; break;
+ case 0x0ba: stream << "jsoak "; flags = STEP_COND; break;
+ case 0x0bc: stream << "jnrqm "; flags = STEP_COND; break;
+ case 0x0be: stream << "jrqm "; flags = STEP_COND; break;
case 0x100: stream << "ljmp "; break;
case 0x101: stream << "hjmp "; break;
- case 0x140: stream << "lcall "; break;
- case 0x141: stream << "hcall "; break;
+ case 0x140: stream << "lcall "; flags = STEP_OVER; break;
+ case 0x141: stream << "hcall "; flags = STEP_OVER; break;
default: stream << "?????? "; break;
}
@@ -225,5 +227,5 @@ offs_t necdsp_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
}
}
- return 1 | SUPPORTED;
+ return 1 | flags | SUPPORTED;
}