diff options
Diffstat (limited to 'src/emu/cpu/tms0980/tms0980.c')
-rw-r--r-- | src/emu/cpu/tms0980/tms0980.c | 49 |
1 files changed, 22 insertions, 27 deletions
diff --git a/src/emu/cpu/tms0980/tms0980.c b/src/emu/cpu/tms0980/tms0980.c index 5c13d0741f5..049d31fa287 100644 --- a/src/emu/cpu/tms0980/tms0980.c +++ b/src/emu/cpu/tms0980/tms0980.c @@ -92,8 +92,8 @@ unknown cycle: CME, SSE, SSS #define M_SSE 0x00080000 /* Special Status Enable */ #define M_SSS 0x00100000 /* Special Status Sample */ -#define M_RSTR 0x00200000 /* -> line #36, F_RSTR (TMC02x0 custom) */ -#define M_UNK1 0x00400000 /* -> line #37, F_???? (TMC0270 custom) */ +#define M_RSTR 0x00200000 /* -> line #36, F_RSTR (TMS02x0 custom) */ +#define M_UNK1 0x00400000 /* -> line #37, F_???? (TMS0270 custom) */ /* Standard/fixed instructions - these are documented more in their specific handlers below */ #define F_BR 0x00000001 @@ -154,13 +154,14 @@ const device_type TMS0980 = &device_creator<tms0980_cpu_device>; // 28-pin DIP, // - 32-term microinstructions PLA between the RAM and ROM, supporting 15 microinstructions // - 16-term output PLA and segment PLA above the RAM (rotate opla 90 degrees) const device_type TMS0970 = &device_creator<tms0970_cpu_device>; // 28-pin DIP, 11 R pins +// TMS0950 is same? -// TMC0270 on the other hand, is a TMS0980 with earrings and a new hat. The new changes look like a quick afterthought, almost hacky +// TMS0270 on the other hand, is a TMS0980 with earrings and a new hat. The new changes look like a quick afterthought, almost hacky // - RAM, ROM, and main instructions PLA is exactly the same as TMS0980 // - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions plus optional separate lines for custom opcode handling // - 48-term output PLA above the RAM (rotate opla 90 degrees) -const device_type TMC0270 = &device_creator<tmc0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O) -// TMC0260 is same? except opla is 32 instead of 48 terms +const device_type TMS0270 = &device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O) +// TMS0260 is same? except opla is 32 instead of 48 terms static ADDRESS_MAP_START(program_11bit_9, AS_PROGRAM, 16, tms1xxx_cpu_device) @@ -249,8 +250,8 @@ tms0980_cpu_device::tms0980_cpu_device(const machine_config &mconfig, device_typ } -tmc0270_cpu_device::tmc0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : tms0980_cpu_device(mconfig, TMC0270, "TMC0270", tag, owner, clock, 16, 16, 4, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tmc0270", __FILE__) +tms0270_cpu_device::tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : tms0980_cpu_device(mconfig, TMS0270, "TMS0270", tag, owner, clock, 16, 16, 4, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tms0270", __FILE__) { } @@ -309,7 +310,7 @@ machine_config_constructor tms0980_cpu_device::device_mconfig_additions() const } -static MACHINE_CONFIG_FRAGMENT(tmc0270) +static MACHINE_CONFIG_FRAGMENT(tms0270) // main opcodes PLA, microinstructions PLA, output PLA MCFG_PLA_ADD("ipla", 9, 22, 24) @@ -320,9 +321,9 @@ static MACHINE_CONFIG_FRAGMENT(tmc0270) MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY) MACHINE_CONFIG_END -machine_config_constructor tmc0270_cpu_device::device_mconfig_additions() const +machine_config_constructor tms0270_cpu_device::device_mconfig_additions() const { - return MACHINE_CONFIG_NAME(tmc0270); + return MACHINE_CONFIG_NAME(tms0270); } @@ -396,7 +397,6 @@ void tms1xxx_cpu_device::device_start() m_cs = 0; m_r = 0; m_o = 0; - m_o_index = 0; m_cki_bus = 0; m_c4 = 0; m_p = 0; @@ -434,7 +434,6 @@ void tms1xxx_cpu_device::device_start() save_item(NAME(m_cs)); save_item(NAME(m_r)); save_item(NAME(m_o)); - save_item(NAME(m_o_index)); save_item(NAME(m_cki_bus)); save_item(NAME(m_c4)); save_item(NAME(m_p)); @@ -475,7 +474,7 @@ void tms1xxx_cpu_device::device_start() m_icountptr = &m_icount; } -void tmc0270_cpu_device::device_start() +void tms0270_cpu_device::device_start() { // common init tms1xxx_cpu_device::device_start(); @@ -635,8 +634,8 @@ UINT32 tms0980_cpu_device::decode_micro(UINT8 sel) UINT32 mask = m_mpla->read(sel); mask ^= 0x43fc3; // invert active-negative - // M_RSTR is specific to TMC02x0, it redirects to F_RSTR - // M_UNK1 is specific to TMC0270, unknown yet + // M_RSTR is specific to TMS02x0, it redirects to F_RSTR + // M_UNK1 is specific to TMS0270, unknown yet // _______ ______ _____ _____ _____ _____ ______ _____ ______ _____ _____ const UINT32 md[22] = { M_NDMTP, M_DMTP, M_AUTY, M_AUTA, M_CKM, M_SSE, M_CKP, M_YTP, M_MTP, M_ATN, M_NATN, M_MTN, M_15TN, M_CKN, M_NE, M_C8, M_SSS, M_CME, M_CIN, M_STO, M_RSTR, M_UNK1 }; @@ -683,7 +682,7 @@ void tms0980_cpu_device::device_reset() m_micro_direct[op] = decode_micro(op); } -void tmc0270_cpu_device::device_reset() +void tms0270_cpu_device::device_reset() { // common reset tms0980_cpu_device::device_reset(); @@ -747,7 +746,7 @@ void tms0980_cpu_device::read_opcode() next_pc(); } -void tmc0270_cpu_device::read_opcode() +void tms0270_cpu_device::read_opcode() { tms0980_cpu_device::read_opcode(); @@ -764,8 +763,6 @@ void tmc0270_cpu_device::read_opcode() void tms1xxx_cpu_device::write_o_output(UINT8 index) { - m_o_index = index; - // a hardcoded table is supported if the output pla is unknown m_o = (c_output_pla == NULL) ? m_opla->read(index) : c_output_pla[index]; m_write_o(0, m_o & m_o_mask, 0xffff); @@ -773,14 +770,12 @@ void tms1xxx_cpu_device::write_o_output(UINT8 index) void tms0970_cpu_device::write_o_output(UINT8 index) { - m_o_index = index; - m_o = m_spla->read(index); m_write_o(0, m_o & m_o_mask, 0xffff); } -void tmc0270_cpu_device::dynamic_output() +void tms0270_cpu_device::dynamic_output() { // TODO.. @@ -798,7 +793,7 @@ UINT8 tms1xxx_cpu_device::read_k_input() return (k & 0xf) | k3; } -UINT8 tmc0270_cpu_device::read_k_input() +UINT8 tms0270_cpu_device::read_k_input() { // TODO.. @@ -1019,8 +1014,8 @@ void tms1xxx_cpu_device::op_sbl() } -// TMC0270-specific -void tmc0270_cpu_device::op_tdo() +// TMS0270-specific +void tms0270_cpu_device::op_tdo() { // TDO: transfer data out if (m_status) @@ -1031,13 +1026,13 @@ void tmc0270_cpu_device::op_tdo() // write to output is done in dynamic_output } -void tmc0270_cpu_device::op_setr() +void tms0270_cpu_device::op_setr() { // same as default, but handle write to output in dynamic_output m_r = m_r | (1 << m_y); } -void tmc0270_cpu_device::op_rstr() +void tms0270_cpu_device::op_rstr() { // same as default, but handle write to output in dynamic_output m_r = m_r & ~(1 << m_y); |