summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commitc2cf2f75043baebb8d1fac05b242f44e0beb6278 (patch)
tree4b58ef0f83c0257ef7f3637ed36f8c06b8f19a5e
parent2dc33c0d0b343017d2665776df0115fd0817ada4 (diff)
tmc600: Added Euro bus skeleton. [Curt Coder]
-rw-r--r--scripts/src/bus.lua12
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/bus/tmc600/euro.cpp77
-rw-r--r--src/devices/bus/tmc600/euro.h120
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