diff options
Diffstat (limited to 'trunk/src/emu/cpu/tms57002/tms57kdec.c')
-rw-r--r-- | trunk/src/emu/cpu/tms57002/tms57kdec.c | 91 |
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; + } +} + |