summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/cpu/tms57002/tms57kdec.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/cpu/tms57002/tms57kdec.c')
-rw-r--r--trunk/src/emu/cpu/tms57002/tms57kdec.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/trunk/src/emu/cpu/tms57002/tms57kdec.c b/trunk/src/emu/cpu/tms57002/tms57kdec.c
new file mode 100644
index 00000000000..cd6ad44c708
--- /dev/null
+++ b/trunk/src/emu/cpu/tms57002/tms57kdec.c
@@ -0,0 +1,91 @@
+#include "emu.h"
+#include "debugger.h"
+#include "tms57002.h"
+#include "tms57kpr.h"
+
+#ifdef __GNUC__
+#define noinline __attribute__((noinline))
+#else
+#define noinline /* */
+#endif
+
+static void tms57002_decode_error(tms57002_t *s, UINT32 opcode)
+{
+ char buf[256];
+ UINT8 opr[3];
+ if(s->unsupported_inst_warning)
+ return;
+
+ s->unsupported_inst_warning = 1;
+ opr[0] = opcode;
+ opr[1] = opcode >> 8;
+ opr[2] = opcode >> 16;
+
+ CPU_DISASSEMBLE_NAME(tms57002)(0, buf, s->pc, opr, opr, 0);
+ popmessage("tms57002: %s - Contact Mamedev", buf);
+}
+
+void tms57002_decode_cat1(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
+{
+ switch(opcode >> 18) {
+ case 0x00: // nop
+ break;
+
+#define CDEC1
+#include "cpu/tms57002/tms57002.inc"
+#undef CDEC1
+
+ default:
+ tms57002_decode_error(s, opcode);
+ break;
+ }
+}
+
+void tms57002_decode_cat2_pre(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
+{
+ switch((opcode >> 11) & 0x7f) {
+ case 0x00: // nop
+ break;
+
+#define CDEC2A
+#include "cpu/tms57002/tms57002.inc"
+#undef CDEC2A
+
+ default:
+ tms57002_decode_error(s, opcode);
+ break;
+ }
+}
+
+void tms57002_decode_cat2_post(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
+{
+ switch((opcode >> 11) & 0x7f) {
+ case 0x00: // nop
+ break;
+
+#define CDEC2B
+#include "cpu/tms57002/tms57002.inc"
+#undef CDEC2B
+
+ default:
+ tms57002_decode_error(s, opcode);
+ break;
+ }
+}
+
+void tms57002_decode_cat3(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
+{
+ switch((opcode >> 11) & 0x7f) {
+ case 0x00: // nop
+ break;
+
+#define CDEC3
+#include "cpu/tms57002/tms57002.inc"
+#undef CDEC3
+
+ default:
+ tms57002_decode_error(s, opcode);
+ break;
+ }
+}
+