diff options
Diffstat (limited to 'src/devices/cpu/tms0980/tms0980d.cpp')
-rw-r--r-- | src/devices/cpu/tms0980/tms0980d.cpp | 363 |
1 files changed, 0 insertions, 363 deletions
diff --git a/src/devices/cpu/tms0980/tms0980d.cpp b/src/devices/cpu/tms0980/tms0980d.cpp deleted file mode 100644 index 371047b0a79..00000000000 --- a/src/devices/cpu/tms0980/tms0980d.cpp +++ /dev/null @@ -1,363 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Wilbert Pol, hap -/* - - TMS0980/TMS1000-family disassembler - -*/ - -#include "emu.h" -#include "debugger.h" -#include "tms0980.h" - - -enum e_mnemonics -{ - zA10AAC=0, zA6AAC, zA8AAC, zAC1AC, zACACC, zACNAA, zALEC, zALEM, zAMAAC, zBRANCH, zCALL, zCCLA, - zCLA, zCLO, zCOMC, zCOMX, zCOMX8, zCPAIZ, zCTMDYN, zDAN, zDMAN, zDMEA, zDNAA, - zDYN, zIA, zIMAC, zIYC, zKNEZ, zLDP, zLDX, zLDX3, zLDX4, zMNEA, zMNEZ, - zNDMEA, zOFF, zRBIT, zREAC, zRETN, zRSTR, zSAL, zSAMAN, zSBIT, - zSBL, zSEAC, zSETR, zTAM, zTAMACS, zTAMDYN, zTAMIY, zTAMIYC, zTAMZA, - zTAY, zTBIT, zTCMIY, zTCY, zTDO, zTKA, zTKM, zTMA, - zTMY, zTYA, zXDA, zXMA, zYMCY, zYNEA, zYNEC, - zILL -}; - -static const char *const 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", - "?" -}; - - -#define _OVER DASMFLAG_STEP_OVER -#define _OUT DASMFLAG_STEP_OUT - -static const UINT32 s_flags[] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _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, _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 -}; - - -enum e_addressing -{ - zB0=0, zI2, zI3, zI4, zB7 -}; - -static const UINT8 s_addressing[] = -{ - 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, - zB0 -}; - - -static const UINT8 tms0980_i2_value[4] = -{ - 0, 2, 1, 3 -}; -static const UINT8 tms0980_i3_value[8] = -{ - 0, 4, 2, 6, 1, 5, 3, 7 -}; -static const UINT8 tms0980_i4_value[16] = -{ - 0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf -}; - - - -// opcode luts - -static const UINT8 tms0980_mnemonic[512] = -{ - /* 0x000 */ - zCOMX, zALEM, zYNEA, zXMA, zDYN, zIYC, zCLA, zDMAN, - zTKA, zMNEA, zTKM, zILL, zILL, zSETR, zKNEZ, zILL, - /* 0x010 */ - zDMEA, zDNAA, zCCLA, zNDMEA, zILL, zAMAAC, zILL, zILL, - zCTMDYN, zXDA, zILL, zILL, zILL, zILL, zILL, zILL, - /* 0x020 */ - zTBIT, zTBIT, zTBIT, zTBIT, zILL, zILL, zILL, zILL, - zTAY, zTMA, zTMY, zTYA, zTAMDYN, zTAMIYC, zTAMZA, zTAM, - /* 0x030 */ - zSAMAN, zCPAIZ, zIMAC, zMNEZ, zILL, zILL, zILL, zILL, - zTCY, zYNEC, zTCMIY, zACACC, zACNAA, zTAMACS, zALEC, zYMCY, - /* 0x040 */ - zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, - zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, - /* 0x050 */ - zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, - zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, - /* 0x060 */ - zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, - zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, - /* 0x070 */ - zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, - zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, zACACC, - /* 0x080 */ - zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, - zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, - /* 0x090 */ - zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, - zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, - /* 0x0A0 */ - zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT, - zILL, zILL, zILL, zILL, zILL, zILL, zILL, zILL, - /* 0x0B0 */ - zTDO, zSAL, zCOMX8, zSBL, zREAC, zSEAC, zOFF, zILL, - zILL, zILL, zILL, zILL, zILL, zILL, zILL, zRETN, - /* 0x0C0 */ - zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, - zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, zACNAA, - /* 0x0D0 */ - zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, - zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, zTAMACS, - /* 0x0E0 */ - zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, - zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, - /* 0x0F0 */ - zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, - zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, zYMCY, - /* 0x100 */ - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - /* 0x180 */ - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL -}; - - -static const UINT8 tms1000_mnemonic[256] = -{ - /* 0x00 */ - zCOMX, zA8AAC, zYNEA, zTAM, zTAMZA, zA10AAC, zA6AAC, zDAN, - zTKA, zKNEZ, zTDO, zCLO, zRSTR, zSETR, zIA, zRETN, - zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, - zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, - zTAMIY, zTMA, zTMY, zTYA, zTAY, zAMAAC, zMNEZ, zSAMAN, - zIMAC, zALEM, zDMAN, zIYC, zDYN, zCPAIZ, zXMA, zCLA, - zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT, - zTBIT, zTBIT, zTBIT, zTBIT, zLDX, zLDX, zLDX, zLDX, - /* 0x40 */ - zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, - zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, - zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, - zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, - zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, - zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, - zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, - zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, zALEC, - /* 0x80 */ - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - /* 0xc0 */ - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL -}; - - -static const UINT8 tms1100_mnemonic[256] = -{ - /* 0x00 */ - zMNEA, zALEM, zYNEA, zXMA, zDYN, zIYC, zAMAAC, zDMAN, - zTKA, zCOMX, zTDO, zCOMC, zRSTR, zSETR, zKNEZ, zRETN, - zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, - zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, - /* 0x20 */ - zTAY, zTMA, zTMY, zTYA, zTAMDYN, zTAMIYC, zTAMZA, zTAM, - zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, - zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT, - zTBIT, zTBIT, zTBIT, zTBIT, zSAMAN, zCPAIZ, zIMAC, zMNEZ, - /* 0x40 */ - zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, - zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, zTCY, - zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, - zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, zYNEC, - /* 0x60 */ - zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, - zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, zTCMIY, - zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, - zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zCLA, - /* 0x80 */ - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, zBRANCH, - /* 0xC0 */ - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, - zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, -}; - - - -// disasm - -CPU_DISASSEMBLE( tms0980 ) -{ - char *dst = buffer; - UINT16 op, instr; - int pos = 0; - - op = ( ( oprom[pos] << 8 ) | oprom[pos + 1] ) & 0x01FF; - pos += 2; - - instr = tms0980_mnemonic[op]; - - dst += sprintf( dst, "%-8s ", s_mnemonic[instr] ); - - switch( s_addressing[instr] ) - { - default: - case zB0: - break; - case zI2: - dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] ); - break; - case zI4: - dst += sprintf( dst, "%d", tms0980_i4_value[ op & 0x0F ] ); - break; - case zB7: - dst += sprintf( dst, "$%02X", ( op & 0x7F ) << 1 ); - break; - } - - return pos | s_flags[instr] | DASMFLAG_SUPPORTED; -} - - -CPU_DISASSEMBLE( tms1000 ) -{ - char *dst = buffer; - UINT8 op, instr; - int pos = 0; - - op = oprom[pos]; - pos += 1; - - instr = tms1000_mnemonic[op]; - - dst += sprintf( dst, "%-8s ", s_mnemonic[instr] ); - - switch( s_addressing[instr] ) - { - default: - case zB0: - break; - case zI2: - dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] ); - break; - case zI4: - dst += sprintf( dst, "%d", tms0980_i4_value[ op & 0x0F ] ); - break; - case zB7: - dst += sprintf( dst, "$%02X", ( op & 0x3F ) ); - break; - } - - return pos | s_flags[instr] | DASMFLAG_SUPPORTED; -} - - -CPU_DISASSEMBLE( tms1100 ) -{ - char *dst = buffer; - UINT8 op, instr; - int pos = 0; - - op = oprom[pos]; - pos += 1; - - instr = tms1100_mnemonic[op]; - - dst += sprintf( dst, "%-8s ", s_mnemonic[instr] ); - - switch( s_addressing[instr] ) - { - default: - case zB0: - break; - case zI2: - dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] ); - break; - case zI3: - dst += sprintf( dst, "%d", tms0980_i3_value[ op & 0x07 ] ); - break; - case zI4: - dst += sprintf( dst, "%d", tms0980_i4_value[ op & 0x0F ] ); - break; - case zB7: - dst += sprintf( dst, "$%02X", ( op & 0x3F ) ); - break; - } - - return pos | s_flags[instr] | DASMFLAG_SUPPORTED; -} |