summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms1000/tms1k_dasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms1000/tms1k_dasm.cpp')
-rw-r--r--src/devices/cpu/tms1000/tms1k_dasm.cpp451
1 files changed, 298 insertions, 153 deletions
diff --git a/src/devices/cpu/tms1000/tms1k_dasm.cpp b/src/devices/cpu/tms1000/tms1k_dasm.cpp
index af1af973697..745907f9377 100644
--- a/src/devices/cpu/tms1000/tms1k_dasm.cpp
+++ b/src/devices/cpu/tms1000/tms1k_dasm.cpp
@@ -40,10 +40,26 @@ tms1000_base_disassembler::tms1000_base_disassembler(const u8 *lut_mnemonic, boo
}
}
+tms1100_disassembler::tms1100_disassembler(const u8 *lut_mnemonic, bool opcode_9bits, int pc_bits) :
+ tms1000_base_disassembler(lut_mnemonic, opcode_9bits, pc_bits)
+{ }
+
tms1000_disassembler::tms1000_disassembler() : tms1000_base_disassembler(tms1000_mnemonic, false, 6)
{ }
-tms1100_disassembler::tms1100_disassembler() : tms1000_base_disassembler(tms1100_mnemonic, false, 6)
+tms1100_disassembler::tms1100_disassembler() : tms1100_disassembler(tms1100_mnemonic, false, 6)
+{ }
+
+tms1400_disassembler::tms1400_disassembler() : tms1100_disassembler(tms1400_mnemonic, false, 6)
+{ }
+
+tms2100_disassembler::tms2100_disassembler() : tms1100_disassembler(tms2100_mnemonic, false, 6)
+{ }
+
+tms2400_disassembler::tms2400_disassembler() : tms1100_disassembler(tms2400_mnemonic, false, 6)
+{ }
+
+smc1102_disassembler::smc1102_disassembler() : tms1100_disassembler(smc1102_mnemonic, false, 6)
{ }
tms0980_disassembler::tms0980_disassembler() : tms1000_base_disassembler(tms0980_mnemonic, true, 7)
@@ -68,40 +84,68 @@ offs_t tms1000_base_disassembler::pc_real_to_linear(offs_t pc) const
// common lookup tables
+enum tms1000_base_disassembler::e_mnemonics : unsigned
+{
+ mILL = 0,
+ mAC0AC, mAC1AC, mACACC, mACNAA, mALEC, mALEM, mAMAAC, mBRANCH,
+ mCALL, mCCLA, mCLA, mCLO, mCOMC, mCOMX, mCOMX8, mCPAIZ, mCTMDYN,
+ mDAN, mDMAN, mDMEA, mDNAA, mDYN, mHALT,
+ mIA, mIMAC, mINTDIS, mINTEN, mINTRTN, mIYC,
+ mKNEZ, mLDP, mLDX2, mLDX3, mLDX4, mMNEA, mMNEZ,
+ mNDMEA, mOFF, mRBIT, mREAC, mRETN, mRSTR,
+ mSAL, mSAMAN, mSBIT, mSBL, mSEAC, mSELIN, mSETR,
+ mTAC, mTADM, mTAM, mTAMACS, mTAMDYN, mTAMIY, mTAMIYC, mTAMZA,
+ mTASR, mTAX, mTAY, mTBIT, mTCA, mTCMIY, mTCY, mTDO, mTKA,
+ mTKM, mTMA, mTMSET, mTMY, mTPC, mTRA, mTSG, mTXA, mTYA,
+ mXDA, mXMA, mYMCY, mYNEA, mYNEC
+};
+
const char *const tms1000_base_disassembler::s_mnemonic[] =
{
"?",
- "A10AAC", "A6AAC", "A8AAC", "AC1AC", "ACACC", "ACNAA", "ALEC", "ALEM", "AMAAC", "BRANCH", "CALL", "CCLA",
- "CLA", "CLO", "COMC", "COMX", "COMX8", "CPAIZ", "CTMDYN", "DAN", "DMAN", "DMEA", "DNAA",
- "DYN", "IA", "IMAC", "IYC", "KNEZ", "LDP", "LDX", "LDX", "LDX", "MNEA", "MNEZ",
- "NDMEA", "OFF", "RBIT", "REAC", "RETN", "RSTR", "SAL", "SAMAN", "SBIT",
- "SBL", "SEAC", "SETR", "TAM", "TAMACS", "TAMDYN", "TAMIY", "TAMIYC", "TAMZA",
- "TAY", "TBIT", "TCMIY", "TCY", "TDO", "TKA", "TKM", "TMA",
- "TMY", "TYA", "XDA", "XMA", "YMCY", "YNEA", "YNEC"
+ "AC0AC", "AC1AC", "ACACC", "ACNAA", "ALEC", "ALEM", "AMAAC", "BRANCH",
+ "CALL", "CCLA", "CLA", "CLO", "COMC", "COMX", "COMX8", "CPAIZ", "CTMDYN",
+ "DAN", "DMAN", "DMEA", "DNAA", "DYN", "HALT",
+ "IA", "IMAC", "INTDIS", "INTEN", "INTRTN", "IYC",
+ "KNEZ", "LDP", "LDX", "LDX", "LDX", "MNEA", "MNEZ",
+ "NDMEA", "OFF", "RBIT", "REAC", "RETN", "RSTR",
+ "SAL", "SAMAN", "SBIT", "SBL", "SEAC", "SELIN", "SETR",
+ "TAC", "TADM", "TAM", "TAMACS", "TAMDYN", "TAMIY", "TAMIYC", "TAMZA",
+ "TASR", "TAX", "TAY", "TBIT", "TCA", "TCMIY", "TCY", "TDO", "TKA",
+ "TKM", "TMA", "TMSET", "TMY", "TPC", "TRA", "TSG", "TXA", "TYA",
+ "XDA", "XMA", "YMCY", "YNEA", "YNEC"
};
const u32 tms1000_base_disassembler::s_flags[] =
{
0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, STEP_OVER, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, STEP_OUT, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, STEP_COND,
+ STEP_OVER | STEP_COND, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, STEP_OUT, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, STEP_OUT, 0,
+ 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0
};
-const u8 tms1000_base_disassembler::s_addressing[] =
+const u8 tms1000_base_disassembler::s_bits[] =
{
- zB0,
- zB0, zB0, zB0, zI4, zI4, zI4, zI4, zB0, zB0, zB7, zB7, zB0,
- zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0,
- zB0, zB0, zB0, zB0, zB0, zI4, zI2, zI3, zI4, zB0, zB0,
- zB0, zB0, zI2, zB0, zB0, zB0, zB0, zB0, zI2,
- zB0, zB0, zB0, zB0, zI4, zB0, zB0, zB0, zB0,
- zB0, zI2, zI4, zI4, zB0, zB0, zB0, zB0,
- zB0, zB0, zB0, zB0, zI4, zB0, zI4
+ 0,
+ 4, 4, 4, 4, 4, 0, 0, 6,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 4, 2, 3, 4, 0, 0,
+ 0, 0, 2, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 0, 0,
+ 0, 0, 4, 0, 4
};
@@ -109,130 +153,222 @@ const u8 tms1000_base_disassembler::s_addressing[] =
const u8 tms1000_disassembler::tms1000_mnemonic[256] =
{
-/* 0x00 */
- zCOMX, zA8AAC, zYNEA, zTAM, zTAMZA, zA10AAC, zA6AAC, zDAN, zTKA, zKNEZ, zTDO, zCLO, zRSTR, zSETR, zIA, zRETN, // 0
- zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, // 1
- zTAMIY, zTMA, zTMY, zTYA, zTAY, zAMAAC, zMNEZ, zSAMAN, zIMAC, zALEM, zDMAN, zIYC, zDYN, zCPAIZ, zXMA, zCLA, // 2
- zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT, zTBIT, zTBIT, zTBIT, zTBIT, zLDX2, zLDX2, zLDX2, zLDX2, // 3
- zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, // 4
- zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, // 5
- zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, // 6
- zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, // 7
-/* 0x80 */
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 8
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 9
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // A
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // B
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // C
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // D
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // E
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL // F
-/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x00
+ mCOMX, mAC0AC, mYNEA, mTAM, mTAMZA, mAC0AC, mAC0AC, mDAN, mTKA, mKNEZ, mTDO, mCLO, mRSTR, mSETR, mIA, mRETN, // 0
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 1
+ mTAMIY, mTMA, mTMY, mTYA, mTAY, mAMAAC, mMNEZ, mSAMAN, mIMAC, mALEM, mDMAN, mIYC, mDYN, mCPAIZ, mXMA, mCLA, // 2
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, mTBIT, mTBIT, mTBIT, mTBIT, mLDX2, mLDX2, mLDX2, mLDX2, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, // 7
+ // 0x80
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 8
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 9
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // A
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
};
const u8 tms1100_disassembler::tms1100_mnemonic[256] =
{
-/* 0x00 */
- zMNEA, zALEM, zYNEA, zXMA, zDYN, zIYC, zAMAAC, zDMAN, zTKA, zCOMX, zTDO, zCOMC, zRSTR, zSETR, zKNEZ, zRETN, // 0
- zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, // 1
- zTAY, zTMA, zTMY, zTYA, zTAMDYN, zTAMIYC, zTAMZA, zTAM, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, // 2
- zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT, zTBIT, zTBIT, zTBIT, zTBIT, zSAMAN, zCPAIZ, zIMAC, zMNEZ, // 3
- zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, // 4
- zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, // 5
- zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, // 6
- zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zCLA, // 7
-/* 0x80 */
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 8
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 9
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // A
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // B
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // C
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // D
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // E
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL // F
-/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x00
+ mMNEA, mALEM, mYNEA, mXMA, mDYN, mIYC, mAMAAC, mDMAN, mTKA, mCOMX, mTDO, mCOMC, mRSTR, mSETR, mKNEZ, mRETN, // 0
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 1
+ mTAY, mTMA, mTMY, mTYA, mTAMDYN, mTAMIYC, mTAMZA, mTAM, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, // 2
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, mTBIT, mTBIT, mTBIT, mTBIT, mSAMAN, mCPAIZ, mIMAC, mMNEZ, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mCLA, // 7
+ // 0x80
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 8
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 9
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // A
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
+};
+
+const u8 tms1400_disassembler::tms1400_mnemonic[256] =
+{
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x00
+ mMNEA, mALEM, mYNEA, mXMA, mDYN, mIYC, mAMAAC, mDMAN, mTKA, mCOMX, mTDO, mTPC, mRSTR, mSETR, mKNEZ, mRETN, // 0
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 1
+ mTAY, mTMA, mTMY, mTYA, mTAMDYN, mTAMIYC, mTAMZA, mTAM, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, // 2
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, mTBIT, mTBIT, mTBIT, mTBIT, mSAMAN, mCPAIZ, mIMAC, mMNEZ, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mCLA, // 7
+ // 0x80
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 8
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 9
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // A
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
+};
+
+const u8 tms2100_disassembler::tms2100_mnemonic[256] =
+{
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x00
+ mMNEA, mALEM, mYNEA, mXMA, mDYN, mIYC, mAMAAC, mDMAN, mTKA, mTAX, mTDO, mCOMC, mRSTR, mSETR, mTADM, mRETN, // 0
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 1
+ mTAY, mTMA, mTMY, mTYA, mTAMDYN, mTAMIYC, mTAC, mTAM, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, // 2
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, mTBIT, mTBIT, mTBIT, mTBIT, mSAMAN, mCPAIZ, mIMAC, mMNEZ, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mAC1AC, mAC1AC, mAC1AC, mTCA, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mTRA, mAC1AC, mAC1AC, mAC1AC, mCLA, // 7
+ // 0x80
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 8
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 9
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // A
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
+};
+
+const u8 tms2400_disassembler::tms2400_mnemonic[256] =
+{
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x00
+ mMNEA, mALEM, mYNEA, mXMA, mDYN, mIYC, mAMAAC, mDMAN, mTKA, mTAX, mTDO, mTPC, mRSTR, mSETR, mTADM, mRETN, // 0
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 1
+ mTAY, mTMA, mTMY, mTYA, mTAMDYN, mTAMIYC, mTAC, mTAM, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, // 2
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, mTBIT, mTBIT, mTBIT, mTBIT, mSAMAN, mCPAIZ, mIMAC, mMNEZ, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mAC1AC, mAC1AC, mAC1AC, mTCA, mAC1AC, mCOMX, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mAC1AC, mTRA, mAC1AC, mTXA, mAC1AC, mCLA, // 7
+ // 0x80
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 8
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 9
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // A
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
+};
+
+const u8 smc1102_disassembler::smc1102_mnemonic[256] =
+{
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x00
+ mMNEA, mALEM, mYNEA, mXMA, mDYN, mIYC, mAMAAC, mDMAN, mTKA, mCOMX, mTASR, mCOMC, mRSTR, mSETR, mKNEZ, mRETN, // 0
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 1
+ mTAY, mTMA, mTMY, mTYA, mTAMDYN, mTAMIYC, mTAMZA, mTAM, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, mLDX3, // 2
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, mTBIT, mTBIT, mTBIT, mTBIT, mSAMAN, mCPAIZ, mIMAC, mMNEZ, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mAC1AC, mHALT, mTSG, mTSG, mINTEN, mINTDIS, mINTRTN, mAC1AC, mSELIN, mAC1AC, mAC1AC, mTMSET, mTSG, mTSG, mAC1AC, mCLA, // 7
+ // 0x80
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 8
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 9
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // A
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
};
const u8 tms0980_disassembler::tms0980_mnemonic[512] =
{
-/* 0x000 */
- zCOMX, zALEM, zYNEA, zXMA, zDYN, zIYC, zCLA, zDMAN, zTKA, zMNEA, zTKM, 0, 0, zSETR, zKNEZ, 0, // 0
- zDMEA, zDNAA, zCCLA, zNDMEA, 0, zAMAAC, 0, 0, zCTMDYN, zXDA, 0, 0, 0, 0, 0, 0, // 1
- zTBIT, zTBIT, zTBIT, zTBIT, 0, 0, 0, 0, zTAY, zTMA, zTMY, zTYA, zTAMDYN, zTAMIYC, zTAMZA, zTAM, // 2
- zSAMAN, zCPAIZ, zIMAC, zMNEZ, 0, 0, 0, 0, zTCY, zYNEC, zTCMIY, zACACC, zACNAA, zTAMACS, zALEC, zYMCY, // 3
- zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, // 4
- zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, // 5
- zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, // 6
- zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, // 7
-/* 0x080 */
- zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, // 8
- zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, // 9
- zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT, 0, 0, 0, 0, 0, 0, 0, 0, // A
- zTDO, zSAL, zCOMX8, zSBL, zREAC, zSEAC, zOFF, 0, 0, 0, 0, 0, 0, 0, 0, zRETN, // B
- zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, // C
- zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, // D
- zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, // E
- zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, // F
-/* 0x100 */
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 0
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 1
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 2
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 3
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 4
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 5
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 6
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 7
-/* 0x180 */
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // 8
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // 9
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // A
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // B
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // C
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // D
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // E
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL // F
-/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x000
+ mCOMX, mALEM, mYNEA, mXMA, mDYN, mIYC, mCLA, mDMAN, mTKA, mMNEA, mTKM, 0, 0, mSETR, mKNEZ, 0, // 0
+ mDMEA, mDNAA, mCCLA, mNDMEA, 0, mAMAAC, 0, 0, mCTMDYN, mXDA, 0, 0, 0, 0, 0, 0, // 1
+ mTBIT, mTBIT, mTBIT, mTBIT, 0, 0, 0, 0, mTAY, mTMA, mTMY, mTYA, mTAMDYN, mTAMIYC, mTAMZA, mTAM, // 2
+ mSAMAN, mCPAIZ, mIMAC, mMNEZ, 0, 0, 0, 0, mTCY, mYNEC, mTCMIY, mACACC, mACNAA, mTAMACS, mALEC, mYMCY, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, // 7
+ // 0x080
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 8
+ mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, // 9
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, 0, 0, 0, 0, 0, 0, 0, 0, // A
+ mTDO, mSAL, mCOMX8, mSBL, mREAC, mSEAC, mOFF, 0, 0, 0, 0, 0, 0, 0, 0, mRETN, // B
+ mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, // C
+ mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, // D
+ mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, // E
+ mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, // F
+ // 0x100
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 0
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 1
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 2
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 3
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 4
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 5
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 6
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 7
+ // 0x180
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // 8
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // 9
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // A
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
};
const u8 tp0320_disassembler::tp0320_mnemonic[512] =
{
-/* 0x000 */
- 0, zALEM, zYNEA, zXMA, zDYN, zIYC, zCLA, zDMAN, zTKA, zMNEA, zTKM, 0, 0, zSETR, zKNEZ, 0, // 0
- zDMEA, zDNAA, zCCLA, zNDMEA, 0, zAMAAC, 0, 0, zCTMDYN, zXDA, 0, 0, 0, 0, 0, 0, // 1
- zTBIT, zTBIT, zTBIT, zTBIT, 0, 0, 0, 0, zTAY, zTMA, zTMY, zTYA, zTAMDYN, zTAMIYC, zTAMZA, zTAM, // 2
- zSAMAN, zCPAIZ, zIMAC, zMNEZ, 0, 0, zRSTR, zYMCY, zTCY, zYNEC, zTCMIY, zACACC, zACNAA, zTAMACS, zALEC, 0, // 3
- zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, // 4
- zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, // 5
- zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, // 6
- zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, // 7
-/* 0x080 */
- zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, // 8
- zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, // 9
- zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT, 0, 0, 0, 0, 0, 0, 0, 0, // A
- zTDO, zSAL, zCOMX8, zSBL, zREAC, zSEAC, zOFF, 0, 0, 0, 0, 0, 0, 0, 0, zRETN, // B
- zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, // C
- zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, // D
- zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, // E
- zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, // F
-/* 0x100 */
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 0
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 1
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 2
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 3
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 4
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 5
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 6
- zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, // 7
-/* 0x180 */
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // 8
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // 9
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // A
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // B
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // C
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // D
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, // E
- zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL // F
-/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ // 0x000
+ 0, mALEM, mYNEA, mXMA, mDYN, mIYC, mCLA, mDMAN, mTKA, mMNEA, mTKM, 0, 0, mSETR, mKNEZ, 0, // 0
+ mDMEA, mDNAA, mCCLA, mNDMEA, 0, mAMAAC, 0, 0, mCTMDYN, mXDA, 0, 0, 0, 0, 0, 0, // 1
+ mTBIT, mTBIT, mTBIT, mTBIT, 0, 0, 0, 0, mTAY, mTMA, mTMY, mTYA, mTAMDYN, mTAMIYC, mTAMZA, mTAM, // 2
+ mSAMAN, mCPAIZ, mIMAC, mMNEZ, 0, 0, mRSTR, mYMCY, mTCY, mYNEC, mTCMIY, mACACC, mACNAA, mTAMACS, mALEC, 0, // 3
+ mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, mTCY, // 4
+ mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, mYNEC, // 5
+ mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, mTCMIY, // 6
+ mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, mACACC, // 7
+ // 0x080
+ mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, mLDP, // 8
+ mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, mLDX4, // 9
+ mSBIT, mSBIT, mSBIT, mSBIT, mRBIT, mRBIT, mRBIT, mRBIT, 0, 0, 0, 0, 0, 0, 0, 0, // A
+ mTDO, mSAL, mCOMX8, mSBL, mREAC, mSEAC, mOFF, 0, 0, 0, 0, 0, 0, 0, 0, mRETN, // B
+ mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, mACNAA, // C
+ mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, mTAMACS, // D
+ mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, mALEC, // E
+ mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, mYMCY, // F
+ // 0x100
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 0
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 1
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 2
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 3
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 4
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 5
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 6
+ mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, mBRANCH, // 7
+ // 0x180
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // 8
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // 9
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // A
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // B
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // C
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // D
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, // E
+ mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL, mCALL // F
};
@@ -256,27 +392,36 @@ const u8 tms1000_base_disassembler::i4_value[16] =
offs_t tms1000_base_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params)
{
u16 op = m_opcode_9bits ? opcodes.r16(pc) & 0x1ff : opcodes.r8(pc);
-
- // convert to mnemonic/param
u16 instr = m_lut_mnemonic[op];
- util::stream_format(stream, "%-8s ", s_mnemonic[instr]);
- switch( s_addressing[instr] )
+ if (instr == mAC0AC || instr == mAC1AC)
+ {
+ // special case for AcAAC
+ u8 c = (i4_value[op & 0x0f] + ((instr == mAC1AC) ? 1 : 0)) & 0xf;
+ util::stream_format(stream, "A%dACC", c);
+ }
+ else
{
- case zI2:
- util::stream_format(stream, "%d", i2_value[op & 0x03]);
- break;
- case zI3:
- util::stream_format(stream, "%d", i3_value[op & 0x07]);
- break;
- case zI4:
- util::stream_format(stream, "%d", i4_value[op & 0x0f]);
- break;
- case zB7:
- util::stream_format(stream, "$%02X", op & (m_opcode_9bits ? 0x7f : 0x3f));
- break;
- default:
- break;
+ // convert to mnemonic/param
+ util::stream_format(stream, "%-8s", s_mnemonic[instr]);
+
+ switch (s_bits[instr])
+ {
+ case 2:
+ util::stream_format(stream, "%d", i2_value[op & 0x03]);
+ break;
+ case 3:
+ util::stream_format(stream, "%d", i3_value[op & 0x07]);
+ break;
+ case 4:
+ util::stream_format(stream, "%d", i4_value[op & 0x0f]);
+ break;
+ case 6:
+ util::stream_format(stream, "$%02X", op & (m_opcode_9bits ? 0x7f : 0x3f));
+ break;
+ default:
+ break;
+ }
}
return 1 | s_flags[instr] | SUPPORTED;