mirror of
https://github.com/holub/mame
synced 2025-05-23 06:08:48 +03:00
Added support TMS1000 family models TMS1000/1070/1100/1200/1270/1300.
Added support for configuration of output PLA to the tms0980/tms1000 interface.
This commit is contained in:
parent
d49a0062f8
commit
dd46ee883a
File diff suppressed because it is too large
Load Diff
@ -12,16 +12,40 @@ enum {
|
|||||||
|
|
||||||
typedef struct _tms0980_config tms0980_config;
|
typedef struct _tms0980_config tms0980_config;
|
||||||
struct _tms0980_config {
|
struct _tms0980_config {
|
||||||
|
/* O-output PLA configuration */
|
||||||
|
struct {
|
||||||
|
UINT8 value;
|
||||||
|
UINT16 output;
|
||||||
|
} o_pla[20];
|
||||||
read8_device_func read_k;
|
read8_device_func read_k;
|
||||||
write8_device_func write_o;
|
write16_device_func write_o; /* tms1270 has 10 O-outputs */
|
||||||
write16_device_func write_r;
|
write16_device_func write_r;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* 9-bit family */
|
||||||
#define CPU_TMS0980 CPU_GET_INFO_NAME( tms0980 )
|
#define CPU_TMS0980 CPU_GET_INFO_NAME( tms0980 )
|
||||||
|
|
||||||
extern CPU_GET_INFO( tms0980 );
|
extern CPU_GET_INFO( tms0980 );
|
||||||
extern CPU_DISASSEMBLE( tms0980 );
|
extern CPU_DISASSEMBLE( tms0980 );
|
||||||
|
|
||||||
|
/* 8-bit family */
|
||||||
|
#define CPU_TMS1000 CPU_GET_INFO_NAME( tms1000 )
|
||||||
|
#define CPU_TMS1070 CPU_GET_INFO_NAME( tms1070 )
|
||||||
|
#define CPU_TMS1100 CPU_GET_INFO_NAME( tms1100 )
|
||||||
|
#define CPU_TMS1200 CPU_GET_INFO_NAME( tms1200 )
|
||||||
|
#define CPU_TMS1270 CPU_GET_INFO_NAME( tms1270 )
|
||||||
|
#define CPU_TMS1300 CPU_GET_INFO_NAME( tms1300 )
|
||||||
|
|
||||||
|
extern CPU_GET_INFO( tms1000 );
|
||||||
|
extern CPU_GET_INFO( tms1070 );
|
||||||
|
extern CPU_GET_INFO( tms1100 );
|
||||||
|
extern CPU_GET_INFO( tms1200 );
|
||||||
|
extern CPU_GET_INFO( tms1270 );
|
||||||
|
extern CPU_GET_INFO( tms1300 );
|
||||||
|
|
||||||
|
extern CPU_DISASSEMBLE( tms1000 );
|
||||||
|
extern CPU_DISASSEMBLE( tms1100 );
|
||||||
|
|
||||||
#endif /* _TMS0980_H_ */
|
#endif /* _TMS0980_H_ */
|
||||||
|
|
||||||
|
@ -14,11 +14,11 @@ TMS0980 disassembly
|
|||||||
|
|
||||||
|
|
||||||
enum e_mnemonics {
|
enum e_mnemonics {
|
||||||
zACACC=0, zACNAA, zALEC, zALEM, zAMAAC, zBRANCH, zCALL, zCCLA,
|
zA10AAC=0, zA6AAC, zA8AAC, zAC1AC, zACACC, zACNAA, zALEC, zALEM, zAMAAC, zBRANCH, zCALL, zCCLA,
|
||||||
zCLA, zCOMX, zCOMX8, zCPAIZ, zCTMDYN, zDMAN, zDMEA, zDNAA,
|
zCLA, zCLO, zCOMC, zCOMX, zCOMX8, zCPAIZ, zCTMDYN, zDAN, zDMAN, zDMEA, zDNAA,
|
||||||
zDYN, zIMAC, zIYC, zKNE, zLDP, zLDX, zMNEA, zMNEZ,
|
zDYN, zIA, zIMAC, zIYC, zKNE, zKNEZ, zLDP, zLDX, zLDX4, zMNEA, zMNEZ,
|
||||||
zNDMEA, zOFF, zRBIT, zREAC, zRETN, zSAL, zSAMAN, zSBIT,
|
zNDMEA, zOFF, zRBIT, zREAC, zRETN, zRSTR, zSAL, zSAMAN, zSBIT,
|
||||||
zSBL, zSEAC, zSETR, zTAM, zTAMACS, zTAMDYN, zTAMIYC, zTAMZA,
|
zSBL, zSEAC, zSETR, zTAM, zTAMACS, zTAMDYN, zTAMIY, zTAMIYC, zTAMZA,
|
||||||
zTAY, zTBIT, zTCMIY, zTCY, zTDO, zTKA, zTKM, zTMA,
|
zTAY, zTBIT, zTCMIY, zTCY, zTDO, zTKA, zTKM, zTMA,
|
||||||
zTMY, zTYA, zXDA, zXMA, zYMCY, zYNEA, zYNEC,
|
zTMY, zTYA, zXDA, zXMA, zYMCY, zYNEA, zYNEC,
|
||||||
zILL
|
zILL
|
||||||
@ -26,16 +26,16 @@ enum e_mnemonics {
|
|||||||
|
|
||||||
|
|
||||||
enum e_addressing {
|
enum e_addressing {
|
||||||
zB0=0, zB2, zB4, zB7
|
zB0=0, zB2, zI2, zI4, zB7
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static const char *s_mnemonic[] = {
|
static const char *s_mnemonic[] = {
|
||||||
"acacc", "acnaa", "alec", "alem", "amaac", "branch", "call", "ccla",
|
"a10aac", "a6aac", "a8aac", "ac1ac", "acacc", "acnaa", "alec", "alem", "amaac", "branch", "call", "ccla",
|
||||||
"cla", "comx", "comx8", "cpaiz", "ctmdyn", "dman", "dmea", "dnaa",
|
"cla", "clo", "comc", "comx", "comx8", "cpaiz", "ctmdyn", "dan", "dman", "dmea", "dnaa",
|
||||||
"dyn", "imac", "iyc", "kne", "ldp", "ldx", "mnea", "mnez",
|
"dyn", "ia", "imac", "iyc", "kne", "knez", "ldp", "ldx", "ldx", "mnea", "mnez",
|
||||||
"ndmea", "off", "rbit", "reac", "retn", "sal", "saman", "sbit",
|
"ndmea", "off", "rbit", "reac", "retn", "rstr", "sal", "saman", "sbit",
|
||||||
"sbl", "seac", "setr", "tam", "tamacs", "tamdyn", "tamiyc", "tamza",
|
"sbl", "seac", "setr", "tam", "tamacs", "tamdyn", "tamiy", "tamiyc", "tamza",
|
||||||
"tay", "tbit", "tcmiy", "tcy", "tdo", "tka", "tkm", "tma",
|
"tay", "tbit", "tcmiy", "tcy", "tdo", "tka", "tkm", "tma",
|
||||||
"tmy", "tya", "xda", "xma", "ymcy", "ynea", "ynec",
|
"tmy", "tya", "xda", "xma", "ymcy", "ynea", "ynec",
|
||||||
"illegal"
|
"illegal"
|
||||||
@ -43,11 +43,11 @@ static const char *s_mnemonic[] = {
|
|||||||
|
|
||||||
|
|
||||||
static const UINT32 s_flags[] = {
|
static const UINT32 s_flags[] = {
|
||||||
0, 0, 0, 0, 0, 0, _OVER, 0,
|
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, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, _OUT, 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,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0,
|
||||||
0
|
0
|
||||||
@ -55,13 +55,13 @@ static const UINT32 s_flags[] = {
|
|||||||
|
|
||||||
|
|
||||||
static const UINT8 s_addressing[] = {
|
static const UINT8 s_addressing[] = {
|
||||||
zB4, zB4, zB4, zB0, zB0, zB7, zB7, 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, zB0, zB0, zB0,
|
||||||
zB0, zB0, zB0, zB0, zB4, zB4, zB0, zB0,
|
zB0, zB0, zB0, zB0, zB0, zB0, zI4, zI2, zI4, zB0, zB0,
|
||||||
zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0,
|
zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0,
|
||||||
zB0, zB0, zB2, zB0, zB4, zB0, zB0, zB2,
|
zB0, zB0, zB0, zB0, zI4, zB0, zB0, zB0, zB2,
|
||||||
zB0, zB2, zB4, zB4, zB0, zB0, zB0, zB0,
|
zB0, zB2, zI4, zI4, zB0, zB0, zB0, zB0,
|
||||||
zB0, zB0, zB0, zB0, zB4, zB0, zB4,
|
zB0, zB0, zB0, zB0, zI4, zB0, zI4,
|
||||||
zB0
|
zB0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -95,8 +95,8 @@ static const UINT8 tms0980_mnemonic[512] = {
|
|||||||
zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP,
|
zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP,
|
||||||
zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP,
|
zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP,
|
||||||
/* 0x090 */
|
/* 0x090 */
|
||||||
zLDX, zLDX, zLDX, zLDX, zLDX, zLDX, zLDX, zLDX,
|
zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4,
|
||||||
zLDX, zLDX, zLDX, zLDX, zLDX, zLDX, zLDX, zLDX,
|
zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4, zLDX4,
|
||||||
/* 0x0A0 */
|
/* 0x0A0 */
|
||||||
zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT,
|
zSBIT, zSBIT, zSBIT, zSBIT, zRBIT, zRBIT, zRBIT, zRBIT,
|
||||||
zILL, zILL, zILL, zILL, zILL, zILL, zILL, zILL,
|
zILL, zILL, zILL, zILL, zILL, zILL, zILL, zILL,
|
||||||
@ -152,13 +152,99 @@ static const UINT8 tms0980_mnemonic[512] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
CPU_DISASSEMBLE( tms0980 ) {
|
static const UINT8 tms1000_mnemonic[256] = {
|
||||||
static const UINT8 tms0980_c_value[16] =
|
/* 0x00 */
|
||||||
{
|
zCOMX, zA8AAC, zYNEA, zTAM, zTAMZA, zA10AAC, zA6AAC, zDAN,
|
||||||
0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F
|
zTKA, zKNEZ, zTDO, zCLO, zRSTR, zSETR, zIA, zRETN,
|
||||||
};
|
zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP, zLDP,
|
||||||
static const UINT8 tms0980_bit_value[4] = { 1, 4, 2, 8 };
|
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,
|
||||||
|
zLDX, zLDX, zLDX, zLDX, zLDX, zLDX, zLDX, zLDX,
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const UINT8 tms0980_i2_value[4] =
|
||||||
|
{
|
||||||
|
0x00, 0x02, 0x01, 0x03
|
||||||
|
};
|
||||||
|
static const UINT8 tms0980_i4_value[16] =
|
||||||
|
{
|
||||||
|
0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F
|
||||||
|
};
|
||||||
|
static const UINT8 tms0980_bit_value[4] = { 1, 4, 2, 8 };
|
||||||
|
|
||||||
|
|
||||||
|
CPU_DISASSEMBLE( tms0980 ) {
|
||||||
char *dst = buffer;
|
char *dst = buffer;
|
||||||
UINT16 op, instr;
|
UINT16 op, instr;
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
@ -176,11 +262,80 @@ CPU_DISASSEMBLE( tms0980 ) {
|
|||||||
case zB2:
|
case zB2:
|
||||||
dst += sprintf( dst, "#$%d", tms0980_bit_value[ op & 3 ] );
|
dst += sprintf( dst, "#$%d", tms0980_bit_value[ op & 3 ] );
|
||||||
break;
|
break;
|
||||||
case zB4:
|
case zI2:
|
||||||
dst += sprintf( dst, "#$%01X", tms0980_c_value[ op & 0x0F ] );
|
dst += sprintf( dst, "#$%01X", tms0980_i2_value[ op & 0x03 ] );
|
||||||
|
break;
|
||||||
|
case zI4:
|
||||||
|
dst += sprintf( dst, "#$%01X", tms0980_i4_value[ op & 0x0F ] );
|
||||||
break;
|
break;
|
||||||
case zB7:
|
case zB7:
|
||||||
dst += sprintf( dst, "#$%02X", op & 0x7F );
|
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] ) {
|
||||||
|
case zB0:
|
||||||
|
break;
|
||||||
|
case zB2:
|
||||||
|
dst += sprintf( dst, "#$%d", tms0980_bit_value[ op & 3 ] );
|
||||||
|
break;
|
||||||
|
case zI2:
|
||||||
|
dst += sprintf( dst, "#$%01X", tms0980_i2_value[ op & 0x03 ] );
|
||||||
|
break;
|
||||||
|
case zI4:
|
||||||
|
dst += sprintf( dst, "#$%01X", 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] ) {
|
||||||
|
case zB0:
|
||||||
|
break;
|
||||||
|
case zB2:
|
||||||
|
dst += sprintf( dst, "#$%d", tms0980_bit_value[ op & 3 ] );
|
||||||
|
break;
|
||||||
|
case zI2:
|
||||||
|
dst += sprintf( dst, "#$%01X", tms0980_i2_value[ op & 0x03 ] );
|
||||||
|
break;
|
||||||
|
case zI4:
|
||||||
|
dst += sprintf( dst, "#$%01X", tms0980_i4_value[ op & 0x0F ] );
|
||||||
|
break;
|
||||||
|
case zB7:
|
||||||
|
dst += sprintf( dst, "#$%02X", ( op & 0x3F ) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user