summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms32031/dis32031.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms32031/dis32031.cpp')
-rw-r--r--src/devices/cpu/tms32031/dis32031.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/devices/cpu/tms32031/dis32031.cpp b/src/devices/cpu/tms32031/dis32031.cpp
index 6bb468e164a..b157f437b90 100644
--- a/src/devices/cpu/tms32031/dis32031.cpp
+++ b/src/devices/cpu/tms32031/dis32031.cpp
@@ -2,8 +2,8 @@
// copyright-holders:Aaron Giles
/***************************************************************************
- dis32031.c
- Disassembler for the portable TMS32C031 emulator.
+ dis32031.cpp
+ Disassembler for the portable TMS320C3x emulator.
Written by Aaron Giles
***************************************************************************/
@@ -477,6 +477,8 @@ offs_t tms32031_disassembler::disassemble(std::ostream &stream, offs_t pc, const
char temp[10];
sprintf(temp, "B%s%s", condition[(op >> 16) & 31], ((op >> 21) & 1) ? "D" : "");
util::stream_format(stream, "%-6s%s", temp, regname[op & 31]);
+ if (((op >> 16) & 31) != 0)
+ flags = STEP_COND | ((op >> 21) & 1 ? step_over_extra(1) : 0);
break;
}
@@ -485,6 +487,8 @@ offs_t tms32031_disassembler::disassemble(std::ostream &stream, offs_t pc, const
char temp[10];
sprintf(temp, "B%s%s", condition[(op >> 16) & 31], ((op >> 21) & 1) ? "D" : "");
util::stream_format(stream, "%-6s$%06X", temp, (pc + (((op >> 21) & 1) ? 3 : 1) + (int16_t)op) & 0xffffff);
+ if (((op >> 16) & 31) != 0)
+ flags = STEP_COND | ((op >> 21) & 1 ? step_over_extra(1) : 0);
break;
}
@@ -494,6 +498,7 @@ offs_t tms32031_disassembler::disassemble(std::ostream &stream, offs_t pc, const
char temp[10];
sprintf(temp, "DB%s%s", condition[(op >> 16) & 31], ((op >> 21) & 1) ? "D" : "");
util::stream_format(stream, "%-6sAR%d,%s", temp, (op >> 22) & 7, regname[op & 31]);
+ flags = STEP_COND | ((op >> 21) & 1 ? step_over_extra(1) : 0);
break;
}
@@ -502,6 +507,7 @@ offs_t tms32031_disassembler::disassemble(std::ostream &stream, offs_t pc, const
char temp[10];
sprintf(temp, "DB%s%s", condition[(op >> 16) & 31], ((op >> 21) & 1) ? "D" : "");
util::stream_format(stream, "%-6sAR%d,$%06X", temp, (op >> 22) & 7, (pc + (((op >> 21) & 1) ? 3 : 1) + (int16_t)op) & 0xffffff);
+ flags = STEP_COND | ((op >> 21) & 1 ? step_over_extra(1) : 0);
break;
}
@@ -537,12 +543,12 @@ offs_t tms32031_disassembler::disassemble(std::ostream &stream, offs_t pc, const
case 0x0f0:
util::stream_format(stream, "RETI%s", condition[(op >> 16) & 31]);
- flags = STEP_OUT;
+ flags = STEP_OUT | (((op >> 16) & 31) != 0 ? STEP_COND : 0);
break;
case 0x0f1:
util::stream_format(stream, "RETS%s", condition[(op >> 16) & 31]);
- flags = STEP_OUT;
+ flags = STEP_OUT | (((op >> 16) & 31) != 0 ? STEP_COND : 0);
break;