diff options
author | 2015-11-08 12:56:12 +0100 | |
---|---|---|
committer | 2015-11-08 12:56:12 +0100 | |
commit | 7c19aac60e12d6f5ea301bdb34d7826a01e0b06f (patch) | |
tree | f310d86aa2c6bfc19d115307dedde4eb0cd52dad /src/devices/cpu/ie15/ie15dasm.cpp | |
parent | a57b46ae933badd7441ce1644711dbb851e2b504 (diff) |
Rename *.c -> *.cpp in our source (nw)
Diffstat (limited to 'src/devices/cpu/ie15/ie15dasm.cpp')
-rw-r--r-- | src/devices/cpu/ie15/ie15dasm.cpp | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/devices/cpu/ie15/ie15dasm.cpp b/src/devices/cpu/ie15/ie15dasm.cpp new file mode 100644 index 00000000000..3f21fb977e0 --- /dev/null +++ b/src/devices/cpu/ie15/ie15dasm.cpp @@ -0,0 +1,126 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +#include "emu.h" + +#define OP(A) oprom[(A) - PC] +#define ARG(A) opram[(A) - PC] + +CPU_DISASSEMBLE( ie15 ) +{ + UINT32 flags = 0; + UINT8 op; + unsigned PC = pc; + + op = OP(pc++); + switch (op & 0xf0) + { + case 0x00: + sprintf (buffer,"add r%d", op & 0x0f); + break; + case 0x10: + sprintf (buffer,"jmp $%04x", (((op & 0x0f) << 8) | ARG(pc)) + 1); + pc+=1; + break; + case 0x20: + sprintf (buffer,"ldc r%d, #$%02x", (op & 0x0f), ARG(pc)); + pc+=1; + break; + case 0x30: switch (op) + { + case 0x30: + sprintf (buffer,"lca #$%02x", ARG(pc)); + pc+=1; + break; + case 0x33: + sprintf (buffer,"ral"); + break; + case 0x35: + sprintf (buffer,"rar"); + break; + default: + sprintf (buffer,"illegal"); + break; + }; + break; + case 0x40: + sprintf (buffer,"dsr r%d", op & 0x0f); + break; + case 0x50: switch (op) + { + case 0x50: + sprintf (buffer,"isn"); + break; + case 0x51: + sprintf (buffer,"inc"); + break; + case 0x52: + sprintf (buffer,"dsn"); + break; + case 0x58: + sprintf (buffer,"ise"); + break; + case 0x5a: + sprintf (buffer,"dse"); + break; + case 0x5b: + sprintf (buffer,"dec"); + break; + case 0x5d: + sprintf (buffer,"com"); + break; + case 0x5f: + sprintf (buffer,"clr"); + break; + default: + sprintf (buffer,"illegal"); + break; + }; + break; + case 0x60: + sprintf (buffer,"lla #$%02x", op & 0x0f); + break; + case 0x70: + sprintf (buffer,"jmi r%d", op & 0x0f); + break; + case 0x80: switch (op) + { + case 0x80: case 0x81: case 0x82: case 0x83: + case 0x84: case 0x85: case 0x86: + sprintf (buffer,"sfc #%d", op & 0x07); + break; + case 0x87: + sprintf (buffer,"skp"); + break; + case 0x88: case 0x89: case 0x8a: case 0x8b: + case 0x8c: case 0x8d: case 0x8e: + sprintf (buffer,"sfs #%d", op & 0x07); + break; + case 0x8f: + sprintf (buffer,"nop"); + break; + }; + break; + case 0x90: + sprintf (buffer,"and r%d", op & 0x0f); + break; + case 0xa0: + sprintf (buffer,"xor r%d", op & 0x0f); + break; + case 0xb0: + sprintf (buffer,"cs r%d", op & 0x0f); + break; + case 0xc0: + sprintf (buffer,"%s #%d", BIT(op, 3) ? "sfl" : "cfl", op & 0x07); + break; + case 0xd0: + sprintf (buffer,"lda r%d", op & 0x0f); + break; + case 0xe0: + sprintf (buffer,"sta r%d", op & 0x0f); + break; + case 0xf0: + sprintf (buffer,"ota #$%02x", op & 0x0f); + break; + } + return (pc - PC) | flags | DASMFLAG_SUPPORTED; +} |