diff options
Diffstat (limited to 'src/devices/cpu/cp1610/1610dasm.cpp')
-rw-r--r-- | src/devices/cpu/cp1610/1610dasm.cpp | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/devices/cpu/cp1610/1610dasm.cpp b/src/devices/cpu/cp1610/1610dasm.cpp index 112bbda6523..5cd9c05e102 100644 --- a/src/devices/cpu/cp1610/1610dasm.cpp +++ b/src/devices/cpu/cp1610/1610dasm.cpp @@ -14,6 +14,7 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d uint16_t op = oprom16[0]; uint16_t subop; uint16_t ea, ea1, ea2; unsigned size = 1; + offs_t flags = 0; // const char *sym, *sym2; switch( op ) @@ -171,12 +172,15 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d { case 0: util::stream_format(stream, "JSR R%01d,%04X",((ea1&0x300)>>8)+4,ea); + flags = STEP_OVER; break; case 1: util::stream_format(stream, "JSRE R%01d,%04X",((ea1&0x300)>>8)+4,ea); + flags = STEP_OVER; break; case 2: util::stream_format(stream, "JSRD R%01d,%04X",((ea1&0x300)>>8)+4,ea); + flags = STEP_OVER; break; case 3: util::stream_format(stream, "????"); @@ -774,36 +778,43 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d size += 1; ea = oprom16[1]; util::stream_format(stream, "BC %04X",pc+2+ea); + flags = STEP_COND; break; case 0x202: /* 1 000 000 010 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BOV %04X",pc+2+ea); + flags = STEP_COND; break; case 0x203: /* 1 000 000 011 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BPL %04X",pc+2+ea); + flags = STEP_COND; break; case 0x204: /* 1 000 000 100 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BZE %04X",pc+2+ea); + flags = STEP_COND; break; case 0x205: /* 1 000 000 101 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BLT %04X",pc+2+ea); + flags = STEP_COND; break; case 0x206: /* 1 000 000 110 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BLE %04X",pc+2+ea); + flags = STEP_COND; break; case 0x207: /* 1 000 000 111 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BUSC %04X",pc+2+ea); + flags = STEP_COND; break; case 0x208: /* 1 000 001 000 */ size += 1; @@ -814,36 +825,43 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d size += 1; ea = oprom16[1]; util::stream_format(stream, "BNC %04X",pc+2+ea); + flags = STEP_COND; break; case 0x20a: /* 1 000 001 010 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BNOV %04X",pc+2+ea); + flags = STEP_COND; break; case 0x20b: /* 1 000 001 011 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BMI %04X",pc+2+ea); + flags = STEP_COND; break; case 0x20c: /* 1 000 001 100 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BNZE %04X",pc+2+ea); + flags = STEP_COND; break; case 0x20d: /* 1 000 001 101 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BGE %04X",pc+2+ea); + flags = STEP_COND; break; case 0x20e: /* 1 000 001 110 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BGT %04X",pc+2+ea); + flags = STEP_COND; break; case 0x20f: /* 1 000 001 111 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BESC %04X",pc+2+ea); + flags = STEP_COND; break; case 0x210: /* 1 000 010 000 */ case 0x211: /* 1 000 010 001 */ @@ -864,6 +882,7 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d size += 1; ea = oprom16[1]; util::stream_format(stream, "BEXT %04X,%01X",pc+2+ea,op&0x0f); + flags = STEP_COND; break; case 0x220: /* 1 000 100 000 */ size += 1; @@ -874,36 +893,43 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d size += 1; ea = oprom16[1]; util::stream_format(stream, "BC %04X",pc+1-ea); + flags = STEP_COND; break; case 0x222: /* 1 000 100 010 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BOV %04X",pc+1-ea); + flags = STEP_COND; break; case 0x223: /* 1 000 100 011 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BPL %04X",pc+1-ea); + flags = STEP_COND; break; case 0x224: /* 1 000 100 100 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BZE %04X",pc+1-ea); + flags = STEP_COND; break; case 0x225: /* 1 000 100 101 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BLT %04X",pc+1-ea); + flags = STEP_COND; break; case 0x226: /* 1 000 100 110 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BLE %04X",pc+1-ea); + flags = STEP_COND; break; case 0x227: /* 1 000 100 111 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BUSC %04X",pc+1-ea); + flags = STEP_COND; break; case 0x228: /* 1 000 101 000 */ size += 1; @@ -914,36 +940,43 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d size += 1; ea = oprom16[1]; util::stream_format(stream, "BNC %04X",pc+1-ea); + flags = STEP_COND; break; case 0x22a: /* 1 000 101 010 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BNOV %04X",pc+1-ea); + flags = STEP_COND; break; case 0x22b: /* 1 000 101 011 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BMI %04X",pc+1-ea); + flags = STEP_COND; break; case 0x22c: /* 1 000 101 100 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BNZE %04X",pc+1-ea); + flags = STEP_COND; break; case 0x22d: /* 1 000 101 101 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BGE %04X",pc+1-ea); + flags = STEP_COND; break; case 0x22e: /* 1 000 101 110 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BGT %04X",pc+1-ea); + flags = STEP_COND; break; case 0x22f: /* 1 000 101 111 */ size += 1; ea = oprom16[1]; util::stream_format(stream, "BESC %04X",pc+1-ea); + flags = STEP_COND; break; case 0x230: /* 1 000 110 000 */ case 0x231: /* 1 000 110 001 */ @@ -964,6 +997,7 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d size += 1; ea = oprom16[1]; util::stream_format(stream, "BEXT %04X,%01X",pc+1-ea,op&0x0f); + flags = STEP_COND; break; case 0x240: /* 1 001 000 000 */ case 0x241: /* 1 001 000 001 */ @@ -1490,5 +1524,5 @@ offs_t cp1610_disassembler::disassemble(std::ostream &stream, offs_t pc, const d util::stream_format(stream, "????"); } - return size; + return size | flags | SUPPORTED; } |