diff options
-rw-r--r-- | src/devices/cpu/tms1000/tms0970.cpp | 2 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms0980.cpp | 2 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1000.cpp | 20 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1000.h | 17 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1k_base.h | 116 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1k_dasm.cpp | 128 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1k_dasm.h | 28 | ||||
-rw-r--r-- | src/mame/handheld/hh_tms1k.cpp | 20 | ||||
-rw-r--r-- | src/mame/namco/bosco.cpp | 7 | ||||
-rw-r--r-- | src/mame/tiger/k28m2.cpp | 2 | ||||
-rw-r--r-- | src/tools/unidasm.cpp | 1 |
11 files changed, 189 insertions, 154 deletions
diff --git a/src/devices/cpu/tms1000/tms0970.cpp b/src/devices/cpu/tms1000/tms0970.cpp index 41782b8c723..98bb14e905f 100644 --- a/src/devices/cpu/tms1000/tms0970.cpp +++ b/src/devices/cpu/tms1000/tms0970.cpp @@ -73,7 +73,7 @@ void tms0970_cpu_device::device_reset() // pre-decode instructionset m_fixed_decode.resize(0x100); - memset(&m_fixed_decode[0], 0, 0x100*sizeof(u32)); + memset(&m_fixed_decode[0], 0, 0x100*sizeof(u64)); m_micro_decode.resize(0x100); memset(&m_micro_decode[0], 0, 0x100*sizeof(u32)); diff --git a/src/devices/cpu/tms1000/tms0980.cpp b/src/devices/cpu/tms1000/tms0980.cpp index 56d453ec293..8b54bda87c5 100644 --- a/src/devices/cpu/tms1000/tms0980.cpp +++ b/src/devices/cpu/tms1000/tms0980.cpp @@ -121,7 +121,7 @@ void tms0980_cpu_device::device_reset() // pre-decode instructionset m_fixed_decode.resize(0x200); - memset(&m_fixed_decode[0], 0, 0x200*sizeof(u32)); + memset(&m_fixed_decode[0], 0, 0x200*sizeof(u64)); m_micro_decode.resize(0x200); memset(&m_micro_decode[0], 0, 0x200*sizeof(u32)); diff --git a/src/devices/cpu/tms1000/tms1000.cpp b/src/devices/cpu/tms1000/tms1000.cpp index 2137f9bd1d5..92c6fc73192 100644 --- a/src/devices/cpu/tms1000/tms1000.cpp +++ b/src/devices/cpu/tms1000/tms1000.cpp @@ -2,8 +2,7 @@ // copyright-holders:hap /* - TMS1000 family - TMS1000, TMS1070, TMS1040, TMS1200, TMS1700, TMS1730, - and second source Motorola MC141000, MC141200. + TMS1000 family - TMS1000, TMS1070, TMS1040, TMS1200, TMS1270, TMS1700, TMS1730 TMS1000 - 64x4bit RAM array at the bottom-left @@ -15,6 +14,10 @@ TMS1000 - 20-term output PLA(opla) at the top-left - the ALU is between the opla and mpla +TODO: +- add Motorola MC141000/MC141200 when needed, they are CMOS MCUs based on + TMS1000/TMS1200 but not 100% the same + */ #include "emu.h" @@ -31,9 +34,6 @@ DEFINE_DEVICE_TYPE(TMS1270, tms1270_cpu_device, "tms1270", "Texas Instruments DEFINE_DEVICE_TYPE(TMS1700, tms1700_cpu_device, "tms1700", "Texas Instruments TMS1700") // 28-pin DIP, RAM/ROM size halved, 9 R pins DEFINE_DEVICE_TYPE(TMS1730, tms1730_cpu_device, "tms1730", "Texas Instruments TMS1730") // 20-pin DIP, same die as TMS1700, package has less pins: 6 R pins, 5 O pins (output PLA is still 8-bit, O1,O3,O5 unused) -DEFINE_DEVICE_TYPE(MC141000, mc141000_cpu_device, "mc141000", "Motorola MC141000") // CMOS, pin-compatible with TMS1000(reverse polarity) -DEFINE_DEVICE_TYPE(MC141200, mc141200_cpu_device, "mc141200", "Motorola MC141200") // CMOS, 40-pin DIP, 16 R pins - tms1000_cpu_device::tms1000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : tms1000_cpu_device(mconfig, TMS1000, tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 2 /* x width */, 1 /* stack levels */, 10 /* rom width */, address_map_constructor(FUNC(tms1000_cpu_device::rom_10bit), this), 6 /* ram width */, address_map_constructor(FUNC(tms1000_cpu_device::ram_6bit), this)) @@ -71,14 +71,6 @@ tms1730_cpu_device::tms1730_cpu_device(const machine_config &mconfig, const char tms1000_cpu_device(mconfig, TMS1730, tag, owner, clock, 8, 9, 6, 8, 2, 1, 10, address_map_constructor(FUNC(tms1730_cpu_device::rom_9bitm), this), 6, address_map_constructor(FUNC(tms1730_cpu_device::ram_32x4), this)) { } -mc141000_cpu_device::mc141000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : - tms1000_cpu_device(mconfig, MC141000, tag, owner, clock, 8, 11, 6, 8, 2, 1, 10, address_map_constructor(FUNC(mc141000_cpu_device::rom_10bit), this), 6, address_map_constructor(FUNC(mc141000_cpu_device::ram_6bit), this)) -{ } - -mc141200_cpu_device::mc141200_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : - tms1000_cpu_device(mconfig, MC141200, tag, owner, clock, 8, 16, 6, 8, 2, 1, 10, address_map_constructor(FUNC(mc141200_cpu_device::rom_10bit), this), 6, address_map_constructor(FUNC(mc141200_cpu_device::ram_6bit), this)) -{ } - // internal memory maps void tms1000_cpu_device::rom_9bitm(address_map &map) @@ -138,7 +130,7 @@ void tms1000_cpu_device::device_reset() // pre-decode instructionset m_fixed_decode.resize(0x100); - memset(&m_fixed_decode[0], 0, 0x100*sizeof(u32)); + memset(&m_fixed_decode[0], 0, 0x100*sizeof(u64)); m_micro_decode.resize(0x100); memset(&m_micro_decode[0], 0, 0x100*sizeof(u32)); diff --git a/src/devices/cpu/tms1000/tms1000.h b/src/devices/cpu/tms1000/tms1000.h index d70aa0f7047..1cdc073ed03 100644 --- a/src/devices/cpu/tms1000/tms1000.h +++ b/src/devices/cpu/tms1000/tms1000.h @@ -2,7 +2,7 @@ // copyright-holders:hap /* - TMS1000 family - TMS1000, TMS1070, TMS1040, TMS1200 + TMS1000 family - TMS1000, TMS1070, TMS1040, TMS1200, TMS1270, TMS1700, TMS1730 */ @@ -124,19 +124,6 @@ public: }; -class mc141000_cpu_device : public tms1000_cpu_device -{ -public: - mc141000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); -}; - -class mc141200_cpu_device : public tms1000_cpu_device -{ -public: - mc141200_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); -}; - - DECLARE_DEVICE_TYPE(TMS1000, tms1000_cpu_device) DECLARE_DEVICE_TYPE(TMS1040, tms1040_cpu_device) DECLARE_DEVICE_TYPE(TMS1070, tms1070_cpu_device) @@ -144,7 +131,5 @@ DECLARE_DEVICE_TYPE(TMS1200, tms1200_cpu_device) DECLARE_DEVICE_TYPE(TMS1270, tms1270_cpu_device) DECLARE_DEVICE_TYPE(TMS1700, tms1700_cpu_device) DECLARE_DEVICE_TYPE(TMS1730, tms1730_cpu_device) -DECLARE_DEVICE_TYPE(MC141000, mc141000_cpu_device) -DECLARE_DEVICE_TYPE(MC141200, mc141200_cpu_device) #endif // MAME_CPU_TMS1000_TMS1000_H diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h index 136a54e61c7..fa2ce2b7e8d 100644 --- a/src/devices/cpu/tms1000/tms1k_base.h +++ b/src/devices/cpu/tms1000/tms1k_base.h @@ -73,67 +73,67 @@ protected: // microinstructions enum { - M_15TN = (1<<0), /* 15 to -ALU */ - M_ATN = (1<<1), /* ACC to -ALU */ - M_AUTA = (1<<2), /* ALU to ACC */ - M_AUTY = (1<<3), /* ALU to Y */ - M_C8 = (1<<4), /* CARRY8 to STATUS */ - M_CIN = (1<<5), /* Carry In to ALU */ - M_CKM = (1<<6), /* CKB to MEM */ - M_CKN = (1<<7), /* CKB to -ALU */ - M_CKP = (1<<8), /* CKB to +ALU */ - M_MTN = (1<<9), /* MEM to -ALU */ - M_MTP = (1<<10), /* MEM to +ALU */ - M_NATN = (1<<11), /* ~ACC to -ALU */ - M_NE = (1<<12), /* COMP to STATUS */ - M_STO = (1<<13), /* ACC to MEM */ - M_STSL = (1<<14), /* STATUS to Status Latch */ - M_YTP = (1<<15), /* Y to +ALU */ - - M_CME = (1<<16), /* Conditional Memory Enable */ - M_DMTP = (1<<17), /* DAM to +ALU */ - M_NDMTP = (1<<18), /* ~DAM to +ALU */ - M_SSE = (1<<19), /* Special Status Enable */ - M_SSS = (1<<20), /* Special Status Sample */ - - M_SETR = (1<<21), /* -> line #0d, F_SETR (TP0320 custom), */ - M_RSTR = (1<<22), /* -> line #36, F_RSTR (TMS02x0 custom), */ - M_UNK1 = (1<<23) /* -> line #37, F_???? (TMS0270 custom), */ + M_15TN = (1U << 0), // 15 to -ALU + M_ATN = (1U << 1), // ACC to -ALU + M_AUTA = (1U << 2), // ALU to ACC + M_AUTY = (1U << 3), // ALU to Y + M_C8 = (1U << 4), // CARRY8 to STATUS + M_CIN = (1U << 5), // Carry In to ALU + M_CKM = (1U << 6), // CKB to MEM + M_CKN = (1U << 7), // CKB to -ALU + M_CKP = (1U << 8), // CKB to +ALU + M_MTN = (1U << 9), // MEM to -ALU + M_MTP = (1U << 10), // MEM to +ALU + M_NATN = (1U << 11), // ~ACC to -ALU + M_NE = (1U << 12), // COMP to STATUS + M_STO = (1U << 13), // ACC to MEM + M_STSL = (1U << 14), // STATUS to Status Latch + M_YTP = (1U << 15), // Y to +ALU + + M_CME = (1U << 16), // Conditional Memory Enable + M_DMTP = (1U << 17), // DAM to +ALU + M_NDMTP = (1U << 18), // ~DAM to +ALU + M_SSE = (1U << 19), // Special Status Enable + M_SSS = (1U << 20), // Special Status Sample + + M_SETR = (1U << 21), // -> line #0d, F_SETR (TP0320 custom) + M_RSTR = (1U << 22), // -> line #36, F_RSTR (TMS02x0 custom) + M_UNK1 = (1U << 23) // -> line #37, F_???? (TMS0270 custom) }; // standard/fixed instructions - these are documented more in their specific handlers enum { - F_BR = (1<<0), - F_CALL = (1<<1), - F_CLO = (1<<2), - F_COMC = (1<<3), - F_COMX = (1<<4), - F_COMX8 = (1<<5), - F_LDP = (1<<6), - F_LDX = (1<<7), - F_RBIT = (1<<8), - F_RETN = (1<<9), - F_RSTR = (1<<10), - F_SBIT = (1<<11), - F_SETR = (1<<12), - F_TDO = (1<<13), - F_TPC = (1<<14), - - F_TAX = (1<<15), - F_TXA = (1<<16), - F_TRA = (1<<17), - F_TAC = (1<<18), - F_TCA = (1<<19), - F_TADM = (1<<20), - F_TMA = (1<<21), - - F_OFF = (1<<22), - F_REAC = (1<<23), - F_SAL = (1<<24), - F_SBL = (1<<25), - F_SEAC = (1<<26), - F_XDA = (1<<27) + F_BR = (1ULL << 0), + F_CALL = (1ULL << 1), + F_CLO = (1ULL << 2), + F_COMC = (1ULL << 3), + F_COMX = (1ULL << 4), + F_COMX8 = (1ULL << 5), + F_LDP = (1ULL << 6), + F_LDX = (1ULL << 7), + F_RBIT = (1ULL << 8), + F_RETN = (1ULL << 9), + F_RSTR = (1ULL << 10), + F_SBIT = (1ULL << 11), + F_SETR = (1ULL << 12), + F_TDO = (1ULL << 13), + F_TPC = (1ULL << 14), + + F_TAX = (1ULL << 15), + F_TXA = (1ULL << 16), + F_TRA = (1ULL << 17), + F_TAC = (1ULL << 18), + F_TCA = (1ULL << 19), + F_TADM = (1ULL << 20), + F_TMA = (1ULL << 21), + + F_OFF = (1ULL << 22), + F_REAC = (1ULL << 23), + F_SAL = (1ULL << 24), + F_SBL = (1ULL << 25), + F_SEAC = (1ULL << 26), + F_XDA = (1ULL << 27) }; void rom_10bit(address_map &map); @@ -231,7 +231,7 @@ protected: u8 m_ram_address; u16 m_rom_address; u16 m_opcode; - u32 m_fixed; + u64 m_fixed; u32 m_micro; int m_subcycle; u8 m_o_index; @@ -272,7 +272,7 @@ protected: int m_state_count; // lookup tables - std::vector<u32> m_fixed_decode; + std::vector<u64> m_fixed_decode; std::vector<u32> m_micro_decode; std::vector<u32> m_micro_direct; }; diff --git a/src/devices/cpu/tms1000/tms1k_dasm.cpp b/src/devices/cpu/tms1000/tms1k_dasm.cpp index 3c1e67500c9..60afe6b4cdc 100644 --- a/src/devices/cpu/tms1000/tms1k_dasm.cpp +++ b/src/devices/cpu/tms1000/tms1k_dasm.cpp @@ -59,6 +59,9 @@ tms2100_disassembler::tms2100_disassembler() : tms1100_disassembler(tms2100_mnem 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) { } @@ -84,37 +87,49 @@ offs_t tms1000_base_disassembler::pc_real_to_linear(offs_t pc) const const char *const tms1000_base_disassembler::s_mnemonic[] = { "?", - "AC0AC", "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", "TAC", "TADM", "TAM", "TAMACS", "TAMDYN", "TAMIY", "TAMIYC", "TAMZA", - "TAX", "TAY", "TBIT", "TCA", "TCMIY", "TCY", "TDO", "TKA", "TKM", "TMA", - "TMY", "TPC", "TRA", "TXA", "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, STEP_COND, STEP_OVER | STEP_COND, 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, 0, 0, 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 }; const u8 tms1000_base_disassembler::s_bits[] = { 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, 4, 2, 3, 4, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, - 0, 0, 2, 0, 4, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 4 + 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 }; @@ -122,7 +137,8 @@ const u8 tms1000_base_disassembler::s_bits[] = const u8 tms1000_disassembler::tms1000_mnemonic[256] = { -/* 0x00 */ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 0x00 */ zCOMX, zAC0AC, zYNEA, zTAM, zTAMZA, zAC0AC, zAC0AC, 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 @@ -131,7 +147,7 @@ const u8 tms1000_disassembler::tms1000_mnemonic[256] = 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 */ + /* 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 @@ -140,12 +156,12 @@ const u8 tms1000_disassembler::tms1000_mnemonic[256] = 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 */ }; const u8 tms1100_disassembler::tms1100_mnemonic[256] = { -/* 0x00 */ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 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 @@ -154,7 +170,7 @@ const u8 tms1100_disassembler::tms1100_mnemonic[256] = 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 */ + /* 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 @@ -163,12 +179,12 @@ const u8 tms1100_disassembler::tms1100_mnemonic[256] = 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 */ }; const u8 tms1400_disassembler::tms1400_mnemonic[256] = { -/* 0x00 */ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 0x00 */ zMNEA, zALEM, zYNEA, zXMA, zDYN, zIYC, zAMAAC, zDMAN, zTKA, zCOMX, zTDO, zTPC, 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 @@ -177,7 +193,7 @@ const u8 tms1400_disassembler::tms1400_mnemonic[256] = 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 */ + /* 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 @@ -186,12 +202,12 @@ const u8 tms1400_disassembler::tms1400_mnemonic[256] = 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 */ }; const u8 tms2100_disassembler::tms2100_mnemonic[256] = { -/* 0x00 */ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 0x00 */ zMNEA, zALEM, zYNEA, zXMA, zDYN, zIYC, zAMAAC, zDMAN, zTKA, zTAX, zTDO, zCOMC, zRSTR, zSETR, zTADM, 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, zTAC, zTAM, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, // 2 @@ -200,7 +216,7 @@ const u8 tms2100_disassembler::tms2100_mnemonic[256] = 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, zTCA, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zTRA, zAC1AC, zAC1AC, zAC1AC, zCLA, // 7 -/* 0x80 */ + /* 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 @@ -209,12 +225,12 @@ const u8 tms2100_disassembler::tms2100_mnemonic[256] = 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 */ }; const u8 tms2400_disassembler::tms2400_mnemonic[256] = { -/* 0x00 */ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 0x00 */ zMNEA, zALEM, zYNEA, zXMA, zDYN, zIYC, zAMAAC, zDMAN, zTKA, zTAX, zTDO, zTPC, zRSTR, zSETR, zTADM, 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, zTAC, zTAM, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, zLDX3, // 2 @@ -223,7 +239,7 @@ const u8 tms2400_disassembler::tms2400_mnemonic[256] = 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, zTCA, zAC1AC, zCOMX, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zAC1AC, zTRA, zAC1AC, zTXA, zAC1AC, zCLA, // 7 -/* 0x80 */ + /* 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 @@ -232,12 +248,35 @@ const u8 tms2400_disassembler::tms2400_mnemonic[256] = 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 +}; + +const u8 smc1102_disassembler::smc1102_mnemonic[256] = +{ /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 0x00 */ + zMNEA, zALEM, zYNEA, zXMA, zDYN, zIYC, zAMAAC, zDMAN, zTKA, zCOMX, zTASR, 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, zHALT, zTSG, zTSG, zINTEN, zINTDIS, zINTRTN, zAC1AC, zSELIN, zAC1AC, zAC1AC, zTMSET, zTSG, zTSG, 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 }; const u8 tms0980_disassembler::tms0980_mnemonic[512] = { -/* 0x000 */ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 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 @@ -246,7 +285,7 @@ const u8 tms0980_disassembler::tms0980_mnemonic[512] = 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 */ + /* 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 @@ -255,7 +294,7 @@ const u8 tms0980_disassembler::tms0980_mnemonic[512] = 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 */ + /* 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 @@ -264,7 +303,7 @@ const u8 tms0980_disassembler::tms0980_mnemonic[512] = 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 */ + /* 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 @@ -273,12 +312,12 @@ const u8 tms0980_disassembler::tms0980_mnemonic[512] = 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 */ }; const u8 tp0320_disassembler::tp0320_mnemonic[512] = { -/* 0x000 */ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 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 @@ -287,7 +326,7 @@ const u8 tp0320_disassembler::tp0320_mnemonic[512] = 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 */ + /* 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 @@ -296,7 +335,7 @@ const u8 tp0320_disassembler::tp0320_mnemonic[512] = 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 */ + /* 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 @@ -305,7 +344,7 @@ const u8 tp0320_disassembler::tp0320_mnemonic[512] = 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 */ + /* 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 @@ -314,7 +353,6 @@ const u8 tp0320_disassembler::tp0320_mnemonic[512] = 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 */ }; diff --git a/src/devices/cpu/tms1000/tms1k_dasm.h b/src/devices/cpu/tms1000/tms1k_dasm.h index 07f854350dd..8059251f66e 100644 --- a/src/devices/cpu/tms1000/tms1k_dasm.h +++ b/src/devices/cpu/tms1000/tms1k_dasm.h @@ -28,13 +28,17 @@ protected: enum e_mnemonics { zILL = 0, - zAC0AC, 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, zLDX2, zLDX3, zLDX4, zMNEA, zMNEZ, - zNDMEA, zOFF, zRBIT, zREAC, zRETN, zRSTR, zSAL, zSAMAN, zSBIT, - zSBL, zSEAC, zSETR, zTAC, zTADM, zTAM, zTAMACS, zTAMDYN, zTAMIY, zTAMIYC, zTAMZA, - zTAX, zTAY, zTBIT, zTCA, zTCMIY, zTCY, zTDO, zTKA, zTKM, zTMA, - zTMY, zTPC, zTRA, zTXA, zTYA, zXDA, zXMA, zYMCY, zYNEA, zYNEC + zAC0AC, zAC1AC, zACACC, zACNAA, zALEC, zALEM, zAMAAC, zBRANCH, + zCALL, zCCLA, zCLA, zCLO, zCOMC, zCOMX, zCOMX8, zCPAIZ, zCTMDYN, + zDAN, zDMAN, zDMEA, zDNAA, zDYN, zHALT, + zIA, zIMAC, zINTDIS, zINTEN, zINTRTN, zIYC, + zKNEZ, zLDP, zLDX2, zLDX3, zLDX4, zMNEA, zMNEZ, + zNDMEA, zOFF, zRBIT, zREAC, zRETN, zRSTR, + zSAL, zSAMAN, zSBIT, zSBL, zSEAC, zSELIN, zSETR, + zTAC, zTADM, zTAM, zTAMACS, zTAMDYN, zTAMIY, zTAMIYC, zTAMZA, + zTASR, zTAX, zTAY, zTBIT, zTCA, zTCMIY, zTCY, zTDO, zTKA, + zTKM, zTMA, zTMSET, zTMY, zTPC, zTRA, zTSG, zTXA, zTYA, + zXDA, zXMA, zYMCY, zYNEA, zYNEC }; static const char *const s_mnemonic[]; @@ -108,6 +112,16 @@ private: static const u8 tms2400_mnemonic[256]; }; +class smc1102_disassembler : public tms1100_disassembler +{ +public: + smc1102_disassembler(); + virtual ~smc1102_disassembler() = default; + +private: + static const u8 smc1102_mnemonic[256]; +}; + class tms0980_disassembler : public tms1000_base_disassembler { public: diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index d740d1ef763..b586beeb314 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -3277,6 +3277,10 @@ ROM_END Two versions are known, one with the tone knob, and one without. The MCU is the same for both. + Electronic Jukebox (model 552) has the exact same MCU as well, it's on a + much smaller PCB. It doesn't have the tone knob either. They removed the + LEDs and learn mode. + ***************************************************************************/ class litelrn_state : public hh_tms1k_state @@ -11391,8 +11395,12 @@ ROM_END * TMS5110AN2L-1 speech chip, 4KB VSM CM72010NL (die label: T0355C, 72010U) * 4-digit 7seg LED display, 6 other LEDs - Micronta is not a company, but one of the Radio Shack house brands. Schematics - are included in the manual, they also mention a CM72005 VSM. + Even though it has a 60 Hz inputline, it doesn't use it to sync the clock. + Instead, it relies on the MCU frequency, which is not very accurate when + using a simple R/C osc. + + Micronta is not a company, but one of the Radio Shack house brands. + Schematics are included in the manual, they also mention a CM72005 VSM. Spartus AVT from 1982 is nearly the same as VoxClock 3. @@ -11512,9 +11520,9 @@ static INPUT_PORTS_START( vclock3 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Set Time") PORT_START("IN.4") // R4 (factory-set jumpers) - PORT_CONFNAME( 0x01, 0x01, "AC Frequency") PORT_CHANGED_MEMBER(DEVICE_SELF, vclock3_state, switch_hz, 0) - PORT_CONFSETTING( 0x00, "50 Hz" ) - PORT_CONFSETTING( 0x01, "60 Hz" ) + PORT_CONFNAME( 0x01, 0x00, "AC Frequency") PORT_CHANGED_MEMBER(DEVICE_SELF, vclock3_state, switch_hz, 0) + PORT_CONFSETTING( 0x01, "50 Hz" ) + PORT_CONFSETTING( 0x00, "60 Hz" ) PORT_CONFNAME( 0x02, 0x00, "Chime / Announce" ) PORT_CONFSETTING( 0x02, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -16316,7 +16324,7 @@ INPUT_PORTS_END void xl25_state::xl25(machine_config &config) { // basic machine hardware - TMS1000C(config, m_maincpu, 300000); // approximation - RC osc. R=5.6K, C=47pF + TMS1000C(config, m_maincpu, 300000); // approximation - RC osc. R=56K, C=47pF m_maincpu->read_k().set(FUNC(xl25_state::read_k)); m_maincpu->write_r().set(FUNC(xl25_state::write_r)); m_maincpu->write_o().set(FUNC(xl25_state::write_o)); diff --git a/src/mame/namco/bosco.cpp b/src/mame/namco/bosco.cpp index 68de092e4ae..b4bb9162954 100644 --- a/src/mame/namco/bosco.cpp +++ b/src/mame/namco/bosco.cpp @@ -180,9 +180,8 @@ void bosco_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, { uint8_t *spriteram = m_spriteram; uint8_t *spriteram_2 = m_spriteram2; - int offs; - for (offs = 0;offs < m_spriteram_size;offs += 2) + for (int offs = 0;offs < m_spriteram_size;offs += 2) { int sx = spriteram[offs + 1] - 2; int sy = 240 - spriteram_2[offs]; @@ -204,9 +203,7 @@ void bosco_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, void bosco_state::draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect, int flip) { - int offs; - - for (offs = 4; offs < 0x10;offs++) + for (int offs = 4; offs < 0x10;offs++) { int x = m_bosco_radarx[offs] + ((~m_bosco_radarattr[offs] & 0x01) << 8) - 2; int y = 251 - m_bosco_radary[offs]; diff --git a/src/mame/tiger/k28m2.cpp b/src/mame/tiger/k28m2.cpp index e7858e10acc..92ce46dd703 100644 --- a/src/mame/tiger/k28m2.cpp +++ b/src/mame/tiger/k28m2.cpp @@ -14,7 +14,7 @@ Hardware notes: - MCU: TMS1400 MP7324 (die label: TMS1400, MP7324, 28L 01D D000 R100) - TMS51xx: TMS5110A - VSM: 16KB CM62084 -- LCD: SMOS SMC1112 MCU to 8*14-seg display +- LCD: SMOS SMC1112 MCU under epoxy (die label: SMC1112 D2N0), 8*14-seg display - module slot (not compatible with the 1981 version(s)) TODO: diff --git a/src/tools/unidasm.cpp b/src/tools/unidasm.cpp index ae0ed8369de..e0382ea48c8 100644 --- a/src/tools/unidasm.cpp +++ b/src/tools/unidasm.cpp @@ -589,6 +589,7 @@ static const dasm_table_entry dasm_table[] = { "sm590", le, 0, []() -> util::disasm_interface * { return new sm590_disassembler; } }, { "sm5a", le, 0, []() -> util::disasm_interface * { return new sm5a_disassembler; } }, { "sm8500", le, 0, []() -> util::disasm_interface * { return new sm8500_disassembler; } }, + { "smc1102", le, 0, []() -> util::disasm_interface * { return new smc1102_disassembler; } }, { "sparclite", be, 0, []() -> util::disasm_interface * { return new sparc_disassembler(nullptr, sparc_disassembler::sparclite); } }, { "sparcv7", be, 0, []() -> util::disasm_interface * { return new sparc_disassembler(nullptr, sparc_disassembler::v7); } }, { "sparcv8", be, 0, []() -> util::disasm_interface * { return new sparc_disassembler(nullptr, sparc_disassembler::v8); } }, |