summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/upd7810/upd7810_dasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/upd7810/upd7810_dasm.cpp')
-rw-r--r--src/devices/cpu/upd7810/upd7810_dasm.cpp4214
1 files changed, 2012 insertions, 2202 deletions
diff --git a/src/devices/cpu/upd7810/upd7810_dasm.cpp b/src/devices/cpu/upd7810/upd7810_dasm.cpp
index f3da1ba4160..1af4415486e 100644
--- a/src/devices/cpu/upd7810/upd7810_dasm.cpp
+++ b/src/devices/cpu/upd7810/upd7810_dasm.cpp
@@ -9,249 +9,52 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
-#include "upd7810.h"
+#include "upd7810_dasm.h"
-namespace {
+const char *upd7810_base_disassembler::dasm_s::name() const
+{
+ return token_names[m_token];
+}
-class dasm_s
+const char *upd7810_base_disassembler::dasm_s::args() const
{
-public:
- const char *name() const { return token_names[m_token]; }
- const char *args() const { return (m_token != prefix) ? reinterpret_cast<const char *>(m_args) : nullptr; }
+ return (m_token != prefix) ? reinterpret_cast<const char *>(m_args) : nullptr;
+}
- bool is_prefix() const { return m_token == prefix; }
- bool is_call() const { return (m_token == CALB) || (m_token == CALF) || (m_token == CALL) || (m_token == CALT); }
- bool is_return() const { return (m_token == RET) || (m_token == RETI); }
+bool upd7810_base_disassembler::dasm_s::is_prefix() const
+{
+ return m_token == prefix;
+}
- const dasm_s &prefix_get(uint8_t op) const { assert(m_token == prefix); return reinterpret_cast<const dasm_s *>(m_args)[op]; }
+bool upd7810_base_disassembler::dasm_s::is_call() const
+{
+ return (m_token == CALB) || (m_token == CALF) || (m_token == CALL) || (m_token == CALT);
+}
- static const dasm_s XX_7810[256];
- static const dasm_s XX_7807[256];
+bool upd7810_base_disassembler::dasm_s::is_return() const
+{
+ return (m_token == RET) || (m_token == RETI);
+}
- static const dasm_s XX_7801[256];
- static const dasm_s XX_78c05[256];
+const upd7810_base_disassembler::dasm_s &upd7810_base_disassembler::dasm_s::prefix_get(uint8_t op) const
+{
+ assert(m_token == prefix);
+ return reinterpret_cast<const dasm_s *>(m_args)[op];
+}
-protected:
- enum
- {
- prefix = 0,
- illegal,
- ACI,
- ADC,
- ADCW,
- ADCX,
- ADD,
- ADDNC,
- ADDNCW,
- ADDNCX,
- ADDW,
- ADDX,
- ADI,
- ADINC,
- ANA,
- ANAW,
- ANAX,
- AND,
- ANI,
- ANIW,
- BIT,
- BLOCK,
- CALB,
- CALF,
- CALL,
- CALT,
- CLC,
- CLR, /* 7807 */
- CMC, /* 7807 */
- DAA,
- DADC,
- DADD,
- DADDNC,
- DAN,
- DCR,
- DCRW,
- DCX,
- DEQ,
- DGT,
- DI,
- DIV,
- DLT,
- DMOV,
- DNE,
- DOFF,
- DON,
- DOR,
- DRLL,
- DRLR,
- DSBB,
- DSLL,
- DSLR,
- DSUB,
- DSUBNB,
- DXR,
- EADD,
- EI,
- EQA,
- EQAW,
- EQAX,
- EQI,
- EQIW,
- ESUB,
- EX, /* 7801 */
- EXA,
- EXH,
- EXX,
- EXR, /* 7807 */
- GTA,
- GTAW,
- GTAX,
- GTI,
- GTIW,
- HALT,
- IN, /* 7801 */
- INR,
- INRW,
- INX,
- JB,
- JEA,
- JMP,
- JR,
- JRE,
- LBCD,
- LDAW,
- LDAX,
- LDEAX,
- LDED,
- LHLD,
- LSPD,
- LTA,
- LTAW,
- LTAX,
- LTI,
- LTIW,
- LXI,
- MOV,
- MUL,
- MVI,
- MVIW,
- MVIX,
- NEA,
- NEAW,
- NEAX,
- NEGA,
- NEI,
- NEIW,
- NOP,
- NOT, /* 7807 */
- OFFA,
- OFFAW,
- OFFAX,
- OFFI,
- OFFIW,
- ONA,
- ONAW,
- ONAX,
- ONI,
- ONIW,
- OR, /* 7807 */
- ORA,
- ORAW,
- ORAX,
- ORI,
- ORIW,
- OUT, /* 7801 */
- PER, /* 7801 */
- PEX, /* 7801 */
- POP,
- PUSH,
- RET,
- RETI,
- RETS,
- RLD,
- RLL,
- RLR,
- RRD,
- SBB,
- SBBW,
- SBBX,
- SBCD,
- SBI,
- SDED,
- SETB, /* 7807 */
- SHLD,
- SIO, /* 7801 */
- SK,
- SKIT,
- SKN,
- SKNIT,
- SLL,
- SLLC,
- SLR,
- SLRC,
- SOFTI,
- SSPD,
- STAW,
- STAX,
- STC,
- STEAX,
- STM, /* 7801 */
- STOP,
- SUB,
- SUBNB,
- SUBNBW,
- SUBNBX,
- SUBW,
- SUBX,
- SUI,
- SUINB,
- TABLE,
- XOR, /* 7807 */
- XRA,
- XRAW,
- XRAX,
- XRI
- };
-
- dasm_s() : m_token(illegal), m_args(nullptr) { }
- dasm_s(uint8_t t, const char *a) : m_token(t), m_args(a) { }
- dasm_s(const dasm_s (&a)[256]) : m_token(prefix), m_args(a) { }
-
- uint8_t m_token;
- const void *m_args;
-
- static const char *const token_names[];
-
- static const dasm_s d48_7810[256];
- static const dasm_s d48_7807[256];
- static const dasm_s d4C_7810[256];
- static const dasm_s d4C_7807[256];
- static const dasm_s d4D_7810[256];
- static const dasm_s d4D_7807[256];
- static const dasm_s d60[256];
- static const dasm_s d64_7810[256];
- static const dasm_s d64_7807[256];
- static const dasm_s d70[256];
- static const dasm_s d74[256];
-
- static const dasm_s d48_7801[256];
- static const dasm_s d4C_7801[256];
- static const dasm_s d4D_7801[256];
- static const dasm_s d60_7801[256];
- static const dasm_s d64_7801[256];
- static const dasm_s d70_7801[256];
- static const dasm_s d74_7801[256];
-
- static const dasm_s d48_78c05[256];
- static const dasm_s d4C_78c05[256];
- static const dasm_s d4D_78c05[256];
- static const dasm_s d60_78c05[256];
- static const dasm_s d64_78c05[256];
- static const dasm_s d70_78c05[256];
- static const dasm_s d74_78c05[256];
-};
+upd7810_base_disassembler::dasm_s::dasm_s() : m_token(illegal), m_args(nullptr)
+{
+}
-const char *const dasm_s::token_names[] =
+upd7810_base_disassembler::dasm_s::dasm_s(uint8_t t, const char *a) : m_token(t), m_args(a)
+{
+}
+
+upd7810_base_disassembler::dasm_s::dasm_s(const dasm_s (&a)[256]) : m_token(prefix), m_args(a)
+{
+}
+
+const char *const upd7810_base_disassembler::dasm_s::token_names[] =
{
"",
"illegal",
@@ -431,284 +234,836 @@ const char *const dasm_s::token_names[] =
"XRI"
};
+// prefix 60
+const upd7810_base_disassembler::dasm_s upd7810_base_disassembler::d60[256] =
+{
+ { }, // 00: 0110 0000 0000 0000
+ { }, // 01: 0110 0000 0000 0001
+ { }, // 02: 0110 0000 0000 0010
+ { }, // 03: 0110 0000 0000 0011
+ { }, // 04: 0110 0000 0000 0100
+ { }, // 05: 0110 0000 0000 0101
+ { }, // 06: 0110 0000 0000 0110
+ { }, // 07: 0110 0000 0000 0111
+ {ANA, "V,A" }, // 08: 0110 0000 0000 1000
+ {ANA, "A,A" }, // 09: 0110 0000 0000 1001
+ {ANA, "B,A" }, // 0a: 0110 0000 0000 1010
+ {ANA, "C,A" }, // 0b: 0110 0000 0000 1011
+ {ANA, "D,A" }, // 0c: 0110 0000 0000 1100
+ {ANA, "E,A" }, // 0d: 0110 0000 0000 1101
+ {ANA, "H,A" }, // 0e: 0110 0000 0000 1110
+ {ANA, "L,A" }, // 0f: 0110 0000 0000 1111
-// prefix 48
-const dasm_s dasm_s::d48_7810[256] =
+ {XRA, "V,A" }, // 10: 0110 0000 0001 0000
+ {XRA, "A,A" }, // 11: 0110 0000 0001 0001
+ {XRA, "B,A" }, // 12: 0110 0000 0001 0010
+ {XRA, "C,A" }, // 13: 0110 0000 0001 0011
+ {XRA, "D,A" }, // 14: 0110 0000 0001 0100
+ {XRA, "E,A" }, // 15: 0110 0000 0001 0101
+ {XRA, "H,A" }, // 16: 0110 0000 0001 0110
+ {XRA, "L,A" }, // 17: 0110 0000 0001 0111
+ {ORA, "V,A" }, // 18: 0110 0000 0001 1000
+ {ORA, "A,A" }, // 19: 0110 0000 0001 1001
+ {ORA, "B,A" }, // 1a: 0110 0000 0001 1010
+ {ORA, "C,A" }, // 1b: 0110 0000 0001 1011
+ {ORA, "D,A" }, // 1c: 0110 0000 0001 1100
+ {ORA, "E,A" }, // 1d: 0110 0000 0001 1101
+ {ORA, "H,A" }, // 1e: 0110 0000 0001 1110
+ {ORA, "L,A" }, // 1f: 0110 0000 0001 1111
+
+ {ADDNC, "V,A" }, // 20: 0110 0000 0010 0000
+ {ADDNC, "A,A" }, // 21: 0110 0000 0010 0001
+ {ADDNC, "B,A" }, // 22: 0110 0000 0010 0010
+ {ADDNC, "C,A" }, // 23: 0110 0000 0010 0011
+ {ADDNC, "D,A" }, // 24: 0110 0000 0010 0100
+ {ADDNC, "E,A" }, // 25: 0110 0000 0010 0101
+ {ADDNC, "H,A" }, // 26: 0110 0000 0010 0110
+ {ADDNC, "L,A" }, // 27: 0110 0000 0010 0111
+ {GTA, "V,A" }, // 28: 0110 0000 0010 1000
+ {GTA, "A,A" }, // 29: 0110 0000 0010 1001
+ {GTA, "B,A" }, // 2a: 0110 0000 0010 1010
+ {GTA, "C,A" }, // 2b: 0110 0000 0010 1011
+ {GTA, "D,A" }, // 2c: 0110 0000 0010 1100
+ {GTA, "E,A" }, // 2d: 0110 0000 0010 1101
+ {GTA, "H,A" }, // 2e: 0110 0000 0010 1110
+ {GTA, "L,A" }, // 2f: 0110 0000 0010 1111
+
+ {SUBNB, "V,A" }, // 30: 0110 0000 0011 0000
+ {SUBNB, "A,A" }, // 31: 0110 0000 0011 0001
+ {SUBNB, "B,A" }, // 32: 0110 0000 0011 0010
+ {SUBNB, "C,A" }, // 33: 0110 0000 0011 0011
+ {SUBNB, "D,A" }, // 34: 0110 0000 0011 0100
+ {SUBNB, "E,A" }, // 35: 0110 0000 0011 0101
+ {SUBNB, "H,A" }, // 36: 0110 0000 0011 0110
+ {SUBNB, "L,A" }, // 37: 0110 0000 0011 0111
+ {LTA, "V,A" }, // 38: 0110 0000 0011 1000
+ {LTA, "A,A" }, // 39: 0110 0000 0011 1001
+ {LTA, "B,A" }, // 3a: 0110 0000 0011 1010
+ {LTA, "C,A" }, // 3b: 0110 0000 0011 1011
+ {LTA, "D,A" }, // 3c: 0110 0000 0011 1100
+ {LTA, "E,A" }, // 3d: 0110 0000 0011 1101
+ {LTA, "H,A" }, // 3e: 0110 0000 0011 1110
+ {LTA, "L,A" }, // 3f: 0110 0000 0011 1111
+
+ {ADD, "V,A" }, // 40: 0110 0000 0100 0000
+ {ADD, "A,A" }, // 41: 0110 0000 0100 0001
+ {ADD, "B,A" }, // 42: 0110 0000 0100 0010
+ {ADD, "C,A" }, // 43: 0110 0000 0100 0011
+ {ADD, "D,A" }, // 44: 0110 0000 0100 0100
+ {ADD, "E,A" }, // 45: 0110 0000 0100 0101
+ {ADD, "H,A" }, // 46: 0110 0000 0100 0110
+ {ADD, "L,A" }, // 47: 0110 0000 0100 0111
+ { }, // 48: 0110 0000 0100 1000
+ { }, // 49: 0110 0000 0100 1001
+ { }, // 4a: 0110 0000 0100 1010
+ { }, // 4b: 0110 0000 0100 1011
+ { }, // 4c: 0110 0000 0100 1100
+ { }, // 4d: 0110 0000 0100 1101
+ { }, // 4e: 0110 0000 0100 1110
+ { }, // 4f: 0110 0000 0100 1111
+
+ {ADC, "V,A" }, // 50: 0110 0000 0101 0000
+ {ADC, "A,A" }, // 51: 0110 0000 0101 0001
+ {ADC, "B,A" }, // 52: 0110 0000 0101 0010
+ {ADC, "C,A" }, // 53: 0110 0000 0101 0011
+ {ADC, "D,A" }, // 54: 0110 0000 0101 0100
+ {ADC, "E,A" }, // 55: 0110 0000 0101 0101
+ {ADC, "H,A" }, // 56: 0110 0000 0101 0110
+ {ADC, "L,A" }, // 57: 0110 0000 0101 0111
+ { }, // 58: 0110 0000 0101 1000
+ { }, // 59: 0110 0000 0101 1001
+ { }, // 5a: 0110 0000 0101 1010
+ { }, // 5b: 0110 0000 0101 1011
+ { }, // 5c: 0110 0000 0101 1100
+ { }, // 5d: 0110 0000 0101 1101
+ { }, // 5e: 0110 0000 0101 1110
+ { }, // 5f: 0110 0000 0101 1111
+
+ {SUB, "V,A" }, // 60: 0110 0000 0110 0000
+ {SUB, "A,A" }, // 61: 0110 0000 0110 0001
+ {SUB, "B,A" }, // 62: 0110 0000 0110 0010
+ {SUB, "C,A" }, // 63: 0110 0000 0110 0011
+ {SUB, "D,A" }, // 64: 0110 0000 0110 0100
+ {SUB, "E,A" }, // 65: 0110 0000 0110 0101
+ {SUB, "H,A" }, // 66: 0110 0000 0110 0110
+ {SUB, "L,A" }, // 67: 0110 0000 0110 0111
+ {NEA, "V,A" }, // 68: 0110 0000 0110 1000
+ {NEA, "A,A" }, // 69: 0110 0000 0110 1001
+ {NEA, "B,A" }, // 6a: 0110 0000 0110 1010
+ {NEA, "C,A" }, // 6b: 0110 0000 0110 1011
+ {NEA, "D,A" }, // 6c: 0110 0000 0110 1100
+ {NEA, "E,A" }, // 6d: 0110 0000 0110 1101
+ {NEA, "H,A" }, // 6e: 0110 0000 0110 1110
+ {NEA, "L,A" }, // 6f: 0110 0000 0110 1111
+
+ {SBB, "V,A" }, // 70: 0110 0000 0111 0000
+ {SBB, "A,A" }, // 71: 0110 0000 0111 0001
+ {SBB, "B,A" }, // 72: 0110 0000 0111 0010
+ {SBB, "C,A" }, // 73: 0110 0000 0111 0011
+ {SBB, "D,A" }, // 74: 0110 0000 0111 0100
+ {SBB, "E,A" }, // 75: 0110 0000 0111 0101
+ {SBB, "H,A" }, // 76: 0110 0000 0111 0110
+ {SBB, "L,A" }, // 77: 0110 0000 0111 0111
+ {EQA, "V,A" }, // 78: 0110 0000 0111 1000
+ {EQA, "A,A" }, // 79: 0110 0000 0111 1001
+ {EQA, "B,A" }, // 7a: 0110 0000 0111 1010
+ {EQA, "C,A" }, // 7b: 0110 0000 0111 1011
+ {EQA, "D,A" }, // 7c: 0110 0000 0111 1100
+ {EQA, "E,A" }, // 7d: 0110 0000 0111 1101
+ {EQA, "H,A" }, // 7e: 0110 0000 0111 1110
+ {EQA, "L,A" }, // 7f: 0110 0000 0111 1111
+
+ { }, // 80: 0110 0000 1000 0000
+ { }, // 81: 0110 0000 1000 0001
+ { }, // 82: 0110 0000 1000 0010
+ { }, // 83: 0110 0000 1000 0011
+ { }, // 84: 0110 0000 1000 0100
+ { }, // 85: 0110 0000 1000 0101
+ { }, // 86: 0110 0000 1000 0110
+ { }, // 87: 0110 0000 1000 0111
+ {ANA, "A,V" }, // 88: 0110 0000 1000 1000
+ {ANA, "A,A" }, // 89: 0110 0000 1000 1001
+ {ANA, "A,B" }, // 8a: 0110 0000 1000 1010
+ {ANA, "A,C" }, // 8b: 0110 0000 1000 1011
+ {ANA, "A,D" }, // 8c: 0110 0000 1000 1100
+ {ANA, "A,E" }, // 8d: 0110 0000 1000 1101
+ {ANA, "A,H" }, // 8e: 0110 0000 1000 1110
+ {ANA, "A,L" }, // 8f: 0110 0000 1000 1111
+
+ {XRA, "A,V" }, // 90: 0110 0000 1001 0000
+ {XRA, "A,A" }, // 91: 0110 0000 1001 0001
+ {XRA, "A,B" }, // 92: 0110 0000 1001 0010
+ {XRA, "A,C" }, // 93: 0110 0000 1001 0011
+ {XRA, "A,D" }, // 94: 0110 0000 1001 0100
+ {XRA, "A,E" }, // 95: 0110 0000 1001 0101
+ {XRA, "A,H" }, // 96: 0110 0000 1001 0110
+ {XRA, "A,L" }, // 97: 0110 0000 1001 0111
+ {ORA, "A,V" }, // 98: 0110 0000 1001 1000
+ {ORA, "A,A" }, // 99: 0110 0000 1001 1001
+ {ORA, "A,B" }, // 9a: 0110 0000 1001 1010
+ {ORA, "A,C" }, // 9b: 0110 0000 1001 1011
+ {ORA, "A,D" }, // 9c: 0110 0000 1001 1100
+ {ORA, "A,E" }, // 9d: 0110 0000 1001 1101
+ {ORA, "A,H" }, // 9e: 0110 0000 1001 1110
+ {ORA, "A,L" }, // 9f: 0110 0000 1001 1111
+
+ {ADDNC, "A,V" }, // a0: 0110 0000 1010 0000
+ {ADDNC, "A,A" }, // a1: 0110 0000 1010 0001
+ {ADDNC, "A,B" }, // a2: 0110 0000 1010 0010
+ {ADDNC, "A,C" }, // a3: 0110 0000 1010 0011
+ {ADDNC, "A,D" }, // a4: 0110 0000 1010 0100
+ {ADDNC, "A,E" }, // a5: 0110 0000 1010 0101
+ {ADDNC, "A,H" }, // a6: 0110 0000 1010 0110
+ {ADDNC, "A,L" }, // a7: 0110 0000 1010 0111
+ {GTA, "A,V" }, // a8: 0110 0000 1010 1000
+ {GTA, "A,A" }, // a9: 0110 0000 1010 1001
+ {GTA, "A,B" }, // aa: 0110 0000 1010 1010
+ {GTA, "A,C" }, // ab: 0110 0000 1010 1011
+ {GTA, "A,D" }, // ac: 0110 0000 1010 1100
+ {GTA, "A,E" }, // ad: 0110 0000 1010 1101
+ {GTA, "A,H" }, // ae: 0110 0000 1010 1110
+ {GTA, "A,L" }, // af: 0110 0000 1010 1111
+
+ {SUBNB, "A,V" }, // b0: 0110 0000 1011 0000
+ {SUBNB, "A,A" }, // b1: 0110 0000 1011 0001
+ {SUBNB, "A,B" }, // b2: 0110 0000 1011 0010
+ {SUBNB, "A,C" }, // b3: 0110 0000 1011 0011
+ {SUBNB, "A,D" }, // b4: 0110 0000 1011 0100
+ {SUBNB, "A,E" }, // b5: 0110 0000 1011 0101
+ {SUBNB, "A,H" }, // b6: 0110 0000 1011 0110
+ {SUBNB, "A,L" }, // b7: 0110 0000 1011 0111
+ {LTA, "A,V" }, // b8: 0110 0000 1011 1000
+ {LTA, "A,A" }, // b9: 0110 0000 1011 1001
+ {LTA, "A,B" }, // ba: 0110 0000 1011 1010
+ {LTA, "A,C" }, // bb: 0110 0000 1011 1011
+ {LTA, "A,D" }, // bc: 0110 0000 1011 1100
+ {LTA, "A,E" }, // bd: 0110 0000 1011 1101
+ {LTA, "A,H" }, // be: 0110 0000 1011 1110
+ {LTA, "A,L" }, // bf: 0110 0000 1011 1111
+
+ {ADD, "A,V" }, // c0: 0110 0000 1100 0000
+ {ADD, "A,A" }, // c1: 0110 0000 1100 0001
+ {ADD, "A,B" }, // c2: 0110 0000 1100 0010
+ {ADD, "A,C" }, // c3: 0110 0000 1100 0011
+ {ADD, "A,D" }, // c4: 0110 0000 1100 0100
+ {ADD, "A,E" }, // c5: 0110 0000 1100 0101
+ {ADD, "A,H" }, // c6: 0110 0000 1100 0110
+ {ADD, "A,L" }, // c7: 0110 0000 1100 0111
+ {ONA, "A,V" }, // c8: 0110 0000 1100 1000
+ {ONA, "A,A" }, // c9: 0110 0000 1100 1001
+ {ONA, "A,B" }, // ca: 0110 0000 1100 1010
+ {ONA, "A,C" }, // cb: 0110 0000 1100 1011
+ {ONA, "A,D" }, // cc: 0110 0000 1100 1100
+ {ONA, "A,E" }, // cd: 0110 0000 1100 1101
+ {ONA, "A,H" }, // ce: 0110 0000 1100 1110
+ {ONA, "A,L" }, // cf: 0110 0000 1100 1111
+
+ {ADC, "A,V" }, // d0: 0110 0000 1101 0000
+ {ADC, "A,A" }, // d1: 0110 0000 1101 0001
+ {ADC, "A,B" }, // d2: 0110 0000 1101 0010
+ {ADC, "A,C" }, // d3: 0110 0000 1101 0011
+ {ADC, "A,D" }, // d4: 0110 0000 1101 0100
+ {ADC, "A,E" }, // d5: 0110 0000 1101 0101
+ {ADC, "A,H" }, // d6: 0110 0000 1101 0110
+ {ADC, "A,L" }, // d7: 0110 0000 1101 0111
+ {OFFA, "A,V" }, // d8: 0110 0000 1101 1000
+ {OFFA, "A,A" }, // d9: 0110 0000 1101 1001
+ {OFFA, "A,B" }, // da: 0110 0000 1101 1010
+ {OFFA, "A,C" }, // db: 0110 0000 1101 1011
+ {OFFA, "A,D" }, // dc: 0110 0000 1101 1100
+ {OFFA, "A,E" }, // dd: 0110 0000 1101 1101
+ {OFFA, "A,H" }, // de: 0110 0000 1101 1110
+ {OFFA, "A,L" }, // df: 0110 0000 1101 1111
+
+ {SUB, "A,V" }, // e0: 0110 0000 1110 0000
+ {SUB, "A,A" }, // e1: 0110 0000 1110 0001
+ {SUB, "A,B" }, // e2: 0110 0000 1110 0010
+ {SUB, "A,C" }, // e3: 0110 0000 1110 0011
+ {SUB, "A,D" }, // e4: 0110 0000 1110 0100
+ {SUB, "A,E" }, // e5: 0110 0000 1110 0101
+ {SUB, "A,H" }, // e6: 0110 0000 1110 0110
+ {SUB, "A,L" }, // e7: 0110 0000 1110 0111
+ {NEA, "A,V" }, // e8: 0110 0000 1110 1000
+ {NEA, "A,A" }, // e9: 0110 0000 1110 1001
+ {NEA, "A,B" }, // ea: 0110 0000 1110 1010
+ {NEA, "A,C" }, // eb: 0110 0000 1110 1011
+ {NEA, "A,D" }, // ec: 0110 0000 1110 1100
+ {NEA, "A,E" }, // ed: 0110 0000 1110 1101
+ {NEA, "A,H" }, // ee: 0110 0000 1110 1110
+ {NEA, "A,L" }, // ef: 0110 0000 1110 1111
+
+ {SBB, "A,V" }, // f0: 0110 0000 1111 0000
+ {SBB, "A,A" }, // f1: 0110 0000 1111 0001
+ {SBB, "A,B" }, // f2: 0110 0000 1111 0010
+ {SBB, "A,C" }, // f3: 0110 0000 1111 0011
+ {SBB, "A,D" }, // f4: 0110 0000 1111 0100
+ {SBB, "A,E" }, // f5: 0110 0000 1111 0101
+ {SBB, "A,H" }, // f6: 0110 0000 1111 0110
+ {SBB, "A,L" }, // f7: 0110 0000 1111 0111
+ {EQA, "A,V" }, // f8: 0110 0000 1111 1000
+ {EQA, "A,A" }, // f9: 0110 0000 1111 1001
+ {EQA, "A,B" }, // fa: 0110 0000 1111 1010
+ {EQA, "A,C" }, // fb: 0110 0000 1111 1011
+ {EQA, "A,D" }, // fc: 0110 0000 1111 1100
+ {EQA, "A,E" }, // fd: 0110 0000 1111 1101
+ {EQA, "A,H" }, // fe: 0110 0000 1111 1110
+ {EQA, "A,L" } // ff: 0110 0000 1111 1111
+};
+
+// prefix 70
+const upd7810_base_disassembler::dasm_s upd7810_base_disassembler::d70[256] =
{
- { }, // 00: 0100 1000 0000 0000
- {SLRC, "A" }, // 01: 0100 1000 0000 0001
- {SLRC, "B" }, // 02: 0100 1000 0000 0010
- {SLRC, "C" }, // 03: 0100 1000 0000 0011
- { }, // 04: 0100 1000 0000 0100
- {SLLC, "A" }, // 05: 0100 1000 0000 0101
- {SLLC, "B" }, // 06: 0100 1000 0000 0110
- {SLLC, "C" }, // 07: 0100 1000 0000 0111
- {SK, "NV" }, // 08: 0100 1000 0000 1000
- { }, // 09: 0100 1000 0000 1001
- {SK, "CY" }, // 0a: 0100 1000 0000 1010
- {SK, "HC" }, // 0b: 0100 1000 0000 1011
- {SK, "Z" }, // 0c: 0100 1000 0000 1100
- { }, // 0d: 0100 1000 0000 1101
- { }, // 0e: 0100 1000 0000 1110
- { }, // 0f: 0100 1000 0000 1111
+ { }, // 00: 0111 0000 0000 0000
+ { }, // 01: 0111 0000 0000 0001
+ { }, // 02: 0111 0000 0000 0010
+ { }, // 03: 0111 0000 0000 0011
+ { }, // 04: 0111 0000 0000 0100
+ { }, // 05: 0111 0000 0000 0101
+ { }, // 06: 0111 0000 0000 0110
+ { }, // 07: 0111 0000 0000 0111
+ { }, // 08: 0111 0000 0000 1000
+ { }, // 09: 0111 0000 0000 1001
+ { }, // 0a: 0111 0000 0000 1010
+ { }, // 0b: 0111 0000 0000 1011
+ { }, // 0c: 0111 0000 0000 1100
+ { }, // 0d: 0111 0000 0000 1101
+ {SSPD, "%w" }, // 0e: 0111 0000 0000 1110 llll llll hhhh hhhh
+ {LSPD, "%w" }, // 0f: 0111 0000 0000 1111 llll llll hhhh hhhh
- { }, // 10: 0100 1000 0001 0000
- { }, // 11: 0100 1000 0001 0001
- { }, // 12: 0100 1000 0001 0010
- { }, // 13: 0100 1000 0001 0011
- { }, // 14: 0100 1000 0001 0100
- { }, // 15: 0100 1000 0001 0101
- { }, // 16: 0100 1000 0001 0110
- { }, // 17: 0100 1000 0001 0111
- {SKN, "NV" }, // 18: 0100 1000 0001 1000
- { }, // 19: 0100 1000 0001 1001
- {SKN, "CY" }, // 1a: 0100 1000 0001 1010
- {SKN, "HC" }, // 1b: 0100 1000 0001 1011
- {SKN, "Z" }, // 1c: 0100 1000 0001 1100
- { }, // 1d: 0100 1000 0001 1101
- { }, // 1e: 0100 1000 0001 1110
- { }, // 1f: 0100 1000 0001 1111
+ { }, // 10: 0111 0000 0001 0000
+ { }, // 11: 0111 0000 0001 0001
+ { }, // 12: 0111 0000 0001 0010
+ { }, // 13: 0111 0000 0001 0011
+ { }, // 14: 0111 0000 0001 0100
+ { }, // 15: 0111 0000 0001 0101
+ { }, // 16: 0111 0000 0001 0110
+ { }, // 17: 0111 0000 0001 0111
+ { }, // 18: 0111 0000 0001 1000
+ { }, // 19: 0111 0000 0001 1001
+ { }, // 1a: 0111 0000 0001 1010
+ { }, // 1b: 0111 0000 0001 1011
+ { }, // 1c: 0111 0000 0001 1100
+ { }, // 1d: 0111 0000 0001 1101
+ {SBCD, "%w" }, // 1e: 0111 0000 0001 1110 llll llll hhhh hhhh
+ {LBCD, "%w" }, // 1f: 0111 0000 0001 1111 llll llll hhhh hhhh
- { }, // 20: 0100 1000 0010 0000
- {SLR, "A" }, // 21: 0100 1000 0010 0001
- {SLR, "B" }, // 22: 0100 1000 0010 0010
- {SLR, "C" }, // 23: 0100 1000 0010 0011
- { }, // 24: 0100 1000 0010 0100
- {SLL, "A" }, // 25: 0100 1000 0010 0101
- {SLL, "B" }, // 26: 0100 1000 0010 0110
- {SLL, "C" }, // 27: 0100 1000 0010 0111
- {JEA, nullptr }, // 28: 0100 1000 0010 1000
- {CALB,nullptr }, // 29: 0100 1000 0010 1001
- {CLC, nullptr }, // 2a: 0100 1000 0010 1010
- {STC, nullptr }, // 2b: 0100 1000 0010 1011
- { }, // 2c: 0100 1000 0010 1100
- {MUL, "A" }, // 2d: 0100 1000 0010 1101
- {MUL, "B" }, // 2e: 0100 1000 0010 1110
- {MUL, "C" }, // 2f: 0100 1000 0010 1111
+ { }, // 20: 0111 0000 0010 0000
+ { }, // 21: 0111 0000 0010 0001
+ { }, // 22: 0111 0000 0010 0010
+ { }, // 23: 0111 0000 0010 0011
+ { }, // 24: 0111 0000 0010 0100
+ { }, // 25: 0111 0000 0010 0101
+ { }, // 26: 0111 0000 0010 0110
+ { }, // 27: 0111 0000 0010 0111
+ { }, // 28: 0111 0000 0010 1000
+ { }, // 29: 0111 0000 0010 1001
+ { }, // 2a: 0111 0000 0010 1010
+ { }, // 2b: 0111 0000 0010 1011
+ { }, // 2c: 0111 0000 0010 1100
+ { }, // 2d: 0111 0000 0010 1101
+ {SDED, "%w" }, // 2e: 0111 0000 0010 1110 llll llll hhhh hhhh
+ {LDED, "%w" }, // 2f: 0111 0000 0010 1111 llll llll hhhh hhhh
- { }, // 30: 0100 1000 0011 0000
- {RLR, "A" }, // 31: 0100 1000 0011 0001
- {RLR, "B" }, // 32: 0100 1000 0011 0010
- {RLR, "C" }, // 33: 0100 1000 0011 0011
- { }, // 34: 0100 1000 0011 0100
- {RLL, "A" }, // 35: 0100 1000 0011 0101
- {RLL, "B" }, // 36: 0100 1000 0011 0110
- {RLL, "C" }, // 37: 0100 1000 0011 0111
- {RLD, nullptr }, // 38: 0100 1000 0011 1000
- {RRD, nullptr }, // 39: 0100 1000 0011 1001
- {NEGA, nullptr }, // 3a: 0100 1000 0011 1010
- {HALT, nullptr }, // 3b: 0100 1000 0011 1011
- { }, // 3c: 0100 1000 0011 1100
- {DIV, "A" }, // 3d: 0100 1000 0011 1101
- {DIV, "B" }, // 3e: 0100 1000 0011 1110
- {DIV, "C" }, // 3f: 0100 1000 0011 1111
+ { }, // 30: 0111 0000 0011 0000
+ { }, // 31: 0111 0000 0011 0001
+ { }, // 32: 0111 0000 0011 0010
+ { }, // 33: 0111 0000 0011 0011
+ { }, // 34: 0111 0000 0011 0100
+ { }, // 35: 0111 0000 0011 0101
+ { }, // 36: 0111 0000 0011 0110
+ { }, // 37: 0111 0000 0011 0111
+ { }, // 38: 0111 0000 0011 1000
+ { }, // 39: 0111 0000 0011 1001
+ { }, // 3a: 0111 0000 0011 1010
+ { }, // 3b: 0111 0000 0011 1011
+ { }, // 3c: 0111 0000 0011 1100
+ { }, // 3d: 0111 0000 0011 1101
+ {SHLD, "%w" }, // 3e: 0111 0000 0011 1110 llll llll hhhh hhhh
+ {LHLD, "%w" }, // 3f: 0111 0000 0011 1111 llll llll hhhh hhhh
- {SKIT, "NMI" }, // 40: 0100 1000 0100 0000
- {SKIT, "FT0" }, // 41: 0100 1000 0100 0001
- {SKIT, "FT1" }, // 42: 0100 1000 0100 0010
- {SKIT, "F1" }, // 43: 0100 1000 0100 0011
- {SKIT, "F2" }, // 44: 0100 1000 0100 0100
- {SKIT, "FE0" }, // 45: 0100 1000 0100 0101
- {SKIT, "FE1" }, // 46: 0100 1000 0100 0110
- {SKIT, "FEIN" }, // 47: 0100 1000 0100 0111
- {SKIT, "FAD" }, // 48: 0100 1000 0100 1000
- {SKIT, "FSR" }, // 49: 0100 1000 0100 1001
- {SKIT, "FST" }, // 4a: 0100 1000 0100 1010
- {SKIT, "ER" }, // 4b: 0100 1000 0100 1011
- {SKIT, "OV" }, // 4c: 0100 1000 0100 1100
- { }, // 4d: 0100 1000 0100 1101
- { }, // 4e: 0100 1000 0100 1110
- { }, // 4f: 0100 1000 0100 1111
+ {EADD, "EA,V" }, // 40: 0111 0000 0100 0000
+ {EADD, "EA,A" }, // 41: 0111 0000 0100 0001
+ {EADD, "EA,B" }, // 42: 0111 0000 0100 0010
+ {EADD, "EA,C" }, // 43: 0111 0000 0100 0011
+ { }, // 44: 0111 0000 0100 0100
+ { }, // 45: 0111 0000 0100 0101
+ { }, // 46: 0111 0000 0100 0110
+ { }, // 47: 0111 0000 0100 0111
+ { }, // 48: 0111 0000 0100 1000
+ { }, // 49: 0111 0000 0100 1001
+ { }, // 4a: 0111 0000 0100 1010
+ { }, // 4b: 0111 0000 0100 1011
+ { }, // 4c: 0111 0000 0100 1100
+ { }, // 4d: 0111 0000 0100 1101
+ { }, // 4e: 0111 0000 0100 1110
+ { }, // 4f: 0111 0000 0100 1111
- {SKIT, "AN4" }, // 50: 0100 1000 0101 0000
- {SKIT, "AN5" }, // 51: 0100 1000 0101 0001
- {SKIT, "AN6" }, // 52: 0100 1000 0101 0010
- {SKIT, "AN7" }, // 53: 0100 1000 0101 0011
- {SKIT, "SB" }, // 54: 0100 1000 0101 0100
- { }, // 55: 0100 1000 0101 0101
- { }, // 56: 0100 1000 0101 0110
- { }, // 57: 0100 1000 0101 0111
- { }, // 58: 0100 1000 0101 1000
- { }, // 59: 0100 1000 0101 1001
- { }, // 5a: 0100 1000 0101 1010
- { }, // 5b: 0100 1000 0101 1011
- { }, // 5c: 0100 1000 0101 1100
- { }, // 5d: 0100 1000 0101 1101
- { }, // 5e: 0100 1000 0101 1110
- { }, // 5f: 0100 1000 0101 1111
+ { }, // 50: 0111 0000 0101 0000
+ { }, // 51: 0111 0000 0101 0001
+ { }, // 52: 0111 0000 0101 0010
+ { }, // 53: 0111 0000 0101 0011
+ { }, // 54: 0111 0000 0101 0100
+ { }, // 55: 0111 0000 0101 0101
+ { }, // 56: 0111 0000 0101 0110
+ { }, // 57: 0111 0000 0101 0111
+ { }, // 58: 0111 0000 0101 1000
+ { }, // 59: 0111 0000 0101 1001
+ { }, // 5a: 0111 0000 0101 1010
+ { }, // 5b: 0111 0000 0101 1011
+ { }, // 5c: 0111 0000 0101 1100
+ { }, // 5d: 0111 0000 0101 1101
+ { }, // 5e: 0111 0000 0101 1110
+ { }, // 5f: 0111 0000 0101 1111
- {SKNIT, "NMI" }, // 60: 0100 1000 0110 0000
- {SKNIT, "FT0" }, // 61: 0100 1000 0110 0001
- {SKNIT, "FT1" }, // 62: 0100 1000 0110 0010
- {SKNIT, "F1" }, // 63: 0100 1000 0110 0011
- {SKNIT, "F2" }, // 64: 0100 1000 0110 0100
- {SKNIT, "FE0" }, // 65: 0100 1000 0110 0101
- {SKNIT, "FE1" }, // 66: 0100 1000 0110 0110
- {SKNIT, "FEIN" }, // 67: 0100 1000 0110 0111
- {SKNIT, "FAD" }, // 68: 0100 1000 0110 1000
- {SKNIT, "FSR" }, // 69: 0100 1000 0110 1001
- {SKNIT, "FST" }, // 6a: 0100 1000 0110 1010
- {SKNIT, "ER" }, // 6b: 0100 1000 0110 1011
- {SKNIT, "OV" }, // 6c: 0100 1000 0110 1100
- { }, // 6d: 0100 1000 0110 1101
- { }, // 6e: 0100 1000 0110 1110
- { }, // 6f: 0100 1000 0110 1111
+ {ESUB, "EA,V" }, // 60: 0111 0000 0110 0000
+ {ESUB, "EA,A" }, // 61: 0111 0000 0110 0001
+ {ESUB, "EA,B" }, // 62: 0111 0000 0110 0010
+ {ESUB, "EA,C" }, // 63: 0111 0000 0110 0011
+ { }, // 64: 0111 0000 0110 0100
+ { }, // 65: 0111 0000 0110 0101
+ { }, // 66: 0111 0000 0110 0110
+ { }, // 67: 0111 0000 0110 0111
+ {MOV, "V,(%w)" }, // 68: 0111 0000 0110 1000 llll llll hhhh hhhh
+ {MOV, "A,(%w)" }, // 69: 0111 0000 0110 1001 llll llll hhhh hhhh
+ {MOV, "B,(%w)" }, // 6a: 0111 0000 0110 1010 llll llll hhhh hhhh
+ {MOV, "C,(%w)" }, // 6b: 0111 0000 0110 1011 llll llll hhhh hhhh
+ {MOV, "D,(%w)" }, // 6c: 0111 0000 0110 1100 llll llll hhhh hhhh
+ {MOV, "E,(%w)" }, // 6d: 0111 0000 0110 1101 llll llll hhhh hhhh
+ {MOV, "H,(%w)" }, // 6e: 0111 0000 0110 1110 llll llll hhhh hhhh
+ {MOV, "L,(%w)" }, // 6f: 0111 0000 0110 1111 llll llll hhhh hhhh
- {SKNIT, "AN4" }, // 70: 0100 1000 0111 0000
- {SKNIT, "AN5" }, // 71: 0100 1000 0111 0001
- {SKNIT, "AN6" }, // 72: 0100 1000 0111 0010
- {SKNIT, "AN7" }, // 73: 0100 1000 0111 0011
- {SKNIT, "SB" }, // 74: 0100 1000 0111 0100
- { }, // 75: 0100 1000 0111 0101
- { }, // 76: 0100 1000 0111 0110
- { }, // 77: 0100 1000 0111 0111
- { }, // 78: 0100 1000 0111 1000
- { }, // 79: 0100 1000 0111 1001
- { }, // 7a: 0100 1000 0111 1010
- { }, // 7b: 0100 1000 0111 1011
- { }, // 7c: 0100 1000 0111 1100
- { }, // 7d: 0100 1000 0111 1101
- { }, // 7e: 0100 1000 0111 1110
- { }, // 7f: 0100 1000 0111 1111
+ { }, // 70: 0111 0000 0111 0000
+ { }, // 71: 0111 0000 0111 0001
+ { }, // 72: 0111 0000 0111 0010
+ { }, // 73: 0111 0000 0111 0011
+ { }, // 74: 0111 0000 0111 0100
+ { }, // 75: 0111 0000 0111 0101
+ { }, // 76: 0111 0000 0111 0110
+ { }, // 77: 0111 0000 0111 0111
+ {MOV, "(%w),V" }, // 78: 0111 0000 0111 1000 llll llll hhhh hhhh
+ {MOV, "(%w),A" }, // 79: 0111 0000 0111 1001 llll llll hhhh hhhh
+ {MOV, "(%w),B" }, // 7a: 0111 0000 0111 1010 llll llll hhhh hhhh
+ {MOV, "(%w),C" }, // 7b: 0111 0000 0111 1011 llll llll hhhh hhhh
+ {MOV, "(%w),D" }, // 7c: 0111 0000 0111 1100 llll llll hhhh hhhh
+ {MOV, "(%w),E" }, // 7d: 0111 0000 0111 1101 llll llll hhhh hhhh
+ {MOV, "(%w),H" }, // 7e: 0111 0000 0111 1110 llll llll hhhh hhhh
+ {MOV, "(%w),L" }, // 7f: 0111 0000 0111 1111 llll llll hhhh hhhh
- { }, // 80: 0100 1000 1000 0000
- { }, // 81: 0100 1000 1000 0001
- {LDEAX, "(DE)" }, // 82: 0100 1000 1000 0010
- {LDEAX, "(HL)" }, // 83: 0100 1000 1000 0011
- {LDEAX, "(DE++)" }, // 84: 0100 1000 1000 0100
- {LDEAX, "(HL++)" }, // 85: 0100 1000 1000 0101
- { }, // 86: 0100 1000 1000 0110
- { }, // 87: 0100 1000 1000 0111
- { }, // 88: 0100 1000 1000 1000
- { }, // 89: 0100 1000 1000 1001
- { }, // 8a: 0100 1000 1000 1010
- {LDEAX, "(DE+%b)" }, // 8b: 0100 1000 1000 1011 xxxx xxxx
- {LDEAX, "(HL+A)" }, // 8c: 0100 1000 1000 1100
- {LDEAX, "(HL+B)" }, // 8d: 0100 1000 1000 1101
- {LDEAX, "(HL+EA)" }, // 8e: 0100 1000 1000 1110
- {LDEAX, "(HL+%b)" }, // 8f: 0100 1000 1000 1111 xxxx xxxx
+ { }, // 80: 0111 0000 1000 0000
+ { }, // 81: 0111 0000 1000 0001
+ { }, // 82: 0111 0000 1000 0010
+ { }, // 83: 0111 0000 1000 0011
+ { }, // 84: 0111 0000 1000 0100
+ { }, // 85: 0111 0000 1000 0101
+ { }, // 86: 0111 0000 1000 0110
+ { }, // 87: 0111 0000 1000 0111
+ { }, // 88: 0111 0000 1000 1000
+ {ANAX, "(BC)" }, // 89: 0111 0000 1000 1001
+ {ANAX, "(DE)" }, // 8a: 0111 0000 1000 1010
+ {ANAX, "(HL)" }, // 8b: 0111 0000 1000 1011
+ {ANAX, "(DE+)" }, // 8c: 0111 0000 1000 1100
+ {ANAX, "(HL+)" }, // 8d: 0111 0000 1000 1101
+ {ANAX, "(DE-)" }, // 8e: 0111 0000 1000 1110
+ {ANAX, "(HL-)" }, // 8f: 0111 0000 1000 1111
- { }, // 90: 0100 1000 1000 0000
- { }, // 91: 0100 1000 1000 0001
- {STEAX, "(DE)" }, // 92: 0100 1000 1000 0010
- {STEAX, "(HL)" }, // 93: 0100 1000 1000 0011
- {STEAX, "(DE++)" }, // 94: 0100 1000 1000 0100
- {STEAX, "(HL++)" }, // 95: 0100 1000 1000 0101
- { }, // 96: 0100 1000 1000 0110
- { }, // 97: 0100 1000 1000 0111
- { }, // 98: 0100 1000 1000 1000
- { }, // 99: 0100 1000 1000 1001
- { }, // 9a: 0100 1000 1000 1010
- {STEAX, "(DE+%b)" }, // 9b: 0100 1000 1000 1011 xxxx xxxx
- {STEAX, "(HL+A)" }, // 9c: 0100 1000 1000 1100
- {STEAX, "(HL+B)" }, // 9d: 0100 1000 1000 1101
- {STEAX, "(HL+EA)" }, // 9e: 0100 1000 1000 1110
- {STEAX, "(HL+%b)" }, // 9f: 0100 1000 1000 1111 xxxx xxxx
+ { }, // 90: 0111 0000 1001 0000
+ {XRAX, "(BC)" }, // 91: 0111 0000 1001 0001
+ {XRAX, "(DE)" }, // 92: 0111 0000 1001 0010
+ {XRAX, "(HL)" }, // 93: 0111 0000 1001 0011
+ {XRAX, "(DE+)" }, // 94: 0111 0000 1001 0100
+ {XRAX, "(HL+)" }, // 95: 0111 0000 1001 0101
+ {XRAX, "(DE-)" }, // 96: 0111 0000 1001 0110
+ {XRAX, "(HL-)" }, // 97: 0111 0000 1001 0111
+ { }, // 98: 0111 0000 1001 1000
+ {ORAX, "(BC)" }, // 99: 0111 0000 1001 1001
+ {ORAX, "(DE)" }, // 9a: 0111 0000 1001 1010
+ {ORAX, "(HL)" }, // 9b: 0111 0000 1001 1011
+ {ORAX, "(DE+)" }, // 9c: 0111 0000 1001 1100
+ {ORAX, "(HL+)" }, // 9d: 0111 0000 1001 1101
+ {ORAX, "(DE-)" }, // 9e: 0111 0000 1001 1110
+ {ORAX, "(HL-)" }, // 9f: 0111 0000 1001 1111
- {DSLR, "EA" }, // a0: 0100 1000 1010 0000
- { }, // a1: 0100 1000 1010 0001
- { }, // a2: 0100 1000 1010 0010
- { }, // a3: 0100 1000 1010 0011
- {DSLL, "EA" }, // a4: 0100 1000 1010 0100
- { }, // a5: 0100 1000 1010 0101
- { }, // a6: 0100 1000 1010 0110
- { }, // a7: 0100 1000 1010 0111
- {TABLE, nullptr }, // a8: 0100 1000 1010 1000
- { }, // a9: 0100 1000 1010 1001
- { }, // aa: 0100 1000 1010 1010
- { }, // ab: 0100 1000 1010 1011
- { }, // ac: 0100 1000 1010 1100
- { }, // ad: 0100 1000 1010 1101
- { }, // ae: 0100 1000 1010 1110
- { }, // af: 0100 1000 1010 1111
+ { }, // a0: 0111 0000 1010 0000
+ {ADDNCX, "(BC)" }, // a1: 0111 0000 1010 0001
+ {ADDNCX, "(DE)" }, // a2: 0111 0000 1010 0010
+ {ADDNCX, "(HL)" }, // a3: 0111 0000 1010 0011
+ {ADDNCX, "(DE+)" }, // a4: 0111 0000 1010 0100
+ {ADDNCX, "(HL+)" }, // a5: 0111 0000 1010 0101
+ {ADDNCX, "(DE-)" }, // a6: 0111 0000 1010 0110
+ {ADDNCX, "(HL-)" }, // a7: 0111 0000 1010 0111
+ { }, // a8: 0111 0000 1010 1000
+ {GTAX, "(BC)" }, // a9: 0111 0000 1010 1001
+ {GTAX, "(DE)" }, // aa: 0111 0000 1010 1010
+ {GTAX, "(HL)" }, // ab: 0111 0000 1010 1011
+ {GTAX, "(DE+)" }, // ac: 0111 0000 1010 1100
+ {GTAX, "(HL+)" }, // ad: 0111 0000 1010 1101
+ {GTAX, "(DE-)" }, // ae: 0111 0000 1010 1110
+ {GTAX, "(HL-)" }, // af: 0111 0000 1010 1111
- {DRLR, "EA" }, // b0: 0100 1000 1011 0000
- { }, // b1: 0100 1000 1011 0001
- { }, // b2: 0100 1000 1011 0010
- { }, // b3: 0100 1000 1011 0011
- {DRLL, "EA" }, // b4: 0100 1000 1011 0100
- { }, // b5: 0100 1000 1011 0101
- { }, // b6: 0100 1000 1011 0110
- { }, // b7: 0100 1000 1011 0111
- { }, // b8: 0100 1000 1011 1000
- { }, // b9: 0100 1000 1011 1001
- { }, // ba: 0100 1000 1011 1010
- {STOP, nullptr }, // bb: 0100 1000 1011 1011 7810
- { }, // bc: 0100 1000 1011 1100
- { }, // bd: 0100 1000 1011 1101
- { }, // be: 0100 1000 1011 1110
- { }, // bf: 0100 1000 1011 1111
+ { }, // b0: 0111 0000 1011 0000
+ {SUBNBX, "(BC)" }, // b1: 0111 0000 1011 0001
+ {SUBNBX, "(DE)" }, // b2: 0111 0000 1011 0010
+ {SUBNBX, "(HL)" }, // b3: 0111 0000 1011 0011
+ {SUBNBX, "(DE+)" }, // b4: 0111 0000 1011 0100
+ {SUBNBX, "(HL+)" }, // b5: 0111 0000 1011 0101
+ {SUBNBX, "(DE-)" }, // b6: 0111 0000 1011 0110
+ {SUBNBX, "(HL-)" }, // b7: 0111 0000 1011 0111
+ { }, // b8: 0111 0000 1011 1000
+ {LTAX, "(BC)" }, // b9: 0111 0000 1011 1001
+ {LTAX, "(DE)" }, // ba: 0111 0000 1011 1010
+ {LTAX, "(HL)" }, // bb: 0111 0000 1011 1011
+ {LTAX, "(DE+)" }, // bc: 0111 0000 1011 1100
+ {LTAX, "(HL+)" }, // bd: 0111 0000 1011 1101
+ {LTAX, "(DE-)" }, // be: 0111 0000 1011 1110
+ {LTAX, "(HL-)" }, // bf: 0111 0000 1011 1111
- {DMOV, "EA,ECNT" }, // c0: 0100 1000 1100 0000
- {DMOV, "EA,ECPT" }, // c1: 0100 1000 1100 0001 7810
- { }, // c2: 0100 1000 1100 0010
- { }, // c3: 0100 1000 1100 0011
- { }, // c4: 0100 1000 1100 0100
- { }, // c5: 0100 1000 1100 0101
- { }, // c6: 0100 1000 1100 0110
- { }, // c7: 0100 1000 1100 0111
- { }, // c8: 0100 1000 1100 1000
- { }, // c9: 0100 1000 1100 1001
- { }, // ca: 0100 1000 1100 1010
- { }, // cb: 0100 1000 1100 1011
- { }, // cc: 0100 1000 1100 1100
- { }, // cd: 0100 1000 1100 1101
- { }, // ce: 0100 1000 1100 1110
- { }, // cf: 0100 1000 1100 1111
+ { }, // c0: 0111 0000 1100 0000
+ {ADDX, "(BC)" }, // c1: 0111 0000 1100 0001
+ {ADDX, "(DE)" }, // c2: 0111 0000 1100 0010
+ {ADDX, "(HL)" }, // c3: 0111 0000 1100 0011
+ {ADDX, "(DE+)" }, // c4: 0111 0000 1100 0100
+ {ADDX, "(HL+)" }, // c5: 0111 0000 1100 0101
+ {ADDX, "(DE-)" }, // c6: 0111 0000 1100 0110
+ {ADDX, "(HL-)" }, // c7: 0111 0000 1100 0111
+ { }, // c8: 0111 0000 1100 1000
+ {ONAX, "(BC)" }, // c9: 0111 0000 1100 1001
+ {ONAX, "(DE)" }, // ca: 0111 0000 1100 1010
+ {ONAX, "(HL)" }, // cb: 0111 0000 1100 1011
+ {ONAX, "(DE+)" }, // cc: 0111 0000 1100 1100
+ {ONAX, "(HL+)" }, // cd: 0111 0000 1100 1101
+ {ONAX, "(DE-)" }, // ce: 0111 0000 1100 1110
+ {ONAX, "(HL-)" }, // cf: 0111 0000 1100 1111
- { }, // d0: 0100 1000 1101 0000
- { }, // d1: 0100 1000 1101 0001
- {DMOV, "ETM0,EA" }, // d2: 0100 1000 1101 0010
- {DMOV, "ETM1,EA" }, // d3: 0100 1000 1101 0011
- { }, // d4: 0100 1000 1101 0100
- { }, // d5: 0100 1000 1101 0101
- { }, // d6: 0100 1000 1101 0110
- { }, // d7: 0100 1000 1101 0111
- { }, // d8: 0100 1000 1101 1000
- { }, // d9: 0100 1000 1101 1001
- { }, // da: 0100 1000 1101 1010
- { }, // db: 0100 1000 1101 1011
- { }, // dc: 0100 1000 1101 1100
- { }, // dd: 0100 1000 1101 1101
- { }, // de: 0100 1000 1101 1110
- { }, // df: 0100 1000 1101 1111
+ { }, // d0: 0111 0000 1101 0000
+ {ADCX, "(BC)" }, // d1: 0111 0000 1101 0001
+ {ADCX, "(DE)" }, // d2: 0111 0000 1101 0010
+ {ADCX, "(HL)" }, // d3: 0111 0000 1101 0011
+ {ADCX, "(DE+)" }, // d4: 0111 0000 1101 0100
+ {ADCX, "(HL+)" }, // d5: 0111 0000 1101 0101
+ {ADCX, "(DE-)" }, // d6: 0111 0000 1101 0110
+ {ADCX, "(HL-)" }, // d7: 0111 0000 1101 0111
+ { }, // d8: 0111 0000 1101 1000
+ {OFFAX, "(BC)" }, // d9: 0111 0000 1101 1001
+ {OFFAX, "(DE)" }, // da: 0111 0000 1101 1010
+ {OFFAX, "(HL)" }, // db: 0111 0000 1101 1011
+ {OFFAX, "(DE+)" }, // dc: 0111 0000 1101 1100
+ {OFFAX, "(HL+)" }, // dd: 0111 0000 1101 1101
+ {OFFAX, "(DE-)" }, // de: 0111 0000 1101 1110
+ {OFFAX, "(HL-)" }, // df: 0111 0000 1101 1111
- { }, // e0: 0100 1000 1110 0000
- { }, // e1: 0100 1000 1110 0001
- { }, // e2: 0100 1000 1110 0010
- { }, // e3: 0100 1000 1110 0011
- { }, // e4: 0100 1000 1110 0100
- { }, // e5: 0100 1000 1110 0101
- { }, // e6: 0100 1000 1110 0110
- { }, // e7: 0100 1000 1110 0111
- { }, // e8: 0100 1000 1110 1000
- { }, // e9: 0100 1000 1110 1001
- { }, // ea: 0100 1000 1110 1010
- { }, // eb: 0100 1000 1110 1011
- { }, // ec: 0100 1000 1110 1100
- { }, // ed: 0100 1000 1110 1101
- { }, // ee: 0100 1000 1110 1110
- { }, // ef: 0100 1000 1110 1111
+ { }, // e0: 0111 0000 1110 0000
+ {SUBX, "(BC)" }, // e1: 0111 0000 1110 0001
+ {SUBX, "(DE)" }, // e2: 0111 0000 1110 0010
+ {SUBX, "(HL)" }, // e3: 0111 0000 1110 0011
+ {SUBX, "(DE+)" }, // e4: 0111 0000 1110 0100
+ {SUBX, "(HL+)" }, // e5: 0111 0000 1110 0101
+ {SUBX, "(DE-)" }, // e6: 0111 0000 1110 0110
+ {SUBX, "(HL-)" }, // e7: 0111 0000 1110 0111
+ { }, // e8: 0111 0000 1110 1000
+ {NEAX, "(BC)" }, // e9: 0111 0000 1110 1001
+ {NEAX, "(DE)" }, // ea: 0111 0000 1110 1010
+ {NEAX, "(HL)" }, // eb: 0111 0000 1110 1011
+ {NEAX, "(DE+)" }, // ec: 0111 0000 1110 1100
+ {NEAX, "(HL+)" }, // ed: 0111 0000 1110 1101
+ {NEAX, "(DE-)" }, // ee: 0111 0000 1110 1110
+ {NEAX, "(HL-)" }, // ef: 0111 0000 1110 1111
- { }, // f0: 0100 1000 1111 0000
- { }, // f1: 0100 1000 1111 0001
- { }, // f2: 0100 1000 1111 0010
- { }, // f3: 0100 1000 1111 0011
- { }, // f4: 0100 1000 1111 0100
- { }, // f5: 0100 1000 1111 0101
- { }, // f6: 0100 1000 1111 0110
- { }, // f7: 0100 1000 1111 0111
- { }, // f8: 0100 1000 1111 1000
- { }, // f9: 0100 1000 1111 1001
- { }, // fa: 0100 1000 1111 1010
- { }, // fb: 0100 1000 1111 1011
- { }, // fc: 0100 1000 1111 1100
- { }, // fd: 0100 1000 1111 1101
- { }, // fe: 0100 1000 1111 1110
- { } // ff: 0100 1000 1111 1111
+ { }, // f0: 0111 0000 1111 0000
+ {SBBX, "(BC)" }, // f1: 0111 0000 1111 0001
+ {SBBX, "(DE)" }, // f2: 0111 0000 1111 0010
+ {SBBX, "(HL)" }, // f3: 0111 0000 1111 0011
+ {SBBX, "(DE+)" }, // f4: 0111 0000 1111 0100
+ {SBBX, "(HL+)" }, // f5: 0111 0000 1111 0101
+ {SBBX, "(DE-)" }, // f6: 0111 0000 1111 0110
+ {SBBX, "(HL-)" }, // f7: 0111 0000 1111 0111
+ { }, // f8: 0111 0000 1111 1000
+ {EQAX, "(BC)" }, // f9: 0111 0000 1111 1001
+ {EQAX, "(DE)" }, // fa: 0111 0000 1111 1010
+ {EQAX, "(HL)" }, // fb: 0111 0000 1111 1011
+ {EQAX, "(DE+)" }, // fc: 0111 0000 1111 1100
+ {EQAX, "(HL+)" }, // fd: 0111 0000 1111 1101
+ {EQAX, "(DE-)" }, // fe: 0111 0000 1111 1110
+ {EQAX, "(HL-)" } // ff: 0111 0000 1111 1111
+};
+
+// prefix 74
+const upd7810_base_disassembler::dasm_s upd7810_base_disassembler::d74[256] =
+{
+ { }, // 00: 0111 0100 0000 0000
+ { }, // 01: 0111 0100 0000 0001
+ { }, // 02: 0111 0100 0000 0010
+ { }, // 03: 0111 0100 0000 0011
+ { }, // 04: 0111 0100 0000 0100
+ { }, // 05: 0111 0100 0000 0101
+ { }, // 06: 0111 0100 0000 0110
+ { }, // 07: 0111 0100 0000 0111
+ {ANI, "V,%b" }, // 08: 0111 0100 0000 1000 xxxx xxxx
+ {ANI, "A,%b" }, // 09: 0111 0100 0000 1001 xxxx xxxx
+ {ANI, "B,%b" }, // 0a: 0111 0100 0000 1010 xxxx xxxx
+ {ANI, "C,%b" }, // 0b: 0111 0100 0000 1011 xxxx xxxx
+ {ANI, "D,%b" }, // 0c: 0111 0100 0000 1100 xxxx xxxx
+ {ANI, "E,%b" }, // 0d: 0111 0100 0000 1101 xxxx xxxx
+ {ANI, "H,%b" }, // 0e: 0111 0100 0000 1110 xxxx xxxx
+ {ANI, "L,%b" }, // 0f: 0111 0100 0000 1111 xxxx xxxx
+
+ {XRI, "V,%b" }, // 10: 0111 0100 0001 0000 xxxx xxxx
+ {XRI, "A,%b" }, // 11: 0111 0100 0001 0001 xxxx xxxx
+ {XRI, "B,%b" }, // 12: 0111 0100 0001 0010 xxxx xxxx
+ {XRI, "C,%b" }, // 13: 0111 0100 0001 0011 xxxx xxxx
+ {XRI, "D,%b" }, // 14: 0111 0100 0001 0100 xxxx xxxx
+ {XRI, "E,%b" }, // 15: 0111 0100 0001 0101 xxxx xxxx
+ {XRI, "H,%b" }, // 16: 0111 0100 0001 0110 xxxx xxxx
+ {XRI, "L,%b" }, // 17: 0111 0100 0001 0111 xxxx xxxx
+ {ORI, "V,%b" }, // 18: 0111 0100 0001 1000 xxxx xxxx
+ {ORI, "A,%b" }, // 19: 0111 0100 0001 1001 xxxx xxxx
+ {ORI, "B,%b" }, // 1a: 0111 0100 0001 1010 xxxx xxxx
+ {ORI, "C,%b" }, // 1b: 0111 0100 0001 1011 xxxx xxxx
+ {ORI, "D,%b" }, // 1c: 0111 0100 0001 1100 xxxx xxxx
+ {ORI, "E,%b" }, // 1d: 0111 0100 0001 1101 xxxx xxxx
+ {ORI, "H,%b" }, // 1e: 0111 0100 0001 1110 xxxx xxxx
+ {ORI, "L,%b" }, // 1f: 0111 0100 0001 1111 xxxx xxxx
+
+ {ADINC, "V,%b" }, // 20: 0111 0100 0010 0000 xxxx xxxx
+ {ADINC, "A,%b" }, // 21: 0111 0100 0010 0001 xxxx xxxx
+ {ADINC, "B,%b" }, // 22: 0111 0100 0010 0010 xxxx xxxx
+ {ADINC, "C,%b" }, // 23: 0111 0100 0010 0011 xxxx xxxx
+ {ADINC, "D,%b" }, // 24: 0111 0100 0010 0100 xxxx xxxx
+ {ADINC, "E,%b" }, // 25: 0111 0100 0010 0101 xxxx xxxx
+ {ADINC, "H,%b" }, // 26: 0111 0100 0010 0110 xxxx xxxx
+ {ADINC, "L,%b" }, // 27: 0111 0100 0010 0111 xxxx xxxx
+ {GTI, "V,%b" }, // 28: 0111 0100 0010 1000 xxxx xxxx
+ {GTI, "A,%b" }, // 29: 0111 0100 0010 1001 xxxx xxxx
+ {GTI, "B,%b" }, // 2a: 0111 0100 0010 1010 xxxx xxxx
+ {GTI, "C,%b" }, // 2b: 0111 0100 0010 1011 xxxx xxxx
+ {GTI, "D,%b" }, // 2c: 0111 0100 0010 1100 xxxx xxxx
+ {GTI, "E,%b" }, // 2d: 0111 0100 0010 1101 xxxx xxxx
+ {GTI, "H,%b" }, // 2e: 0111 0100 0010 1110 xxxx xxxx
+ {GTI, "L,%b" }, // 2f: 0111 0100 0010 1111 xxxx xxxx
+
+ {SUINB, "V,%b" }, // 30: 0111 0100 0011 0000 xxxx xxxx
+ {SUINB, "A,%b" }, // 31: 0111 0100 0011 0001 xxxx xxxx
+ {SUINB, "B,%b" }, // 32: 0111 0100 0011 0010 xxxx xxxx
+ {SUINB, "C,%b" }, // 33: 0111 0100 0011 0011 xxxx xxxx
+ {SUINB, "D,%b" }, // 34: 0111 0100 0011 0100 xxxx xxxx
+ {SUINB, "E,%b" }, // 35: 0111 0100 0011 0101 xxxx xxxx
+ {SUINB, "H,%b" }, // 36: 0111 0100 0011 0110 xxxx xxxx
+ {SUINB, "L,%b" }, // 37: 0111 0100 0011 0111 xxxx xxxx
+ {LTI, "V,%b" }, // 37: 0111 0100 0011 1000 xxxx xxxx
+ {LTI, "A,%b" }, // 39: 0111 0100 0011 1001 xxxx xxxx
+ {LTI, "B,%b" }, // 3a: 0111 0100 0011 1010 xxxx xxxx
+ {LTI, "C,%b" }, // 3b: 0111 0100 0011 1011 xxxx xxxx
+ {LTI, "D,%b" }, // 3c: 0111 0100 0011 1100 xxxx xxxx
+ {LTI, "E,%b" }, // 3d: 0111 0100 0011 1101 xxxx xxxx
+ {LTI, "H,%b" }, // 3e: 0111 0100 0011 1110 xxxx xxxx
+ {LTI, "L,%b" }, // 3f: 0111 0100 0011 1111 xxxx xxxx
+
+ {ADI, "V,%b" }, // 40: 0111 0100 0100 0000 xxxx xxxx
+ {ADI, "A,%b" }, // 41: 0111 0100 0100 0001 xxxx xxxx
+ {ADI, "B,%b" }, // 42: 0111 0100 0100 0010 xxxx xxxx
+ {ADI, "C,%b" }, // 43: 0111 0100 0100 0011 xxxx xxxx
+ {ADI, "D,%b" }, // 44: 0111 0100 0100 0100 xxxx xxxx
+ {ADI, "E,%b" }, // 45: 0111 0100 0100 0101 xxxx xxxx
+ {ADI, "H,%b" }, // 46: 0111 0100 0100 0110 xxxx xxxx
+ {ADI, "L,%b" }, // 47: 0111 0100 0100 0111 xxxx xxxx
+ {ONI, "V,%b" }, // 48: 0111 0100 0100 1000 xxxx xxxx
+ {ONI, "A,%b" }, // 49: 0111 0100 0100 1001 xxxx xxxx
+ {ONI, "B,%b" }, // 4a: 0111 0100 0100 1010 xxxx xxxx
+ {ONI, "C,%b" }, // 4b: 0111 0100 0100 1011 xxxx xxxx
+ {ONI, "D,%b" }, // 4c: 0111 0100 0100 1100 xxxx xxxx
+ {ONI, "E,%b" }, // 4d: 0111 0100 0100 1101 xxxx xxxx
+ {ONI, "H,%b" }, // 4e: 0111 0100 0100 1110 xxxx xxxx
+ {ONI, "L,%b" }, // 4f: 0111 0100 0100 1111 xxxx xxxx
+
+ {ACI, "V,%b" }, // 50: 0111 0100 0101 0000 xxxx xxxx
+ {ACI, "A,%b" }, // 51: 0111 0100 0101 0001 xxxx xxxx
+ {ACI, "B,%b" }, // 52: 0111 0100 0101 0010 xxxx xxxx
+ {ACI, "C,%b" }, // 53: 0111 0100 0101 0011 xxxx xxxx
+ {ACI, "D,%b" }, // 54: 0111 0100 0101 0100 xxxx xxxx
+ {ACI, "E,%b" }, // 55: 0111 0100 0101 0101 xxxx xxxx
+ {ACI, "H,%b" }, // 56: 0111 0100 0101 0110 xxxx xxxx
+ {ACI, "L,%b" }, // 57: 0111 0100 0101 0111 xxxx xxxx
+ {OFFI, "V,%b" }, // 58: 0111 0100 0101 1000 xxxx xxxx
+ {OFFI, "A,%b" }, // 59: 0111 0100 0101 1001 xxxx xxxx
+ {OFFI, "B,%b" }, // 5a: 0111 0100 0101 1010 xxxx xxxx
+ {OFFI, "C,%b" }, // 5b: 0111 0100 0101 1011 xxxx xxxx
+ {OFFI, "D,%b" }, // 5c: 0111 0100 0101 1100 xxxx xxxx
+ {OFFI, "E,%b" }, // 5d: 0111 0100 0101 1101 xxxx xxxx
+ {OFFI, "H,%b" }, // 5e: 0111 0100 0101 1110 xxxx xxxx
+ {OFFI, "L,%b" }, // 5f: 0111 0100 0101 1111 xxxx xxxx
+
+ {SUI, "V,%b" }, // 60: 0111 0100 0110 0000 xxxx xxxx
+ {SUI, "A,%b" }, // 61: 0111 0100 0110 0001 xxxx xxxx
+ {SUI, "B,%b" }, // 62: 0111 0100 0110 0010 xxxx xxxx
+ {SUI, "C,%b" }, // 63: 0111 0100 0110 0011 xxxx xxxx
+ {SUI, "D,%b" }, // 64: 0111 0100 0110 0100 xxxx xxxx
+ {SUI, "E,%b" }, // 65: 0111 0100 0110 0101 xxxx xxxx
+ {SUI, "H,%b" }, // 66: 0111 0100 0110 0110 xxxx xxxx
+ {SUI, "L,%b" }, // 67: 0111 0100 0110 0111 xxxx xxxx
+ {NEI, "V,%b" }, // 68: 0111 0100 0110 1000 xxxx xxxx
+ {NEI, "A,%b" }, // 69: 0111 0100 0110 1001 xxxx xxxx
+ {NEI, "B,%b" }, // 6a: 0111 0100 0110 1010 xxxx xxxx
+ {NEI, "C,%b" }, // 6b: 0111 0100 0110 1011 xxxx xxxx
+ {NEI, "D,%b" }, // 6c: 0111 0100 0110 1100 xxxx xxxx
+ {NEI, "E,%b" }, // 6d: 0111 0100 0110 1101 xxxx xxxx
+ {NEI, "H,%b" }, // 6e: 0111 0100 0110 1110 xxxx xxxx
+ {NEI, "L,%b" }, // 6f: 0111 0100 0110 1111 xxxx xxxx
+
+ {SBI, "V,%b" }, // 70: 0111 0100 0111 0000 xxxx xxxx
+ {SBI, "A,%b" }, // 71: 0111 0100 0111 0001 xxxx xxxx
+ {SBI, "B,%b" }, // 72: 0111 0100 0111 0010 xxxx xxxx
+ {SBI, "C,%b" }, // 73: 0111 0100 0111 0011 xxxx xxxx
+ {SBI, "D,%b" }, // 74: 0111 0100 0111 0100 xxxx xxxx
+ {SBI, "E,%b" }, // 75: 0111 0100 0111 0101 xxxx xxxx
+ {SBI, "H,%b" }, // 76: 0111 0100 0111 0110 xxxx xxxx
+ {SBI, "L,%b" }, // 77: 0111 0100 0111 0111 xxxx xxxx
+ {EQI, "V,%b" }, // 78: 0111 0100 0111 1000 xxxx xxxx
+ {EQI, "A,%b" }, // 79: 0111 0100 0111 1001 xxxx xxxx
+ {EQI, "B,%b" }, // 7a: 0111 0100 0111 1010 xxxx xxxx
+ {EQI, "C,%b" }, // 7b: 0111 0100 0111 1011 xxxx xxxx
+ {EQI, "D,%b" }, // 7c: 0111 0100 0111 1100 xxxx xxxx
+ {EQI, "E,%b" }, // 7d: 0111 0100 0111 1101 xxxx xxxx
+ {EQI, "H,%b" }, // 7e: 0111 0100 0111 1110 xxxx xxxx
+ {EQI, "L,%b" }, // 7f: 0111 0100 0111 1111 xxxx xxxx
+
+ { }, // 80: 0111 0100 1000 0000
+ { }, // 81: 0111 0100 1000 0001
+ { }, // 82: 0111 0100 1000 0010
+ { }, // 83: 0111 0100 1000 0011
+ { }, // 84: 0111 0100 1000 0100
+ { }, // 85: 0111 0100 1000 0101
+ { }, // 86: 0111 0100 1000 0110
+ { }, // 87: 0111 0100 1000 0111
+ {ANAW, "%a" }, // 88: 0111 0100 1000 1000 oooo oooo
+ { }, // 89: 0111 0100 1000 1001
+ { }, // 8a: 0111 0100 1000 1010
+ { }, // 8b: 0111 0100 1000 1011
+ { }, // 8c: 0111 0100 1000 1100
+ {DAN, "EA,BC" }, // 8d: 0111 0100 1000 1101
+ {DAN, "EA,DE" }, // 8e: 0111 0100 1000 1110
+ {DAN, "EA,HL" }, // 8f: 0111 0100 1000 1111
+
+ {XRAW, "%a" }, // 90: 0111 0100 1001 0000 oooo oooo
+ { }, // 91: 0111 0100 1001 0001
+ { }, // 92: 0111 0100 1001 0010
+ { }, // 93: 0111 0100 1001 0011
+ { }, // 94: 0111 0100 1001 0100
+ {DXR, "EA,BC" }, // 95: 0111 0100 1001 0101
+ {DXR, "EA,DE" }, // 96: 0111 0100 1001 0110
+ {DXR, "EA,HL" }, // 97: 0111 0100 1001 0111
+ {ORAW, "%a" }, // 98: 0111 0100 1001 1000 oooo oooo
+ { }, // 99: 0111 0100 1001 1001
+ { }, // 9a: 0111 0100 1001 1010
+ { }, // 9b: 0111 0100 1001 1011
+ { }, // 9c: 0111 0100 1001 1100
+ {DOR, "EA,BC" }, // 9d: 0111 0100 1001 1101
+ {DOR, "EA,DE" }, // 9e: 0111 0100 1001 1110
+ {DOR, "EA,HL" }, // 9f: 0111 0100 1001 1111
+
+ {ADDNCW, "%a" }, // a0: 0111 0100 1010 0000 oooo oooo
+ { }, // a1: 0111 0100 1010 0001
+ { }, // a2: 0111 0100 1010 0010
+ { }, // a3: 0111 0100 1010 0011
+ { }, // a4: 0111 0100 1010 0100
+ {DADDNC, "EA,BC" }, // a5: 0111 0100 1010 0101
+ {DADDNC, "EA,DE" }, // a6: 0111 0100 1010 0110
+ {DADDNC, "EA,HL" }, // a7: 0111 0100 1010 0111
+ {GTAW, "%a" }, // a8: 0111 0100 1010 1000 oooo oooo
+ { }, // a9: 0111 0100 1010 1001
+ { }, // aa: 0111 0100 1010 1010
+ { }, // ab: 0111 0100 1010 1011
+ { }, // ac: 0111 0100 1010 1100
+ {DGT, "EA,BC" }, // ad: 0111 0100 1010 1101
+ {DGT, "EA,DE" }, // ae: 0111 0100 1010 1110
+ {DGT, "EA,HL" }, // af: 0111 0100 1010 1111
+
+ {SUBNBW, "%a" }, // b0: 0111 0100 1011 0000 oooo oooo
+ { }, // b1: 0111 0100 1011 0001
+ { }, // b2: 0111 0100 1011 0010
+ { }, // b3: 0111 0100 1011 0011
+ { }, // b4: 0111 0100 1011 0100
+ {DSUBNB, "EA,BC" }, // b5: 0111 0100 1011 0101
+ {DSUBNB, "EA,DE" }, // b6: 0111 0100 1011 0110
+ {DSUBNB, "EA,HL" }, // b7: 0111 0100 1011 0111
+ {LTAW, "%a" }, // b8: 0111 0100 1011 1000 oooo oooo
+ { }, // b9: 0111 0100 1011 1001
+ { }, // ba: 0111 0100 1011 1010
+ { }, // bb: 0111 0100 1011 1011
+ { }, // bc: 0111 0100 1011 1100
+ {DLT, "EA,BC" }, // bd: 0111 0100 1011 1101
+ {DLT, "EA,DE" }, // be: 0111 0100 1011 1110
+ {DLT, "EA,HL" }, // bf: 0111 0100 1011 1111
+
+ {ADDW, "%a" }, // c0: 0111 0100 1100 0000 oooo oooo
+ { }, // c1: 0111 0100 1100 0001
+ { }, // c2: 0111 0100 1100 0010
+ { }, // c3: 0111 0100 1100 0011
+ { }, // c4: 0111 0100 1100 0100
+ {DADD, "EA,BC" }, // c5: 0111 0100 1100 0101
+ {DADD, "EA,DE" }, // c6: 0111 0100 1100 0110
+ {DADD, "EA,HL" }, // c7: 0111 0100 1100 0111
+ {ONAW, "%a" }, // c8: 0111 0100 1100 1000 oooo oooo
+ { }, // c9: 0111 0100 1100 1001
+ { }, // ca: 0111 0100 1100 1010
+ { }, // cb: 0111 0100 1100 1011
+ { }, // cc: 0111 0100 1100 1100
+ {DON, "EA,BC" }, // cd: 0111 0100 1100 1101
+ {DON, "EA,DE" }, // ce: 0111 0100 1100 1110
+ {DON, "EA,HL" }, // cf: 0111 0100 1100 1111
+
+ {ADCW, "%a" }, // d0: 0111 0100 1101 0000 oooo oooo
+ { }, // d1: 0111 0100 1101 0001
+ { }, // d2: 0111 0100 1101 0010
+ { }, // d3: 0111 0100 1101 0011
+ { }, // d4: 0111 0100 1101 0100
+ {DADC, "EA,BC" }, // d5: 0111 0100 1101 0101
+ {DADC, "EA,DE" }, // d6: 0111 0100 1101 0110
+ {DADC, "EA,HL" }, // d7: 0111 0100 1101 0111
+ {OFFAW, "%a" }, // d8: 0111 0100 1101 1000 oooo oooo
+ { }, // d9: 0111 0100 1101 1001
+ { }, // da: 0111 0100 1101 1010
+ { }, // db: 0111 0100 1101 1011
+ { }, // dc: 0111 0100 1101 1100
+ {DOFF, "EA,BC" }, // dd: 0111 0100 1101 1101
+ {DOFF, "EA,DE" }, // de: 0111 0100 1101 1110
+ {DOFF, "EA,HL" }, // df: 0111 0100 1101 1111
+
+ {SUBW, "%a" }, // e0: 0111 0100 1110 0000 oooo oooo
+ { }, // e1: 0111 0100 1110 0001
+ { }, // e2: 0111 0100 1110 0010
+ { }, // e3: 0111 0100 1110 0011
+ { }, // e4: 0111 0100 1110 0100
+ {DSUB, "EA,BC" }, // e5: 0111 0100 1110 0101
+ {DSUB, "EA,DE" }, // e6: 0111 0100 1110 0110
+ {DSUB, "EA,HL" }, // e7: 0111 0100 1110 0111
+ {NEAW, "%a" }, // e8: 0111 0100 1110 1000 oooo oooo
+ { }, // e9: 0111 0100 1110 1001
+ { }, // ea: 0111 0100 1110 1010
+ { }, // eb: 0111 0100 1110 1011
+ { }, // ec: 0111 0100 1110 1100
+ {DNE, "EA,BC" }, // ed: 0111 0100 1110 1101
+ {DNE, "EA,DE" }, // ee: 0111 0100 1110 1110
+ {DNE, "EA,HL" }, // ef: 0111 0100 1110 1111
+
+ {SBBW, "%a" }, // f0: 0111 0100 1111 0000 oooo oooo
+ { }, // f1: 0111 0100 1111 0001
+ { }, // f2: 0111 0100 1111 0010
+ { }, // f3: 0111 0100 1111 0011
+ { }, // f4: 0111 0100 1111 0100
+ {DSBB, "EA,BC" }, // f5: 0111 0100 1111 0101
+ {DSBB, "EA,DE" }, // f6: 0111 0100 1111 0110
+ {DSBB, "EA,HL" }, // f7: 0111 0100 1111 0111
+ {EQAW, "%a" }, // f8: 0111 0100 1111 1000 oooo oooo
+ { }, // f9: 0111 0100 1111 1001
+ { }, // fa: 0111 0100 1111 1010
+ { }, // fb: 0111 0100 1111 1011
+ { }, // fc: 0111 0100 1111 1100
+ {DEQ, "EA,BC" }, // fd: 0111 0100 1111 1101
+ {DEQ, "EA,DE" }, // fe: 0111 0100 1111 1110
+ {DEQ, "EA,HL" } // ff: 0111 0100 1111 1111
};
-const dasm_s dasm_s::d48_7807[256] =
+// prefix 48
+const upd7810_base_disassembler::dasm_s upd7810_disassembler::d48_7810[256] =
{
{ }, // 00: 0100 1000 0000 0000
{SLRC, "A" }, // 01: 0100 1000 0000 0001
@@ -753,7 +1108,7 @@ const dasm_s dasm_s::d48_7807[256] =
{SLL, "B" }, // 26: 0100 1000 0010 0110
{SLL, "C" }, // 27: 0100 1000 0010 0111
{JEA, nullptr }, // 28: 0100 1000 0010 1000
- {CALB, nullptr }, // 29: 0100 1000 0010 1001
+ {CALB,nullptr }, // 29: 0100 1000 0010 1001
{CLC, nullptr }, // 2a: 0100 1000 0010 1010
{STC, nullptr }, // 2b: 0100 1000 0010 1011
{ }, // 2c: 0100 1000 0010 1100
@@ -874,11 +1229,11 @@ const dasm_s dasm_s::d48_7807[256] =
{ }, // 98: 0100 1000 1000 1000
{ }, // 99: 0100 1000 1000 1001
{ }, // 9a: 0100 1000 1000 1010
- {STEAX, "(DE+%b)" }, // 9b: 0100 1000 1000 1011 xxxx xxxx
- {STEAX, "(HL+A)" }, // 9c: 0100 1000 1000 1100
- {STEAX, "(HL+B)" }, // 9d: 0100 1000 1000 1101
- {STEAX, "(HL+EA)" }, // 9e: 0100 1000 1000 1110
- {STEAX, "(HL+%b)" }, // 9f: 0100 1000 1000 1111 xxxx xxxx
+ {STEAX, "(DE+%b)" }, // 9b: 0100 1000 1000 1011 xxxx xxxx
+ {STEAX, "(HL+A)" }, // 9c: 0100 1000 1000 1100
+ {STEAX, "(HL+B)" }, // 9d: 0100 1000 1000 1101
+ {STEAX, "(HL+EA)" }, // 9e: 0100 1000 1000 1110
+ {STEAX, "(HL+%b)" }, // 9f: 0100 1000 1000 1111 xxxx xxxx
{DSLR, "EA" }, // a0: 0100 1000 1010 0000
{ }, // a1: 0100 1000 1010 0001
@@ -890,12 +1245,12 @@ const dasm_s dasm_s::d48_7807[256] =
{ }, // a7: 0100 1000 1010 0111
{TABLE, nullptr }, // a8: 0100 1000 1010 1000
{ }, // a9: 0100 1000 1010 1001
- {CMC, nullptr }, // aa: 0100 1000 1010 1010 7807
+ { }, // aa: 0100 1000 1010 1010
{ }, // ab: 0100 1000 1010 1011
- {EXA, nullptr }, // ac: 0100 1000 1010 1100 7807
- {EXR, nullptr }, // ad: 0100 1000 1010 1101 7807
- {EXH, nullptr }, // ae: 0100 1000 1010 1110 7807
- {EXX, nullptr }, // af: 0100 1000 1010 1111 7807
+ { }, // ac: 0100 1000 1010 1100
+ { }, // ad: 0100 1000 1010 1101
+ { }, // ae: 0100 1000 1010 1110
+ { }, // af: 0100 1000 1010 1111
{DRLR, "EA" }, // b0: 0100 1000 1011 0000
{ }, // b1: 0100 1000 1011 0001
@@ -908,15 +1263,15 @@ const dasm_s dasm_s::d48_7807[256] =
{ }, // b8: 0100 1000 1011 1000
{ }, // b9: 0100 1000 1011 1001
{ }, // ba: 0100 1000 1011 1010
- { }, // bb: 0100 1000 1011 1011
+ {STOP, nullptr }, // bb: 0100 1000 1011 1011 7810
{ }, // bc: 0100 1000 1011 1100
{ }, // bd: 0100 1000 1011 1101
{ }, // be: 0100 1000 1011 1110
{ }, // bf: 0100 1000 1011 1111
{DMOV, "EA,ECNT" }, // c0: 0100 1000 1100 0000
- {DMOV, "EA,ECPT0"}, // c1: 0100 1000 1100 0001 7807
- {DMOV, "EA,ECPT1"}, // c2: 0100 1000 1100 0010 7807
+ {DMOV, "EA,ECPT" }, // c1: 0100 1000 1100 0001 7810
+ { }, // c2: 0100 1000 1100 0010
{ }, // c3: 0100 1000 1100 0011
{ }, // c4: 0100 1000 1100 0100
{ }, // c5: 0100 1000 1100 0101
@@ -984,7 +1339,7 @@ const dasm_s dasm_s::d48_7807[256] =
};
// prefix 4C
-const dasm_s dasm_s::d4C_7810[256] =
+const upd7810_base_disassembler::dasm_s upd7810_disassembler::d4C_7810[256] =
{
{ }, // 00: 0100 1100 0000 0000
{ }, // 01: 0100 1100 0000 0001
@@ -1259,283 +1614,9 @@ const dasm_s dasm_s::d4C_7810[256] =
{ } // ff: 0100 1100 1111 1111
};
-const dasm_s dasm_s::d4C_7807[256] =
-{
- { }, // 00: 0100 1100 0000 0000
- { }, // 01: 0100 1100 0000 0001
- { }, // 02: 0100 1100 0000 0010
- { }, // 03: 0100 1100 0000 0011
- { }, // 04: 0100 1100 0000 0100
- { }, // 05: 0100 1100 0000 0101
- { }, // 06: 0100 1100 0000 0110
- { }, // 07: 0100 1100 0000 0111
- { }, // 08: 0100 1100 0000 1000
- { }, // 09: 0100 1100 0000 1001
- { }, // 0a: 0100 1100 0000 1010
- { }, // 0b: 0100 1100 0000 1011
- { }, // 0c: 0100 1100 0000 1100
- { }, // 0d: 0100 1100 0000 1101
- { }, // 0e: 0100 1100 0000 1110
- { }, // 0f: 0100 1100 0000 1111
-
- { }, // 10: 0100 1100 0001 0000
- { }, // 11: 0100 1100 0001 0001
- { }, // 12: 0100 1100 0001 0010
- { }, // 13: 0100 1100 0001 0011
- { }, // 14: 0100 1100 0001 0100
- { }, // 15: 0100 1100 0001 0101
- { }, // 16: 0100 1100 0001 0110
- { }, // 17: 0100 1100 0001 0111
- { }, // 18: 0100 1100 0001 1000
- { }, // 19: 0100 1100 0001 1001
- { }, // 1a: 0100 1100 0001 1010
- { }, // 1b: 0100 1100 0001 1011
- { }, // 1c: 0100 1100 0001 1100
- { }, // 1d: 0100 1100 0001 1101
- { }, // 1e: 0100 1100 0001 1110
- { }, // 1f: 0100 1100 0001 1111
-
- { }, // 20: 0100 1100 0010 0000
- { }, // 21: 0100 1100 0010 0001
- { }, // 22: 0100 1100 0010 0010
- { }, // 23: 0100 1100 0010 0011
- { }, // 24: 0100 1100 0010 0100
- { }, // 25: 0100 1100 0010 0101
- { }, // 26: 0100 1100 0010 0110
- { }, // 27: 0100 1100 0010 0111
- { }, // 28: 0100 1100 0010 1000
- { }, // 29: 0100 1100 0010 1001
- { }, // 2a: 0100 1100 0010 1010
- { }, // 2b: 0100 1100 0010 1011
- { }, // 2c: 0100 1100 0010 1100
- { }, // 2d: 0100 1100 0010 1101
- { }, // 2e: 0100 1100 0010 1110
- { }, // 2f: 0100 1100 0010 1111
-
- { }, // 30: 0100 1100 0011 0000
- { }, // 31: 0100 1100 0011 0001
- { }, // 32: 0100 1100 0011 0010
- { }, // 33: 0100 1100 0011 0011
- { }, // 34: 0100 1100 0011 0100
- { }, // 35: 0100 1100 0011 0101
- { }, // 36: 0100 1100 0011 0110
- { }, // 37: 0100 1100 0011 0111
- { }, // 38: 0100 1100 0011 1000
- { }, // 39: 0100 1100 0011 1001
- { }, // 3a: 0100 1100 0011 1010
- { }, // 3b: 0100 1100 0011 1011
- { }, // 3c: 0100 1100 0011 1100
- { }, // 3d: 0100 1100 0011 1101
- { }, // 3e: 0100 1100 0011 1110
- { }, // 3f: 0100 1100 0011 1111
-
- { }, // 40: 0100 1100 0100 0000
- { }, // 41: 0100 1100 0100 0001
- { }, // 42: 0100 1100 0100 0010
- { }, // 43: 0100 1100 0100 0011
- { }, // 44: 0100 1100 0100 0100
- { }, // 45: 0100 1100 0100 0101
- { }, // 46: 0100 1100 0100 0110
- { }, // 47: 0100 1100 0100 0111
- { }, // 48: 0100 1100 0100 1000
- { }, // 49: 0100 1100 0100 1001
- { }, // 4a: 0100 1100 0100 1010
- { }, // 4b: 0100 1100 0100 1011
- { }, // 4c: 0100 1100 0100 1100
- { }, // 4d: 0100 1100 0100 1101
- { }, // 4e: 0100 1100 0100 1110
- { }, // 4f: 0100 1100 0100 1111
-
- { }, // 50: 0100 1100 0101 0000
- { }, // 51: 0100 1100 0101 0001
- { }, // 52: 0100 1100 0101 0010
- { }, // 53: 0100 1100 0101 0011
- { }, // 54: 0100 1100 0101 0100
- { }, // 55: 0100 1100 0101 0101
- { }, // 56: 0100 1100 0101 0110
- { }, // 57: 0100 1100 0101 0111
- { }, // 58: 0100 1100 0101 1000
- { }, // 59: 0100 1100 0101 1001
- { }, // 5a: 0100 1100 0101 1010
- { }, // 5b: 0100 1100 0101 1011
- { }, // 5c: 0100 1100 0101 1100
- { }, // 5d: 0100 1100 0101 1101
- { }, // 5e: 0100 1100 0101 1110
- { }, // 5f: 0100 1100 0101 1111
-
- { }, // 60: 0100 1100 0110 0000
- { }, // 61: 0100 1100 0110 0001
- { }, // 62: 0100 1100 0110 0010
- { }, // 63: 0100 1100 0110 0011
- { }, // 64: 0100 1100 0110 0100
- { }, // 65: 0100 1100 0110 0101
- { }, // 66: 0100 1100 0110 0110
- { }, // 67: 0100 1100 0110 0111
- { }, // 68: 0100 1100 0110 1000
- { }, // 69: 0100 1100 0110 1001
- { }, // 6a: 0100 1100 0110 1010
- { }, // 6b: 0100 1100 0110 1011
- { }, // 6c: 0100 1100 0110 1100
- { }, // 6d: 0100 1100 0110 1101
- { }, // 6e: 0100 1100 0110 1110
- { }, // 6f: 0100 1100 0110 1111
-
- { }, // 70: 0100 1100 0111 0000
- { }, // 71: 0100 1100 0111 0001
- { }, // 72: 0100 1100 0111 0010
- { }, // 73: 0100 1100 0111 0011
- { }, // 74: 0100 1100 0111 0100
- { }, // 75: 0100 1100 0111 0101
- { }, // 76: 0100 1100 0111 0110
- { }, // 77: 0100 1100 0111 0111
- { }, // 78: 0100 1100 0111 1000
- { }, // 79: 0100 1100 0111 1001
- { }, // 7a: 0100 1100 0111 1010
- { }, // 7b: 0100 1100 0111 1011
- { }, // 7c: 0100 1100 0111 1100
- { }, // 7d: 0100 1100 0111 1101
- { }, // 7e: 0100 1100 0111 1110
- { }, // 7f: 0100 1100 0111 1111
-
- { }, // 80: 0100 1100 1000 0000
- { }, // 81: 0100 1100 1000 0001
- { }, // 82: 0100 1100 1000 0010
- { }, // 83: 0100 1100 1000 0011
- { }, // 84: 0100 1100 1000 0100
- { }, // 85: 0100 1100 1000 0101
- { }, // 86: 0100 1100 1000 0110
- { }, // 87: 0100 1100 1000 0111
- { }, // 88: 0100 1100 1000 1000
- { }, // 89: 0100 1100 1000 1001
- { }, // 8a: 0100 1100 1000 1010
- { }, // 8b: 0100 1100 1000 1011
- { }, // 8c: 0100 1100 1000 1100
- { }, // 8d: 0100 1100 1000 1101
- { }, // 8e: 0100 1100 1000 1110
- { }, // 8f: 0100 1100 1000 1111
-
- { }, // 90: 0100 1100 1001 0000
- { }, // 91: 0100 1100 1001 0001
- { }, // 92: 0100 1100 1001 0010
- { }, // 93: 0100 1100 1001 0011
- { }, // 94: 0100 1100 1001 0100
- { }, // 95: 0100 1100 1001 0101
- { }, // 96: 0100 1100 1001 0110
- { }, // 97: 0100 1100 1001 0111
- { }, // 98: 0100 1100 1001 1000
- { }, // 99: 0100 1100 1001 1001
- { }, // 9a: 0100 1100 1001 1010
- { }, // 9b: 0100 1100 1001 1011
- { }, // 9c: 0100 1100 1001 1100
- { }, // 9d: 0100 1100 1001 1101
- { }, // 9e: 0100 1100 1001 1110
- { }, // 9f: 0100 1100 1001 1111
-
- { }, // a0: 0100 1100 1010 0000
- { }, // a1: 0100 1100 1010 0001
- { }, // a2: 0100 1100 1010 0010
- { }, // a3: 0100 1100 1010 0011
- { }, // a4: 0100 1100 1010 0100
- { }, // a5: 0100 1100 1010 0101
- { }, // a6: 0100 1100 1010 0110
- { }, // a7: 0100 1100 1010 0111
- { }, // a8: 0100 1100 1010 1000
- { }, // a9: 0100 1100 1010 1001
- { }, // aa: 0100 1100 1010 1010
- { }, // ab: 0100 1100 1010 1011
- { }, // ac: 0100 1100 1010 1100
- { }, // ad: 0100 1100 1010 1101
- { }, // ae: 0100 1100 1010 1110
- { }, // af: 0100 1100 1010 1111
-
- { }, // b0: 0100 1100 1011 0000
- { }, // b1: 0100 1100 1011 0001
- { }, // b2: 0100 1100 1011 0010
- { }, // b3: 0100 1100 1011 0011
- { }, // b4: 0100 1100 1011 0100
- { }, // b5: 0100 1100 1011 0101
- { }, // b6: 0100 1100 1011 0110
- { }, // b7: 0100 1100 1011 0111
- { }, // b8: 0100 1100 1011 1000
- { }, // b9: 0100 1100 1011 1001
- { }, // ba: 0100 1100 1011 1010
- { }, // bb: 0100 1100 1011 1011
- { }, // bc: 0100 1100 1011 1100
- { }, // bd: 0100 1100 1011 1101
- { }, // be: 0100 1100 1011 1110
- { }, // bf: 0100 1100 1011 1111
-
- {MOV, "A,PA" }, // c0: 0100 1100 1100 0000
- {MOV, "A,PB" }, // c1: 0100 1100 1100 0001
- {MOV, "A,PC" }, // c2: 0100 1100 1100 0010
- {MOV, "A,PD" }, // c3: 0100 1100 1100 0011
- { }, // c4: 0100 1100 1100 0100
- {MOV, "A,PF" }, // c5: 0100 1100 1100 0101
- {MOV, "A,MKH" }, // c6: 0100 1100 1100 0110
- {MOV, "A,MKL" }, // c7: 0100 1100 1100 0111
- { }, // c8: 0100 1100 1100 1000
- {MOV, "A,SMH" }, // c9: 0100 1100 1100 1001
- { }, // ca: 0100 1100 1100 1010
- {MOV, "A,EOM" }, // cb: 0100 1100 1100 1011
- { }, // cc: 0100 1100 1100 1100
- {MOV, "A,TMM" }, // cd: 0100 1100 1100 1101
- {MOV, "A,PT" }, // ce: 0100 1100 1100 1110 7807
- { }, // cf: 0100 1100 1100 1111
-
- { }, // d0: 0100 1100 1101 0000
- { }, // d1: 0100 1100 1101 0001
- { }, // d2: 0100 1100 1101 0010
- { }, // d3: 0100 1100 1101 0011
- { }, // d4: 0100 1100 1101 0100
- { }, // d5: 0100 1100 1101 0101
- { }, // d6: 0100 1100 1101 0110
- { }, // d7: 0100 1100 1101 0111
- { }, // d8: 0100 1100 1101 1000
- {MOV, "A,RXB" }, // d9: 0100 1100 1101 1001
- { }, // da: 0100 1100 1101 1010
- { }, // db: 0100 1100 1101 1011
- { }, // dc: 0100 1100 1101 1100
- { }, // dd: 0100 1100 1101 1101
- { }, // de: 0100 1100 1101 1110
- { }, // df: 0100 1100 1101 1111
-
- { }, // e0: 0100 1100 1110 0000
- { }, // e1: 0100 1100 1110 0001
- { }, // e2: 0100 1100 1110 0010
- { }, // e3: 0100 1100 1110 0011
- { }, // e4: 0100 1100 1110 0100
- { }, // e5: 0100 1100 1110 0101
- { }, // e6: 0100 1100 1110 0110
- { }, // e7: 0100 1100 1110 0111
- { }, // e8: 0100 1100 1110 1000
- { }, // e9: 0100 1100 1110 1001
- { }, // ea: 0100 1100 1110 1010
- { }, // eb: 0100 1100 1110 1011
- { }, // ec: 0100 1100 1110 1100
- { }, // ed: 0100 1100 1110 1101
- { }, // ee: 0100 1100 1110 1110
- { }, // ef: 0100 1100 1110 1111
-
- { }, // f0: 0100 1100 1111 0000
- { }, // f1: 0100 1100 1111 0001
- { }, // f2: 0100 1100 1111 0010
- { }, // f3: 0100 1100 1111 0011
- { }, // f4: 0100 1100 1111 0100
- { }, // f5: 0100 1100 1111 0101
- { }, // f6: 0100 1100 1111 0110
- { }, // f7: 0100 1100 1111 0111
- { }, // f8: 0100 1100 1111 1000
- { }, // f9: 0100 1100 1111 1001
- { }, // fa: 0100 1100 1111 1010
- { }, // fb: 0100 1100 1111 1011
- { }, // fc: 0100 1100 1111 1100
- { }, // fd: 0100 1100 1111 1101
- { }, // fe: 0100 1100 1111 1110
- { } // ff: 0100 1100 1111 1111
-};
// prefix 4D
-const dasm_s dasm_s::d4D_7810[256] =
+const upd7810_base_disassembler::dasm_s upd7810_disassembler::d4D_7810[256] =
{
{ }, // 00: 0100 1101 0000 0000
{ }, // 01: 0100 1101 0000 0001
@@ -1810,559 +1891,10 @@ const dasm_s dasm_s::d4D_7810[256] =
{ } // ff: 0100 1101 1111 1111
};
-const dasm_s dasm_s::d4D_7807[256] =
-{
- { }, // 00: 0100 1101 0000 0000
- { }, // 01: 0100 1101 0000 0001
- { }, // 02: 0100 1101 0000 0010
- { }, // 03: 0100 1101 0000 0011
- { }, // 04: 0100 1101 0000 0100
- { }, // 05: 0100 1101 0000 0101
- { }, // 06: 0100 1101 0000 0110
- { }, // 07: 0100 1101 0000 0111
- { }, // 08: 0100 1101 0000 1000
- { }, // 09: 0100 1101 0000 1001
- { }, // 0a: 0100 1101 0000 1010
- { }, // 0b: 0100 1101 0000 1011
- { }, // 0c: 0100 1101 0000 1100
- { }, // 0d: 0100 1101 0000 1101
- { }, // 0e: 0100 1101 0000 1110
- { }, // 0f: 0100 1101 0000 1111
-
- { }, // 10: 0100 1101 0001 0000
- { }, // 11: 0100 1101 0001 0001
- { }, // 12: 0100 1101 0001 0010
- { }, // 13: 0100 1101 0001 0011
- { }, // 14: 0100 1101 0001 0100
- { }, // 15: 0100 1101 0001 0101
- { }, // 16: 0100 1101 0001 0110
- { }, // 17: 0100 1101 0001 0111
- { }, // 18: 0100 1101 0001 1000
- { }, // 19: 0100 1101 0001 1001
- { }, // 1a: 0100 1101 0001 1010
- { }, // 1b: 0100 1101 0001 1011
- { }, // 1c: 0100 1101 0001 1100
- { }, // 1d: 0100 1101 0001 1101
- { }, // 1e: 0100 1101 0001 1110
- { }, // 1f: 0100 1101 0001 1111
-
- { }, // 20: 0100 1101 0010 0000
- { }, // 21: 0100 1101 0010 0001
- { }, // 22: 0100 1101 0010 0010
- { }, // 23: 0100 1101 0010 0011
- { }, // 24: 0100 1101 0010 0100
- { }, // 25: 0100 1101 0010 0101
- { }, // 26: 0100 1101 0010 0110
- { }, // 27: 0100 1101 0010 0111
- { }, // 28: 0100 1101 0010 1000
- { }, // 29: 0100 1101 0010 1001
- { }, // 2a: 0100 1101 0010 1010
- { }, // 2b: 0100 1101 0010 1011
- { }, // 2c: 0100 1101 0010 1100
- { }, // 2d: 0100 1101 0010 1101
- { }, // 2e: 0100 1101 0010 1110
- { }, // 2f: 0100 1101 0010 1111
-
- { }, // 30: 0100 1101 0011 0000
- { }, // 31: 0100 1101 0011 0001
- { }, // 32: 0100 1101 0011 0010
- { }, // 33: 0100 1101 0011 0011
- { }, // 34: 0100 1101 0011 0100
- { }, // 35: 0100 1101 0011 0101
- { }, // 36: 0100 1101 0011 0110
- { }, // 37: 0100 1101 0011 0111
- { }, // 38: 0100 1101 0011 1000
- { }, // 39: 0100 1101 0011 1001
- { }, // 3a: 0100 1101 0011 1010
- { }, // 3b: 0100 1101 0011 1011
- { }, // 3c: 0100 1101 0011 1100
- { }, // 3d: 0100 1101 0011 1101
- { }, // 3e: 0100 1101 0011 1110
- { }, // 3f: 0100 1101 0011 1111
-
- { }, // 40: 0100 1101 0100 0000
- { }, // 41: 0100 1101 0100 0001
- { }, // 42: 0100 1101 0100 0010
- { }, // 43: 0100 1101 0100 0011
- { }, // 44: 0100 1101 0100 0100
- { }, // 45: 0100 1101 0100 0101
- { }, // 46: 0100 1101 0100 0110
- { }, // 47: 0100 1101 0100 0111
- { }, // 48: 0100 1101 0100 1000
- { }, // 49: 0100 1101 0100 1001
- { }, // 4a: 0100 1101 0100 1010
- { }, // 4b: 0100 1101 0100 1011
- { }, // 4c: 0100 1101 0100 1100
- { }, // 4d: 0100 1101 0100 1101
- { }, // 4e: 0100 1101 0100 1110
- { }, // 4f: 0100 1101 0100 1111
-
- { }, // 50: 0100 1101 0101 0000
- { }, // 51: 0100 1101 0101 0001
- { }, // 52: 0100 1101 0101 0010
- { }, // 53: 0100 1101 0101 0011
- { }, // 54: 0100 1101 0101 0100
- { }, // 55: 0100 1101 0101 0101
- { }, // 56: 0100 1101 0101 0110
- { }, // 57: 0100 1101 0101 0111
- { }, // 58: 0100 1101 0101 1000
- { }, // 59: 0100 1101 0101 1001
- { }, // 5a: 0100 1101 0101 1010
- { }, // 5b: 0100 1101 0101 1011
- { }, // 5c: 0100 1101 0101 1100
- { }, // 5d: 0100 1101 0101 1101
- { }, // 5e: 0100 1101 0101 1110
- { }, // 5f: 0100 1101 0101 1111
-
- { }, // 60: 0100 1101 0110 0000
- { }, // 61: 0100 1101 0110 0001
- { }, // 62: 0100 1101 0110 0010
- { }, // 63: 0100 1101 0110 0011
- { }, // 64: 0100 1101 0110 0100
- { }, // 65: 0100 1101 0110 0101
- { }, // 66: 0100 1101 0110 0110
- { }, // 67: 0100 1101 0110 0111
- { }, // 68: 0100 1101 0110 1000
- { }, // 69: 0100 1101 0110 1001
- { }, // 6a: 0100 1101 0110 1010
- { }, // 6b: 0100 1101 0110 1011
- { }, // 6c: 0100 1101 0110 1100
- { }, // 6d: 0100 1101 0110 1101
- { }, // 6e: 0100 1101 0110 1110
- { }, // 6f: 0100 1101 0110 1111
-
- { }, // 70: 0100 1101 0111 0000
- { }, // 71: 0100 1101 0111 0001
- { }, // 72: 0100 1101 0111 0010
- { }, // 73: 0100 1101 0111 0011
- { }, // 74: 0100 1101 0111 0100
- { }, // 75: 0100 1101 0111 0101
- { }, // 76: 0100 1101 0111 0110
- { }, // 77: 0100 1101 0111 0111
- { }, // 78: 0100 1101 0111 1000
- { }, // 79: 0100 1101 0111 1001
- { }, // 7a: 0100 1101 0111 1010
- { }, // 7b: 0100 1101 0111 1011
- { }, // 7c: 0100 1101 0111 1100
- { }, // 7d: 0100 1101 0111 1101
- { }, // 7e: 0100 1101 0111 1110
- { }, // 7f: 0100 1101 0111 1111
-
- { }, // 80: 0100 1101 1000 0000
- { }, // 81: 0100 1101 1000 0001
- { }, // 82: 0100 1101 1000 0010
- { }, // 83: 0100 1101 1000 0011
- { }, // 84: 0100 1101 1000 0100
- { }, // 85: 0100 1101 1000 0101
- { }, // 86: 0100 1101 1000 0110
- { }, // 87: 0100 1101 1000 0111
- { }, // 88: 0100 1101 1000 1000
- { }, // 89: 0100 1101 1000 1001
- { }, // 8a: 0100 1101 1000 1010
- { }, // 8b: 0100 1101 1000 1011
- { }, // 8c: 0100 1101 1000 1100
- { }, // 8d: 0100 1101 1000 1101
- { }, // 8e: 0100 1101 1000 1110
- { }, // 8f: 0100 1101 1000 1111
-
- { }, // 90: 0100 1101 1001 0000
- { }, // 91: 0100 1101 1001 0001
- { }, // 92: 0100 1101 1001 0010
- { }, // 93: 0100 1101 1001 0011
- { }, // 94: 0100 1101 1001 0100
- { }, // 95: 0100 1101 1001 0101
- { }, // 96: 0100 1101 1001 0110
- { }, // 97: 0100 1101 1001 0111
- { }, // 98: 0100 1101 1001 1000
- { }, // 99: 0100 1101 1001 1001
- { }, // 9a: 0100 1101 1001 1010
- { }, // 9b: 0100 1101 1001 1011
- { }, // 9c: 0100 1101 1001 1100
- { }, // 9d: 0100 1101 1001 1101
- { }, // 9e: 0100 1101 1001 1110
- { }, // 9f: 0100 1101 1001 1111
-
- { }, // a0: 0100 1101 1010 0000
- { }, // a1: 0100 1101 1010 0001
- { }, // a2: 0100 1101 1010 0010
- { }, // a3: 0100 1101 1010 0011
- { }, // a4: 0100 1101 1010 0100
- { }, // a5: 0100 1101 1010 0101
- { }, // a6: 0100 1101 1010 0110
- { }, // a7: 0100 1101 1010 0111
- { }, // a8: 0100 1101 1010 1000
- { }, // a9: 0100 1101 1010 1001
- { }, // aa: 0100 1101 1010 1010
- { }, // ab: 0100 1101 1010 1011
- { }, // ac: 0100 1101 1010 1100
- { }, // ad: 0100 1101 1010 1101
- { }, // ae: 0100 1101 1010 1110
- { }, // af: 0100 1101 1010 1111
-
- { }, // b0: 0100 1101 1011 0000
- { }, // b1: 0100 1101 1011 0001
- { }, // b2: 0100 1101 1011 0010
- { }, // b3: 0100 1101 1011 0011
- { }, // b4: 0100 1101 1011 0100
- { }, // b5: 0100 1101 1011 0101
- { }, // b6: 0100 1101 1011 0110
- { }, // b7: 0100 1101 1011 0111
- { }, // b8: 0100 1101 1011 1000
- { }, // b9: 0100 1101 1011 1001
- { }, // ba: 0100 1101 1011 1010
- { }, // bb: 0100 1101 1011 1011
- { }, // bc: 0100 1101 1011 1100
- { }, // bd: 0100 1101 1011 1101
- { }, // be: 0100 1101 1011 1110
- { }, // bf: 0100 1101 1011 1111
-
- {MOV, "PA,A" }, // c0: 0100 1101 1100 0000
- {MOV, "PB,A" }, // c1: 0100 1101 1100 0001
- {MOV, "PC,A" }, // c2: 0100 1101 1100 0010
- {MOV, "PD,A" }, // c3: 0100 1101 1100 0011
- { }, // c4: 0100 1101 1100 0100
- {MOV, "PF,A" }, // c5: 0100 1101 1100 0101
- {MOV, "MKH,A" }, // c6: 0100 1101 1100 0110
- {MOV, "MKL,A" }, // c7: 0100 1101 1100 0111
- { }, // c8: 0100 1101 1100 1000
- {MOV, "SMH,A" }, // c9: 0100 1101 1100 1001
- {MOV, "SML,A" }, // ca: 0100 1101 1100 1010
- {MOV, "EOM,A" }, // cb: 0100 1101 1100 1011
- {MOV, "ETMM,A" }, // cc: 0100 1101 1100 1100
- {MOV, "TMM,A" }, // cd: 0100 1101 1100 1101
- { }, // ce: 0100 1101 1100 1110
- { }, // cf: 0100 1101 1100 1111
-
- {MOV, "MM,A" }, // d0: 0100 1101 1101 0000
- {MOV, "MCC,A" }, // d1: 0100 1101 1101 0001
- {MOV, "MA,A" }, // d2: 0100 1101 1101 0010
- {MOV, "MB,A" }, // d3: 0100 1101 1101 0011
- {MOV, "MC,A" }, // d4: 0100 1101 1101 0100
- { }, // d5: 0100 1101 1101 0101
- { }, // d6: 0100 1101 1101 0110
- {MOV, "MF,A" }, // d7: 0100 1101 1101 0111
- {MOV, "TXB,A" }, // d8: 0100 1101 1101 1000
- { }, // d9: 0100 1101 1101 1001
- {MOV, "TM0,A" }, // da: 0100 1101 1101 1010
- {MOV, "TM1,A" }, // db: 0100 1101 1101 1011
- { }, // dc: 0100 1101 1101 1100
- { }, // dd: 0100 1101 1101 1101
- { }, // de: 0100 1101 1101 1110
- { }, // df: 0100 1101 1101 1111
-
- { }, // e0: 0100 1101 1110 0000
- { }, // e1: 0100 1101 1110 0001
- { }, // e2: 0100 1101 1110 0010
- { }, // e3: 0100 1101 1110 0011
- { }, // e4: 0100 1101 1110 0100
- {MOV, "MT,A" }, // e5: 0100 1101 1110 0101 7807
- { }, // e6: 0100 1101 1110 0110
- { }, // e7: 0100 1101 1110 0111
- { }, // e8: 0100 1101 1110 1000
- { }, // e9: 0100 1101 1110 1001
- { }, // ea: 0100 1101 1110 1010
- { }, // eb: 0100 1101 1110 1011
- { }, // ec: 0100 1101 1110 1100
- { }, // ed: 0100 1101 1110 1101
- { }, // ee: 0100 1101 1110 1110
- { }, // ef: 0100 1101 1110 1111
-
- { }, // f0: 0100 1101 1111 0000
- { }, // f1: 0100 1101 1111 0001
- { }, // f2: 0100 1101 1111 0010
- { }, // f3: 0100 1101 1111 0011
- { }, // f4: 0100 1101 1111 0100
- { }, // f5: 0100 1101 1111 0101
- { }, // f6: 0100 1101 1111 0110
- { }, // f7: 0100 1101 1111 0111
- { }, // f8: 0100 1101 1111 1000
- { }, // f9: 0100 1101 1111 1001
- { }, // fa: 0100 1101 1111 1010
- { }, // fb: 0100 1101 1111 1011
- { }, // fc: 0100 1101 1111 1100
- { }, // fd: 0100 1101 1111 1101
- { }, // fe: 0100 1101 1111 1110
- { } // ff: 0100 1101 1111 1111
-};
-
-// prefix 60
-const dasm_s dasm_s::d60[256] =
-{
- { }, // 00: 0110 0000 0000 0000
- { }, // 01: 0110 0000 0000 0001
- { }, // 02: 0110 0000 0000 0010
- { }, // 03: 0110 0000 0000 0011
- { }, // 04: 0110 0000 0000 0100
- { }, // 05: 0110 0000 0000 0101
- { }, // 06: 0110 0000 0000 0110
- { }, // 07: 0110 0000 0000 0111
- {ANA, "V,A" }, // 08: 0110 0000 0000 1000
- {ANA, "A,A" }, // 09: 0110 0000 0000 1001
- {ANA, "B,A" }, // 0a: 0110 0000 0000 1010
- {ANA, "C,A" }, // 0b: 0110 0000 0000 1011
- {ANA, "D,A" }, // 0c: 0110 0000 0000 1100
- {ANA, "E,A" }, // 0d: 0110 0000 0000 1101
- {ANA, "H,A" }, // 0e: 0110 0000 0000 1110
- {ANA, "L,A" }, // 0f: 0110 0000 0000 1111
-
- {XRA, "V,A" }, // 10: 0110 0000 0001 0000
- {XRA, "A,A" }, // 11: 0110 0000 0001 0001
- {XRA, "B,A" }, // 12: 0110 0000 0001 0010
- {XRA, "C,A" }, // 13: 0110 0000 0001 0011
- {XRA, "D,A" }, // 14: 0110 0000 0001 0100
- {XRA, "E,A" }, // 15: 0110 0000 0001 0101
- {XRA, "H,A" }, // 16: 0110 0000 0001 0110
- {XRA, "L,A" }, // 17: 0110 0000 0001 0111
- {ORA, "V,A" }, // 18: 0110 0000 0001 1000
- {ORA, "A,A" }, // 19: 0110 0000 0001 1001
- {ORA, "B,A" }, // 1a: 0110 0000 0001 1010
- {ORA, "C,A" }, // 1b: 0110 0000 0001 1011
- {ORA, "D,A" }, // 1c: 0110 0000 0001 1100
- {ORA, "E,A" }, // 1d: 0110 0000 0001 1101
- {ORA, "H,A" }, // 1e: 0110 0000 0001 1110
- {ORA, "L,A" }, // 1f: 0110 0000 0001 1111
-
- {ADDNC, "V,A" }, // 20: 0110 0000 0010 0000
- {ADDNC, "A,A" }, // 21: 0110 0000 0010 0001
- {ADDNC, "B,A" }, // 22: 0110 0000 0010 0010
- {ADDNC, "C,A" }, // 23: 0110 0000 0010 0011
- {ADDNC, "D,A" }, // 24: 0110 0000 0010 0100
- {ADDNC, "E,A" }, // 25: 0110 0000 0010 0101
- {ADDNC, "H,A" }, // 26: 0110 0000 0010 0110
- {ADDNC, "L,A" }, // 27: 0110 0000 0010 0111
- {GTA, "V,A" }, // 28: 0110 0000 0010 1000
- {GTA, "A,A" }, // 29: 0110 0000 0010 1001
- {GTA, "B,A" }, // 2a: 0110 0000 0010 1010
- {GTA, "C,A" }, // 2b: 0110 0000 0010 1011
- {GTA, "D,A" }, // 2c: 0110 0000 0010 1100
- {GTA, "E,A" }, // 2d: 0110 0000 0010 1101
- {GTA, "H,A" }, // 2e: 0110 0000 0010 1110
- {GTA, "L,A" }, // 2f: 0110 0000 0010 1111
- {SUBNB, "V,A" }, // 30: 0110 0000 0011 0000
- {SUBNB, "A,A" }, // 31: 0110 0000 0011 0001
- {SUBNB, "B,A" }, // 32: 0110 0000 0011 0010
- {SUBNB, "C,A" }, // 33: 0110 0000 0011 0011
- {SUBNB, "D,A" }, // 34: 0110 0000 0011 0100
- {SUBNB, "E,A" }, // 35: 0110 0000 0011 0101
- {SUBNB, "H,A" }, // 36: 0110 0000 0011 0110
- {SUBNB, "L,A" }, // 37: 0110 0000 0011 0111
- {LTA, "V,A" }, // 38: 0110 0000 0011 1000
- {LTA, "A,A" }, // 39: 0110 0000 0011 1001
- {LTA, "B,A" }, // 3a: 0110 0000 0011 1010
- {LTA, "C,A" }, // 3b: 0110 0000 0011 1011
- {LTA, "D,A" }, // 3c: 0110 0000 0011 1100
- {LTA, "E,A" }, // 3d: 0110 0000 0011 1101
- {LTA, "H,A" }, // 3e: 0110 0000 0011 1110
- {LTA, "L,A" }, // 3f: 0110 0000 0011 1111
-
- {ADD, "V,A" }, // 40: 0110 0000 0100 0000
- {ADD, "A,A" }, // 41: 0110 0000 0100 0001
- {ADD, "B,A" }, // 42: 0110 0000 0100 0010
- {ADD, "C,A" }, // 43: 0110 0000 0100 0011
- {ADD, "D,A" }, // 44: 0110 0000 0100 0100
- {ADD, "E,A" }, // 45: 0110 0000 0100 0101
- {ADD, "H,A" }, // 46: 0110 0000 0100 0110
- {ADD, "L,A" }, // 47: 0110 0000 0100 0111
- { }, // 48: 0110 0000 0100 1000
- { }, // 49: 0110 0000 0100 1001
- { }, // 4a: 0110 0000 0100 1010
- { }, // 4b: 0110 0000 0100 1011
- { }, // 4c: 0110 0000 0100 1100
- { }, // 4d: 0110 0000 0100 1101
- { }, // 4e: 0110 0000 0100 1110
- { }, // 4f: 0110 0000 0100 1111
-
- {ADC, "V,A" }, // 50: 0110 0000 0101 0000
- {ADC, "A,A" }, // 51: 0110 0000 0101 0001
- {ADC, "B,A" }, // 52: 0110 0000 0101 0010
- {ADC, "C,A" }, // 53: 0110 0000 0101 0011
- {ADC, "D,A" }, // 54: 0110 0000 0101 0100
- {ADC, "E,A" }, // 55: 0110 0000 0101 0101
- {ADC, "H,A" }, // 56: 0110 0000 0101 0110
- {ADC, "L,A" }, // 57: 0110 0000 0101 0111
- { }, // 58: 0110 0000 0101 1000
- { }, // 59: 0110 0000 0101 1001
- { }, // 5a: 0110 0000 0101 1010
- { }, // 5b: 0110 0000 0101 1011
- { }, // 5c: 0110 0000 0101 1100
- { }, // 5d: 0110 0000 0101 1101
- { }, // 5e: 0110 0000 0101 1110
- { }, // 5f: 0110 0000 0101 1111
-
- {SUB, "V,A" }, // 60: 0110 0000 0110 0000
- {SUB, "A,A" }, // 61: 0110 0000 0110 0001
- {SUB, "B,A" }, // 62: 0110 0000 0110 0010
- {SUB, "C,A" }, // 63: 0110 0000 0110 0011
- {SUB, "D,A" }, // 64: 0110 0000 0110 0100
- {SUB, "E,A" }, // 65: 0110 0000 0110 0101
- {SUB, "H,A" }, // 66: 0110 0000 0110 0110
- {SUB, "L,A" }, // 67: 0110 0000 0110 0111
- {NEA, "V,A" }, // 68: 0110 0000 0110 1000
- {NEA, "A,A" }, // 69: 0110 0000 0110 1001
- {NEA, "B,A" }, // 6a: 0110 0000 0110 1010
- {NEA, "C,A" }, // 6b: 0110 0000 0110 1011
- {NEA, "D,A" }, // 6c: 0110 0000 0110 1100
- {NEA, "E,A" }, // 6d: 0110 0000 0110 1101
- {NEA, "H,A" }, // 6e: 0110 0000 0110 1110
- {NEA, "L,A" }, // 6f: 0110 0000 0110 1111
-
- {SBB, "V,A" }, // 70: 0110 0000 0111 0000
- {SBB, "A,A" }, // 71: 0110 0000 0111 0001
- {SBB, "B,A" }, // 72: 0110 0000 0111 0010
- {SBB, "C,A" }, // 73: 0110 0000 0111 0011
- {SBB, "D,A" }, // 74: 0110 0000 0111 0100
- {SBB, "E,A" }, // 75: 0110 0000 0111 0101
- {SBB, "H,A" }, // 76: 0110 0000 0111 0110
- {SBB, "L,A" }, // 77: 0110 0000 0111 0111
- {EQA, "V,A" }, // 78: 0110 0000 0111 1000
- {EQA, "A,A" }, // 79: 0110 0000 0111 1001
- {EQA, "B,A" }, // 7a: 0110 0000 0111 1010
- {EQA, "C,A" }, // 7b: 0110 0000 0111 1011
- {EQA, "D,A" }, // 7c: 0110 0000 0111 1100
- {EQA, "E,A" }, // 7d: 0110 0000 0111 1101
- {EQA, "H,A" }, // 7e: 0110 0000 0111 1110
- {EQA, "L,A" }, // 7f: 0110 0000 0111 1111
-
- { }, // 80: 0110 0000 1000 0000
- { }, // 81: 0110 0000 1000 0001
- { }, // 82: 0110 0000 1000 0010
- { }, // 83: 0110 0000 1000 0011
- { }, // 84: 0110 0000 1000 0100
- { }, // 85: 0110 0000 1000 0101
- { }, // 86: 0110 0000 1000 0110
- { }, // 87: 0110 0000 1000 0111
- {ANA, "A,V" }, // 88: 0110 0000 1000 1000
- {ANA, "A,A" }, // 89: 0110 0000 1000 1001
- {ANA, "A,B" }, // 8a: 0110 0000 1000 1010
- {ANA, "A,C" }, // 8b: 0110 0000 1000 1011
- {ANA, "A,D" }, // 8c: 0110 0000 1000 1100
- {ANA, "A,E" }, // 8d: 0110 0000 1000 1101
- {ANA, "A,H" }, // 8e: 0110 0000 1000 1110
- {ANA, "A,L" }, // 8f: 0110 0000 1000 1111
-
- {XRA, "A,V" }, // 90: 0110 0000 1001 0000
- {XRA, "A,A" }, // 91: 0110 0000 1001 0001
- {XRA, "A,B" }, // 92: 0110 0000 1001 0010
- {XRA, "A,C" }, // 93: 0110 0000 1001 0011
- {XRA, "A,D" }, // 94: 0110 0000 1001 0100
- {XRA, "A,E" }, // 95: 0110 0000 1001 0101
- {XRA, "A,H" }, // 96: 0110 0000 1001 0110
- {XRA, "A,L" }, // 97: 0110 0000 1001 0111
- {ORA, "A,V" }, // 98: 0110 0000 1001 1000
- {ORA, "A,A" }, // 99: 0110 0000 1001 1001
- {ORA, "A,B" }, // 9a: 0110 0000 1001 1010
- {ORA, "A,C" }, // 9b: 0110 0000 1001 1011
- {ORA, "A,D" }, // 9c: 0110 0000 1001 1100
- {ORA, "A,E" }, // 9d: 0110 0000 1001 1101
- {ORA, "A,H" }, // 9e: 0110 0000 1001 1110
- {ORA, "A,L" }, // 9f: 0110 0000 1001 1111
-
- {ADDNC, "A,V" }, // a0: 0110 0000 1010 0000
- {ADDNC, "A,A" }, // a1: 0110 0000 1010 0001
- {ADDNC, "A,B" }, // a2: 0110 0000 1010 0010
- {ADDNC, "A,C" }, // a3: 0110 0000 1010 0011
- {ADDNC, "A,D" }, // a4: 0110 0000 1010 0100
- {ADDNC, "A,E" }, // a5: 0110 0000 1010 0101
- {ADDNC, "A,H" }, // a6: 0110 0000 1010 0110
- {ADDNC, "A,L" }, // a7: 0110 0000 1010 0111
- {GTA, "A,V" }, // a8: 0110 0000 1010 1000
- {GTA, "A,A" }, // a9: 0110 0000 1010 1001
- {GTA, "A,B" }, // aa: 0110 0000 1010 1010
- {GTA, "A,C" }, // ab: 0110 0000 1010 1011
- {GTA, "A,D" }, // ac: 0110 0000 1010 1100
- {GTA, "A,E" }, // ad: 0110 0000 1010 1101
- {GTA, "A,H" }, // ae: 0110 0000 1010 1110
- {GTA, "A,L" }, // af: 0110 0000 1010 1111
-
- {SUBNB, "A,V" }, // b0: 0110 0000 1011 0000
- {SUBNB, "A,A" }, // b1: 0110 0000 1011 0001
- {SUBNB, "A,B" }, // b2: 0110 0000 1011 0010
- {SUBNB, "A,C" }, // b3: 0110 0000 1011 0011
- {SUBNB, "A,D" }, // b4: 0110 0000 1011 0100
- {SUBNB, "A,E" }, // b5: 0110 0000 1011 0101
- {SUBNB, "A,H" }, // b6: 0110 0000 1011 0110
- {SUBNB, "A,L" }, // b7: 0110 0000 1011 0111
- {LTA, "A,V" }, // b8: 0110 0000 1011 1000
- {LTA, "A,A" }, // b9: 0110 0000 1011 1001
- {LTA, "A,B" }, // ba: 0110 0000 1011 1010
- {LTA, "A,C" }, // bb: 0110 0000 1011 1011
- {LTA, "A,D" }, // bc: 0110 0000 1011 1100
- {LTA, "A,E" }, // bd: 0110 0000 1011 1101
- {LTA, "A,H" }, // be: 0110 0000 1011 1110
- {LTA, "A,L" }, // bf: 0110 0000 1011 1111
-
- {ADD, "A,V" }, // c0: 0110 0000 1100 0000
- {ADD, "A,A" }, // c1: 0110 0000 1100 0001
- {ADD, "A,B" }, // c2: 0110 0000 1100 0010
- {ADD, "A,C" }, // c3: 0110 0000 1100 0011
- {ADD, "A,D" }, // c4: 0110 0000 1100 0100
- {ADD, "A,E" }, // c5: 0110 0000 1100 0101
- {ADD, "A,H" }, // c6: 0110 0000 1100 0110
- {ADD, "A,L" }, // c7: 0110 0000 1100 0111
- {ONA, "A,V" }, // c8: 0110 0000 1100 1000
- {ONA, "A,A" }, // c9: 0110 0000 1100 1001
- {ONA, "A,B" }, // ca: 0110 0000 1100 1010
- {ONA, "A,C" }, // cb: 0110 0000 1100 1011
- {ONA, "A,D" }, // cc: 0110 0000 1100 1100
- {ONA, "A,E" }, // cd: 0110 0000 1100 1101
- {ONA, "A,H" }, // ce: 0110 0000 1100 1110
- {ONA, "A,L" }, // cf: 0110 0000 1100 1111
-
- {ADC, "A,V" }, // d0: 0110 0000 1101 0000
- {ADC, "A,A" }, // d1: 0110 0000 1101 0001
- {ADC, "A,B" }, // d2: 0110 0000 1101 0010
- {ADC, "A,C" }, // d3: 0110 0000 1101 0011
- {ADC, "A,D" }, // d4: 0110 0000 1101 0100
- {ADC, "A,E" }, // d5: 0110 0000 1101 0101
- {ADC, "A,H" }, // d6: 0110 0000 1101 0110
- {ADC, "A,L" }, // d7: 0110 0000 1101 0111
- {OFFA, "A,V" }, // d8: 0110 0000 1101 1000
- {OFFA, "A,A" }, // d9: 0110 0000 1101 1001
- {OFFA, "A,B" }, // da: 0110 0000 1101 1010
- {OFFA, "A,C" }, // db: 0110 0000 1101 1011
- {OFFA, "A,D" }, // dc: 0110 0000 1101 1100
- {OFFA, "A,E" }, // dd: 0110 0000 1101 1101
- {OFFA, "A,H" }, // de: 0110 0000 1101 1110
- {OFFA, "A,L" }, // df: 0110 0000 1101 1111
-
- {SUB, "A,V" }, // e0: 0110 0000 1110 0000
- {SUB, "A,A" }, // e1: 0110 0000 1110 0001
- {SUB, "A,B" }, // e2: 0110 0000 1110 0010
- {SUB, "A,C" }, // e3: 0110 0000 1110 0011
- {SUB, "A,D" }, // e4: 0110 0000 1110 0100
- {SUB, "A,E" }, // e5: 0110 0000 1110 0101
- {SUB, "A,H" }, // e6: 0110 0000 1110 0110
- {SUB, "A,L" }, // e7: 0110 0000 1110 0111
- {NEA, "A,V" }, // e8: 0110 0000 1110 1000
- {NEA, "A,A" }, // e9: 0110 0000 1110 1001
- {NEA, "A,B" }, // ea: 0110 0000 1110 1010
- {NEA, "A,C" }, // eb: 0110 0000 1110 1011
- {NEA, "A,D" }, // ec: 0110 0000 1110 1100
- {NEA, "A,E" }, // ed: 0110 0000 1110 1101
- {NEA, "A,H" }, // ee: 0110 0000 1110 1110
- {NEA, "A,L" }, // ef: 0110 0000 1110 1111
-
- {SBB, "A,V" }, // f0: 0110 0000 1111 0000
- {SBB, "A,A" }, // f1: 0110 0000 1111 0001
- {SBB, "A,B" }, // f2: 0110 0000 1111 0010
- {SBB, "A,C" }, // f3: 0110 0000 1111 0011
- {SBB, "A,D" }, // f4: 0110 0000 1111 0100
- {SBB, "A,E" }, // f5: 0110 0000 1111 0101
- {SBB, "A,H" }, // f6: 0110 0000 1111 0110
- {SBB, "A,L" }, // f7: 0110 0000 1111 0111
- {EQA, "A,V" }, // f8: 0110 0000 1111 1000
- {EQA, "A,A" }, // f9: 0110 0000 1111 1001
- {EQA, "A,B" }, // fa: 0110 0000 1111 1010
- {EQA, "A,C" }, // fb: 0110 0000 1111 1011
- {EQA, "A,D" }, // fc: 0110 0000 1111 1100
- {EQA, "A,E" }, // fd: 0110 0000 1111 1101
- {EQA, "A,H" }, // fe: 0110 0000 1111 1110
- {EQA, "A,L" } // ff: 0110 0000 1111 1111
-};
// prefix 64
-const dasm_s dasm_s::d64_7810[256] =
+const upd7810_base_disassembler::dasm_s upd7810_disassembler::d64_7810[256] =
{
{MVI, "PA,%b" }, // 00: 0110 0100 0000 0000 xxxx xxxx
{MVI, "PB,%b" }, // 01: 0110 0100 0000 0001 xxxx xxxx
@@ -2637,835 +2169,10 @@ const dasm_s dasm_s::d64_7810[256] =
{ } // ff: 0110 0100 1111 1111 xxxx xxxx
};
-const dasm_s dasm_s::d64_7807[256] =
-{
- {MVI, "PA,%b" }, // 00: 0110 0100 0000 0000 xxxx xxxx
- {MVI, "PB,%b" }, // 01: 0110 0100 0000 0001 xxxx xxxx
- {MVI, "PC,%b" }, // 02: 0110 0100 0000 0010 xxxx xxxx
- {MVI, "PD,%b" }, // 03: 0110 0100 0000 0011 xxxx xxxx
- { }, // 04: 0110 0100 0000 0100 xxxx xxxx
- {MVI, "PF,%b" }, // 05: 0110 0100 0000 0101 xxxx xxxx
- {MVI, "MKH,%b" }, // 06: 0110 0100 0000 0110 xxxx xxxx
- {MVI, "MKL,%b" }, // 07: 0110 0100 0000 0111 xxxx xxxx
- {ANI, "PA,%b" }, // 08: 0110 0100 0000 1000 xxxx xxxx
- {ANI, "PB,%b" }, // 09: 0110 0100 0000 1001 xxxx xxxx
- {ANI, "PC,%b" }, // 0a: 0110 0100 0000 1010 xxxx xxxx
- {ANI, "PD,%b" }, // 0b: 0110 0100 0000 1011 xxxx xxxx
- { }, // 0c: 0110 0100 0000 1100 xxxx xxxx
- {ANI, "PF,%b" }, // 0d: 0110 0100 0000 1101 xxxx xxxx
- {ANI, "MKH,%b" }, // 0e: 0110 0100 0000 1110 xxxx xxxx
- {ANI, "MKL,%b" }, // 0f: 0110 0100 0000 1111 xxxx xxxx
-
- {XRI, "PA,%b" }, // 10: 0110 0100 0001 0000 xxxx xxxx
- {XRI, "PB,%b" }, // 11: 0110 0100 0001 0001 xxxx xxxx
- {XRI, "PC,%b" }, // 12: 0110 0100 0001 0010 xxxx xxxx
- {XRI, "PD,%b" }, // 13: 0110 0100 0001 0011 xxxx xxxx
- { }, // 14: 0110 0100 0001 0100 xxxx xxxx
- {XRI, "PF,%b" }, // 15: 0110 0100 0001 0101 xxxx xxxx
- {XRI, "MKH,%b" }, // 16: 0110 0100 0001 0110 xxxx xxxx
- {XRI, "MKL,%b" }, // 17: 0110 0100 0001 0111 xxxx xxxx
- {ORI, "PA,%b" }, // 18: 0110 0100 0001 1000 xxxx xxxx
- {ORI, "PB,%b" }, // 19: 0110 0100 0001 1001 xxxx xxxx
- {ORI, "PC,%b" }, // 1a: 0110 0100 0001 1010 xxxx xxxx
- {ORI, "PD,%b" }, // 1b: 0110 0100 0001 1011 xxxx xxxx
- { }, // 1c: 0110 0100 0001 1100 xxxx xxxx
- {ORI, "PF,%b" }, // 1d: 0110 0100 0001 1101 xxxx xxxx
- {ORI, "MKH,%b" }, // 1e: 0110 0100 0001 1110 xxxx xxxx
- {ORI, "MKL,%b" }, // 1f: 0110 0100 0001 1111 xxxx xxxx
-
- {ADINC, "PA,%b" }, // 20: 0110 0100 0010 0000 xxxx xxxx
- {ADINC, "PB,%b" }, // 21: 0110 0100 0010 0001 xxxx xxxx
- {ADINC, "PC,%b" }, // 22: 0110 0100 0010 0010 xxxx xxxx
- {ADINC, "PD,%b" }, // 23: 0110 0100 0010 0011 xxxx xxxx
- { }, // 24: 0110 0100 0010 0100 xxxx xxxx
- {ADINC, "PF,%b" }, // 25: 0110 0100 0010 0101 xxxx xxxx
- {ADINC, "MKH,%b" }, // 26: 0110 0100 0010 0110 xxxx xxxx
- {ADINC, "MKL,%b" }, // 27: 0110 0100 0010 0111 xxxx xxxx
- {GTI, "PA,%b" }, // 28: 0110 0100 0010 1000 xxxx xxxx
- {GTI, "PB,%b" }, // 29: 0110 0100 0010 1001 xxxx xxxx
- {GTI, "PC,%b" }, // 2a: 0110 0100 0010 1010 xxxx xxxx
- {GTI, "PD,%b" }, // 2b: 0110 0100 0010 1011 xxxx xxxx
- { }, // 2c: 0110 0100 0010 1100 xxxx xxxx
- {GTI, "PF,%b" }, // 2d: 0110 0100 0010 1101 xxxx xxxx
- {GTI, "MKH,%b" }, // 2e: 0110 0100 0010 1110 xxxx xxxx
- {GTI, "MKL,%b" }, // 2f: 0110 0100 0010 1111 xxxx xxxx
-
- {SUINB, "PA,%b" }, // 30: 0110 0100 0011 0000 xxxx xxxx
- {SUINB, "PB,%b" }, // 31: 0110 0100 0011 0001 xxxx xxxx
- {SUINB, "PC,%b" }, // 32: 0110 0100 0011 0010 xxxx xxxx
- {SUINB, "PD,%b" }, // 33: 0110 0100 0011 0011 xxxx xxxx
- { }, // 34: 0110 0100 0011 0100 xxxx xxxx
- {SUINB, "PF,%b" }, // 35: 0110 0100 0011 0101 xxxx xxxx
- {SUINB, "MKH,%b" }, // 36: 0110 0100 0011 0110 xxxx xxxx
- {SUINB, "MKL,%b" }, // 37: 0110 0100 0011 0111 xxxx xxxx
- {LTI, "PA,%b" }, // 38: 0110 0100 0011 1000 xxxx xxxx
- {LTI, "PB,%b" }, // 39: 0110 0100 0011 1001 xxxx xxxx
- {LTI, "PC,%b" }, // 3a: 0110 0100 0011 1010 xxxx xxxx
- {LTI, "PD,%b" }, // 3b: 0110 0100 0011 1011 xxxx xxxx
- { }, // 3c: 0110 0100 0011 1100 xxxx xxxx
- {LTI, "PF,%b" }, // 3d: 0110 0100 0011 1101 xxxx xxxx
- {LTI, "MKH,%b" }, // 3e: 0110 0100 0011 1110 xxxx xxxx
- {LTI, "MKL,%b" }, // 3f: 0110 0100 0011 1111 xxxx xxxx
-
- {ADI, "PA,%b" }, // 40: 0110 0100 0100 0000 xxxx xxxx
- {ADI, "PB,%b" }, // 41: 0110 0100 0100 0001 xxxx xxxx
- {ADI, "PC,%b" }, // 42: 0110 0100 0100 0010 xxxx xxxx
- {ADI, "PD,%b" }, // 43: 0110 0100 0100 0011 xxxx xxxx
- { }, // 44: 0110 0100 0100 0100 xxxx xxxx
- {ADI, "PF,%b" }, // 45: 0110 0100 0100 0101 xxxx xxxx
- {ADI, "MKH,%b" }, // 46: 0110 0100 0100 0110 xxxx xxxx
- {ADI, "MKL,%b" }, // 47: 0110 0100 0100 0111 xxxx xxxx
- {ONI, "PA,%b" }, // 48: 0110 0100 0100 1000 xxxx xxxx
- {ONI, "PB,%b" }, // 49: 0110 0100 0100 1001 xxxx xxxx
- {ONI, "PC,%b" }, // 4a: 0110 0100 0100 1010 xxxx xxxx
- {ONI, "PD,%b" }, // 4b: 0110 0100 0100 1011 xxxx xxxx
- { }, // 4c: 0110 0100 0100 1100 xxxx xxxx
- {ONI, "PF,%b" }, // 4d: 0110 0100 0100 1101 xxxx xxxx
- {ONI, "MKH,%b" }, // 4e: 0110 0100 0100 1110 xxxx xxxx
- {ONI, "MKL,%b" }, // 4f: 0110 0100 0100 1111 xxxx xxxx
-
- {ACI, "PA,%b" }, // 50: 0110 0100 0101 0000 xxxx xxxx
- {ACI, "PB,%b" }, // 51: 0110 0100 0101 0001 xxxx xxxx
- {ACI, "PC,%b" }, // 52: 0110 0100 0101 0010 xxxx xxxx
- {ACI, "PD,%b" }, // 53: 0110 0100 0101 0011 xxxx xxxx
- { }, // 54: 0110 0100 0101 0100 xxxx xxxx
- {ACI, "PF,%b" }, // 55: 0110 0100 0101 0101 xxxx xxxx
- {ACI, "MKH,%b" }, // 56: 0110 0100 0101 0110 xxxx xxxx
- {ACI, "MKL,%b" }, // 57: 0110 0100 0101 0111 xxxx xxxx
- {OFFI, "PA,%b" }, // 58: 0110 0100 0101 1000 xxxx xxxx
- {OFFI, "PB,%b" }, // 59: 0110 0100 0101 1001 xxxx xxxx
- {OFFI, "PC,%b" }, // 5a: 0110 0100 0101 1010 xxxx xxxx
- {OFFI, "PD,%b" }, // 5b: 0110 0100 0101 1011 xxxx xxxx
- { }, // 5c: 0110 0100 0101 1100 xxxx xxxx
- {OFFI, "PF,%b" }, // 5d: 0110 0100 0101 1101 xxxx xxxx
- {OFFI, "MKH,%b" }, // 5e: 0110 0100 0101 1110 xxxx xxxx
- {OFFI, "MKL,%b" }, // 5f: 0110 0100 0101 1111 xxxx xxxx
-
- {SUI, "PA,%b" }, // 60: 0110 0100 0110 0000 xxxx xxxx
- {SUI, "PB,%b" }, // 61: 0110 0100 0110 0001 xxxx xxxx
- {SUI, "PC,%b" }, // 62: 0110 0100 0110 0010 xxxx xxxx
- {SUI, "PD,%b" }, // 63: 0110 0100 0110 0011 xxxx xxxx
- { }, // 64: 0110 0100 0110 0100 xxxx xxxx
- {SUI, "PF,%b" }, // 65: 0110 0100 0110 0101 xxxx xxxx
- {SUI, "MKH,%b" }, // 66: 0110 0100 0110 0110 xxxx xxxx
- {SUI, "MKL,%b" }, // 67: 0110 0100 0110 0111 xxxx xxxx
- {NEI, "PA,%b" }, // 68: 0110 0100 0110 1000 xxxx xxxx
- {NEI, "PB,%b" }, // 69: 0110 0100 0110 1001 xxxx xxxx
- {NEI, "PC,%b" }, // 6a: 0110 0100 0110 1010 xxxx xxxx
- {NEI, "PD,%b" }, // 6b: 0110 0100 0110 1011 xxxx xxxx
- { }, // 6c: 0110 0100 0110 1100 xxxx xxxx
- {NEI, "PF,%b" }, // 6d: 0110 0100 0110 1101 xxxx xxxx
- {NEI, "MKH,%b" }, // 6e: 0110 0100 0110 1110 xxxx xxxx
- {NEI, "MKL,%b" }, // 6f: 0110 0100 0110 1111 xxxx xxxx
-
- {SBI, "PA,%b" }, // 70: 0110 0100 0111 0000 xxxx xxxx
- {SBI, "PB,%b" }, // 71: 0110 0100 0111 0001 xxxx xxxx
- {SBI, "PC,%b" }, // 72: 0110 0100 0111 0010 xxxx xxxx
- {SBI, "PD,%b" }, // 73: 0110 0100 0111 0011 xxxx xxxx
- { }, // 74: 0110 0100 0111 0100 xxxx xxxx
- {SBI, "PF,%b" }, // 75: 0110 0100 0111 0101 xxxx xxxx
- {SBI, "MKH,%b" }, // 76: 0110 0100 0111 0110 xxxx xxxx
- {SBI, "MKL,%b" }, // 77: 0110 0100 0111 0111 xxxx xxxx
- {EQI, "PA,%b" }, // 78: 0110 0100 0111 1000 xxxx xxxx
- {EQI, "PB,%b" }, // 79: 0110 0100 0111 1001 xxxx xxxx
- {EQI, "PC,%b" }, // 7a: 0110 0100 0111 1010 xxxx xxxx
- {EQI, "PD,%b" }, // 7b: 0110 0100 0111 1011 xxxx xxxx
- { }, // 7c: 0110 0100 0111 1100 xxxx xxxx
- {EQI, "PF,%b" }, // 7d: 0110 0100 0111 1101 xxxx xxxx
- {EQI, "MKH,%b" }, // 7e: 0110 0100 0111 1110 xxxx xxxx
- {EQI, "MKL,%b" }, // 7f: 0110 0100 0111 1111 xxxx xxxx
-
- { }, // 80: 0110 0100 1000 0000 xxxx xxxx
- {MVI, "SMH,%b" }, // 81: 0110 0100 1000 0001 xxxx xxxx
- { }, // 82: 0110 0100 1000 0010 xxxx xxxx
- {MVI, "EOM,%b" }, // 83: 0110 0100 1000 0011 xxxx xxxx
- { }, // 84: 0110 0100 1000 0100 xxxx xxxx
- {MVI, "TMM,%b" }, // 85: 0110 0100 1000 0101 xxxx xxxx
- { }, // 86: 0110 0100 1000 0110 xxxx xxxx
- { }, // 87: 0110 0100 1000 0111 xxxx xxxx
- { }, // 88: 0110 0100 1000 1000 xxxx xxxx
- {ANI, "SMH,%b" }, // 89: 0110 0100 1000 1001 xxxx xxxx
- { }, // 8a: 0110 0100 1000 1010 xxxx xxxx
- {ANI, "EOM,%b" }, // 8b: 0110 0100 1000 1011 xxxx xxxx
- { }, // 8c: 0110 0100 1000 1100 xxxx xxxx
- {ANI, "TMM,%b" }, // 8d: 0110 0100 1000 1101 xxxx xxxx
- { }, // 8e: 0110 0100 1000 1110 xxxx xxxx
- { }, // 8f: 0110 0100 1000 1111 xxxx xxxx
-
- { }, // 90: 0110 0100 1001 0000 xxxx xxxx
- {XRI, "SMH,%b" }, // 91: 0110 0100 1001 0001 xxxx xxxx
- { }, // 92: 0110 0100 1001 0010 xxxx xxxx
- {XRI, "EOM,%b" }, // 93: 0110 0100 1001 0011 xxxx xxxx
- { }, // 94: 0110 0100 1001 0100 xxxx xxxx
- {XRI, "TMM,%b" }, // 95: 0110 0100 1001 0101 xxxx xxxx
- { }, // 96: 0110 0100 1001 0110 xxxx xxxx
- { }, // 97: 0110 0100 1001 0111 xxxx xxxx
- { }, // 98: 0110 0100 1001 1000 xxxx xxxx
- {ORI, "SMH,%b" }, // 99: 0110 0100 1001 1001 xxxx xxxx
- { }, // 9a: 0110 0100 1001 1010 xxxx xxxx
- {ORI, "EOM,%b" }, // 9b: 0110 0100 1001 1011 xxxx xxxx
- { }, // 9c: 0110 0100 1001 1100 xxxx xxxx
- {ORI, "TMM,%b" }, // 9d: 0110 0100 1001 1101 xxxx xxxx
- { }, // 9e: 0110 0100 1001 1110 xxxx xxxx
- { }, // 9f: 0110 0100 1001 1111 xxxx xxxx
-
- { }, // a0: 0110 0100 1010 0000 xxxx xxxx
- {ADINC, "SMH,%b" }, // a1: 0110 0100 1010 0001 xxxx xxxx
- { }, // a2: 0110 0100 1010 0010 xxxx xxxx
- {ADINC, "EOM,%b" }, // a3: 0110 0100 1010 0011 xxxx xxxx
- { }, // a4: 0110 0100 1010 0100 xxxx xxxx
- {ADINC, "TMM,%b" }, // a5: 0110 0100 1010 0101 xxxx xxxx
- { }, // a6: 0110 0100 1010 0110 xxxx xxxx
- { }, // a7: 0110 0100 1010 0111 xxxx xxxx
- { }, // a8: 0110 0100 1010 1000 xxxx xxxx
- {GTI, "SMH,%b" }, // a9: 0110 0100 1010 1001 xxxx xxxx
- { }, // aa: 0110 0100 1010 1010 xxxx xxxx
- {GTI, "EOM,%b" }, // ab: 0110 0100 1010 1011 xxxx xxxx
- { }, // ac: 0110 0100 1010 1100 xxxx xxxx
- {GTI, "TMM,%b" }, // ad: 0110 0100 1010 1101 xxxx xxxx
- {GTI, "PT,%b" }, // ae: 0110 0100 1010 1110 xxxx xxxx
- { }, // af: 0110 0100 1010 1111 xxxx xxxx
-
- { }, // b0: 0110 0100 1011 0000 xxxx xxxx
- {SUINB, "SMH,%b" }, // b1: 0110 0100 1011 0001 xxxx xxxx
- { }, // b2: 0110 0100 1011 0010 xxxx xxxx
- {SUINB, "EOM,%b" }, // b3: 0110 0100 1011 0011 xxxx xxxx
- { }, // b4: 0110 0100 1011 0100 xxxx xxxx
- {SUINB, "TMM,%b" }, // b5: 0110 0100 1011 0101 xxxx xxxx
- { }, // b6: 0110 0100 1011 0110 xxxx xxxx
- { }, // b7: 0110 0100 1011 0111 xxxx xxxx
- { }, // b8: 0110 0100 1011 1000 xxxx xxxx
- {LTI, "SMH,%b" }, // b9: 0110 0100 1011 1001 xxxx xxxx
- { }, // ba: 0110 0100 1011 1010 xxxx xxxx
- {LTI, "EOM,%b" }, // bb: 0110 0100 1011 1011 xxxx xxxx
- { }, // bc: 0110 0100 1011 1100 xxxx xxxx
- {LTI, "TMM,%b" }, // bd: 0110 0100 1011 1101 xxxx xxxx
- {LTI, "PT,%b" }, // be: 0110 0100 1011 1110 xxxx xxxx
- { }, // bf: 0110 0100 1011 1111 xxxx xxxx
-
- { }, // c0: 0110 0100 1100 0000 xxxx xxxx
- {ADI, "SMH,%b" }, // c1: 0110 0100 1100 0001 xxxx xxxx
- { }, // c2: 0110 0100 1100 0010 xxxx xxxx
- {ADI, "EOM,%b" }, // c3: 0110 0100 1100 0011 xxxx xxxx
- { }, // c4: 0110 0100 1100 0100 xxxx xxxx
- {ADI, "TMM,%b" }, // c5: 0110 0100 1100 0101 xxxx xxxx
- { }, // c6: 0110 0100 1100 0110 xxxx xxxx
- { }, // c7: 0110 0100 1100 0111 xxxx xxxx
- { }, // c8: 0110 0100 1100 1000 xxxx xxxx
- {ONI, "SMH,%b" }, // c9: 0110 0100 1100 1001 xxxx xxxx
- { }, // ca: 0110 0100 1100 1010 xxxx xxxx
- {ONI, "EOM,%b" }, // cb: 0110 0100 1100 1011 xxxx xxxx
- { }, // cc: 0110 0100 1100 1100 xxxx xxxx
- {ONI, "TMM,%b" }, // cd: 0110 0100 1100 1101 xxxx xxxx
- {ONI, "PT,%b" }, // ce: 0110 0100 1100 1110 xxxx xxxx
- { }, // cf: 0110 0100 1100 1111 xxxx xxxx
-
- { }, // d0: 0110 0100 1101 0000 xxxx xxxx
- {ACI, "SMH,%b" }, // d1: 0110 0100 1101 0001 xxxx xxxx
- { }, // d2: 0110 0100 1101 0010 xxxx xxxx
- {ACI, "EOM,%b" }, // d3: 0110 0100 1101 0011 xxxx xxxx
- { }, // d4: 0110 0100 1101 0100 xxxx xxxx
- {ACI, "TMM,%b" }, // d5: 0110 0100 1101 0101 xxxx xxxx
- { }, // d6: 0110 0100 1101 0110 xxxx xxxx
- { }, // d7: 0110 0100 1101 0111 xxxx xxxx
- { }, // d8: 0110 0100 1101 1000 xxxx xxxx
- {OFFI, "SMH,%b" }, // d9: 0110 0100 1101 1001 xxxx xxxx
- { }, // da: 0110 0100 1101 1010 xxxx xxxx
- {OFFI, "EOM,%b" }, // db: 0110 0100 1101 1011 xxxx xxxx
- { }, // dc: 0110 0100 1101 1100 xxxx xxxx
- {OFFI, "TMM,%b" }, // dd: 0110 0100 1101 1101 xxxx xxxx
- {OFFI, "PT,%b" }, // de: 0110 0100 1101 1110 xxxx xxxx
- { }, // df: 0110 0100 1101 1111 xxxx xxxx
-
- { }, // e0: 0110 0100 1110 0000 xxxx xxxx
- {SUI, "SMH,%b" }, // e1: 0110 0100 1110 0001 xxxx xxxx
- { }, // e2: 0110 0100 1110 0010 xxxx xxxx
- {SUI, "EOM,%b" }, // e3: 0110 0100 1110 0011 xxxx xxxx
- { }, // e4: 0110 0100 1110 0100 xxxx xxxx
- {SUI, "TMM,%b" }, // e5: 0110 0100 1110 0101 xxxx xxxx
- { }, // e6: 0110 0100 1110 0110 xxxx xxxx
- { }, // e7: 0110 0100 1110 0111 xxxx xxxx
- { }, // e8: 0110 0100 1110 1000 xxxx xxxx
- {NEI, "SMH,%b" }, // e9: 0110 0100 1110 1001 xxxx xxxx
- { }, // ea: 0110 0100 1110 1010 xxxx xxxx
- {NEI, "EOM,%b" }, // eb: 0110 0100 1110 1011 xxxx xxxx
- { }, // ec: 0110 0100 1110 1100 xxxx xxxx
- {NEI, "TMM,%b" }, // ed: 0110 0100 1110 1101 xxxx xxxx
- {NEI, "PT,%b" }, // ee: 0110 0100 1110 1110 xxxx xxxx
- { }, // ef: 0110 0100 1110 1111 xxxx xxxx
-
- { }, // f0: 0110 0100 1111 0000 xxxx xxxx
- {SBI, "SMH,%b" }, // f1: 0110 0100 1111 0001 xxxx xxxx
- { }, // f2: 0110 0100 1111 0010 xxxx xxxx
- {SBI, "EOM,%b" }, // f3: 0110 0100 1111 0011 xxxx xxxx
- { }, // f4: 0110 0100 1111 0100 xxxx xxxx
- {SBI, "TMM,%b" }, // f5: 0110 0100 1111 0101 xxxx xxxx
- { }, // f6: 0110 0100 1111 0110 xxxx xxxx
- { }, // f7: 0110 0100 1111 0111 xxxx xxxx
- { }, // f8: 0110 0100 1111 1000 xxxx xxxx
- {EQI, "SMH,%b" }, // f9: 0110 0100 1111 1001 xxxx xxxx
- { }, // fa: 0110 0100 1111 1010 xxxx xxxx
- {EQI, "EOM,%b" }, // fb: 0110 0100 1111 1011 xxxx xxxx
- { }, // fc: 0110 0100 1111 1100 xxxx xxxx
- {EQI, "TMM,%b" }, // fd: 0110 0100 1111 1101 xxxx xxxx
- {EQI, "PT,%b" }, // fe: 0110 0100 1111 1110 xxxx xxxx
- { } // ff: 0110 0100 1111 1111 xxxx xxxx
-};
-
-// prefix 70
-const dasm_s dasm_s::d70[256] =
-{
- { }, // 00: 0111 0000 0000 0000
- { }, // 01: 0111 0000 0000 0001
- { }, // 02: 0111 0000 0000 0010
- { }, // 03: 0111 0000 0000 0011
- { }, // 04: 0111 0000 0000 0100
- { }, // 05: 0111 0000 0000 0101
- { }, // 06: 0111 0000 0000 0110
- { }, // 07: 0111 0000 0000 0111
- { }, // 08: 0111 0000 0000 1000
- { }, // 09: 0111 0000 0000 1001
- { }, // 0a: 0111 0000 0000 1010
- { }, // 0b: 0111 0000 0000 1011
- { }, // 0c: 0111 0000 0000 1100
- { }, // 0d: 0111 0000 0000 1101
- {SSPD, "%w" }, // 0e: 0111 0000 0000 1110 llll llll hhhh hhhh
- {LSPD, "%w" }, // 0f: 0111 0000 0000 1111 llll llll hhhh hhhh
-
- { }, // 10: 0111 0000 0001 0000
- { }, // 11: 0111 0000 0001 0001
- { }, // 12: 0111 0000 0001 0010
- { }, // 13: 0111 0000 0001 0011
- { }, // 14: 0111 0000 0001 0100
- { }, // 15: 0111 0000 0001 0101
- { }, // 16: 0111 0000 0001 0110
- { }, // 17: 0111 0000 0001 0111
- { }, // 18: 0111 0000 0001 1000
- { }, // 19: 0111 0000 0001 1001
- { }, // 1a: 0111 0000 0001 1010
- { }, // 1b: 0111 0000 0001 1011
- { }, // 1c: 0111 0000 0001 1100
- { }, // 1d: 0111 0000 0001 1101
- {SBCD, "%w" }, // 1e: 0111 0000 0001 1110 llll llll hhhh hhhh
- {LBCD, "%w" }, // 1f: 0111 0000 0001 1111 llll llll hhhh hhhh
-
- { }, // 20: 0111 0000 0010 0000
- { }, // 21: 0111 0000 0010 0001
- { }, // 22: 0111 0000 0010 0010
- { }, // 23: 0111 0000 0010 0011
- { }, // 24: 0111 0000 0010 0100
- { }, // 25: 0111 0000 0010 0101
- { }, // 26: 0111 0000 0010 0110
- { }, // 27: 0111 0000 0010 0111
- { }, // 28: 0111 0000 0010 1000
- { }, // 29: 0111 0000 0010 1001
- { }, // 2a: 0111 0000 0010 1010
- { }, // 2b: 0111 0000 0010 1011
- { }, // 2c: 0111 0000 0010 1100
- { }, // 2d: 0111 0000 0010 1101
- {SDED, "%w" }, // 2e: 0111 0000 0010 1110 llll llll hhhh hhhh
- {LDED, "%w" }, // 2f: 0111 0000 0010 1111 llll llll hhhh hhhh
-
- { }, // 30: 0111 0000 0011 0000
- { }, // 31: 0111 0000 0011 0001
- { }, // 32: 0111 0000 0011 0010
- { }, // 33: 0111 0000 0011 0011
- { }, // 34: 0111 0000 0011 0100
- { }, // 35: 0111 0000 0011 0101
- { }, // 36: 0111 0000 0011 0110
- { }, // 37: 0111 0000 0011 0111
- { }, // 38: 0111 0000 0011 1000
- { }, // 39: 0111 0000 0011 1001
- { }, // 3a: 0111 0000 0011 1010
- { }, // 3b: 0111 0000 0011 1011
- { }, // 3c: 0111 0000 0011 1100
- { }, // 3d: 0111 0000 0011 1101
- {SHLD, "%w" }, // 3e: 0111 0000 0011 1110 llll llll hhhh hhhh
- {LHLD, "%w" }, // 3f: 0111 0000 0011 1111 llll llll hhhh hhhh
-
- {EADD, "EA,V" }, // 40: 0111 0000 0100 0000
- {EADD, "EA,A" }, // 41: 0111 0000 0100 0001
- {EADD, "EA,B" }, // 42: 0111 0000 0100 0010
- {EADD, "EA,C" }, // 43: 0111 0000 0100 0011
- { }, // 44: 0111 0000 0100 0100
- { }, // 45: 0111 0000 0100 0101
- { }, // 46: 0111 0000 0100 0110
- { }, // 47: 0111 0000 0100 0111
- { }, // 48: 0111 0000 0100 1000
- { }, // 49: 0111 0000 0100 1001
- { }, // 4a: 0111 0000 0100 1010
- { }, // 4b: 0111 0000 0100 1011
- { }, // 4c: 0111 0000 0100 1100
- { }, // 4d: 0111 0000 0100 1101
- { }, // 4e: 0111 0000 0100 1110
- { }, // 4f: 0111 0000 0100 1111
-
- { }, // 50: 0111 0000 0101 0000
- { }, // 51: 0111 0000 0101 0001
- { }, // 52: 0111 0000 0101 0010
- { }, // 53: 0111 0000 0101 0011
- { }, // 54: 0111 0000 0101 0100
- { }, // 55: 0111 0000 0101 0101
- { }, // 56: 0111 0000 0101 0110
- { }, // 57: 0111 0000 0101 0111
- { }, // 58: 0111 0000 0101 1000
- { }, // 59: 0111 0000 0101 1001
- { }, // 5a: 0111 0000 0101 1010
- { }, // 5b: 0111 0000 0101 1011
- { }, // 5c: 0111 0000 0101 1100
- { }, // 5d: 0111 0000 0101 1101
- { }, // 5e: 0111 0000 0101 1110
- { }, // 5f: 0111 0000 0101 1111
-
- {ESUB, "EA,V" }, // 60: 0111 0000 0110 0000
- {ESUB, "EA,A" }, // 61: 0111 0000 0110 0001
- {ESUB, "EA,B" }, // 62: 0111 0000 0110 0010
- {ESUB, "EA,C" }, // 63: 0111 0000 0110 0011
- { }, // 64: 0111 0000 0110 0100
- { }, // 65: 0111 0000 0110 0101
- { }, // 66: 0111 0000 0110 0110
- { }, // 67: 0111 0000 0110 0111
- {MOV, "V,(%w)" }, // 68: 0111 0000 0110 1000 llll llll hhhh hhhh
- {MOV, "A,(%w)" }, // 69: 0111 0000 0110 1001 llll llll hhhh hhhh
- {MOV, "B,(%w)" }, // 6a: 0111 0000 0110 1010 llll llll hhhh hhhh
- {MOV, "C,(%w)" }, // 6b: 0111 0000 0110 1011 llll llll hhhh hhhh
- {MOV, "D,(%w)" }, // 6c: 0111 0000 0110 1100 llll llll hhhh hhhh
- {MOV, "E,(%w)" }, // 6d: 0111 0000 0110 1101 llll llll hhhh hhhh
- {MOV, "H,(%w)" }, // 6e: 0111 0000 0110 1110 llll llll hhhh hhhh
- {MOV, "L,(%w)" }, // 6f: 0111 0000 0110 1111 llll llll hhhh hhhh
-
- { }, // 70: 0111 0000 0111 0000
- { }, // 71: 0111 0000 0111 0001
- { }, // 72: 0111 0000 0111 0010
- { }, // 73: 0111 0000 0111 0011
- { }, // 74: 0111 0000 0111 0100
- { }, // 75: 0111 0000 0111 0101
- { }, // 76: 0111 0000 0111 0110
- { }, // 77: 0111 0000 0111 0111
- {MOV, "(%w),V" }, // 78: 0111 0000 0111 1000 llll llll hhhh hhhh
- {MOV, "(%w),A" }, // 79: 0111 0000 0111 1001 llll llll hhhh hhhh
- {MOV, "(%w),B" }, // 7a: 0111 0000 0111 1010 llll llll hhhh hhhh
- {MOV, "(%w),C" }, // 7b: 0111 0000 0111 1011 llll llll hhhh hhhh
- {MOV, "(%w),D" }, // 7c: 0111 0000 0111 1100 llll llll hhhh hhhh
- {MOV, "(%w),E" }, // 7d: 0111 0000 0111 1101 llll llll hhhh hhhh
- {MOV, "(%w),H" }, // 7e: 0111 0000 0111 1110 llll llll hhhh hhhh
- {MOV, "(%w),L" }, // 7f: 0111 0000 0111 1111 llll llll hhhh hhhh
-
- { }, // 80: 0111 0000 1000 0000
- { }, // 81: 0111 0000 1000 0001
- { }, // 82: 0111 0000 1000 0010
- { }, // 83: 0111 0000 1000 0011
- { }, // 84: 0111 0000 1000 0100
- { }, // 85: 0111 0000 1000 0101
- { }, // 86: 0111 0000 1000 0110
- { }, // 87: 0111 0000 1000 0111
- { }, // 88: 0111 0000 1000 1000
- {ANAX, "(BC)" }, // 89: 0111 0000 1000 1001
- {ANAX, "(DE)" }, // 8a: 0111 0000 1000 1010
- {ANAX, "(HL)" }, // 8b: 0111 0000 1000 1011
- {ANAX, "(DE+)" }, // 8c: 0111 0000 1000 1100
- {ANAX, "(HL+)" }, // 8d: 0111 0000 1000 1101
- {ANAX, "(DE-)" }, // 8e: 0111 0000 1000 1110
- {ANAX, "(HL-)" }, // 8f: 0111 0000 1000 1111
-
- { }, // 90: 0111 0000 1001 0000
- {XRAX, "(BC)" }, // 91: 0111 0000 1001 0001
- {XRAX, "(DE)" }, // 92: 0111 0000 1001 0010
- {XRAX, "(HL)" }, // 93: 0111 0000 1001 0011
- {XRAX, "(DE+)" }, // 94: 0111 0000 1001 0100
- {XRAX, "(HL+)" }, // 95: 0111 0000 1001 0101
- {XRAX, "(DE-)" }, // 96: 0111 0000 1001 0110
- {XRAX, "(HL-)" }, // 97: 0111 0000 1001 0111
- { }, // 98: 0111 0000 1001 1000
- {ORAX, "(BC)" }, // 99: 0111 0000 1001 1001
- {ORAX, "(DE)" }, // 9a: 0111 0000 1001 1010
- {ORAX, "(HL)" }, // 9b: 0111 0000 1001 1011
- {ORAX, "(DE+)" }, // 9c: 0111 0000 1001 1100
- {ORAX, "(HL+)" }, // 9d: 0111 0000 1001 1101
- {ORAX, "(DE-)" }, // 9e: 0111 0000 1001 1110
- {ORAX, "(HL-)" }, // 9f: 0111 0000 1001 1111
-
- { }, // a0: 0111 0000 1010 0000
- {ADDNCX, "(BC)" }, // a1: 0111 0000 1010 0001
- {ADDNCX, "(DE)" }, // a2: 0111 0000 1010 0010
- {ADDNCX, "(HL)" }, // a3: 0111 0000 1010 0011
- {ADDNCX, "(DE+)" }, // a4: 0111 0000 1010 0100
- {ADDNCX, "(HL+)" }, // a5: 0111 0000 1010 0101
- {ADDNCX, "(DE-)" }, // a6: 0111 0000 1010 0110
- {ADDNCX, "(HL-)" }, // a7: 0111 0000 1010 0111
- { }, // a8: 0111 0000 1010 1000
- {GTAX, "(BC)" }, // a9: 0111 0000 1010 1001
- {GTAX, "(DE)" }, // aa: 0111 0000 1010 1010
- {GTAX, "(HL)" }, // ab: 0111 0000 1010 1011
- {GTAX, "(DE+)" }, // ac: 0111 0000 1010 1100
- {GTAX, "(HL+)" }, // ad: 0111 0000 1010 1101
- {GTAX, "(DE-)" }, // ae: 0111 0000 1010 1110
- {GTAX, "(HL-)" }, // af: 0111 0000 1010 1111
-
- { }, // b0: 0111 0000 1011 0000
- {SUBNBX, "(BC)" }, // b1: 0111 0000 1011 0001
- {SUBNBX, "(DE)" }, // b2: 0111 0000 1011 0010
- {SUBNBX, "(HL)" }, // b3: 0111 0000 1011 0011
- {SUBNBX, "(DE+)" }, // b4: 0111 0000 1011 0100
- {SUBNBX, "(HL+)" }, // b5: 0111 0000 1011 0101
- {SUBNBX, "(DE-)" }, // b6: 0111 0000 1011 0110
- {SUBNBX, "(HL-)" }, // b7: 0111 0000 1011 0111
- { }, // b8: 0111 0000 1011 1000
- {LTAX, "(BC)" }, // b9: 0111 0000 1011 1001
- {LTAX, "(DE)" }, // ba: 0111 0000 1011 1010
- {LTAX, "(HL)" }, // bb: 0111 0000 1011 1011
- {LTAX, "(DE+)" }, // bc: 0111 0000 1011 1100
- {LTAX, "(HL+)" }, // bd: 0111 0000 1011 1101
- {LTAX, "(DE-)" }, // be: 0111 0000 1011 1110
- {LTAX, "(HL-)" }, // bf: 0111 0000 1011 1111
-
- { }, // c0: 0111 0000 1100 0000
- {ADDX, "(BC)" }, // c1: 0111 0000 1100 0001
- {ADDX, "(DE)" }, // c2: 0111 0000 1100 0010
- {ADDX, "(HL)" }, // c3: 0111 0000 1100 0011
- {ADDX, "(DE+)" }, // c4: 0111 0000 1100 0100
- {ADDX, "(HL+)" }, // c5: 0111 0000 1100 0101
- {ADDX, "(DE-)" }, // c6: 0111 0000 1100 0110
- {ADDX, "(HL-)" }, // c7: 0111 0000 1100 0111
- { }, // c8: 0111 0000 1100 1000
- {ONAX, "(BC)" }, // c9: 0111 0000 1100 1001
- {ONAX, "(DE)" }, // ca: 0111 0000 1100 1010
- {ONAX, "(HL)" }, // cb: 0111 0000 1100 1011
- {ONAX, "(DE+)" }, // cc: 0111 0000 1100 1100
- {ONAX, "(HL+)" }, // cd: 0111 0000 1100 1101
- {ONAX, "(DE-)" }, // ce: 0111 0000 1100 1110
- {ONAX, "(HL-)" }, // cf: 0111 0000 1100 1111
-
- { }, // d0: 0111 0000 1101 0000
- {ADCX, "(BC)" }, // d1: 0111 0000 1101 0001
- {ADCX, "(DE)" }, // d2: 0111 0000 1101 0010
- {ADCX, "(HL)" }, // d3: 0111 0000 1101 0011
- {ADCX, "(DE+)" }, // d4: 0111 0000 1101 0100
- {ADCX, "(HL+)" }, // d5: 0111 0000 1101 0101
- {ADCX, "(DE-)" }, // d6: 0111 0000 1101 0110
- {ADCX, "(HL-)" }, // d7: 0111 0000 1101 0111
- { }, // d8: 0111 0000 1101 1000
- {OFFAX, "(BC)" }, // d9: 0111 0000 1101 1001
- {OFFAX, "(DE)" }, // da: 0111 0000 1101 1010
- {OFFAX, "(HL)" }, // db: 0111 0000 1101 1011
- {OFFAX, "(DE+)" }, // dc: 0111 0000 1101 1100
- {OFFAX, "(HL+)" }, // dd: 0111 0000 1101 1101
- {OFFAX, "(DE-)" }, // de: 0111 0000 1101 1110
- {OFFAX, "(HL-)" }, // df: 0111 0000 1101 1111
-
- { }, // e0: 0111 0000 1110 0000
- {SUBX, "(BC)" }, // e1: 0111 0000 1110 0001
- {SUBX, "(DE)" }, // e2: 0111 0000 1110 0010
- {SUBX, "(HL)" }, // e3: 0111 0000 1110 0011
- {SUBX, "(DE+)" }, // e4: 0111 0000 1110 0100
- {SUBX, "(HL+)" }, // e5: 0111 0000 1110 0101
- {SUBX, "(DE-)" }, // e6: 0111 0000 1110 0110
- {SUBX, "(HL-)" }, // e7: 0111 0000 1110 0111
- { }, // e8: 0111 0000 1110 1000
- {NEAX, "(BC)" }, // e9: 0111 0000 1110 1001
- {NEAX, "(DE)" }, // ea: 0111 0000 1110 1010
- {NEAX, "(HL)" }, // eb: 0111 0000 1110 1011
- {NEAX, "(DE+)" }, // ec: 0111 0000 1110 1100
- {NEAX, "(HL+)" }, // ed: 0111 0000 1110 1101
- {NEAX, "(DE-)" }, // ee: 0111 0000 1110 1110
- {NEAX, "(HL-)" }, // ef: 0111 0000 1110 1111
-
- { }, // f0: 0111 0000 1111 0000
- {SBBX, "(BC)" }, // f1: 0111 0000 1111 0001
- {SBBX, "(DE)" }, // f2: 0111 0000 1111 0010
- {SBBX, "(HL)" }, // f3: 0111 0000 1111 0011
- {SBBX, "(DE+)" }, // f4: 0111 0000 1111 0100
- {SBBX, "(HL+)" }, // f5: 0111 0000 1111 0101
- {SBBX, "(DE-)" }, // f6: 0111 0000 1111 0110
- {SBBX, "(HL-)" }, // f7: 0111 0000 1111 0111
- { }, // f8: 0111 0000 1111 1000
- {EQAX, "(BC)" }, // f9: 0111 0000 1111 1001
- {EQAX, "(DE)" }, // fa: 0111 0000 1111 1010
- {EQAX, "(HL)" }, // fb: 0111 0000 1111 1011
- {EQAX, "(DE+)" }, // fc: 0111 0000 1111 1100
- {EQAX, "(HL+)" }, // fd: 0111 0000 1111 1101
- {EQAX, "(DE-)" }, // fe: 0111 0000 1111 1110
- {EQAX, "(HL-)" } // ff: 0111 0000 1111 1111
-};
-
-// prefix 74
-const dasm_s dasm_s::d74[256] =
-{
- { }, // 00: 0111 0100 0000 0000
- { }, // 01: 0111 0100 0000 0001
- { }, // 02: 0111 0100 0000 0010
- { }, // 03: 0111 0100 0000 0011
- { }, // 04: 0111 0100 0000 0100
- { }, // 05: 0111 0100 0000 0101
- { }, // 06: 0111 0100 0000 0110
- { }, // 07: 0111 0100 0000 0111
- {ANI, "V,%b" }, // 08: 0111 0100 0000 1000 xxxx xxxx
- {ANI, "A,%b" }, // 09: 0111 0100 0000 1001 xxxx xxxx
- {ANI, "B,%b" }, // 0a: 0111 0100 0000 1010 xxxx xxxx
- {ANI, "C,%b" }, // 0b: 0111 0100 0000 1011 xxxx xxxx
- {ANI, "D,%b" }, // 0c: 0111 0100 0000 1100 xxxx xxxx
- {ANI, "E,%b" }, // 0d: 0111 0100 0000 1101 xxxx xxxx
- {ANI, "H,%b" }, // 0e: 0111 0100 0000 1110 xxxx xxxx
- {ANI, "L,%b" }, // 0f: 0111 0100 0000 1111 xxxx xxxx
-
- {XRI, "V,%b" }, // 10: 0111 0100 0001 0000 xxxx xxxx
- {XRI, "A,%b" }, // 11: 0111 0100 0001 0001 xxxx xxxx
- {XRI, "B,%b" }, // 12: 0111 0100 0001 0010 xxxx xxxx
- {XRI, "C,%b" }, // 13: 0111 0100 0001 0011 xxxx xxxx
- {XRI, "D,%b" }, // 14: 0111 0100 0001 0100 xxxx xxxx
- {XRI, "E,%b" }, // 15: 0111 0100 0001 0101 xxxx xxxx
- {XRI, "H,%b" }, // 16: 0111 0100 0001 0110 xxxx xxxx
- {XRI, "L,%b" }, // 17: 0111 0100 0001 0111 xxxx xxxx
- {ORI, "V,%b" }, // 18: 0111 0100 0001 1000 xxxx xxxx
- {ORI, "A,%b" }, // 19: 0111 0100 0001 1001 xxxx xxxx
- {ORI, "B,%b" }, // 1a: 0111 0100 0001 1010 xxxx xxxx
- {ORI, "C,%b" }, // 1b: 0111 0100 0001 1011 xxxx xxxx
- {ORI, "D,%b" }, // 1c: 0111 0100 0001 1100 xxxx xxxx
- {ORI, "E,%b" }, // 1d: 0111 0100 0001 1101 xxxx xxxx
- {ORI, "H,%b" }, // 1e: 0111 0100 0001 1110 xxxx xxxx
- {ORI, "L,%b" }, // 1f: 0111 0100 0001 1111 xxxx xxxx
-
- {ADINC, "V,%b" }, // 20: 0111 0100 0010 0000 xxxx xxxx
- {ADINC, "A,%b" }, // 21: 0111 0100 0010 0001 xxxx xxxx
- {ADINC, "B,%b" }, // 22: 0111 0100 0010 0010 xxxx xxxx
- {ADINC, "C,%b" }, // 23: 0111 0100 0010 0011 xxxx xxxx
- {ADINC, "D,%b" }, // 24: 0111 0100 0010 0100 xxxx xxxx
- {ADINC, "E,%b" }, // 25: 0111 0100 0010 0101 xxxx xxxx
- {ADINC, "H,%b" }, // 26: 0111 0100 0010 0110 xxxx xxxx
- {ADINC, "L,%b" }, // 27: 0111 0100 0010 0111 xxxx xxxx
- {GTI, "V,%b" }, // 28: 0111 0100 0010 1000 xxxx xxxx
- {GTI, "A,%b" }, // 29: 0111 0100 0010 1001 xxxx xxxx
- {GTI, "B,%b" }, // 2a: 0111 0100 0010 1010 xxxx xxxx
- {GTI, "C,%b" }, // 2b: 0111 0100 0010 1011 xxxx xxxx
- {GTI, "D,%b" }, // 2c: 0111 0100 0010 1100 xxxx xxxx
- {GTI, "E,%b" }, // 2d: 0111 0100 0010 1101 xxxx xxxx
- {GTI, "H,%b" }, // 2e: 0111 0100 0010 1110 xxxx xxxx
- {GTI, "L,%b" }, // 2f: 0111 0100 0010 1111 xxxx xxxx
-
- {SUINB, "V,%b" }, // 30: 0111 0100 0011 0000 xxxx xxxx
- {SUINB, "A,%b" }, // 31: 0111 0100 0011 0001 xxxx xxxx
- {SUINB, "B,%b" }, // 32: 0111 0100 0011 0010 xxxx xxxx
- {SUINB, "C,%b" }, // 33: 0111 0100 0011 0011 xxxx xxxx
- {SUINB, "D,%b" }, // 34: 0111 0100 0011 0100 xxxx xxxx
- {SUINB, "E,%b" }, // 35: 0111 0100 0011 0101 xxxx xxxx
- {SUINB, "H,%b" }, // 36: 0111 0100 0011 0110 xxxx xxxx
- {SUINB, "L,%b" }, // 37: 0111 0100 0011 0111 xxxx xxxx
- {LTI, "V,%b" }, // 37: 0111 0100 0011 1000 xxxx xxxx
- {LTI, "A,%b" }, // 39: 0111 0100 0011 1001 xxxx xxxx
- {LTI, "B,%b" }, // 3a: 0111 0100 0011 1010 xxxx xxxx
- {LTI, "C,%b" }, // 3b: 0111 0100 0011 1011 xxxx xxxx
- {LTI, "D,%b" }, // 3c: 0111 0100 0011 1100 xxxx xxxx
- {LTI, "E,%b" }, // 3d: 0111 0100 0011 1101 xxxx xxxx
- {LTI, "H,%b" }, // 3e: 0111 0100 0011 1110 xxxx xxxx
- {LTI, "L,%b" }, // 3f: 0111 0100 0011 1111 xxxx xxxx
-
- {ADI, "V,%b" }, // 40: 0111 0100 0100 0000 xxxx xxxx
- {ADI, "A,%b" }, // 41: 0111 0100 0100 0001 xxxx xxxx
- {ADI, "B,%b" }, // 42: 0111 0100 0100 0010 xxxx xxxx
- {ADI, "C,%b" }, // 43: 0111 0100 0100 0011 xxxx xxxx
- {ADI, "D,%b" }, // 44: 0111 0100 0100 0100 xxxx xxxx
- {ADI, "E,%b" }, // 45: 0111 0100 0100 0101 xxxx xxxx
- {ADI, "H,%b" }, // 46: 0111 0100 0100 0110 xxxx xxxx
- {ADI, "L,%b" }, // 47: 0111 0100 0100 0111 xxxx xxxx
- {ONI, "V,%b" }, // 48: 0111 0100 0100 1000 xxxx xxxx
- {ONI, "A,%b" }, // 49: 0111 0100 0100 1001 xxxx xxxx
- {ONI, "B,%b" }, // 4a: 0111 0100 0100 1010 xxxx xxxx
- {ONI, "C,%b" }, // 4b: 0111 0100 0100 1011 xxxx xxxx
- {ONI, "D,%b" }, // 4c: 0111 0100 0100 1100 xxxx xxxx
- {ONI, "E,%b" }, // 4d: 0111 0100 0100 1101 xxxx xxxx
- {ONI, "H,%b" }, // 4e: 0111 0100 0100 1110 xxxx xxxx
- {ONI, "L,%b" }, // 4f: 0111 0100 0100 1111 xxxx xxxx
-
- {ACI, "V,%b" }, // 50: 0111 0100 0101 0000 xxxx xxxx
- {ACI, "A,%b" }, // 51: 0111 0100 0101 0001 xxxx xxxx
- {ACI, "B,%b" }, // 52: 0111 0100 0101 0010 xxxx xxxx
- {ACI, "C,%b" }, // 53: 0111 0100 0101 0011 xxxx xxxx
- {ACI, "D,%b" }, // 54: 0111 0100 0101 0100 xxxx xxxx
- {ACI, "E,%b" }, // 55: 0111 0100 0101 0101 xxxx xxxx
- {ACI, "H,%b" }, // 56: 0111 0100 0101 0110 xxxx xxxx
- {ACI, "L,%b" }, // 57: 0111 0100 0101 0111 xxxx xxxx
- {OFFI, "V,%b" }, // 58: 0111 0100 0101 1000 xxxx xxxx
- {OFFI, "A,%b" }, // 59: 0111 0100 0101 1001 xxxx xxxx
- {OFFI, "B,%b" }, // 5a: 0111 0100 0101 1010 xxxx xxxx
- {OFFI, "C,%b" }, // 5b: 0111 0100 0101 1011 xxxx xxxx
- {OFFI, "D,%b" }, // 5c: 0111 0100 0101 1100 xxxx xxxx
- {OFFI, "E,%b" }, // 5d: 0111 0100 0101 1101 xxxx xxxx
- {OFFI, "H,%b" }, // 5e: 0111 0100 0101 1110 xxxx xxxx
- {OFFI, "L,%b" }, // 5f: 0111 0100 0101 1111 xxxx xxxx
-
- {SUI, "V,%b" }, // 60: 0111 0100 0110 0000 xxxx xxxx
- {SUI, "A,%b" }, // 61: 0111 0100 0110 0001 xxxx xxxx
- {SUI, "B,%b" }, // 62: 0111 0100 0110 0010 xxxx xxxx
- {SUI, "C,%b" }, // 63: 0111 0100 0110 0011 xxxx xxxx
- {SUI, "D,%b" }, // 64: 0111 0100 0110 0100 xxxx xxxx
- {SUI, "E,%b" }, // 65: 0111 0100 0110 0101 xxxx xxxx
- {SUI, "H,%b" }, // 66: 0111 0100 0110 0110 xxxx xxxx
- {SUI, "L,%b" }, // 67: 0111 0100 0110 0111 xxxx xxxx
- {NEI, "V,%b" }, // 68: 0111 0100 0110 1000 xxxx xxxx
- {NEI, "A,%b" }, // 69: 0111 0100 0110 1001 xxxx xxxx
- {NEI, "B,%b" }, // 6a: 0111 0100 0110 1010 xxxx xxxx
- {NEI, "C,%b" }, // 6b: 0111 0100 0110 1011 xxxx xxxx
- {NEI, "D,%b" }, // 6c: 0111 0100 0110 1100 xxxx xxxx
- {NEI, "E,%b" }, // 6d: 0111 0100 0110 1101 xxxx xxxx
- {NEI, "H,%b" }, // 6e: 0111 0100 0110 1110 xxxx xxxx
- {NEI, "L,%b" }, // 6f: 0111 0100 0110 1111 xxxx xxxx
-
- {SBI, "V,%b" }, // 70: 0111 0100 0111 0000 xxxx xxxx
- {SBI, "A,%b" }, // 71: 0111 0100 0111 0001 xxxx xxxx
- {SBI, "B,%b" }, // 72: 0111 0100 0111 0010 xxxx xxxx
- {SBI, "C,%b" }, // 73: 0111 0100 0111 0011 xxxx xxxx
- {SBI, "D,%b" }, // 74: 0111 0100 0111 0100 xxxx xxxx
- {SBI, "E,%b" }, // 75: 0111 0100 0111 0101 xxxx xxxx
- {SBI, "H,%b" }, // 76: 0111 0100 0111 0110 xxxx xxxx
- {SBI, "L,%b" }, // 77: 0111 0100 0111 0111 xxxx xxxx
- {EQI, "V,%b" }, // 78: 0111 0100 0111 1000 xxxx xxxx
- {EQI, "A,%b" }, // 79: 0111 0100 0111 1001 xxxx xxxx
- {EQI, "B,%b" }, // 7a: 0111 0100 0111 1010 xxxx xxxx
- {EQI, "C,%b" }, // 7b: 0111 0100 0111 1011 xxxx xxxx
- {EQI, "D,%b" }, // 7c: 0111 0100 0111 1100 xxxx xxxx
- {EQI, "E,%b" }, // 7d: 0111 0100 0111 1101 xxxx xxxx
- {EQI, "H,%b" }, // 7e: 0111 0100 0111 1110 xxxx xxxx
- {EQI, "L,%b" }, // 7f: 0111 0100 0111 1111 xxxx xxxx
-
- { }, // 80: 0111 0100 1000 0000
- { }, // 81: 0111 0100 1000 0001
- { }, // 82: 0111 0100 1000 0010
- { }, // 83: 0111 0100 1000 0011
- { }, // 84: 0111 0100 1000 0100
- { }, // 85: 0111 0100 1000 0101
- { }, // 86: 0111 0100 1000 0110
- { }, // 87: 0111 0100 1000 0111
- {ANAW, "%a" }, // 88: 0111 0100 1000 1000 oooo oooo
- { }, // 89: 0111 0100 1000 1001
- { }, // 8a: 0111 0100 1000 1010
- { }, // 8b: 0111 0100 1000 1011
- { }, // 8c: 0111 0100 1000 1100
- {DAN, "EA,BC" }, // 8d: 0111 0100 1000 1101
- {DAN, "EA,DE" }, // 8e: 0111 0100 1000 1110
- {DAN, "EA,HL" }, // 8f: 0111 0100 1000 1111
-
- {XRAW, "%a" }, // 90: 0111 0100 1001 0000 oooo oooo
- { }, // 91: 0111 0100 1001 0001
- { }, // 92: 0111 0100 1001 0010
- { }, // 93: 0111 0100 1001 0011
- { }, // 94: 0111 0100 1001 0100
- {DXR, "EA,BC" }, // 95: 0111 0100 1001 0101
- {DXR, "EA,DE" }, // 96: 0111 0100 1001 0110
- {DXR, "EA,HL" }, // 97: 0111 0100 1001 0111
- {ORAW, "%a" }, // 98: 0111 0100 1001 1000 oooo oooo
- { }, // 99: 0111 0100 1001 1001
- { }, // 9a: 0111 0100 1001 1010
- { }, // 9b: 0111 0100 1001 1011
- { }, // 9c: 0111 0100 1001 1100
- {DOR, "EA,BC" }, // 9d: 0111 0100 1001 1101
- {DOR, "EA,DE" }, // 9e: 0111 0100 1001 1110
- {DOR, "EA,HL" }, // 9f: 0111 0100 1001 1111
-
- {ADDNCW, "%a" }, // a0: 0111 0100 1010 0000 oooo oooo
- { }, // a1: 0111 0100 1010 0001
- { }, // a2: 0111 0100 1010 0010
- { }, // a3: 0111 0100 1010 0011
- { }, // a4: 0111 0100 1010 0100
- {DADDNC, "EA,BC" }, // a5: 0111 0100 1010 0101
- {DADDNC, "EA,DE" }, // a6: 0111 0100 1010 0110
- {DADDNC, "EA,HL" }, // a7: 0111 0100 1010 0111
- {GTAW, "%a" }, // a8: 0111 0100 1010 1000 oooo oooo
- { }, // a9: 0111 0100 1010 1001
- { }, // aa: 0111 0100 1010 1010
- { }, // ab: 0111 0100 1010 1011
- { }, // ac: 0111 0100 1010 1100
- {DGT, "EA,BC" }, // ad: 0111 0100 1010 1101
- {DGT, "EA,DE" }, // ae: 0111 0100 1010 1110
- {DGT, "EA,HL" }, // af: 0111 0100 1010 1111
- {SUBNBW, "%a" }, // b0: 0111 0100 1011 0000 oooo oooo
- { }, // b1: 0111 0100 1011 0001
- { }, // b2: 0111 0100 1011 0010
- { }, // b3: 0111 0100 1011 0011
- { }, // b4: 0111 0100 1011 0100
- {DSUBNB, "EA,BC" }, // b5: 0111 0100 1011 0101
- {DSUBNB, "EA,DE" }, // b6: 0111 0100 1011 0110
- {DSUBNB, "EA,HL" }, // b7: 0111 0100 1011 0111
- {LTAW, "%a" }, // b8: 0111 0100 1011 1000 oooo oooo
- { }, // b9: 0111 0100 1011 1001
- { }, // ba: 0111 0100 1011 1010
- { }, // bb: 0111 0100 1011 1011
- { }, // bc: 0111 0100 1011 1100
- {DLT, "EA,BC" }, // bd: 0111 0100 1011 1101
- {DLT, "EA,DE" }, // be: 0111 0100 1011 1110
- {DLT, "EA,HL" }, // bf: 0111 0100 1011 1111
-
- {ADDW, "%a" }, // c0: 0111 0100 1100 0000 oooo oooo
- { }, // c1: 0111 0100 1100 0001
- { }, // c2: 0111 0100 1100 0010
- { }, // c3: 0111 0100 1100 0011
- { }, // c4: 0111 0100 1100 0100
- {DADD, "EA,BC" }, // c5: 0111 0100 1100 0101
- {DADD, "EA,DE" }, // c6: 0111 0100 1100 0110
- {DADD, "EA,HL" }, // c7: 0111 0100 1100 0111
- {ONAW, "%a" }, // c8: 0111 0100 1100 1000 oooo oooo
- { }, // c9: 0111 0100 1100 1001
- { }, // ca: 0111 0100 1100 1010
- { }, // cb: 0111 0100 1100 1011
- { }, // cc: 0111 0100 1100 1100
- {DON, "EA,BC" }, // cd: 0111 0100 1100 1101
- {DON, "EA,DE" }, // ce: 0111 0100 1100 1110
- {DON, "EA,HL" }, // cf: 0111 0100 1100 1111
-
- {ADCW, "%a" }, // d0: 0111 0100 1101 0000 oooo oooo
- { }, // d1: 0111 0100 1101 0001
- { }, // d2: 0111 0100 1101 0010
- { }, // d3: 0111 0100 1101 0011
- { }, // d4: 0111 0100 1101 0100
- {DADC, "EA,BC" }, // d5: 0111 0100 1101 0101
- {DADC, "EA,DE" }, // d6: 0111 0100 1101 0110
- {DADC, "EA,HL" }, // d7: 0111 0100 1101 0111
- {OFFAW, "%a" }, // d8: 0111 0100 1101 1000 oooo oooo
- { }, // d9: 0111 0100 1101 1001
- { }, // da: 0111 0100 1101 1010
- { }, // db: 0111 0100 1101 1011
- { }, // dc: 0111 0100 1101 1100
- {DOFF, "EA,BC" }, // dd: 0111 0100 1101 1101
- {DOFF, "EA,DE" }, // de: 0111 0100 1101 1110
- {DOFF, "EA,HL" }, // df: 0111 0100 1101 1111
-
- {SUBW, "%a" }, // e0: 0111 0100 1110 0000 oooo oooo
- { }, // e1: 0111 0100 1110 0001
- { }, // e2: 0111 0100 1110 0010
- { }, // e3: 0111 0100 1110 0011
- { }, // e4: 0111 0100 1110 0100
- {DSUB, "EA,BC" }, // e5: 0111 0100 1110 0101
- {DSUB, "EA,DE" }, // e6: 0111 0100 1110 0110
- {DSUB, "EA,HL" }, // e7: 0111 0100 1110 0111
- {NEAW, "%a" }, // e8: 0111 0100 1110 1000 oooo oooo
- { }, // e9: 0111 0100 1110 1001
- { }, // ea: 0111 0100 1110 1010
- { }, // eb: 0111 0100 1110 1011
- { }, // ec: 0111 0100 1110 1100
- {DNE, "EA,BC" }, // ed: 0111 0100 1110 1101
- {DNE, "EA,DE" }, // ee: 0111 0100 1110 1110
- {DNE, "EA,HL" }, // ef: 0111 0100 1110 1111
-
- {SBBW, "%a" }, // f0: 0111 0100 1111 0000 oooo oooo
- { }, // f1: 0111 0100 1111 0001
- { }, // f2: 0111 0100 1111 0010
- { }, // f3: 0111 0100 1111 0011
- { }, // f4: 0111 0100 1111 0100
- {DSBB, "EA,BC" }, // f5: 0111 0100 1111 0101
- {DSBB, "EA,DE" }, // f6: 0111 0100 1111 0110
- {DSBB, "EA,HL" }, // f7: 0111 0100 1111 0111
- {EQAW, "%a" }, // f8: 0111 0100 1111 1000 oooo oooo
- { }, // f9: 0111 0100 1111 1001
- { }, // fa: 0111 0100 1111 1010
- { }, // fb: 0111 0100 1111 1011
- { }, // fc: 0111 0100 1111 1100
- {DEQ, "EA,BC" }, // fd: 0111 0100 1111 1101
- {DEQ, "EA,DE" }, // fe: 0111 0100 1111 1110
- {DEQ, "EA,HL" } // ff: 0111 0100 1111 1111
-};
// main opcodes
-const dasm_s dasm_s::XX_7810[256] =
+const upd7810_base_disassembler::dasm_s upd7810_disassembler::XX_7810[256] =
{
{NOP, nullptr }, // 00: 0000 0000
{LDAW, "%a" }, // 01: 0000 0001 oooo oooo
@@ -3740,7 +2447,1107 @@ const dasm_s dasm_s::XX_7810[256] =
{JR, "%o" } // ff: 11oo oooo
};
-const dasm_s dasm_s::XX_7807[256] =
+const upd7810_base_disassembler::dasm_s upd7807_disassembler::d48_7807[256] =
+{
+ { }, // 00: 0100 1000 0000 0000
+ {SLRC, "A" }, // 01: 0100 1000 0000 0001
+ {SLRC, "B" }, // 02: 0100 1000 0000 0010
+ {SLRC, "C" }, // 03: 0100 1000 0000 0011
+ { }, // 04: 0100 1000 0000 0100
+ {SLLC, "A" }, // 05: 0100 1000 0000 0101
+ {SLLC, "B" }, // 06: 0100 1000 0000 0110
+ {SLLC, "C" }, // 07: 0100 1000 0000 0111
+ {SK, "NV" }, // 08: 0100 1000 0000 1000
+ { }, // 09: 0100 1000 0000 1001
+ {SK, "CY" }, // 0a: 0100 1000 0000 1010
+ {SK, "HC" }, // 0b: 0100 1000 0000 1011
+ {SK, "Z" }, // 0c: 0100 1000 0000 1100
+ { }, // 0d: 0100 1000 0000 1101
+ { }, // 0e: 0100 1000 0000 1110
+ { }, // 0f: 0100 1000 0000 1111
+
+ { }, // 10: 0100 1000 0001 0000
+ { }, // 11: 0100 1000 0001 0001
+ { }, // 12: 0100 1000 0001 0010
+ { }, // 13: 0100 1000 0001 0011
+ { }, // 14: 0100 1000 0001 0100
+ { }, // 15: 0100 1000 0001 0101
+ { }, // 16: 0100 1000 0001 0110
+ { }, // 17: 0100 1000 0001 0111
+ {SKN, "NV" }, // 18: 0100 1000 0001 1000
+ { }, // 19: 0100 1000 0001 1001
+ {SKN, "CY" }, // 1a: 0100 1000 0001 1010
+ {SKN, "HC" }, // 1b: 0100 1000 0001 1011
+ {SKN, "Z" }, // 1c: 0100 1000 0001 1100
+ { }, // 1d: 0100 1000 0001 1101
+ { }, // 1e: 0100 1000 0001 1110
+ { }, // 1f: 0100 1000 0001 1111
+
+ { }, // 20: 0100 1000 0010 0000
+ {SLR, "A" }, // 21: 0100 1000 0010 0001
+ {SLR, "B" }, // 22: 0100 1000 0010 0010
+ {SLR, "C" }, // 23: 0100 1000 0010 0011
+ { }, // 24: 0100 1000 0010 0100
+ {SLL, "A" }, // 25: 0100 1000 0010 0101
+ {SLL, "B" }, // 26: 0100 1000 0010 0110
+ {SLL, "C" }, // 27: 0100 1000 0010 0111
+ {JEA, nullptr }, // 28: 0100 1000 0010 1000
+ {CALB, nullptr }, // 29: 0100 1000 0010 1001
+ {CLC, nullptr }, // 2a: 0100 1000 0010 1010
+ {STC, nullptr }, // 2b: 0100 1000 0010 1011
+ { }, // 2c: 0100 1000 0010 1100
+ {MUL, "A" }, // 2d: 0100 1000 0010 1101
+ {MUL, "B" }, // 2e: 0100 1000 0010 1110
+ {MUL, "C" }, // 2f: 0100 1000 0010 1111
+
+ { }, // 30: 0100 1000 0011 0000
+ {RLR, "A" }, // 31: 0100 1000 0011 0001
+ {RLR, "B" }, // 32: 0100 1000 0011 0010
+ {RLR, "C" }, // 33: 0100 1000 0011 0011
+ { }, // 34: 0100 1000 0011 0100
+ {RLL, "A" }, // 35: 0100 1000 0011 0101
+ {RLL, "B" }, // 36: 0100 1000 0011 0110
+ {RLL, "C" }, // 37: 0100 1000 0011 0111
+ {RLD, nullptr }, // 38: 0100 1000 0011 1000
+ {RRD, nullptr }, // 39: 0100 1000 0011 1001
+ {NEGA, nullptr }, // 3a: 0100 1000 0011 1010
+ {HALT, nullptr }, // 3b: 0100 1000 0011 1011
+ { }, // 3c: 0100 1000 0011 1100
+ {DIV, "A" }, // 3d: 0100 1000 0011 1101
+ {DIV, "B" }, // 3e: 0100 1000 0011 1110
+ {DIV, "C" }, // 3f: 0100 1000 0011 1111
+
+ {SKIT, "NMI" }, // 40: 0100 1000 0100 0000
+ {SKIT, "FT0" }, // 41: 0100 1000 0100 0001
+ {SKIT, "FT1" }, // 42: 0100 1000 0100 0010
+ {SKIT, "F1" }, // 43: 0100 1000 0100 0011
+ {SKIT, "F2" }, // 44: 0100 1000 0100 0100
+ {SKIT, "FE0" }, // 45: 0100 1000 0100 0101
+ {SKIT, "FE1" }, // 46: 0100 1000 0100 0110
+ {SKIT, "FEIN" }, // 47: 0100 1000 0100 0111
+ {SKIT, "FAD" }, // 48: 0100 1000 0100 1000
+ {SKIT, "FSR" }, // 49: 0100 1000 0100 1001
+ {SKIT, "FST" }, // 4a: 0100 1000 0100 1010
+ {SKIT, "ER" }, // 4b: 0100 1000 0100 1011
+ {SKIT, "OV" }, // 4c: 0100 1000 0100 1100
+ { }, // 4d: 0100 1000 0100 1101
+ { }, // 4e: 0100 1000 0100 1110
+ { }, // 4f: 0100 1000 0100 1111
+
+ {SKIT, "AN4" }, // 50: 0100 1000 0101 0000
+ {SKIT, "AN5" }, // 51: 0100 1000 0101 0001
+ {SKIT, "AN6" }, // 52: 0100 1000 0101 0010
+ {SKIT, "AN7" }, // 53: 0100 1000 0101 0011
+ {SKIT, "SB" }, // 54: 0100 1000 0101 0100
+ { }, // 55: 0100 1000 0101 0101
+ { }, // 56: 0100 1000 0101 0110
+ { }, // 57: 0100 1000 0101 0111
+ { }, // 58: 0100 1000 0101 1000
+ { }, // 59: 0100 1000 0101 1001
+ { }, // 5a: 0100 1000 0101 1010
+ { }, // 5b: 0100 1000 0101 1011
+ { }, // 5c: 0100 1000 0101 1100
+ { }, // 5d: 0100 1000 0101 1101
+ { }, // 5e: 0100 1000 0101 1110
+ { }, // 5f: 0100 1000 0101 1111
+
+ {SKNIT, "NMI" }, // 60: 0100 1000 0110 0000
+ {SKNIT, "FT0" }, // 61: 0100 1000 0110 0001
+ {SKNIT, "FT1" }, // 62: 0100 1000 0110 0010
+ {SKNIT, "F1" }, // 63: 0100 1000 0110 0011
+ {SKNIT, "F2" }, // 64: 0100 1000 0110 0100
+ {SKNIT, "FE0" }, // 65: 0100 1000 0110 0101
+ {SKNIT, "FE1" }, // 66: 0100 1000 0110 0110
+ {SKNIT, "FEIN" }, // 67: 0100 1000 0110 0111
+ {SKNIT, "FAD" }, // 68: 0100 1000 0110 1000
+ {SKNIT, "FSR" }, // 69: 0100 1000 0110 1001
+ {SKNIT, "FST" }, // 6a: 0100 1000 0110 1010
+ {SKNIT, "ER" }, // 6b: 0100 1000 0110 1011
+ {SKNIT, "OV" }, // 6c: 0100 1000 0110 1100
+ { }, // 6d: 0100 1000 0110 1101
+ { }, // 6e: 0100 1000 0110 1110
+ { }, // 6f: 0100 1000 0110 1111
+
+ {SKNIT, "AN4" }, // 70: 0100 1000 0111 0000
+ {SKNIT, "AN5" }, // 71: 0100 1000 0111 0001
+ {SKNIT, "AN6" }, // 72: 0100 1000 0111 0010
+ {SKNIT, "AN7" }, // 73: 0100 1000 0111 0011
+ {SKNIT, "SB" }, // 74: 0100 1000 0111 0100
+ { }, // 75: 0100 1000 0111 0101
+ { }, // 76: 0100 1000 0111 0110
+ { }, // 77: 0100 1000 0111 0111
+ { }, // 78: 0100 1000 0111 1000
+ { }, // 79: 0100 1000 0111 1001
+ { }, // 7a: 0100 1000 0111 1010
+ { }, // 7b: 0100 1000 0111 1011
+ { }, // 7c: 0100 1000 0111 1100
+ { }, // 7d: 0100 1000 0111 1101
+ { }, // 7e: 0100 1000 0111 1110
+ { }, // 7f: 0100 1000 0111 1111
+
+ { }, // 80: 0100 1000 1000 0000
+ { }, // 81: 0100 1000 1000 0001
+ {LDEAX, "(DE)" }, // 82: 0100 1000 1000 0010
+ {LDEAX, "(HL)" }, // 83: 0100 1000 1000 0011
+ {LDEAX, "(DE++)" }, // 84: 0100 1000 1000 0100
+ {LDEAX, "(HL++)" }, // 85: 0100 1000 1000 0101
+ { }, // 86: 0100 1000 1000 0110
+ { }, // 87: 0100 1000 1000 0111
+ { }, // 88: 0100 1000 1000 1000
+ { }, // 89: 0100 1000 1000 1001
+ { }, // 8a: 0100 1000 1000 1010
+ {LDEAX, "(DE+%b)" }, // 8b: 0100 1000 1000 1011 xxxx xxxx
+ {LDEAX, "(HL+A)" }, // 8c: 0100 1000 1000 1100
+ {LDEAX, "(HL+B)" }, // 8d: 0100 1000 1000 1101
+ {LDEAX, "(HL+EA)" }, // 8e: 0100 1000 1000 1110
+ {LDEAX, "(HL+%b)" }, // 8f: 0100 1000 1000 1111 xxxx xxxx
+
+ { }, // 90: 0100 1000 1000 0000
+ { }, // 91: 0100 1000 1000 0001
+ {STEAX, "(DE)" }, // 92: 0100 1000 1000 0010
+ {STEAX, "(HL)" }, // 93: 0100 1000 1000 0011
+ {STEAX, "(DE++)" }, // 94: 0100 1000 1000 0100
+ {STEAX, "(HL++)" }, // 95: 0100 1000 1000 0101
+ { }, // 96: 0100 1000 1000 0110
+ { }, // 97: 0100 1000 1000 0111
+ { }, // 98: 0100 1000 1000 1000
+ { }, // 99: 0100 1000 1000 1001
+ { }, // 9a: 0100 1000 1000 1010
+ {STEAX, "(DE+%b)" }, // 9b: 0100 1000 1000 1011 xxxx xxxx
+ {STEAX, "(HL+A)" }, // 9c: 0100 1000 1000 1100
+ {STEAX, "(HL+B)" }, // 9d: 0100 1000 1000 1101
+ {STEAX, "(HL+EA)" }, // 9e: 0100 1000 1000 1110
+ {STEAX, "(HL+%b)" }, // 9f: 0100 1000 1000 1111 xxxx xxxx
+
+ {DSLR, "EA" }, // a0: 0100 1000 1010 0000
+ { }, // a1: 0100 1000 1010 0001
+ { }, // a2: 0100 1000 1010 0010
+ { }, // a3: 0100 1000 1010 0011
+ {DSLL, "EA" }, // a4: 0100 1000 1010 0100
+ { }, // a5: 0100 1000 1010 0101
+ { }, // a6: 0100 1000 1010 0110
+ { }, // a7: 0100 1000 1010 0111
+ {TABLE, nullptr }, // a8: 0100 1000 1010 1000
+ { }, // a9: 0100 1000 1010 1001
+ {CMC, nullptr }, // aa: 0100 1000 1010 1010 7807
+ { }, // ab: 0100 1000 1010 1011
+ {EXA, nullptr }, // ac: 0100 1000 1010 1100 7807
+ {EXR, nullptr }, // ad: 0100 1000 1010 1101 7807
+ {EXH, nullptr }, // ae: 0100 1000 1010 1110 7807
+ {EXX, nullptr }, // af: 0100 1000 1010 1111 7807
+
+ {DRLR, "EA" }, // b0: 0100 1000 1011 0000
+ { }, // b1: 0100 1000 1011 0001
+ { }, // b2: 0100 1000 1011 0010
+ { }, // b3: 0100 1000 1011 0011
+ {DRLL, "EA" }, // b4: 0100 1000 1011 0100
+ { }, // b5: 0100 1000 1011 0101
+ { }, // b6: 0100 1000 1011 0110
+ { }, // b7: 0100 1000 1011 0111
+ { }, // b8: 0100 1000 1011 1000
+ { }, // b9: 0100 1000 1011 1001
+ { }, // ba: 0100 1000 1011 1010
+ { }, // bb: 0100 1000 1011 1011
+ { }, // bc: 0100 1000 1011 1100
+ { }, // bd: 0100 1000 1011 1101
+ { }, // be: 0100 1000 1011 1110
+ { }, // bf: 0100 1000 1011 1111
+
+ {DMOV, "EA,ECNT" }, // c0: 0100 1000 1100 0000
+ {DMOV, "EA,ECPT0"}, // c1: 0100 1000 1100 0001 7807
+ {DMOV, "EA,ECPT1"}, // c2: 0100 1000 1100 0010 7807
+ { }, // c3: 0100 1000 1100 0011
+ { }, // c4: 0100 1000 1100 0100
+ { }, // c5: 0100 1000 1100 0101
+ { }, // c6: 0100 1000 1100 0110
+ { }, // c7: 0100 1000 1100 0111
+ { }, // c8: 0100 1000 1100 1000
+ { }, // c9: 0100 1000 1100 1001
+ { }, // ca: 0100 1000 1100 1010
+ { }, // cb: 0100 1000 1100 1011
+ { }, // cc: 0100 1000 1100 1100
+ { }, // cd: 0100 1000 1100 1101
+ { }, // ce: 0100 1000 1100 1110
+ { }, // cf: 0100 1000 1100 1111
+
+ { }, // d0: 0100 1000 1101 0000
+ { }, // d1: 0100 1000 1101 0001
+ {DMOV, "ETM0,EA" }, // d2: 0100 1000 1101 0010
+ {DMOV, "ETM1,EA" }, // d3: 0100 1000 1101 0011
+ { }, // d4: 0100 1000 1101 0100
+ { }, // d5: 0100 1000 1101 0101
+ { }, // d6: 0100 1000 1101 0110
+ { }, // d7: 0100 1000 1101 0111
+ { }, // d8: 0100 1000 1101 1000
+ { }, // d9: 0100 1000 1101 1001
+ { }, // da: 0100 1000 1101 1010
+ { }, // db: 0100 1000 1101 1011
+ { }, // dc: 0100 1000 1101 1100
+ { }, // dd: 0100 1000 1101 1101
+ { }, // de: 0100 1000 1101 1110
+ { }, // df: 0100 1000 1101 1111
+
+ { }, // e0: 0100 1000 1110 0000
+ { }, // e1: 0100 1000 1110 0001
+ { }, // e2: 0100 1000 1110 0010
+ { }, // e3: 0100 1000 1110 0011
+ { }, // e4: 0100 1000 1110 0100
+ { }, // e5: 0100 1000 1110 0101
+ { }, // e6: 0100 1000 1110 0110
+ { }, // e7: 0100 1000 1110 0111
+ { }, // e8: 0100 1000 1110 1000
+ { }, // e9: 0100 1000 1110 1001
+ { }, // ea: 0100 1000 1110 1010
+ { }, // eb: 0100 1000 1110 1011
+ { }, // ec: 0100 1000 1110 1100
+ { }, // ed: 0100 1000 1110 1101
+ { }, // ee: 0100 1000 1110 1110
+ { }, // ef: 0100 1000 1110 1111
+
+ { }, // f0: 0100 1000 1111 0000
+ { }, // f1: 0100 1000 1111 0001
+ { }, // f2: 0100 1000 1111 0010
+ { }, // f3: 0100 1000 1111 0011
+ { }, // f4: 0100 1000 1111 0100
+ { }, // f5: 0100 1000 1111 0101
+ { }, // f6: 0100 1000 1111 0110
+ { }, // f7: 0100 1000 1111 0111
+ { }, // f8: 0100 1000 1111 1000
+ { }, // f9: 0100 1000 1111 1001
+ { }, // fa: 0100 1000 1111 1010
+ { }, // fb: 0100 1000 1111 1011
+ { }, // fc: 0100 1000 1111 1100
+ { }, // fd: 0100 1000 1111 1101
+ { }, // fe: 0100 1000 1111 1110
+ { } // ff: 0100 1000 1111 1111
+};
+
+const upd7810_base_disassembler::dasm_s upd7807_disassembler::d4C_7807[256] =
+{
+ { }, // 00: 0100 1100 0000 0000
+ { }, // 01: 0100 1100 0000 0001
+ { }, // 02: 0100 1100 0000 0010
+ { }, // 03: 0100 1100 0000 0011
+ { }, // 04: 0100 1100 0000 0100
+ { }, // 05: 0100 1100 0000 0101
+ { }, // 06: 0100 1100 0000 0110
+ { }, // 07: 0100 1100 0000 0111
+ { }, // 08: 0100 1100 0000 1000
+ { }, // 09: 0100 1100 0000 1001
+ { }, // 0a: 0100 1100 0000 1010
+ { }, // 0b: 0100 1100 0000 1011
+ { }, // 0c: 0100 1100 0000 1100
+ { }, // 0d: 0100 1100 0000 1101
+ { }, // 0e: 0100 1100 0000 1110
+ { }, // 0f: 0100 1100 0000 1111
+
+ { }, // 10: 0100 1100 0001 0000
+ { }, // 11: 0100 1100 0001 0001
+ { }, // 12: 0100 1100 0001 0010
+ { }, // 13: 0100 1100 0001 0011
+ { }, // 14: 0100 1100 0001 0100
+ { }, // 15: 0100 1100 0001 0101
+ { }, // 16: 0100 1100 0001 0110
+ { }, // 17: 0100 1100 0001 0111
+ { }, // 18: 0100 1100 0001 1000
+ { }, // 19: 0100 1100 0001 1001
+ { }, // 1a: 0100 1100 0001 1010
+ { }, // 1b: 0100 1100 0001 1011
+ { }, // 1c: 0100 1100 0001 1100
+ { }, // 1d: 0100 1100 0001 1101
+ { }, // 1e: 0100 1100 0001 1110
+ { }, // 1f: 0100 1100 0001 1111
+
+ { }, // 20: 0100 1100 0010 0000
+ { }, // 21: 0100 1100 0010 0001
+ { }, // 22: 0100 1100 0010 0010
+ { }, // 23: 0100 1100 0010 0011
+ { }, // 24: 0100 1100 0010 0100
+ { }, // 25: 0100 1100 0010 0101
+ { }, // 26: 0100 1100 0010 0110
+ { }, // 27: 0100 1100 0010 0111
+ { }, // 28: 0100 1100 0010 1000
+ { }, // 29: 0100 1100 0010 1001
+ { }, // 2a: 0100 1100 0010 1010
+ { }, // 2b: 0100 1100 0010 1011
+ { }, // 2c: 0100 1100 0010 1100
+ { }, // 2d: 0100 1100 0010 1101
+ { }, // 2e: 0100 1100 0010 1110
+ { }, // 2f: 0100 1100 0010 1111
+
+ { }, // 30: 0100 1100 0011 0000
+ { }, // 31: 0100 1100 0011 0001
+ { }, // 32: 0100 1100 0011 0010
+ { }, // 33: 0100 1100 0011 0011
+ { }, // 34: 0100 1100 0011 0100
+ { }, // 35: 0100 1100 0011 0101
+ { }, // 36: 0100 1100 0011 0110
+ { }, // 37: 0100 1100 0011 0111
+ { }, // 38: 0100 1100 0011 1000
+ { }, // 39: 0100 1100 0011 1001
+ { }, // 3a: 0100 1100 0011 1010
+ { }, // 3b: 0100 1100 0011 1011
+ { }, // 3c: 0100 1100 0011 1100
+ { }, // 3d: 0100 1100 0011 1101
+ { }, // 3e: 0100 1100 0011 1110
+ { }, // 3f: 0100 1100 0011 1111
+
+ { }, // 40: 0100 1100 0100 0000
+ { }, // 41: 0100 1100 0100 0001
+ { }, // 42: 0100 1100 0100 0010
+ { }, // 43: 0100 1100 0100 0011
+ { }, // 44: 0100 1100 0100 0100
+ { }, // 45: 0100 1100 0100 0101
+ { }, // 46: 0100 1100 0100 0110
+ { }, // 47: 0100 1100 0100 0111
+ { }, // 48: 0100 1100 0100 1000
+ { }, // 49: 0100 1100 0100 1001
+ { }, // 4a: 0100 1100 0100 1010
+ { }, // 4b: 0100 1100 0100 1011
+ { }, // 4c: 0100 1100 0100 1100
+ { }, // 4d: 0100 1100 0100 1101
+ { }, // 4e: 0100 1100 0100 1110
+ { }, // 4f: 0100 1100 0100 1111
+
+ { }, // 50: 0100 1100 0101 0000
+ { }, // 51: 0100 1100 0101 0001
+ { }, // 52: 0100 1100 0101 0010
+ { }, // 53: 0100 1100 0101 0011
+ { }, // 54: 0100 1100 0101 0100
+ { }, // 55: 0100 1100 0101 0101
+ { }, // 56: 0100 1100 0101 0110
+ { }, // 57: 0100 1100 0101 0111
+ { }, // 58: 0100 1100 0101 1000
+ { }, // 59: 0100 1100 0101 1001
+ { }, // 5a: 0100 1100 0101 1010
+ { }, // 5b: 0100 1100 0101 1011
+ { }, // 5c: 0100 1100 0101 1100
+ { }, // 5d: 0100 1100 0101 1101
+ { }, // 5e: 0100 1100 0101 1110
+ { }, // 5f: 0100 1100 0101 1111
+
+ { }, // 60: 0100 1100 0110 0000
+ { }, // 61: 0100 1100 0110 0001
+ { }, // 62: 0100 1100 0110 0010
+ { }, // 63: 0100 1100 0110 0011
+ { }, // 64: 0100 1100 0110 0100
+ { }, // 65: 0100 1100 0110 0101
+ { }, // 66: 0100 1100 0110 0110
+ { }, // 67: 0100 1100 0110 0111
+ { }, // 68: 0100 1100 0110 1000
+ { }, // 69: 0100 1100 0110 1001
+ { }, // 6a: 0100 1100 0110 1010
+ { }, // 6b: 0100 1100 0110 1011
+ { }, // 6c: 0100 1100 0110 1100
+ { }, // 6d: 0100 1100 0110 1101
+ { }, // 6e: 0100 1100 0110 1110
+ { }, // 6f: 0100 1100 0110 1111
+
+ { }, // 70: 0100 1100 0111 0000
+ { }, // 71: 0100 1100 0111 0001
+ { }, // 72: 0100 1100 0111 0010
+ { }, // 73: 0100 1100 0111 0011
+ { }, // 74: 0100 1100 0111 0100
+ { }, // 75: 0100 1100 0111 0101
+ { }, // 76: 0100 1100 0111 0110
+ { }, // 77: 0100 1100 0111 0111
+ { }, // 78: 0100 1100 0111 1000
+ { }, // 79: 0100 1100 0111 1001
+ { }, // 7a: 0100 1100 0111 1010
+ { }, // 7b: 0100 1100 0111 1011
+ { }, // 7c: 0100 1100 0111 1100
+ { }, // 7d: 0100 1100 0111 1101
+ { }, // 7e: 0100 1100 0111 1110
+ { }, // 7f: 0100 1100 0111 1111
+
+ { }, // 80: 0100 1100 1000 0000
+ { }, // 81: 0100 1100 1000 0001
+ { }, // 82: 0100 1100 1000 0010
+ { }, // 83: 0100 1100 1000 0011
+ { }, // 84: 0100 1100 1000 0100
+ { }, // 85: 0100 1100 1000 0101
+ { }, // 86: 0100 1100 1000 0110
+ { }, // 87: 0100 1100 1000 0111
+ { }, // 88: 0100 1100 1000 1000
+ { }, // 89: 0100 1100 1000 1001
+ { }, // 8a: 0100 1100 1000 1010
+ { }, // 8b: 0100 1100 1000 1011
+ { }, // 8c: 0100 1100 1000 1100
+ { }, // 8d: 0100 1100 1000 1101
+ { }, // 8e: 0100 1100 1000 1110
+ { }, // 8f: 0100 1100 1000 1111
+
+ { }, // 90: 0100 1100 1001 0000
+ { }, // 91: 0100 1100 1001 0001
+ { }, // 92: 0100 1100 1001 0010
+ { }, // 93: 0100 1100 1001 0011
+ { }, // 94: 0100 1100 1001 0100
+ { }, // 95: 0100 1100 1001 0101
+ { }, // 96: 0100 1100 1001 0110
+ { }, // 97: 0100 1100 1001 0111
+ { }, // 98: 0100 1100 1001 1000
+ { }, // 99: 0100 1100 1001 1001
+ { }, // 9a: 0100 1100 1001 1010
+ { }, // 9b: 0100 1100 1001 1011
+ { }, // 9c: 0100 1100 1001 1100
+ { }, // 9d: 0100 1100 1001 1101
+ { }, // 9e: 0100 1100 1001 1110
+ { }, // 9f: 0100 1100 1001 1111
+
+ { }, // a0: 0100 1100 1010 0000
+ { }, // a1: 0100 1100 1010 0001
+ { }, // a2: 0100 1100 1010 0010
+ { }, // a3: 0100 1100 1010 0011
+ { }, // a4: 0100 1100 1010 0100
+ { }, // a5: 0100 1100 1010 0101
+ { }, // a6: 0100 1100 1010 0110
+ { }, // a7: 0100 1100 1010 0111
+ { }, // a8: 0100 1100 1010 1000
+ { }, // a9: 0100 1100 1010 1001
+ { }, // aa: 0100 1100 1010 1010
+ { }, // ab: 0100 1100 1010 1011
+ { }, // ac: 0100 1100 1010 1100
+ { }, // ad: 0100 1100 1010 1101
+ { }, // ae: 0100 1100 1010 1110
+ { }, // af: 0100 1100 1010 1111
+
+ { }, // b0: 0100 1100 1011 0000
+ { }, // b1: 0100 1100 1011 0001
+ { }, // b2: 0100 1100 1011 0010
+ { }, // b3: 0100 1100 1011 0011
+ { }, // b4: 0100 1100 1011 0100
+ { }, // b5: 0100 1100 1011 0101
+ { }, // b6: 0100 1100 1011 0110
+ { }, // b7: 0100 1100 1011 0111
+ { }, // b8: 0100 1100 1011 1000
+ { }, // b9: 0100 1100 1011 1001
+ { }, // ba: 0100 1100 1011 1010
+ { }, // bb: 0100 1100 1011 1011
+ { }, // bc: 0100 1100 1011 1100
+ { }, // bd: 0100 1100 1011 1101
+ { }, // be: 0100 1100 1011 1110
+ { }, // bf: 0100 1100 1011 1111
+
+ {MOV, "A,PA" }, // c0: 0100 1100 1100 0000
+ {MOV, "A,PB" }, // c1: 0100 1100 1100 0001
+ {MOV, "A,PC" }, // c2: 0100 1100 1100 0010
+ {MOV, "A,PD" }, // c3: 0100 1100 1100 0011
+ { }, // c4: 0100 1100 1100 0100
+ {MOV, "A,PF" }, // c5: 0100 1100 1100 0101
+ {MOV, "A,MKH" }, // c6: 0100 1100 1100 0110
+ {MOV, "A,MKL" }, // c7: 0100 1100 1100 0111
+ { }, // c8: 0100 1100 1100 1000
+ {MOV, "A,SMH" }, // c9: 0100 1100 1100 1001
+ { }, // ca: 0100 1100 1100 1010
+ {MOV, "A,EOM" }, // cb: 0100 1100 1100 1011
+ { }, // cc: 0100 1100 1100 1100
+ {MOV, "A,TMM" }, // cd: 0100 1100 1100 1101
+ {MOV, "A,PT" }, // ce: 0100 1100 1100 1110 7807
+ { }, // cf: 0100 1100 1100 1111
+
+ { }, // d0: 0100 1100 1101 0000
+ { }, // d1: 0100 1100 1101 0001
+ { }, // d2: 0100 1100 1101 0010
+ { }, // d3: 0100 1100 1101 0011
+ { }, // d4: 0100 1100 1101 0100
+ { }, // d5: 0100 1100 1101 0101
+ { }, // d6: 0100 1100 1101 0110
+ { }, // d7: 0100 1100 1101 0111
+ { }, // d8: 0100 1100 1101 1000
+ {MOV, "A,RXB" }, // d9: 0100 1100 1101 1001
+ { }, // da: 0100 1100 1101 1010
+ { }, // db: 0100 1100 1101 1011
+ { }, // dc: 0100 1100 1101 1100
+ { }, // dd: 0100 1100 1101 1101
+ { }, // de: 0100 1100 1101 1110
+ { }, // df: 0100 1100 1101 1111
+
+ { }, // e0: 0100 1100 1110 0000
+ { }, // e1: 0100 1100 1110 0001
+ { }, // e2: 0100 1100 1110 0010
+ { }, // e3: 0100 1100 1110 0011
+ { }, // e4: 0100 1100 1110 0100
+ { }, // e5: 0100 1100 1110 0101
+ { }, // e6: 0100 1100 1110 0110
+ { }, // e7: 0100 1100 1110 0111
+ { }, // e8: 0100 1100 1110 1000
+ { }, // e9: 0100 1100 1110 1001
+ { }, // ea: 0100 1100 1110 1010
+ { }, // eb: 0100 1100 1110 1011
+ { }, // ec: 0100 1100 1110 1100
+ { }, // ed: 0100 1100 1110 1101
+ { }, // ee: 0100 1100 1110 1110
+ { }, // ef: 0100 1100 1110 1111
+
+ { }, // f0: 0100 1100 1111 0000
+ { }, // f1: 0100 1100 1111 0001
+ { }, // f2: 0100 1100 1111 0010
+ { }, // f3: 0100 1100 1111 0011
+ { }, // f4: 0100 1100 1111 0100
+ { }, // f5: 0100 1100 1111 0101
+ { }, // f6: 0100 1100 1111 0110
+ { }, // f7: 0100 1100 1111 0111
+ { }, // f8: 0100 1100 1111 1000
+ { }, // f9: 0100 1100 1111 1001
+ { }, // fa: 0100 1100 1111 1010
+ { }, // fb: 0100 1100 1111 1011
+ { }, // fc: 0100 1100 1111 1100
+ { }, // fd: 0100 1100 1111 1101
+ { }, // fe: 0100 1100 1111 1110
+ { } // ff: 0100 1100 1111 1111
+};
+
+const upd7810_base_disassembler::dasm_s upd7807_disassembler::d4D_7807[256] =
+{
+ { }, // 00: 0100 1101 0000 0000
+ { }, // 01: 0100 1101 0000 0001
+ { }, // 02: 0100 1101 0000 0010
+ { }, // 03: 0100 1101 0000 0011
+ { }, // 04: 0100 1101 0000 0100
+ { }, // 05: 0100 1101 0000 0101
+ { }, // 06: 0100 1101 0000 0110
+ { }, // 07: 0100 1101 0000 0111
+ { }, // 08: 0100 1101 0000 1000
+ { }, // 09: 0100 1101 0000 1001
+ { }, // 0a: 0100 1101 0000 1010
+ { }, // 0b: 0100 1101 0000 1011
+ { }, // 0c: 0100 1101 0000 1100
+ { }, // 0d: 0100 1101 0000 1101
+ { }, // 0e: 0100 1101 0000 1110
+ { }, // 0f: 0100 1101 0000 1111
+
+ { }, // 10: 0100 1101 0001 0000
+ { }, // 11: 0100 1101 0001 0001
+ { }, // 12: 0100 1101 0001 0010
+ { }, // 13: 0100 1101 0001 0011
+ { }, // 14: 0100 1101 0001 0100
+ { }, // 15: 0100 1101 0001 0101
+ { }, // 16: 0100 1101 0001 0110
+ { }, // 17: 0100 1101 0001 0111
+ { }, // 18: 0100 1101 0001 1000
+ { }, // 19: 0100 1101 0001 1001
+ { }, // 1a: 0100 1101 0001 1010
+ { }, // 1b: 0100 1101 0001 1011
+ { }, // 1c: 0100 1101 0001 1100
+ { }, // 1d: 0100 1101 0001 1101
+ { }, // 1e: 0100 1101 0001 1110
+ { }, // 1f: 0100 1101 0001 1111
+
+ { }, // 20: 0100 1101 0010 0000
+ { }, // 21: 0100 1101 0010 0001
+ { }, // 22: 0100 1101 0010 0010
+ { }, // 23: 0100 1101 0010 0011
+ { }, // 24: 0100 1101 0010 0100
+ { }, // 25: 0100 1101 0010 0101
+ { }, // 26: 0100 1101 0010 0110
+ { }, // 27: 0100 1101 0010 0111
+ { }, // 28: 0100 1101 0010 1000
+ { }, // 29: 0100 1101 0010 1001
+ { }, // 2a: 0100 1101 0010 1010
+ { }, // 2b: 0100 1101 0010 1011
+ { }, // 2c: 0100 1101 0010 1100
+ { }, // 2d: 0100 1101 0010 1101
+ { }, // 2e: 0100 1101 0010 1110
+ { }, // 2f: 0100 1101 0010 1111
+
+ { }, // 30: 0100 1101 0011 0000
+ { }, // 31: 0100 1101 0011 0001
+ { }, // 32: 0100 1101 0011 0010
+ { }, // 33: 0100 1101 0011 0011
+ { }, // 34: 0100 1101 0011 0100
+ { }, // 35: 0100 1101 0011 0101
+ { }, // 36: 0100 1101 0011 0110
+ { }, // 37: 0100 1101 0011 0111
+ { }, // 38: 0100 1101 0011 1000
+ { }, // 39: 0100 1101 0011 1001
+ { }, // 3a: 0100 1101 0011 1010
+ { }, // 3b: 0100 1101 0011 1011
+ { }, // 3c: 0100 1101 0011 1100
+ { }, // 3d: 0100 1101 0011 1101
+ { }, // 3e: 0100 1101 0011 1110
+ { }, // 3f: 0100 1101 0011 1111
+
+ { }, // 40: 0100 1101 0100 0000
+ { }, // 41: 0100 1101 0100 0001
+ { }, // 42: 0100 1101 0100 0010
+ { }, // 43: 0100 1101 0100 0011
+ { }, // 44: 0100 1101 0100 0100
+ { }, // 45: 0100 1101 0100 0101
+ { }, // 46: 0100 1101 0100 0110
+ { }, // 47: 0100 1101 0100 0111
+ { }, // 48: 0100 1101 0100 1000
+ { }, // 49: 0100 1101 0100 1001
+ { }, // 4a: 0100 1101 0100 1010
+ { }, // 4b: 0100 1101 0100 1011
+ { }, // 4c: 0100 1101 0100 1100
+ { }, // 4d: 0100 1101 0100 1101
+ { }, // 4e: 0100 1101 0100 1110
+ { }, // 4f: 0100 1101 0100 1111
+
+ { }, // 50: 0100 1101 0101 0000
+ { }, // 51: 0100 1101 0101 0001
+ { }, // 52: 0100 1101 0101 0010
+ { }, // 53: 0100 1101 0101 0011
+ { }, // 54: 0100 1101 0101 0100
+ { }, // 55: 0100 1101 0101 0101
+ { }, // 56: 0100 1101 0101 0110
+ { }, // 57: 0100 1101 0101 0111
+ { }, // 58: 0100 1101 0101 1000
+ { }, // 59: 0100 1101 0101 1001
+ { }, // 5a: 0100 1101 0101 1010
+ { }, // 5b: 0100 1101 0101 1011
+ { }, // 5c: 0100 1101 0101 1100
+ { }, // 5d: 0100 1101 0101 1101
+ { }, // 5e: 0100 1101 0101 1110
+ { }, // 5f: 0100 1101 0101 1111
+
+ { }, // 60: 0100 1101 0110 0000
+ { }, // 61: 0100 1101 0110 0001
+ { }, // 62: 0100 1101 0110 0010
+ { }, // 63: 0100 1101 0110 0011
+ { }, // 64: 0100 1101 0110 0100
+ { }, // 65: 0100 1101 0110 0101
+ { }, // 66: 0100 1101 0110 0110
+ { }, // 67: 0100 1101 0110 0111
+ { }, // 68: 0100 1101 0110 1000
+ { }, // 69: 0100 1101 0110 1001
+ { }, // 6a: 0100 1101 0110 1010
+ { }, // 6b: 0100 1101 0110 1011
+ { }, // 6c: 0100 1101 0110 1100
+ { }, // 6d: 0100 1101 0110 1101
+ { }, // 6e: 0100 1101 0110 1110
+ { }, // 6f: 0100 1101 0110 1111
+
+ { }, // 70: 0100 1101 0111 0000
+ { }, // 71: 0100 1101 0111 0001
+ { }, // 72: 0100 1101 0111 0010
+ { }, // 73: 0100 1101 0111 0011
+ { }, // 74: 0100 1101 0111 0100
+ { }, // 75: 0100 1101 0111 0101
+ { }, // 76: 0100 1101 0111 0110
+ { }, // 77: 0100 1101 0111 0111
+ { }, // 78: 0100 1101 0111 1000
+ { }, // 79: 0100 1101 0111 1001
+ { }, // 7a: 0100 1101 0111 1010
+ { }, // 7b: 0100 1101 0111 1011
+ { }, // 7c: 0100 1101 0111 1100
+ { }, // 7d: 0100 1101 0111 1101
+ { }, // 7e: 0100 1101 0111 1110
+ { }, // 7f: 0100 1101 0111 1111
+
+ { }, // 80: 0100 1101 1000 0000
+ { }, // 81: 0100 1101 1000 0001
+ { }, // 82: 0100 1101 1000 0010
+ { }, // 83: 0100 1101 1000 0011
+ { }, // 84: 0100 1101 1000 0100
+ { }, // 85: 0100 1101 1000 0101
+ { }, // 86: 0100 1101 1000 0110
+ { }, // 87: 0100 1101 1000 0111
+ { }, // 88: 0100 1101 1000 1000
+ { }, // 89: 0100 1101 1000 1001
+ { }, // 8a: 0100 1101 1000 1010
+ { }, // 8b: 0100 1101 1000 1011
+ { }, // 8c: 0100 1101 1000 1100
+ { }, // 8d: 0100 1101 1000 1101
+ { }, // 8e: 0100 1101 1000 1110
+ { }, // 8f: 0100 1101 1000 1111
+
+ { }, // 90: 0100 1101 1001 0000
+ { }, // 91: 0100 1101 1001 0001
+ { }, // 92: 0100 1101 1001 0010
+ { }, // 93: 0100 1101 1001 0011
+ { }, // 94: 0100 1101 1001 0100
+ { }, // 95: 0100 1101 1001 0101
+ { }, // 96: 0100 1101 1001 0110
+ { }, // 97: 0100 1101 1001 0111
+ { }, // 98: 0100 1101 1001 1000
+ { }, // 99: 0100 1101 1001 1001
+ { }, // 9a: 0100 1101 1001 1010
+ { }, // 9b: 0100 1101 1001 1011
+ { }, // 9c: 0100 1101 1001 1100
+ { }, // 9d: 0100 1101 1001 1101
+ { }, // 9e: 0100 1101 1001 1110
+ { }, // 9f: 0100 1101 1001 1111
+
+ { }, // a0: 0100 1101 1010 0000
+ { }, // a1: 0100 1101 1010 0001
+ { }, // a2: 0100 1101 1010 0010
+ { }, // a3: 0100 1101 1010 0011
+ { }, // a4: 0100 1101 1010 0100
+ { }, // a5: 0100 1101 1010 0101
+ { }, // a6: 0100 1101 1010 0110
+ { }, // a7: 0100 1101 1010 0111
+ { }, // a8: 0100 1101 1010 1000
+ { }, // a9: 0100 1101 1010 1001
+ { }, // aa: 0100 1101 1010 1010
+ { }, // ab: 0100 1101 1010 1011
+ { }, // ac: 0100 1101 1010 1100
+ { }, // ad: 0100 1101 1010 1101
+ { }, // ae: 0100 1101 1010 1110
+ { }, // af: 0100 1101 1010 1111
+
+ { }, // b0: 0100 1101 1011 0000
+ { }, // b1: 0100 1101 1011 0001
+ { }, // b2: 0100 1101 1011 0010
+ { }, // b3: 0100 1101 1011 0011
+ { }, // b4: 0100 1101 1011 0100
+ { }, // b5: 0100 1101 1011 0101
+ { }, // b6: 0100 1101 1011 0110
+ { }, // b7: 0100 1101 1011 0111
+ { }, // b8: 0100 1101 1011 1000
+ { }, // b9: 0100 1101 1011 1001
+ { }, // ba: 0100 1101 1011 1010
+ { }, // bb: 0100 1101 1011 1011
+ { }, // bc: 0100 1101 1011 1100
+ { }, // bd: 0100 1101 1011 1101
+ { }, // be: 0100 1101 1011 1110
+ { }, // bf: 0100 1101 1011 1111
+
+ {MOV, "PA,A" }, // c0: 0100 1101 1100 0000
+ {MOV, "PB,A" }, // c1: 0100 1101 1100 0001
+ {MOV, "PC,A" }, // c2: 0100 1101 1100 0010
+ {MOV, "PD,A" }, // c3: 0100 1101 1100 0011
+ { }, // c4: 0100 1101 1100 0100
+ {MOV, "PF,A" }, // c5: 0100 1101 1100 0101
+ {MOV, "MKH,A" }, // c6: 0100 1101 1100 0110
+ {MOV, "MKL,A" }, // c7: 0100 1101 1100 0111
+ { }, // c8: 0100 1101 1100 1000
+ {MOV, "SMH,A" }, // c9: 0100 1101 1100 1001
+ {MOV, "SML,A" }, // ca: 0100 1101 1100 1010
+ {MOV, "EOM,A" }, // cb: 0100 1101 1100 1011
+ {MOV, "ETMM,A" }, // cc: 0100 1101 1100 1100
+ {MOV, "TMM,A" }, // cd: 0100 1101 1100 1101
+ { }, // ce: 0100 1101 1100 1110
+ { }, // cf: 0100 1101 1100 1111
+
+ {MOV, "MM,A" }, // d0: 0100 1101 1101 0000
+ {MOV, "MCC,A" }, // d1: 0100 1101 1101 0001
+ {MOV, "MA,A" }, // d2: 0100 1101 1101 0010
+ {MOV, "MB,A" }, // d3: 0100 1101 1101 0011
+ {MOV, "MC,A" }, // d4: 0100 1101 1101 0100
+ { }, // d5: 0100 1101 1101 0101
+ { }, // d6: 0100 1101 1101 0110
+ {MOV, "MF,A" }, // d7: 0100 1101 1101 0111
+ {MOV, "TXB,A" }, // d8: 0100 1101 1101 1000
+ { }, // d9: 0100 1101 1101 1001
+ {MOV, "TM0,A" }, // da: 0100 1101 1101 1010
+ {MOV, "TM1,A" }, // db: 0100 1101 1101 1011
+ { }, // dc: 0100 1101 1101 1100
+ { }, // dd: 0100 1101 1101 1101
+ { }, // de: 0100 1101 1101 1110
+ { }, // df: 0100 1101 1101 1111
+
+ { }, // e0: 0100 1101 1110 0000
+ { }, // e1: 0100 1101 1110 0001
+ { }, // e2: 0100 1101 1110 0010
+ { }, // e3: 0100 1101 1110 0011
+ { }, // e4: 0100 1101 1110 0100
+ {MOV, "MT,A" }, // e5: 0100 1101 1110 0101 7807
+ { }, // e6: 0100 1101 1110 0110
+ { }, // e7: 0100 1101 1110 0111
+ { }, // e8: 0100 1101 1110 1000
+ { }, // e9: 0100 1101 1110 1001
+ { }, // ea: 0100 1101 1110 1010
+ { }, // eb: 0100 1101 1110 1011
+ { }, // ec: 0100 1101 1110 1100
+ { }, // ed: 0100 1101 1110 1101
+ { }, // ee: 0100 1101 1110 1110
+ { }, // ef: 0100 1101 1110 1111
+
+ { }, // f0: 0100 1101 1111 0000
+ { }, // f1: 0100 1101 1111 0001
+ { }, // f2: 0100 1101 1111 0010
+ { }, // f3: 0100 1101 1111 0011
+ { }, // f4: 0100 1101 1111 0100
+ { }, // f5: 0100 1101 1111 0101
+ { }, // f6: 0100 1101 1111 0110
+ { }, // f7: 0100 1101 1111 0111
+ { }, // f8: 0100 1101 1111 1000
+ { }, // f9: 0100 1101 1111 1001
+ { }, // fa: 0100 1101 1111 1010
+ { }, // fb: 0100 1101 1111 1011
+ { }, // fc: 0100 1101 1111 1100
+ { }, // fd: 0100 1101 1111 1101
+ { }, // fe: 0100 1101 1111 1110
+ { } // ff: 0100 1101 1111 1111
+};
+
+const upd7810_base_disassembler::dasm_s upd7807_disassembler::d64_7807[256] =
+{
+ {MVI, "PA,%b" }, // 00: 0110 0100 0000 0000 xxxx xxxx
+ {MVI, "PB,%b" }, // 01: 0110 0100 0000 0001 xxxx xxxx
+ {MVI, "PC,%b" }, // 02: 0110 0100 0000 0010 xxxx xxxx
+ {MVI, "PD,%b" }, // 03: 0110 0100 0000 0011 xxxx xxxx
+ { }, // 04: 0110 0100 0000 0100 xxxx xxxx
+ {MVI, "PF,%b" }, // 05: 0110 0100 0000 0101 xxxx xxxx
+ {MVI, "MKH,%b" }, // 06: 0110 0100 0000 0110 xxxx xxxx
+ {MVI, "MKL,%b" }, // 07: 0110 0100 0000 0111 xxxx xxxx
+ {ANI, "PA,%b" }, // 08: 0110 0100 0000 1000 xxxx xxxx
+ {ANI, "PB,%b" }, // 09: 0110 0100 0000 1001 xxxx xxxx
+ {ANI, "PC,%b" }, // 0a: 0110 0100 0000 1010 xxxx xxxx
+ {ANI, "PD,%b" }, // 0b: 0110 0100 0000 1011 xxxx xxxx
+ { }, // 0c: 0110 0100 0000 1100 xxxx xxxx
+ {ANI, "PF,%b" }, // 0d: 0110 0100 0000 1101 xxxx xxxx
+ {ANI, "MKH,%b" }, // 0e: 0110 0100 0000 1110 xxxx xxxx
+ {ANI, "MKL,%b" }, // 0f: 0110 0100 0000 1111 xxxx xxxx
+
+ {XRI, "PA,%b" }, // 10: 0110 0100 0001 0000 xxxx xxxx
+ {XRI, "PB,%b" }, // 11: 0110 0100 0001 0001 xxxx xxxx
+ {XRI, "PC,%b" }, // 12: 0110 0100 0001 0010 xxxx xxxx
+ {XRI, "PD,%b" }, // 13: 0110 0100 0001 0011 xxxx xxxx
+ { }, // 14: 0110 0100 0001 0100 xxxx xxxx
+ {XRI, "PF,%b" }, // 15: 0110 0100 0001 0101 xxxx xxxx
+ {XRI, "MKH,%b" }, // 16: 0110 0100 0001 0110 xxxx xxxx
+ {XRI, "MKL,%b" }, // 17: 0110 0100 0001 0111 xxxx xxxx
+ {ORI, "PA,%b" }, // 18: 0110 0100 0001 1000 xxxx xxxx
+ {ORI, "PB,%b" }, // 19: 0110 0100 0001 1001 xxxx xxxx
+ {ORI, "PC,%b" }, // 1a: 0110 0100 0001 1010 xxxx xxxx
+ {ORI, "PD,%b" }, // 1b: 0110 0100 0001 1011 xxxx xxxx
+ { }, // 1c: 0110 0100 0001 1100 xxxx xxxx
+ {ORI, "PF,%b" }, // 1d: 0110 0100 0001 1101 xxxx xxxx
+ {ORI, "MKH,%b" }, // 1e: 0110 0100 0001 1110 xxxx xxxx
+ {ORI, "MKL,%b" }, // 1f: 0110 0100 0001 1111 xxxx xxxx
+
+ {ADINC, "PA,%b" }, // 20: 0110 0100 0010 0000 xxxx xxxx
+ {ADINC, "PB,%b" }, // 21: 0110 0100 0010 0001 xxxx xxxx
+ {ADINC, "PC,%b" }, // 22: 0110 0100 0010 0010 xxxx xxxx
+ {ADINC, "PD,%b" }, // 23: 0110 0100 0010 0011 xxxx xxxx
+ { }, // 24: 0110 0100 0010 0100 xxxx xxxx
+ {ADINC, "PF,%b" }, // 25: 0110 0100 0010 0101 xxxx xxxx
+ {ADINC, "MKH,%b" }, // 26: 0110 0100 0010 0110 xxxx xxxx
+ {ADINC, "MKL,%b" }, // 27: 0110 0100 0010 0111 xxxx xxxx
+ {GTI, "PA,%b" }, // 28: 0110 0100 0010 1000 xxxx xxxx
+ {GTI, "PB,%b" }, // 29: 0110 0100 0010 1001 xxxx xxxx
+ {GTI, "PC,%b" }, // 2a: 0110 0100 0010 1010 xxxx xxxx
+ {GTI, "PD,%b" }, // 2b: 0110 0100 0010 1011 xxxx xxxx
+ { }, // 2c: 0110 0100 0010 1100 xxxx xxxx
+ {GTI, "PF,%b" }, // 2d: 0110 0100 0010 1101 xxxx xxxx
+ {GTI, "MKH,%b" }, // 2e: 0110 0100 0010 1110 xxxx xxxx
+ {GTI, "MKL,%b" }, // 2f: 0110 0100 0010 1111 xxxx xxxx
+
+ {SUINB, "PA,%b" }, // 30: 0110 0100 0011 0000 xxxx xxxx
+ {SUINB, "PB,%b" }, // 31: 0110 0100 0011 0001 xxxx xxxx
+ {SUINB, "PC,%b" }, // 32: 0110 0100 0011 0010 xxxx xxxx
+ {SUINB, "PD,%b" }, // 33: 0110 0100 0011 0011 xxxx xxxx
+ { }, // 34: 0110 0100 0011 0100 xxxx xxxx
+ {SUINB, "PF,%b" }, // 35: 0110 0100 0011 0101 xxxx xxxx
+ {SUINB, "MKH,%b" }, // 36: 0110 0100 0011 0110 xxxx xxxx
+ {SUINB, "MKL,%b" }, // 37: 0110 0100 0011 0111 xxxx xxxx
+ {LTI, "PA,%b" }, // 38: 0110 0100 0011 1000 xxxx xxxx
+ {LTI, "PB,%b" }, // 39: 0110 0100 0011 1001 xxxx xxxx
+ {LTI, "PC,%b" }, // 3a: 0110 0100 0011 1010 xxxx xxxx
+ {LTI, "PD,%b" }, // 3b: 0110 0100 0011 1011 xxxx xxxx
+ { }, // 3c: 0110 0100 0011 1100 xxxx xxxx
+ {LTI, "PF,%b" }, // 3d: 0110 0100 0011 1101 xxxx xxxx
+ {LTI, "MKH,%b" }, // 3e: 0110 0100 0011 1110 xxxx xxxx
+ {LTI, "MKL,%b" }, // 3f: 0110 0100 0011 1111 xxxx xxxx
+
+ {ADI, "PA,%b" }, // 40: 0110 0100 0100 0000 xxxx xxxx
+ {ADI, "PB,%b" }, // 41: 0110 0100 0100 0001 xxxx xxxx
+ {ADI, "PC,%b" }, // 42: 0110 0100 0100 0010 xxxx xxxx
+ {ADI, "PD,%b" }, // 43: 0110 0100 0100 0011 xxxx xxxx
+ { }, // 44: 0110 0100 0100 0100 xxxx xxxx
+ {ADI, "PF,%b" }, // 45: 0110 0100 0100 0101 xxxx xxxx
+ {ADI, "MKH,%b" }, // 46: 0110 0100 0100 0110 xxxx xxxx
+ {ADI, "MKL,%b" }, // 47: 0110 0100 0100 0111 xxxx xxxx
+ {ONI, "PA,%b" }, // 48: 0110 0100 0100 1000 xxxx xxxx
+ {ONI, "PB,%b" }, // 49: 0110 0100 0100 1001 xxxx xxxx
+ {ONI, "PC,%b" }, // 4a: 0110 0100 0100 1010 xxxx xxxx
+ {ONI, "PD,%b" }, // 4b: 0110 0100 0100 1011 xxxx xxxx
+ { }, // 4c: 0110 0100 0100 1100 xxxx xxxx
+ {ONI, "PF,%b" }, // 4d: 0110 0100 0100 1101 xxxx xxxx
+ {ONI, "MKH,%b" }, // 4e: 0110 0100 0100 1110 xxxx xxxx
+ {ONI, "MKL,%b" }, // 4f: 0110 0100 0100 1111 xxxx xxxx
+
+ {ACI, "PA,%b" }, // 50: 0110 0100 0101 0000 xxxx xxxx
+ {ACI, "PB,%b" }, // 51: 0110 0100 0101 0001 xxxx xxxx
+ {ACI, "PC,%b" }, // 52: 0110 0100 0101 0010 xxxx xxxx
+ {ACI, "PD,%b" }, // 53: 0110 0100 0101 0011 xxxx xxxx
+ { }, // 54: 0110 0100 0101 0100 xxxx xxxx
+ {ACI, "PF,%b" }, // 55: 0110 0100 0101 0101 xxxx xxxx
+ {ACI, "MKH,%b" }, // 56: 0110 0100 0101 0110 xxxx xxxx
+ {ACI, "MKL,%b" }, // 57: 0110 0100 0101 0111 xxxx xxxx
+ {OFFI, "PA,%b" }, // 58: 0110 0100 0101 1000 xxxx xxxx
+ {OFFI, "PB,%b" }, // 59: 0110 0100 0101 1001 xxxx xxxx
+ {OFFI, "PC,%b" }, // 5a: 0110 0100 0101 1010 xxxx xxxx
+ {OFFI, "PD,%b" }, // 5b: 0110 0100 0101 1011 xxxx xxxx
+ { }, // 5c: 0110 0100 0101 1100 xxxx xxxx
+ {OFFI, "PF,%b" }, // 5d: 0110 0100 0101 1101 xxxx xxxx
+ {OFFI, "MKH,%b" }, // 5e: 0110 0100 0101 1110 xxxx xxxx
+ {OFFI, "MKL,%b" }, // 5f: 0110 0100 0101 1111 xxxx xxxx
+
+ {SUI, "PA,%b" }, // 60: 0110 0100 0110 0000 xxxx xxxx
+ {SUI, "PB,%b" }, // 61: 0110 0100 0110 0001 xxxx xxxx
+ {SUI, "PC,%b" }, // 62: 0110 0100 0110 0010 xxxx xxxx
+ {SUI, "PD,%b" }, // 63: 0110 0100 0110 0011 xxxx xxxx
+ { }, // 64: 0110 0100 0110 0100 xxxx xxxx
+ {SUI, "PF,%b" }, // 65: 0110 0100 0110 0101 xxxx xxxx
+ {SUI, "MKH,%b" }, // 66: 0110 0100 0110 0110 xxxx xxxx
+ {SUI, "MKL,%b" }, // 67: 0110 0100 0110 0111 xxxx xxxx
+ {NEI, "PA,%b" }, // 68: 0110 0100 0110 1000 xxxx xxxx
+ {NEI, "PB,%b" }, // 69: 0110 0100 0110 1001 xxxx xxxx
+ {NEI, "PC,%b" }, // 6a: 0110 0100 0110 1010 xxxx xxxx
+ {NEI, "PD,%b" }, // 6b: 0110 0100 0110 1011 xxxx xxxx
+ { }, // 6c: 0110 0100 0110 1100 xxxx xxxx
+ {NEI, "PF,%b" }, // 6d: 0110 0100 0110 1101 xxxx xxxx
+ {NEI, "MKH,%b" }, // 6e: 0110 0100 0110 1110 xxxx xxxx
+ {NEI, "MKL,%b" }, // 6f: 0110 0100 0110 1111 xxxx xxxx
+
+ {SBI, "PA,%b" }, // 70: 0110 0100 0111 0000 xxxx xxxx
+ {SBI, "PB,%b" }, // 71: 0110 0100 0111 0001 xxxx xxxx
+ {SBI, "PC,%b" }, // 72: 0110 0100 0111 0010 xxxx xxxx
+ {SBI, "PD,%b" }, // 73: 0110 0100 0111 0011 xxxx xxxx
+ { }, // 74: 0110 0100 0111 0100 xxxx xxxx
+ {SBI, "PF,%b" }, // 75: 0110 0100 0111 0101 xxxx xxxx
+ {SBI, "MKH,%b" }, // 76: 0110 0100 0111 0110 xxxx xxxx
+ {SBI, "MKL,%b" }, // 77: 0110 0100 0111 0111 xxxx xxxx
+ {EQI, "PA,%b" }, // 78: 0110 0100 0111 1000 xxxx xxxx
+ {EQI, "PB,%b" }, // 79: 0110 0100 0111 1001 xxxx xxxx
+ {EQI, "PC,%b" }, // 7a: 0110 0100 0111 1010 xxxx xxxx
+ {EQI, "PD,%b" }, // 7b: 0110 0100 0111 1011 xxxx xxxx
+ { }, // 7c: 0110 0100 0111 1100 xxxx xxxx
+ {EQI, "PF,%b" }, // 7d: 0110 0100 0111 1101 xxxx xxxx
+ {EQI, "MKH,%b" }, // 7e: 0110 0100 0111 1110 xxxx xxxx
+ {EQI, "MKL,%b" }, // 7f: 0110 0100 0111 1111 xxxx xxxx
+
+ { }, // 80: 0110 0100 1000 0000 xxxx xxxx
+ {MVI, "SMH,%b" }, // 81: 0110 0100 1000 0001 xxxx xxxx
+ { }, // 82: 0110 0100 1000 0010 xxxx xxxx
+ {MVI, "EOM,%b" }, // 83: 0110 0100 1000 0011 xxxx xxxx
+ { }, // 84: 0110 0100 1000 0100 xxxx xxxx
+ {MVI, "TMM,%b" }, // 85: 0110 0100 1000 0101 xxxx xxxx
+ { }, // 86: 0110 0100 1000 0110 xxxx xxxx
+ { }, // 87: 0110 0100 1000 0111 xxxx xxxx
+ { }, // 88: 0110 0100 1000 1000 xxxx xxxx
+ {ANI, "SMH,%b" }, // 89: 0110 0100 1000 1001 xxxx xxxx
+ { }, // 8a: 0110 0100 1000 1010 xxxx xxxx
+ {ANI, "EOM,%b" }, // 8b: 0110 0100 1000 1011 xxxx xxxx
+ { }, // 8c: 0110 0100 1000 1100 xxxx xxxx
+ {ANI, "TMM,%b" }, // 8d: 0110 0100 1000 1101 xxxx xxxx
+ { }, // 8e: 0110 0100 1000 1110 xxxx xxxx
+ { }, // 8f: 0110 0100 1000 1111 xxxx xxxx
+
+ { }, // 90: 0110 0100 1001 0000 xxxx xxxx
+ {XRI, "SMH,%b" }, // 91: 0110 0100 1001 0001 xxxx xxxx
+ { }, // 92: 0110 0100 1001 0010 xxxx xxxx
+ {XRI, "EOM,%b" }, // 93: 0110 0100 1001 0011 xxxx xxxx
+ { }, // 94: 0110 0100 1001 0100 xxxx xxxx
+ {XRI, "TMM,%b" }, // 95: 0110 0100 1001 0101 xxxx xxxx
+ { }, // 96: 0110 0100 1001 0110 xxxx xxxx
+ { }, // 97: 0110 0100 1001 0111 xxxx xxxx
+ { }, // 98: 0110 0100 1001 1000 xxxx xxxx
+ {ORI, "SMH,%b" }, // 99: 0110 0100 1001 1001 xxxx xxxx
+ { }, // 9a: 0110 0100 1001 1010 xxxx xxxx
+ {ORI, "EOM,%b" }, // 9b: 0110 0100 1001 1011 xxxx xxxx
+ { }, // 9c: 0110 0100 1001 1100 xxxx xxxx
+ {ORI, "TMM,%b" }, // 9d: 0110 0100 1001 1101 xxxx xxxx
+ { }, // 9e: 0110 0100 1001 1110 xxxx xxxx
+ { }, // 9f: 0110 0100 1001 1111 xxxx xxxx
+
+ { }, // a0: 0110 0100 1010 0000 xxxx xxxx
+ {ADINC, "SMH,%b" }, // a1: 0110 0100 1010 0001 xxxx xxxx
+ { }, // a2: 0110 0100 1010 0010 xxxx xxxx
+ {ADINC, "EOM,%b" }, // a3: 0110 0100 1010 0011 xxxx xxxx
+ { }, // a4: 0110 0100 1010 0100 xxxx xxxx
+ {ADINC, "TMM,%b" }, // a5: 0110 0100 1010 0101 xxxx xxxx
+ { }, // a6: 0110 0100 1010 0110 xxxx xxxx
+ { }, // a7: 0110 0100 1010 0111 xxxx xxxx
+ { }, // a8: 0110 0100 1010 1000 xxxx xxxx
+ {GTI, "SMH,%b" }, // a9: 0110 0100 1010 1001 xxxx xxxx
+ { }, // aa: 0110 0100 1010 1010 xxxx xxxx
+ {GTI, "EOM,%b" }, // ab: 0110 0100 1010 1011 xxxx xxxx
+ { }, // ac: 0110 0100 1010 1100 xxxx xxxx
+ {GTI, "TMM,%b" }, // ad: 0110 0100 1010 1101 xxxx xxxx
+ {GTI, "PT,%b" }, // ae: 0110 0100 1010 1110 xxxx xxxx
+ { }, // af: 0110 0100 1010 1111 xxxx xxxx
+
+ { }, // b0: 0110 0100 1011 0000 xxxx xxxx
+ {SUINB, "SMH,%b" }, // b1: 0110 0100 1011 0001 xxxx xxxx
+ { }, // b2: 0110 0100 1011 0010 xxxx xxxx
+ {SUINB, "EOM,%b" }, // b3: 0110 0100 1011 0011 xxxx xxxx
+ { }, // b4: 0110 0100 1011 0100 xxxx xxxx
+ {SUINB, "TMM,%b" }, // b5: 0110 0100 1011 0101 xxxx xxxx
+ { }, // b6: 0110 0100 1011 0110 xxxx xxxx
+ { }, // b7: 0110 0100 1011 0111 xxxx xxxx
+ { }, // b8: 0110 0100 1011 1000 xxxx xxxx
+ {LTI, "SMH,%b" }, // b9: 0110 0100 1011 1001 xxxx xxxx
+ { }, // ba: 0110 0100 1011 1010 xxxx xxxx
+ {LTI, "EOM,%b" }, // bb: 0110 0100 1011 1011 xxxx xxxx
+ { }, // bc: 0110 0100 1011 1100 xxxx xxxx
+ {LTI, "TMM,%b" }, // bd: 0110 0100 1011 1101 xxxx xxxx
+ {LTI, "PT,%b" }, // be: 0110 0100 1011 1110 xxxx xxxx
+ { }, // bf: 0110 0100 1011 1111 xxxx xxxx
+
+ { }, // c0: 0110 0100 1100 0000 xxxx xxxx
+ {ADI, "SMH,%b" }, // c1: 0110 0100 1100 0001 xxxx xxxx
+ { }, // c2: 0110 0100 1100 0010 xxxx xxxx
+ {ADI, "EOM,%b" }, // c3: 0110 0100 1100 0011 xxxx xxxx
+ { }, // c4: 0110 0100 1100 0100 xxxx xxxx
+ {ADI, "TMM,%b" }, // c5: 0110 0100 1100 0101 xxxx xxxx
+ { }, // c6: 0110 0100 1100 0110 xxxx xxxx
+ { }, // c7: 0110 0100 1100 0111 xxxx xxxx
+ { }, // c8: 0110 0100 1100 1000 xxxx xxxx
+ {ONI, "SMH,%b" }, // c9: 0110 0100 1100 1001 xxxx xxxx
+ { }, // ca: 0110 0100 1100 1010 xxxx xxxx
+ {ONI, "EOM,%b" }, // cb: 0110 0100 1100 1011 xxxx xxxx
+ { }, // cc: 0110 0100 1100 1100 xxxx xxxx
+ {ONI, "TMM,%b" }, // cd: 0110 0100 1100 1101 xxxx xxxx
+ {ONI, "PT,%b" }, // ce: 0110 0100 1100 1110 xxxx xxxx
+ { }, // cf: 0110 0100 1100 1111 xxxx xxxx
+
+ { }, // d0: 0110 0100 1101 0000 xxxx xxxx
+ {ACI, "SMH,%b" }, // d1: 0110 0100 1101 0001 xxxx xxxx
+ { }, // d2: 0110 0100 1101 0010 xxxx xxxx
+ {ACI, "EOM,%b" }, // d3: 0110 0100 1101 0011 xxxx xxxx
+ { }, // d4: 0110 0100 1101 0100 xxxx xxxx
+ {ACI, "TMM,%b" }, // d5: 0110 0100 1101 0101 xxxx xxxx
+ { }, // d6: 0110 0100 1101 0110 xxxx xxxx
+ { }, // d7: 0110 0100 1101 0111 xxxx xxxx
+ { }, // d8: 0110 0100 1101 1000 xxxx xxxx
+ {OFFI, "SMH,%b" }, // d9: 0110 0100 1101 1001 xxxx xxxx
+ { }, // da: 0110 0100 1101 1010 xxxx xxxx
+ {OFFI, "EOM,%b" }, // db: 0110 0100 1101 1011 xxxx xxxx
+ { }, // dc: 0110 0100 1101 1100 xxxx xxxx
+ {OFFI, "TMM,%b" }, // dd: 0110 0100 1101 1101 xxxx xxxx
+ {OFFI, "PT,%b" }, // de: 0110 0100 1101 1110 xxxx xxxx
+ { }, // df: 0110 0100 1101 1111 xxxx xxxx
+
+ { }, // e0: 0110 0100 1110 0000 xxxx xxxx
+ {SUI, "SMH,%b" }, // e1: 0110 0100 1110 0001 xxxx xxxx
+ { }, // e2: 0110 0100 1110 0010 xxxx xxxx
+ {SUI, "EOM,%b" }, // e3: 0110 0100 1110 0011 xxxx xxxx
+ { }, // e4: 0110 0100 1110 0100 xxxx xxxx
+ {SUI, "TMM,%b" }, // e5: 0110 0100 1110 0101 xxxx xxxx
+ { }, // e6: 0110 0100 1110 0110 xxxx xxxx
+ { }, // e7: 0110 0100 1110 0111 xxxx xxxx
+ { }, // e8: 0110 0100 1110 1000 xxxx xxxx
+ {NEI, "SMH,%b" }, // e9: 0110 0100 1110 1001 xxxx xxxx
+ { }, // ea: 0110 0100 1110 1010 xxxx xxxx
+ {NEI, "EOM,%b" }, // eb: 0110 0100 1110 1011 xxxx xxxx
+ { }, // ec: 0110 0100 1110 1100 xxxx xxxx
+ {NEI, "TMM,%b" }, // ed: 0110 0100 1110 1101 xxxx xxxx
+ {NEI, "PT,%b" }, // ee: 0110 0100 1110 1110 xxxx xxxx
+ { }, // ef: 0110 0100 1110 1111 xxxx xxxx
+
+ { }, // f0: 0110 0100 1111 0000 xxxx xxxx
+ {SBI, "SMH,%b" }, // f1: 0110 0100 1111 0001 xxxx xxxx
+ { }, // f2: 0110 0100 1111 0010 xxxx xxxx
+ {SBI, "EOM,%b" }, // f3: 0110 0100 1111 0011 xxxx xxxx
+ { }, // f4: 0110 0100 1111 0100 xxxx xxxx
+ {SBI, "TMM,%b" }, // f5: 0110 0100 1111 0101 xxxx xxxx
+ { }, // f6: 0110 0100 1111 0110 xxxx xxxx
+ { }, // f7: 0110 0100 1111 0111 xxxx xxxx
+ { }, // f8: 0110 0100 1111 1000 xxxx xxxx
+ {EQI, "SMH,%b" }, // f9: 0110 0100 1111 1001 xxxx xxxx
+ { }, // fa: 0110 0100 1111 1010 xxxx xxxx
+ {EQI, "EOM,%b" }, // fb: 0110 0100 1111 1011 xxxx xxxx
+ { }, // fc: 0110 0100 1111 1100 xxxx xxxx
+ {EQI, "TMM,%b" }, // fd: 0110 0100 1111 1101 xxxx xxxx
+ {EQI, "PT,%b" }, // fe: 0110 0100 1111 1110 xxxx xxxx
+ { } // ff: 0110 0100 1111 1111 xxxx xxxx
+};
+
+const upd7810_base_disassembler::dasm_s upd7807_disassembler::XX_7807[256] =
{
{NOP, nullptr }, // 00: 0000 0000
{LDAW, "%a" }, // 01: 0000 0001 oooo oooo
@@ -4020,7 +3827,7 @@ const dasm_s dasm_s::XX_7807[256] =
*
*********************************************************/
-const dasm_s dasm_s::d48_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::d48_7801[256] = {
// 0x00 - 0x3F
{ SKIT, "F0" }, { SKIT, "FT" }, { SKIT, "F1" }, { SKIT, "F2" },
{ SKIT, "FS" }, { }, { }, { },
@@ -4106,7 +3913,7 @@ const dasm_s dasm_s::d48_7801[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d4C_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::d4C_7801[256] = {
// 0x00 - 0x3F
{ IN, nullptr }, { IN, nullptr }, { IN, nullptr }, { IN, nullptr },
{ IN, nullptr }, { IN, nullptr }, { IN, nullptr }, { IN, nullptr },
@@ -4192,7 +3999,7 @@ const dasm_s dasm_s::d4C_7801[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d4D_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::d4D_7801[256] = {
// 0x00 - 0x3F
{ OUT, nullptr }, { OUT, nullptr }, { OUT, nullptr }, { OUT, nullptr },
{ OUT, nullptr }, { OUT, nullptr }, { OUT, nullptr }, { OUT, nullptr },
@@ -4278,7 +4085,7 @@ const dasm_s dasm_s::d4D_7801[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d60_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::d60_7801[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -4364,7 +4171,7 @@ const dasm_s dasm_s::d60_7801[256] = {
{ EQA, "A,D" }, { EQA, "A,E" }, { EQA, "A,H" }, { EQA, "A,L" }
};
-const dasm_s dasm_s::d64_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::d64_7801[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -4450,7 +4257,7 @@ const dasm_s dasm_s::d64_7801[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d70_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::d70_7801[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -4536,7 +4343,7 @@ const dasm_s dasm_s::d70_7801[256] = {
{ EQAX, "DE+" }, { EQAX, "HL+" }, { EQAX, "DE-" }, { EQAX, "HL-" },
};
-const dasm_s dasm_s::d74_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::d74_7801[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -4622,7 +4429,7 @@ const dasm_s dasm_s::d74_7801[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::XX_7801[256] = {
+const upd7810_base_disassembler::dasm_s upd7801_disassembler::XX_7801[256] = {
// 0x00 - 0x3F
{ NOP, nullptr }, { HALT, nullptr }, { INX, "SP" }, { DCX, "SP" },
{ LXI, "SP,%w" }, { ANIW, "%a,%b" }, { }, { ANI, "A,%b" },
@@ -4714,7 +4521,7 @@ const dasm_s dasm_s::XX_7801[256] = {
*
*********************************************************/
-const dasm_s dasm_s::d48_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::d48_78c05[256] = {
// 0x00 - 0x3F
{ SKIT, "F0" }, { SKIT, "FT" }, { SKIT, "F1" }, { }, // TODO: PDF doesn't mention SKIT and SK
{ SKIT, "FS" }, { }, { }, { },
@@ -4800,7 +4607,7 @@ const dasm_s dasm_s::d48_78c05[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d4C_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::d4C_78c05[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -4867,7 +4674,7 @@ const dasm_s dasm_s::d4C_78c05[256] = {
// 0xC0 - 0xFF
{ MOV, "A,PA" }, { MOV, "A,PB" }, { MOV, "A,PC" }, { MOV, "A,MK" },
{ MOV, "A,MB" }, { MOV, "A,MC" }, { MOV, "A,TM0" }, { MOV, "A,TM1" },
- { MOV, "A,S" }, { }, { }, { }, // TODO: Figure out what regsiter C9 indicates
+ { MOV, "A,S" }, { }, { }, { }, // TODO: Figure out what register C9 indicates
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -4886,7 +4693,7 @@ const dasm_s dasm_s::d4C_78c05[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d4D_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::d4D_78c05[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -4972,7 +4779,7 @@ const dasm_s dasm_s::d4D_78c05[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d60_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::d60_78c05[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -5058,7 +4865,7 @@ const dasm_s dasm_s::d60_78c05[256] = {
{ EQA, "A,D" }, { EQA, "A,E" }, { EQA, "A,H" }, { EQA, "A,L" }
};
-const dasm_s dasm_s::d64_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::d64_78c05[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -5144,7 +4951,7 @@ const dasm_s dasm_s::d64_78c05[256] = {
{ }, { }, { }, { }
};
-const dasm_s dasm_s::d70_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::d70_78c05[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -5230,7 +5037,7 @@ const dasm_s dasm_s::d70_78c05[256] = {
{ EQAX, "DE+" }, { EQAX, "HL+" }, { EQAX, "DE-" }, { EQAX, "HL-" },
};
-const dasm_s dasm_s::d74_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::d74_78c05[256] = {
// 0x00 - 0x3F
{ }, { }, { }, { },
{ }, { }, { }, { },
@@ -5316,7 +5123,7 @@ const dasm_s dasm_s::d74_78c05[256] = {
{ }, { }, { }, { },
};
-const dasm_s dasm_s::XX_78c05[256] = {
+const upd7810_base_disassembler::dasm_s upd78c05_disassembler::XX_78c05[256] = {
// 0x00 - 0x3F
{ NOP, nullptr }, { HALT, nullptr }, { INX, "SP" }, { DCX, "SP" },
{ LXI, "SP,%w" }, { ANIW, "%a,%b" }, { }, { ANI, "A,%b" },
@@ -5404,7 +5211,7 @@ const dasm_s dasm_s::XX_78c05[256] = {
// register names for bit manipulation instructions
-const char *const regname[32] =
+const char *const upd7810_base_disassembler::regname[32] =
{
"illegal", "illegal", "illegal", "illegal",
"illegal", "illegal", "illegal", "illegal",
@@ -5416,17 +5223,17 @@ const char *const regname[32] =
"illegal", "TMM", "PT", "illegal"
};
-offs_t Dasm( std::ostream &stream, offs_t pc, const dasm_s (&dasmXX)[256], const uint8_t *oprom, const uint8_t *opram, bool is_7810 )
+offs_t upd7810_base_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params)
{
- unsigned idx = 0;
- const uint8_t op = oprom[idx++];
- const dasm_s *desc = &dasmXX[op];
+ offs_t idx = pc;
+ const uint8_t op = opcodes.r8(idx++);
+ const dasm_s *desc = &m_dasmXX[op];
if (desc->is_prefix())
- desc = &desc->prefix_get(oprom[idx++]);
+ desc = &desc->prefix_get(opcodes.r8(idx++));
util::stream_format(stream, "%-8.8s", desc->name());
- uint32_t flags = desc->is_call() ? DASMFLAG_STEP_OVER : desc->is_return() ? DASMFLAG_STEP_OUT : 0;
+ uint32_t flags = desc->is_call() ? STEP_OVER : desc->is_return() ? STEP_OUT : 0;
uint8_t op2;
int offset;
uint16_t ea;
@@ -5439,28 +5246,28 @@ offs_t Dasm( std::ostream &stream, offs_t pc, const dasm_s (&dasmXX)[256], const
switch (*a)
{
case 'a': /* address V * 256 + offset */
- op2 = opram[idx++];
+ op2 = params.r8(idx++);
util::stream_format(stream, "VV:%02X", op2);
break;
case 'b': /* immediate byte */
- util::stream_format(stream, "$%02X", opram[idx++]);
+ util::stream_format(stream, "$%02X", params.r8(idx++));
break;
case 'w': /* immediate word */
- ea = opram[idx++];
- ea += opram[idx++] << 8;
+ ea = params.r8(idx++);
+ ea += params.r8(idx++) << 8;
util::stream_format(stream, "$%04X", ea);
break;
case 'd': /* JRE address */
- op2 = oprom[idx++];
+ op2 = opcodes.r8(idx++);
offset = (op & 1) ? -(256 - op2): + op2;
util::stream_format(stream, "$%04X", ( pc + idx + offset ) & 0xFFFF );
break;
case 't': /* CALT address */
- ea = 0x80 + 2 * (op & (is_7810 ? 0x1f : 0x3f));
+ ea = 0x80 + 2 * (op & (m_is_7810 ? 0x1f : 0x3f));
util::stream_format(stream, "($%04X)", ea);
break;
case 'f': /* CALF address */
- op2 = oprom[idx++];
+ op2 = opcodes.r8(idx++);
ea = 0x800 + 0x100 * (op & 0x07) + op2;
util::stream_format(stream, "$%04X", ea);
break;
@@ -5469,7 +5276,7 @@ offs_t Dasm( std::ostream &stream, offs_t pc, const dasm_s (&dasmXX)[256], const
util::stream_format(stream, "$%04X", ( pc + idx + offset ) & 0xFFFF );
break;
case 'i': /* bit manipulation */
- op2 = oprom[idx++];
+ op2 = opcodes.r8(idx++);
util::stream_format(stream, "%s,%d", regname[op2 & 0x1f], op2 >> 5);
break;
default:
@@ -5480,27 +5287,30 @@ offs_t Dasm( std::ostream &stream, offs_t pc, const dasm_s (&dasmXX)[256], const
stream << *a;
}
- return idx | flags | DASMFLAG_SUPPORTED;
+ return (idx - pc) | flags | SUPPORTED;
}
-} // anonymous namespace
+upd7810_base_disassembler::upd7810_base_disassembler(const dasm_s *table, bool is_7810) : m_is_7810(is_7810), m_dasmXX(table)
+{
+}
+
+uint32_t upd7810_base_disassembler::opcode_alignment() const
+{
+ return 1;
+}
-CPU_DISASSEMBLE( upd7810 )
+upd7810_disassembler::upd7810_disassembler() : upd7810_base_disassembler(XX_7810, true)
{
- return Dasm( stream, pc, dasm_s::XX_7810, oprom, opram, true );
}
-CPU_DISASSEMBLE( upd7807 )
+upd7807_disassembler::upd7807_disassembler() : upd7810_base_disassembler(XX_7807, true)
{
- return Dasm( stream, pc, dasm_s::XX_7807, oprom, opram, true );
}
-CPU_DISASSEMBLE( upd7801 )
+upd7801_disassembler::upd7801_disassembler() : upd7810_base_disassembler(XX_7801, false)
{
- return Dasm( stream, pc, dasm_s::XX_7801, oprom, opram, false );
}
-CPU_DISASSEMBLE( upd78c05 )
+upd78c05_disassembler::upd78c05_disassembler() : upd7810_base_disassembler(XX_78c05, false)
{
- return Dasm( stream, pc, dasm_s::XX_78c05, oprom, opram, false );
}