diff options
author | Curt Coder <curtcoder@mail.com> | 2017-11-11 14:02:22 +0200 |
---|---|---|
committer | Curt Coder <curtcoder@mail.com> | 2017-11-11 14:02:22 +0200 |
commit | c2cf2f75043baebb8d1fac05b242f44e0beb6278 (patch) | |
tree | 4b58ef0f83c0257ef7f3637ed36f8c06b8f19a5e | |
parent | 2dc33c0d0b343017d2665776df0115fd0817ada4 (diff) |
tmc600: Added Euro bus skeleton. [Curt Coder]
-rw-r--r-- | scripts/src/bus.lua | 12 | ||||
-rw-r--r-- | scripts/target/mame/mess.lua | 1 | ||||
-rw-r--r-- | src/devices/bus/tmc600/euro.cpp | 77 | ||||
-rw-r--r-- | src/devices/bus/tmc600/euro.h | 120 |
4 files changed, 210 insertions, 0 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 64559c43509..a0cadb5e4cd 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -3320,3 +3320,15 @@ if (BUSES["EINSTEIN_USERPORT"]~=null) then MAME_DIR .. "src/devices/bus/einstein/userport/speech.h", } end + +--------------------------------------------------- +-- +--@src/devices/bus/tmc600/euro.h,BUSES["TMC600"] = true +--------------------------------------------------- + +if (BUSES["TMC600"]~=null) then + files { + MAME_DIR .. "src/devices/bus/tmc600/euro.cpp", + MAME_DIR .. "src/devices/bus/tmc600/euro.h", + } +end diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index de2a0bc5edd..6e7df8aa1cd 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -734,6 +734,7 @@ BUSES["SUNKBD"] = true BUSES["SVI_EXPANDER"] = true BUSES["SVI_SLOT"] = true BUSES["TATUNG_PIPE"] = true +BUSES["TMC600"] = true BUSES["TI8X"] = true BUSES["TI99"] = true BUSES["TI99X"] = true diff --git a/src/devices/bus/tmc600/euro.cpp b/src/devices/bus/tmc600/euro.cpp new file mode 100644 index 00000000000..5549ea693c3 --- /dev/null +++ b/src/devices/bus/tmc600/euro.cpp @@ -0,0 +1,77 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Telercas Telmac TMC-600 euro bus emulation + +**********************************************************************/ + +#include "emu.h" +#include "euro.h" + + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(TMC600_EURO_BUS_SLOT, tmc600_euro_bus_slot_t, "tmc600_euro_bus_slot", "TMC-600 euro bus slot") + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// device_tmc600_euro_bus_card_interface - constructor +//------------------------------------------------- + +device_tmc600_euro_bus_card_interface::device_tmc600_euro_bus_card_interface(const machine_config &mconfig, device_t &device) + : device_slot_card_interface(mconfig, device) +{ + m_slot = dynamic_cast<tmc600_euro_bus_slot_t *>(device.owner()); +} + + +//------------------------------------------------- +// tmc600_euro_bus_slot_t - constructor +//------------------------------------------------- + +tmc600_euro_bus_slot_t::tmc600_euro_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, TMC600_EURO_BUS_SLOT, tag, owner, clock), + device_slot_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void tmc600_euro_bus_slot_t::device_start() +{ + m_card = dynamic_cast<device_tmc600_euro_bus_card_interface *>(get_card_device()); +} + + +//------------------------------------------------- +// SLOT_INTERFACE( tmc600_euro_bus_cards ) +//------------------------------------------------- + +SLOT_INTERFACE_START( tmc600_euro_bus_cards ) + //SLOT_INTERFACE("tmc710", TMC710) // 5-way expander + //SLOT_INTERFACE("tmc720", TMC720) // 5-way expander (new model) + //SLOT_INTERFACE("tmce200", TMCE200) // 8 KB RAM (CMOS) + //SLOT_INTERFACE("tmce220", TMCE220) // 16/32 KB RAM/EPROM + //SLOT_INTERFACE("tmce225", TMCE225) // 16 KB RAM (CMOS) + //SLOT_INTERFACE("tmce250", TMCE250) // 32-way input/output + //SLOT_INTERFACE("tmce260", TMCE260) // RS-232 + //SLOT_INTERFACE("tmce270", TMCE270) // generic ADC card (RCA CA3162 or CA3300, Teledyne 8700/01/02/03/04/05) + //SLOT_INTERFACE("tmce2701", TMCE2701) // TMCE-270 with CA3162 + //SLOT_INTERFACE("tmce2702", TMCE2702) // TMCE-270 with CA3300 + //SLOT_INTERFACE("tmce280", TMCE280) // floppy disc controller for 3x 5.25" and 4x 8" + //SLOT_INTERFACE("tmce285", TMCE285) // monochrome CRT controller (min. 80 cps) + //SLOT_INTERFACE("tmce300", TMCE300) // slave computer with parallel I/O + //SLOT_INTERFACE("tmce305", TMCE304) // slave computer with serial I/O +SLOT_INTERFACE_END diff --git a/src/devices/bus/tmc600/euro.h b/src/devices/bus/tmc600/euro.h new file mode 100644 index 00000000000..78cafa63147 --- /dev/null +++ b/src/devices/bus/tmc600/euro.h @@ -0,0 +1,120 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Telercas Telmac TMC-600 euro bus emulation + +********************************************************************** + + C A + GND * 1 * GND + D1 * 2 * D0 + D3 * 3 * D2 + D5 * 4 * D4 + D7 * 5 * D6 + GND * 6 * GND + A1 * 7 * A0 + A3 * 8 * A2 + A5 * 9 * A4 + A7 * 10 * A6 + A9 * 11 * A8 + A11 * 12 * A10 + A13 * 13 * A12 + A15 * 14 * A14 + GND * 15 * GND + TPB * 16 * CLOCK + _MWR * 17 * _CLEAR + _MRD * 18 * _WAIT + TPA * 19 * _DMAO + SC0 * 20 * _DMAI + SC1 * 21 * _INT + N0 * 22 * _EF1 + N1 * 23 * _EF2 + N2 * 24 * _EF3 + Q * 25 * _EF4 + _MI * 26 * _EMS + SP1 * 27 * SP2 + GND * 28 * GND + -5V * 29 * -5V + +12v * 30 * +12V + +5V * 31 * +5V + +5V * 32 * +5V + +**********************************************************************/ + +#ifndef MAME_DEVICES_TMC600_EURO_H +#define MAME_DEVICES_TMC600_EURO_H + +#pragma once + + + +//************************************************************************** +// CONSTANTS +//************************************************************************** + +#define TMC600_EURO_BUS_TAG "bus" + + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_TMC600_EURO_BUS_SLOT_ADD(_tag, _slot_intf, _def_slot) \ + MCFG_DEVICE_ADD(_tag, TMC600_EURO_BUS_SLOT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> device_tmc600_euro_bus_card_interface + +class tmc600_euro_bus_slot_t; + +class device_tmc600_euro_bus_card_interface : public device_slot_card_interface +{ +public: + +protected: + // construction/destruction + device_tmc600_euro_bus_card_interface(const machine_config &mconfig, device_t &device); + + tmc600_euro_bus_slot_t *m_slot; + + friend class tmc600_euro_bus_slot_t; +}; + + +// ======================> tmc600_euro_bus_slot_t + +class tmc600_euro_bus_slot_t : public device_t, + public device_slot_interface +{ +public: + // construction/destruction + tmc600_euro_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override { if (m_card) get_card_device()->reset(); } + + device_tmc600_euro_bus_card_interface *m_card; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(TMC600_EURO_BUS_SLOT, tmc600_euro_bus_slot_t) + + +SLOT_INTERFACE_EXTERN( tmc600_euro_bus_cards ); + + +typedef device_type_iterator<tmc600_euro_bus_slot_t> tmc600_euro_bus_slot_t_iterator; + + +#endif // MAME_DEVICES_TMC600_EURO_H |