summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2023-04-06 23:23:44 +0200
committer hap <happppp@users.noreply.github.com>2023-04-06 23:23:57 +0200
commitbbfc80d0b8c65d5d1e612f7ecefa3dd928a334d7 (patch)
tree23b57da731e33d04d4488392d63597f92b61c7cc /src
parentb89bd1a8e510ea72f98fc10bb5692fd2e8987329 (diff)
smc1102: add disassembler
Diffstat (limited to 'src')
-rw-r--r--src/devices/cpu/tms1000/tms0970.cpp2
-rw-r--r--src/devices/cpu/tms1000/tms0980.cpp2
-rw-r--r--src/devices/cpu/tms1000/tms1000.cpp20
-rw-r--r--src/devices/cpu/tms1000/tms1000.h17
-rw-r--r--src/devices/cpu/tms1000/tms1k_base.h116
-rw-r--r--src/devices/cpu/tms1000/tms1k_dasm.cpp128
-rw-r--r--src/devices/cpu/tms1000/tms1k_dasm.h28
-rw-r--r--src/mame/handheld/hh_tms1k.cpp20
-rw-r--r--src/mame/namco/bosco.cpp7
-rw-r--r--src/mame/tiger/k28m2.cpp2
-rw-r--r--src/tools/unidasm.cpp1
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); } },