summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/bus.lua4
-rw-r--r--src/devices/bus/rc2014/edge.cpp203
-rw-r--r--src/devices/bus/rc2014/edge.h23
-rw-r--r--src/devices/bus/rc2014/micro.cpp1
-rw-r--r--src/devices/bus/rc2014/modules.cpp18
-rw-r--r--src/devices/bus/rc2014/modules.h2
-rw-r--r--src/devices/bus/rc2014/rc2014.cpp4
-rw-r--r--src/devices/bus/rc2014/rc2014.h4
-rw-r--r--src/devices/bus/rc2014/romram.cpp64
-rw-r--r--src/devices/bus/rc2014/romram.h1
-rw-r--r--src/devices/bus/rc2014/serial.cpp4
-rw-r--r--src/devices/bus/rc2014/z180cpu.cpp133
-rw-r--r--src/devices/bus/rc2014/z180cpu.h18
-rw-r--r--src/mame/drivers/rc2014.cpp338
-rw-r--r--src/mame/mame.lst6
15 files changed, 717 insertions, 106 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua
index e65bb3c94b4..1f618083d79 100644
--- a/scripts/src/bus.lua
+++ b/scripts/src/bus.lua
@@ -2114,6 +2114,8 @@ if (BUSES["RC2014"]~=null) then
MAME_DIR .. "src/devices/bus/rc2014/cf.h",
MAME_DIR .. "src/devices/bus/rc2014/clock.cpp",
MAME_DIR .. "src/devices/bus/rc2014/clock.h",
+ MAME_DIR .. "src/devices/bus/rc2014/edge.cpp",
+ MAME_DIR .. "src/devices/bus/rc2014/edge.h",
MAME_DIR .. "src/devices/bus/rc2014/fdc.cpp",
MAME_DIR .. "src/devices/bus/rc2014/fdc.h",
MAME_DIR .. "src/devices/bus/rc2014/ide.cpp",
@@ -2134,6 +2136,8 @@ if (BUSES["RC2014"]~=null) then
MAME_DIR .. "src/devices/bus/rc2014/serial.h",
MAME_DIR .. "src/devices/bus/rc2014/sound.cpp",
MAME_DIR .. "src/devices/bus/rc2014/sound.h",
+ MAME_DIR .. "src/devices/bus/rc2014/z180cpu.cpp",
+ MAME_DIR .. "src/devices/bus/rc2014/z180cpu.h",
MAME_DIR .. "src/devices/bus/rc2014/z80cpu.cpp",
MAME_DIR .. "src/devices/bus/rc2014/z80cpu.h",
}
diff --git a/src/devices/bus/rc2014/edge.cpp b/src/devices/bus/rc2014/edge.cpp
new file mode 100644
index 00000000000..3776ee45a2e
--- /dev/null
+++ b/src/devices/bus/rc2014/edge.cpp
@@ -0,0 +1,203 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic
+/***************************************************************************
+
+ RC2014 Modulare Backplane Extensions
+
+****************************************************************************/
+
+#include "emu.h"
+#include "edge.h"
+#include "modules.h"
+
+namespace {
+
+//**************************************************************************
+// SC106 - Modular Backplane (RC2014)
+// Module author: Stephen C Cousins
+//**************************************************************************
+
+class sc106_device : public device_t, public device_rc2014_rc80_card_interface
+{
+public:
+ // construction/destruction
+ sc106_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ sc106_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+private:
+ required_device<rc2014_rc80_bus_device> m_rc80_bus;
+};
+
+sc106_device::sc106_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_rc2014_rc80_card_interface(mconfig, *this)
+ , m_rc80_bus(*this, ":bus")
+{
+}
+
+sc106_device::sc106_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : sc106_device(mconfig, RC2014_SC106, tag, owner, clock)
+{
+}
+
+void sc106_device::device_start()
+{
+}
+
+void sc106_device::device_add_mconfig(machine_config &config)
+{
+ RC2014_RC80_SLOT(config, "1", m_rc80_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "2", m_rc80_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "3", m_rc80_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "4", m_rc80_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "5", m_rc80_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "6", m_rc80_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "e", m_rc80_bus, rc2014_rc80_bus_edge_modules, nullptr);
+
+}
+
+//**************************************************************************
+// SC107 - Modular Backplane (RC2014)
+// Module author: Stephen C Cousins
+//
+// TODO: Pins 37 and 38 form an interrupt daisy chain
+//**************************************************************************
+
+class sc107_device : public sc106_device
+{
+ public:
+ // construction/destruction
+ sc107_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
+sc107_device::sc107_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : sc106_device(mconfig, RC2014_SC107, tag, owner, clock)
+{
+}
+
+//**************************************************************************
+// SC113 - Modular Backplane (RC2014)
+// Module author: Stephen C Cousins
+//
+// TODO: Jumpers on board
+//**************************************************************************
+
+class sc113_device : public sc106_device
+{
+ public:
+ // construction/destruction
+ sc113_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
+sc113_device::sc113_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : sc106_device(mconfig, RC2014_SC113, tag, owner, clock)
+{
+}
+
+//**************************************************************************
+// SC141 - Modular Backplane (RC2014)
+// Module author: Stephen C Cousins
+//**************************************************************************
+
+class sc141_device : public device_t, public device_rc2014_card_interface
+{
+public:
+ // construction/destruction
+ sc141_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+private:
+ required_device<rc2014_bus_device> m_rc40_bus;
+};
+
+sc141_device::sc141_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, RC2014_SC141, tag, owner, clock)
+ , device_rc2014_card_interface(mconfig, *this)
+ , m_rc40_bus(*this, ":bus")
+{
+}
+
+void sc141_device::device_start()
+{
+}
+
+void sc141_device::device_add_mconfig(machine_config &config)
+{
+ RC2014_SLOT(config, "1", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "2", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "3", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "4", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "5", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "6", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "7", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "8", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "9", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "10", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "11", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "12", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "e", m_rc40_bus, rc2014_bus_edge_modules, nullptr);
+}
+
+//**************************************************************************
+// SC147 - Modular Backplane (RC2014)
+// Module author: Stephen C Cousins
+//**************************************************************************
+
+class sc147_device : public device_t, public device_rc2014_card_interface
+{
+public:
+ // construction/destruction
+ sc147_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+private:
+ required_device<rc2014_bus_device> m_rc40_bus;
+};
+
+sc147_device::sc147_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, RC2014_SC147, tag, owner, clock)
+ , device_rc2014_card_interface(mconfig, *this)
+ , m_rc40_bus(*this, ":bus")
+{
+}
+
+void sc147_device::device_start()
+{
+}
+
+void sc147_device::device_add_mconfig(machine_config &config)
+{
+ RC2014_SLOT(config, "1", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "2", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "3", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "4", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "5", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "6", m_rc40_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "e", m_rc40_bus, rc2014_bus_edge_modules, nullptr);
+}
+
+}
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(RC2014_SC106, device_rc2014_rc80_card_interface, sc106_device, "rc2014_sc106", "SC106 - Modular Backplane (RC2014)")
+DEFINE_DEVICE_TYPE_PRIVATE(RC2014_SC107, device_rc2014_rc80_card_interface, sc107_device, "rc2014_sc107", "SC107 - Modular Backplane (RC2014)")
+DEFINE_DEVICE_TYPE_PRIVATE(RC2014_SC113, device_rc2014_rc80_card_interface, sc113_device, "rc2014_sc113", "SC113 - Modular Backplane (RC2014)")
+
+DEFINE_DEVICE_TYPE_PRIVATE(RC2014_SC141, device_rc2014_card_interface, sc141_device, "rc2014_sc141", "SC141 - Modular Backplane (RC2014)")
+DEFINE_DEVICE_TYPE_PRIVATE(RC2014_SC147, device_rc2014_card_interface, sc147_device, "rc2014_sc147", "SC147 - Modular Backplane (RC2014)")
diff --git a/src/devices/bus/rc2014/edge.h b/src/devices/bus/rc2014/edge.h
new file mode 100644
index 00000000000..d55b9976f6b
--- /dev/null
+++ b/src/devices/bus/rc2014/edge.h
@@ -0,0 +1,23 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic
+/**********************************************************************
+
+ RC2014 Modulare Backplane Extensions
+
+**********************************************************************/
+
+#ifndef MAME_BUS_RC2014_EDGE_H
+#define MAME_BUS_RC2014_EDGE_H
+
+#pragma once
+
+#include "bus/rc2014/rc2014.h"
+
+DECLARE_DEVICE_TYPE(RC2014_SC106, device_rc2014_rc80_card_interface)
+DECLARE_DEVICE_TYPE(RC2014_SC107, device_rc2014_rc80_card_interface)
+DECLARE_DEVICE_TYPE(RC2014_SC113, device_rc2014_rc80_card_interface)
+
+DECLARE_DEVICE_TYPE(RC2014_SC141, device_rc2014_card_interface)
+DECLARE_DEVICE_TYPE(RC2014_SC147, device_rc2014_card_interface)
+
+#endif // MAME_BUS_RC2014_EDGE_H
diff --git a/src/devices/bus/rc2014/micro.cpp b/src/devices/bus/rc2014/micro.cpp
index 10f3b5c3e8e..f818dcd8c7f 100644
--- a/src/devices/bus/rc2014/micro.cpp
+++ b/src/devices/bus/rc2014/micro.cpp
@@ -130,6 +130,7 @@ void rc2014_micro::device_add_mconfig(machine_config &config)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd));
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232.set_option_device_input_defaults("null_modem", DEVICE_INPUT_DEFAULTS_NAME(terminal));
}
static INPUT_PORTS_START( rc2014_micro_jumpers )
diff --git a/src/devices/bus/rc2014/modules.cpp b/src/devices/bus/rc2014/modules.cpp
index 7e27e7d65e6..8ce74ae2cc1 100644
--- a/src/devices/bus/rc2014/modules.cpp
+++ b/src/devices/bus/rc2014/modules.cpp
@@ -11,6 +11,7 @@
#include "bus/rc2014/cf.h"
#include "bus/rc2014/clock.h"
+#include "bus/rc2014/edge.h"
#include "bus/rc2014/fdc.h"
#include "bus/rc2014/ide.h"
#include "bus/rc2014/micro.h"
@@ -20,6 +21,7 @@
#include "bus/rc2014/rtc.h"
#include "bus/rc2014/serial.h"
#include "bus/rc2014/sound.h"
+#include "bus/rc2014/z180cpu.h"
#include "bus/rc2014/z80cpu.h"
void rc2014_bus_modules(device_slot_interface &device)
@@ -54,6 +56,12 @@ void rc2014_mini_bus_modules(device_slot_interface &device)
device.option_add("mini_cpm", RC2014_MINI_CPM);
}
+void rc2014_bus_edge_modules(device_slot_interface &device)
+{
+ device.option_add("sc141", RC2014_SC141);
+ device.option_add("sc147", RC2014_SC147);
+ rc2014_bus_modules(device);
+}
void rc2014_ext_bus_modules(device_slot_interface &device)
{
rc2014_bus_modules(device);
@@ -67,4 +75,14 @@ void rc2014_ext_bus_modules(device_slot_interface &device)
void rc2014_rc80_bus_modules(device_slot_interface &device)
{
rc2014_ext_bus_modules(device);
+ device.option_add("sc111", RC2014_SC111);
+ device.option_add("sc119", RC2014_SC119);
+}
+
+void rc2014_rc80_bus_edge_modules(device_slot_interface &device)
+{
+ device.option_add("sc106", RC2014_SC106);
+ device.option_add("sc107", RC2014_SC107);
+ device.option_add("sc113", RC2014_SC113);
+ rc2014_rc80_bus_modules(device);
}
diff --git a/src/devices/bus/rc2014/modules.h b/src/devices/bus/rc2014/modules.h
index 16becd448d5..6f0368b0236 100644
--- a/src/devices/bus/rc2014/modules.h
+++ b/src/devices/bus/rc2014/modules.h
@@ -13,8 +13,10 @@
// supported devices
void rc2014_bus_modules(device_slot_interface &device);
+void rc2014_bus_edge_modules(device_slot_interface &device);
void rc2014_mini_bus_modules(device_slot_interface &device);
void rc2014_ext_bus_modules(device_slot_interface &device);
void rc2014_rc80_bus_modules(device_slot_interface &device);
+void rc2014_rc80_bus_edge_modules(device_slot_interface &device);
#endif // MAME_BUS_RC2014_MODULES_H
diff --git a/src/devices/bus/rc2014/rc2014.cpp b/src/devices/bus/rc2014/rc2014.cpp
index 26feec22365..5617162e2f1 100644
--- a/src/devices/bus/rc2014/rc2014.cpp
+++ b/src/devices/bus/rc2014/rc2014.cpp
@@ -184,7 +184,7 @@ void rc2014_ext_bus_device::device_start()
//-------------------------------------------------
device_rc2014_ext_card_interface::device_rc2014_ext_card_interface(const machine_config &mconfig, device_t &device)
- : device_rc2014_card_interface(mconfig,device)
+ : device_rc2014_card_interface(mconfig, device)
, m_bus(nullptr)
{
}
@@ -250,7 +250,7 @@ void rc2014_rc80_bus_device::device_start()
//-------------------------------------------------
device_rc2014_rc80_card_interface::device_rc2014_rc80_card_interface(const machine_config &mconfig, device_t &device)
- : device_rc2014_ext_card_interface(mconfig,device)
+ : device_rc2014_ext_card_interface(mconfig, device)
, m_bus(nullptr)
{
}
diff --git a/src/devices/bus/rc2014/rc2014.h b/src/devices/bus/rc2014/rc2014.h
index da7284edc7c..a40355af389 100644
--- a/src/devices/bus/rc2014/rc2014.h
+++ b/src/devices/bus/rc2014/rc2014.h
@@ -300,14 +300,14 @@ public:
rc2014_rc80_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
template <typename T, typename U>
- rc2014_rc80_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&bus_tag, U &&slot_options, char const *default_option)
+ rc2014_rc80_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&bus_tag, U &&slot_options, char const *default_option, bool fixed = false)
: rc2014_rc80_slot_device(mconfig, tag, owner, DERIVED_CLOCK(1,1))
{
m_bus.set_tag(std::forward<T>(bus_tag));
option_reset();
slot_options(*this);
set_default_option(default_option);
- set_fixed(false);
+ set_fixed(fixed);
}
protected:
diff --git a/src/devices/bus/rc2014/romram.cpp b/src/devices/bus/rc2014/romram.cpp
index bc7d0713e2e..e0fcc03fa39 100644
--- a/src/devices/bus/rc2014/romram.cpp
+++ b/src/devices/bus/rc2014/romram.cpp
@@ -154,9 +154,73 @@ const tiny_rom_entry *rom_ram_512k_device::device_rom_region() const
return ROM_NAME( rc2014_rom_ram_512k );
}
+//**************************************************************************
+// SC119 Z180 Memory module
+// Module author: Stephen C Cousins
+//**************************************************************************
+
+class sc119_device : public device_t, public device_rc2014_rc80_card_interface
+{
+public:
+ // construction/destruction
+ sc119_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+private:
+ std::unique_ptr<u8[]> m_ram;
+ required_device<sst_39sf040_device> m_flash;
+};
+
+sc119_device::sc119_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, RC2014_SC119, tag, owner, clock)
+ , device_rc2014_rc80_card_interface(mconfig, *this)
+ , m_ram(nullptr)
+ , m_flash(*this, "flash")
+{
+}
+
+void sc119_device::device_start()
+{
+ m_ram = std::make_unique<u8[]>(0x80000);
+ std::fill_n(m_ram.get(), 0x80000, 0xff);
+ save_pointer(NAME(m_ram), 0x80000);
+
+ // TODO: fix intelfsh
+ //m_bus->installer(AS_PROGRAM)->install_readwrite_handler(0x00000, 0x7ffff, read8sm_delegate(m_flash, FUNC(intelfsh8_device::read)), write8sm_delegate(m_flash, FUNC(intelfsh8_device::write)));
+ m_bus->installer(AS_PROGRAM)->install_readwrite_handler(0x00000, 0x7ffff, read8sm_delegate(m_flash, FUNC(intelfsh8_device::read_raw)), write8sm_delegate(m_flash, FUNC(intelfsh8_device::write_raw)));
+ m_bus->installer(AS_PROGRAM)->install_ram(0x80000, 0xfffff, m_ram.get());
+}
+
+void sc119_device::device_add_mconfig(machine_config &config)
+{
+ SST_39SF040(config, m_flash);
+}
+
+ROM_START(sc119_rom)
+ ROM_REGION( 0x80000, "flash", 0)
+ ROM_DEFAULT_BIOS("3.0.1")
+ ROM_SYSTEM_BIOS(0, "2.9.1", "Official RomWBW 2.9.1") // requires 38400 baudrate
+ ROMX_LOAD( "rcz180_nat_2_9_1.rom", 0x00000, 0x80000, CRC(a538538f) SHA1(8f989e7e777bd37fe552d55bc0b14771c4cb340b), ROM_BIOS(0))
+ ROM_SYSTEM_BIOS(1, "3.0.0", "Official RomWBW 3.0.0")
+ ROMX_LOAD( "rcz180_nat_3_0_0.rom", 0x00000, 0x80000, CRC(9715e94e) SHA1(8dd7179a3bc471fb7fc1e5e2d1a930e8a858ab24), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS(2, "3.0.1", "Official RomWBW 3.0.1")
+ ROMX_LOAD( "rcz180_nat_3_0_1.rom", 0x00000, 0x80000, CRC(a6cb0d80) SHA1(cf4ad058931f0297fd2f8f81d15eb83ecbd29376), ROM_BIOS(2))
+ROM_END
+
+const tiny_rom_entry *sc119_device::device_rom_region() const
+{
+ return ROM_NAME( sc119_rom );
+}
+
}
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE_PRIVATE(RC2014_ROM_RAM_512, device_rc2014_card_interface, rom_ram_512k_device, "rc2014_rom_ram_512k", "RC2014 512K RAM / 512K Flash")
+DEFINE_DEVICE_TYPE_PRIVATE(RC2014_SC119, device_rc2014_rc80_card_interface, sc119_device, "sc119", "SC119 Z180 Memory module")
diff --git a/src/devices/bus/rc2014/romram.h b/src/devices/bus/rc2014/romram.h
index 63cf08735fa..67193b62a31 100644
--- a/src/devices/bus/rc2014/romram.h
+++ b/src/devices/bus/rc2014/romram.h
@@ -14,5 +14,6 @@
#include "bus/rc2014/rc2014.h"
DECLARE_DEVICE_TYPE(RC2014_ROM_RAM_512, device_rc2014_card_interface)
+DECLARE_DEVICE_TYPE(RC2014_SC119, device_rc2014_rc80_card_interface)
#endif // MAME_BUS_RC2014_ROMRAM_H
diff --git a/src/devices/bus/rc2014/serial.cpp b/src/devices/bus/rc2014/serial.cpp
index 1a3eff6a593..9453055f2ce 100644
--- a/src/devices/bus/rc2014/serial.cpp
+++ b/src/devices/bus/rc2014/serial.cpp
@@ -84,6 +84,7 @@ void serial_io_device::device_add_mconfig(machine_config &config)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd));
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232.set_option_device_input_defaults("null_modem", DEVICE_INPUT_DEFAULTS_NAME(terminal));
}
//**************************************************************************
@@ -150,9 +151,12 @@ void dual_serial_base::device_add_mconfig(machine_config &config)
rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, "terminal"));
rs232a.rxd_handler().set(m_sio, FUNC(z80sio_device::rxa_w));
rs232a.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232a.set_option_device_input_defaults("null_modem", DEVICE_INPUT_DEFAULTS_NAME(terminal));
rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr));
rs232b.rxd_handler().set(m_sio, FUNC(z80sio_device::rxb_w));
+ rs232b.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232b.set_option_device_input_defaults("null_modem", DEVICE_INPUT_DEFAULTS_NAME(terminal));
}
static INPUT_PORTS_START( dual_serial_jumpers )
diff --git a/src/devices/bus/rc2014/z180cpu.cpp b/src/devices/bus/rc2014/z180cpu.cpp
new file mode 100644
index 00000000000..c715970b299
--- /dev/null
+++ b/src/devices/bus/rc2014/z180cpu.cpp
@@ -0,0 +1,133 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic
+/***************************************************************************
+
+ RC2014 Z80 CPU Module
+
+****************************************************************************/
+
+#include "emu.h"
+#include "z180cpu.h"
+
+#include "cpu/z180/z180.h"
+#include "machine/clock.h"
+#include "bus/rs232/rs232.h"
+
+namespace {
+
+//**************************************************************************
+// Z180 CPU base class
+//**************************************************************************
+
+class z180cpu_base : public device_t, public device_rc2014_rc80_card_interface
+{
+protected:
+ // construction/destruction
+ z180cpu_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_resolve_objects() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ void addrmap_mem(address_map &map) { map.unmap_value_high(); }
+ void addrmap_io(address_map &map) { map.unmap_value_high(); }
+
+ DECLARE_WRITE_LINE_MEMBER( clk_w ) { m_bus->clk_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( tx_w ) { m_bus->tx_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( tx2_w ) { m_bus->tx2_w(state); }
+
+ // object finders
+ required_device<z180_device> m_maincpu;
+
+ static constexpr XTAL MAIN_CLOCK = XTAL(18'432'000);
+};
+
+z180cpu_base::z180cpu_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_rc2014_rc80_card_interface(mconfig, *this)
+ , m_maincpu(*this, "maincpu")
+{
+}
+
+void z180cpu_base::device_start()
+{
+ m_bus->set_bus_clock(MAIN_CLOCK);
+ m_maincpu->set_daisy_config(m_bus->get_daisy_chain());
+}
+
+void z180cpu_base::device_resolve_objects()
+{
+ m_bus->assign_installer(AS_PROGRAM, &m_maincpu->space(AS_PROGRAM));
+ m_bus->assign_installer(AS_IO, &m_maincpu->space(AS_IO));
+
+ m_bus->int_callback().append_inputline(m_maincpu, INPUT_LINE_IRQ0);
+
+ m_bus->rx_callback().append(m_maincpu, FUNC(z180_device::rxa0_w));
+ m_bus->rx2_callback().append(m_maincpu, FUNC(z180_device::rxa1_w));
+}
+
+// This is here only to configure our terminal for interactive use
+static DEVICE_INPUT_DEFAULTS_START( terminal )
+ DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_115200 )
+ DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_115200 )
+ DEVICE_INPUT_DEFAULTS( "RS232_DATABITS", 0xff, RS232_DATABITS_8 )
+ DEVICE_INPUT_DEFAULTS( "RS232_PARITY", 0xff, RS232_PARITY_NONE )
+ DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
+DEVICE_INPUT_DEFAULTS_END
+
+void z180cpu_base::device_add_mconfig(machine_config &config)
+{
+ Z8S180(config, m_maincpu, MAIN_CLOCK);
+ m_maincpu->set_addrmap(AS_PROGRAM, &z180cpu_base::addrmap_mem);
+ m_maincpu->set_addrmap(AS_IO, &z180cpu_base::addrmap_io);
+ m_maincpu->txa0_wr_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
+ m_maincpu->txa0_wr_callback().append(FUNC(z180cpu_base::tx_w));
+ m_maincpu->txa1_wr_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
+ m_maincpu->txa1_wr_callback().append(FUNC(z180cpu_base::tx2_w));
+
+ clock_device &clock(CLOCK(config, "clock", MAIN_CLOCK));
+ clock.signal_handler().append(FUNC(z180cpu_base::clk_w));
+
+ rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, "terminal"));
+ rs232a.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232a.set_option_device_input_defaults("null_modem", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232a.rxd_handler().set(m_maincpu, FUNC(z180_device::rxa0_w));
+
+ rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr));
+ rs232b.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232b.set_option_device_input_defaults("null_modem", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+ rs232b.rxd_handler().set(m_maincpu, FUNC(z180_device::rxa1_w));
+}
+
+//**************************************************************************
+// SC111 Z180 CPU module
+// Module author: Stephen C Cousins
+//**************************************************************************
+
+class sc111_device : public z180cpu_base
+{
+public:
+ // construction/destruction
+ sc111_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+};
+
+sc111_device::sc111_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : z180cpu_base(mconfig, RC2014_SC111, tag, owner, clock)
+{
+}
+
+void sc111_device::device_start()
+{
+}
+
+}
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(RC2014_SC111, device_rc2014_rc80_card_interface, sc111_device, "rc2014_sc111", "SC111 Z180 CPU module")
diff --git a/src/devices/bus/rc2014/z180cpu.h b/src/devices/bus/rc2014/z180cpu.h
new file mode 100644
index 00000000000..e699a83a433
--- /dev/null
+++ b/src/devices/bus/rc2014/z180cpu.h
@@ -0,0 +1,18 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic
+/**********************************************************************
+
+ RC2014 Z180 CPU Module
+
+**********************************************************************/
+
+#ifndef MAME_BUS_RC2014_Z180CPU_H
+#define MAME_BUS_RC2014_Z180CPU_H
+
+#pragma once
+
+#include "bus/rc2014/rc2014.h"
+
+DECLARE_DEVICE_TYPE(RC2014_SC111, device_rc2014_rc80_card_interface)
+
+#endif // MAME_BUS_RC2014_Z180CPU_H
diff --git a/src/mame/drivers/rc2014.cpp b/src/mame/drivers/rc2014.cpp
index eeddd9b8b72..663d183bb39 100644
--- a/src/mame/drivers/rc2014.cpp
+++ b/src/mame/drivers/rc2014.cpp
@@ -17,7 +17,7 @@ class rc2014_state : public driver_device
public:
rc2014_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_rc2014_bus(*this, "bus")
+ , m_bus(*this, "bus")
{ }
//
@@ -33,12 +33,12 @@ public:
//
void rc2014(machine_config &config)
{
- RC2014_BUS(config, m_rc2014_bus, 0);
- RC2014_SLOT(config, "bus:1", m_rc2014_bus, rc2014_bus_modules, "z80");
- RC2014_SLOT(config, "bus:2", m_rc2014_bus, rc2014_bus_modules, "clock");
- RC2014_SLOT(config, "bus:3", m_rc2014_bus, rc2014_bus_modules, "ram32k");
- RC2014_SLOT(config, "bus:4", m_rc2014_bus, rc2014_bus_modules, "sw_rom");
- RC2014_SLOT(config, "bus:5", m_rc2014_bus, rc2014_bus_modules, "serial");
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_bus_modules, "z80");
+ RC2014_SLOT(config, "bus:2", m_bus, rc2014_bus_modules, "clock");
+ RC2014_SLOT(config, "bus:3", m_bus, rc2014_bus_modules, "ram32k");
+ RC2014_SLOT(config, "bus:4", m_bus, rc2014_bus_modules, "sw_rom");
+ RC2014_SLOT(config, "bus:5", m_bus, rc2014_bus_modules, "serial");
}
//
@@ -46,12 +46,12 @@ public:
//
void rc2014bp5(machine_config &config)
{
- RC2014_BUS(config, m_rc2014_bus, 0);
- RC2014_SLOT(config, "bus:1", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:2", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:3", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:4", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:5", m_rc2014_bus, rc2014_bus_modules, nullptr);
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:2", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:3", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:4", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:5", m_bus, rc2014_bus_modules, nullptr);
}
//
@@ -69,15 +69,15 @@ public:
//
void rc2014cl2(machine_config &config)
{
- RC2014_BUS(config, m_rc2014_bus, 0);
- RC2014_SLOT(config, "bus:1", m_rc2014_bus, rc2014_bus_modules, "z80");
- RC2014_SLOT(config, "bus:2", m_rc2014_bus, rc2014_bus_modules, "clock");
- RC2014_SLOT(config, "bus:3", m_rc2014_bus, rc2014_bus_modules, "ram32k");
- RC2014_SLOT(config, "bus:4", m_rc2014_bus, rc2014_bus_modules, "sw_rom");
- RC2014_SLOT(config, "bus:5", m_rc2014_bus, rc2014_bus_modules, "serial");
- RC2014_SLOT(config, "bus:6", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:7", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:8", m_rc2014_bus, rc2014_bus_modules, nullptr);
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_bus_modules, "z80");
+ RC2014_SLOT(config, "bus:2", m_bus, rc2014_bus_modules, "clock");
+ RC2014_SLOT(config, "bus:3", m_bus, rc2014_bus_modules, "ram32k");
+ RC2014_SLOT(config, "bus:4", m_bus, rc2014_bus_modules, "sw_rom");
+ RC2014_SLOT(config, "bus:5", m_bus, rc2014_bus_modules, "serial");
+ RC2014_SLOT(config, "bus:6", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:7", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:8", m_bus, rc2014_bus_modules, nullptr);
}
@@ -95,15 +95,15 @@ public:
//
void rc2014zed(machine_config &config)
{
- RC2014_BUS(config, m_rc2014_bus, 0);
- RC2014_SLOT(config, "bus:1", m_rc2014_bus, rc2014_bus_modules, "z80_21_40p");
- RC2014_SLOT(config, "bus:2", m_rc2014_bus, rc2014_bus_modules, "dual_clk_40p");
- RC2014_SLOT(config, "bus:3", m_rc2014_bus, rc2014_bus_modules, "rom_ram");
- RC2014_SLOT(config, "bus:4", m_rc2014_bus, rc2014_bus_modules, "sio_40p");
- RC2014_SLOT(config, "bus:5", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:6", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:7", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:8", m_rc2014_bus, rc2014_bus_modules, nullptr);
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_bus_modules, "z80_21_40p");
+ RC2014_SLOT(config, "bus:2", m_bus, rc2014_bus_modules, "dual_clk_40p");
+ RC2014_SLOT(config, "bus:3", m_bus, rc2014_bus_modules, "rom_ram");
+ RC2014_SLOT(config, "bus:4", m_bus, rc2014_bus_modules, "sio_40p");
+ RC2014_SLOT(config, "bus:5", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:6", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:7", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:8", m_bus, rc2014_bus_modules, nullptr);
}
//
@@ -111,19 +111,39 @@ public:
//
void rc2014bp8(machine_config &config)
{
- RC2014_BUS(config, m_rc2014_bus, 0);
- RC2014_SLOT(config, "bus:1", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:2", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:3", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:4", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:5", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:6", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:7", m_rc2014_bus, rc2014_bus_modules, nullptr);
- RC2014_SLOT(config, "bus:8", m_rc2014_bus, rc2014_bus_modules, nullptr);
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:2", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:3", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:4", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:5", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:6", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:7", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:8", m_bus, rc2014_bus_modules, nullptr);
+ }
+
+ //
+ // SC133 – MODULAR BACKPLANE (RC2014)
+ //
+ void sc133(machine_config &config)
+ {
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:2", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:3", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:4", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:5", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:6", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:7", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:8", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:9", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:10", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:11", m_bus, rc2014_bus_modules, nullptr);
+ RC2014_SLOT(config, "bus:e", m_bus, rc2014_bus_edge_modules, nullptr);
}
private:
- required_device<rc2014_bus_device> m_rc2014_bus;
+ required_device<rc2014_bus_device> m_bus;
};
ROM_START(rc2014)
@@ -141,12 +161,15 @@ ROM_END
ROM_START(rc2014bp8)
ROM_END
+ROM_START(sc133)
+ROM_END
+
class rc2014pro_state : public driver_device
{
public:
rc2014pro_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_rc2014_bus(*this, "bus")
+ , m_bus(*this, "bus")
{ }
//
@@ -163,19 +186,19 @@ public:
//
void rc2014pro(machine_config &config)
{
- RC2014_EXT_BUS(config, m_rc2014_bus, 0);
- RC2014_EXT_SLOT(config, "bus:1", m_rc2014_bus, rc2014_ext_bus_modules, "z80_21");
- RC2014_EXT_SLOT(config, "bus:2", m_rc2014_bus, rc2014_ext_bus_modules, "dual_clk");
- RC2014_EXT_SLOT(config, "bus:3", m_rc2014_bus, rc2014_ext_bus_modules, "ram64k");
- RC2014_EXT_SLOT(config, "bus:4", m_rc2014_bus, rc2014_ext_bus_modules, "page_rom");
- RC2014_EXT_SLOT(config, "bus:5", m_rc2014_bus, rc2014_ext_bus_modules, "sio");
- RC2014_EXT_SLOT(config, "bus:6", m_rc2014_bus, rc2014_ext_bus_modules, "cf");
- RC2014_EXT_SLOT(config, "bus:7", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:8", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:9", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:10", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:11", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:12", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_BUS(config, m_bus, 0);
+ RC2014_EXT_SLOT(config, "bus:1", m_bus, rc2014_ext_bus_modules, "z80_21");
+ RC2014_EXT_SLOT(config, "bus:2", m_bus, rc2014_ext_bus_modules, "dual_clk");
+ RC2014_EXT_SLOT(config, "bus:3", m_bus, rc2014_ext_bus_modules, "ram64k");
+ RC2014_EXT_SLOT(config, "bus:4", m_bus, rc2014_ext_bus_modules, "page_rom");
+ RC2014_EXT_SLOT(config, "bus:5", m_bus, rc2014_ext_bus_modules, "sio");
+ RC2014_EXT_SLOT(config, "bus:6", m_bus, rc2014_ext_bus_modules, "cf");
+ RC2014_EXT_SLOT(config, "bus:7", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:8", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:9", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:10", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:11", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:12", m_bus, rc2014_ext_bus_modules, nullptr);
}
//
@@ -190,19 +213,19 @@ public:
//
void rc2014zedp(machine_config &config)
{
- RC2014_EXT_BUS(config, m_rc2014_bus, 0);
- RC2014_EXT_SLOT(config, "bus:1", m_rc2014_bus, rc2014_ext_bus_modules, "z80_21");
- RC2014_EXT_SLOT(config, "bus:2", m_rc2014_bus, rc2014_ext_bus_modules, "dual_clk");
- RC2014_EXT_SLOT(config, "bus:3", m_rc2014_bus, rc2014_ext_bus_modules, "rom_ram");
- RC2014_EXT_SLOT(config, "bus:4", m_rc2014_bus, rc2014_ext_bus_modules, "sio");
- RC2014_EXT_SLOT(config, "bus:5", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:6", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:7", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:8", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:9", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:10", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:11", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:12", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_BUS(config, m_bus, 0);
+ RC2014_EXT_SLOT(config, "bus:1", m_bus, rc2014_ext_bus_modules, "z80_21");
+ RC2014_EXT_SLOT(config, "bus:2", m_bus, rc2014_ext_bus_modules, "dual_clk");
+ RC2014_EXT_SLOT(config, "bus:3", m_bus, rc2014_ext_bus_modules, "rom_ram");
+ RC2014_EXT_SLOT(config, "bus:4", m_bus, rc2014_ext_bus_modules, "sio");
+ RC2014_EXT_SLOT(config, "bus:5", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:6", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:7", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:8", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:9", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:10", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:11", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:12", m_bus, rc2014_ext_bus_modules, nullptr);
}
//
@@ -210,22 +233,22 @@ public:
//
void rc2014bppro(machine_config &config)
{
- RC2014_EXT_BUS(config, m_rc2014_bus, 0);
- RC2014_EXT_SLOT(config, "bus:1", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:2", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:3", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:4", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:5", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:6", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:7", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:8", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:9", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:10", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:11", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
- RC2014_EXT_SLOT(config, "bus:12", m_rc2014_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_BUS(config, m_bus, 0);
+ RC2014_EXT_SLOT(config, "bus:1", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:2", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:3", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:4", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:5", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:6", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:7", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:8", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:9", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:10", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:11", m_bus, rc2014_ext_bus_modules, nullptr);
+ RC2014_EXT_SLOT(config, "bus:12", m_bus, rc2014_ext_bus_modules, nullptr);
}
private:
- required_device<rc2014_ext_bus_device> m_rc2014_bus;
+ required_device<rc2014_ext_bus_device> m_bus;
};
ROM_START(rc2014pro)
@@ -246,7 +269,7 @@ class rc2014mini_state : public driver_device
public:
rc2014mini_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_rc2014_bus(*this, "bus")
+ , m_bus(*this, "bus")
{ }
//
@@ -257,9 +280,9 @@ public:
//
void rc2014mini(machine_config &config)
{
- RC2014_BUS(config, m_rc2014_bus, 0);
- RC2014_SLOT(config, "board", m_rc2014_bus, rc2014_mini_bus_modules, "mini", true);
- RC2014_SLOT(config, "bus:1", m_rc2014_bus, rc2014_mini_bus_modules, nullptr);
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "board", m_bus, rc2014_mini_bus_modules, "mini", true);
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_mini_bus_modules, nullptr);
}
//
@@ -267,13 +290,24 @@ public:
//
void rc2014minicpm(machine_config &config)
{
- RC2014_BUS(config, m_rc2014_bus, 0);
- RC2014_SLOT(config, "board", m_rc2014_bus, rc2014_mini_bus_modules, "mini", true).set_option_device_input_defaults("mini", DEVICE_INPUT_DEFAULTS_NAME(mini_cpm));
- RC2014_SLOT(config, "bus:1", m_rc2014_bus, rc2014_mini_bus_modules, "mini_cpm", true);
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "board", m_bus, rc2014_mini_bus_modules, "mini", true).set_option_device_input_defaults("mini", DEVICE_INPUT_DEFAULTS_NAME(mini_cpm));
+ RC2014_SLOT(config, "bus:1", m_bus, rc2014_mini_bus_modules, "mini_cpm", true);
}
+ //
+ // RC2014 Micro
+ //
+ // This is card that can be used directly without any backplane board
+ // Power is coming from usb-to-serial adapter
+ //
+ void rc2014micro(machine_config &config)
+ {
+ RC2014_BUS(config, m_bus, 0);
+ RC2014_SLOT(config, "board", m_bus, rc2014_bus_modules, "micro", true);
+ }
private:
- required_device<rc2014_bus_device> m_rc2014_bus;
+ required_device<rc2014_bus_device> m_bus;
};
ROM_START(rc2014mini)
@@ -282,19 +316,119 @@ ROM_END
ROM_START(rc2014minicpm)
ROM_END
+ROM_START(rc2014micro)
+ROM_END
+
+class scc_state : public driver_device
+{
+public:
+ scc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_bus(*this, "bus")
+ { }
+
+ //
+ // SC105 – MODULAR BACKPLANE (RC2014)
+ //
+ // Input: Power supply
+ // Cards: 6 x RC2014/80 pin sockets
+ // Output: Edge mounted BP80 socket
+ //
+ void sc105(machine_config &config)
+ {
+ RC2014_RC80_BUS(config, m_bus, 0);
+ RC2014_RC80_SLOT(config, "bus:1", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:2", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:3", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:4", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:5", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:6", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:e", m_bus, rc2014_rc80_bus_edge_modules, nullptr);
+ }
+
+ //
+ // SC112 – MODULAR BACKPLANE (RC2014)
+ //
+ // Input: Power supply
+ // Cards: 6 x RC2014/80 pin sockets
+ // Output: Through-hole BP80 socket
+ //
+ void sc112(machine_config &config)
+ {
+ RC2014_RC80_BUS(config, m_bus, 0);
+ RC2014_RC80_SLOT(config, "bus:1", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:2", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:3", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:4", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:5", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:6", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:e", m_bus, rc2014_rc80_bus_edge_modules, nullptr);
+ }
+
+ //
+ // SC116 – 3-SLOT BACKPLANE (RC2014)
+ //
+ // Input: Power supply
+ // Cards: 3 x RC2014/80 pin sockets
+ //
+ void sc116(machine_config &config)
+ {
+ RC2014_RC80_BUS(config, m_bus, 0);
+ RC2014_RC80_SLOT(config, "bus:1", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:2", m_bus, rc2014_rc80_bus_modules, nullptr);
+ RC2014_RC80_SLOT(config, "bus:3", m_bus, rc2014_rc80_bus_modules, nullptr);
+ }
+
+ //
+ // SC203 – Modular Z180 Computer
+ //
+ // SC111 - Z180 CPU module
+ // SC119 - Z180 memory module
+ // SC112 - 6-slot backplane with power input, or
+ // SC116 - 3-slot backplane with power input
+ //
+ void sc203(machine_config &config)
+ {
+ RC2014_RC80_BUS(config, m_bus, 0);
+ RC2014_RC80_SLOT(config, "bus:1", m_bus, rc2014_rc80_bus_modules, "sc111");
+ RC2014_RC80_SLOT(config, "bus:2", m_bus, rc2014_rc80_bus_modules, "sc119");
+ RC2014_RC80_SLOT(config, "bus:3", m_bus, rc2014_rc80_bus_modules, nullptr);
+ }
+
+private:
+ required_device<rc2014_rc80_bus_device> m_bus;
+};
+
+ROM_START(sc105)
+ROM_END
+
+ROM_START(sc112)
+ROM_END
+
+ROM_START(sc116)
+ROM_END
+
+ROM_START(sc203)
+ROM_END
+
} // anonymous namespace
// This ties everything together
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 2016, rc2014, 0, 0, rc2014, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Classic", MACHINE_SUPPORTS_SAVE )
-COMP( 2017, rc2014pro, rc2014, 0, rc2014pro, 0, rc2014pro_state, empty_init, "RFC2795 Ltd", "RC2014 Pro", MACHINE_SUPPORTS_SAVE )
-COMP( 2020, rc2014cl2, rc2014, 0, rc2014cl2, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Classic II", MACHINE_SUPPORTS_SAVE )
-COMP( 2018, rc2014zed, rc2014, 0, rc2014zed, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Zed", MACHINE_SUPPORTS_SAVE )
-COMP( 2018, rc2014zedp, rc2014, 0, rc2014zedp, 0, rc2014pro_state, empty_init, "RFC2795 Ltd", "RC2014 Zed Pro", MACHINE_SUPPORTS_SAVE )
-COMP( 2016, rc2014mini, rc2014, 0, rc2014mini, 0, rc2014mini_state, empty_init, "RFC2795 Ltd", "RC2014 Mini", MACHINE_SUPPORTS_SAVE )
-COMP( 2016, rc2014minicpm,rc2014, 0, rc2014minicpm, 0, rc2014mini_state, empty_init, "RFC2795 Ltd", "RC2014 Mini with CP/M Upgrade", MACHINE_SUPPORTS_SAVE )
-
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 2016, rc2014, 0, 0, rc2014, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Classic", MACHINE_SUPPORTS_SAVE )
+COMP( 2017, rc2014pro, rc2014, 0, rc2014pro, 0, rc2014pro_state, empty_init, "RFC2795 Ltd", "RC2014 Pro", MACHINE_SUPPORTS_SAVE )
+COMP( 2020, rc2014cl2, rc2014, 0, rc2014cl2, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Classic II", MACHINE_SUPPORTS_SAVE )
+COMP( 2018, rc2014zed, rc2014, 0, rc2014zed, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Zed", MACHINE_SUPPORTS_SAVE )
+COMP( 2018, rc2014zedp, rc2014, 0, rc2014zedp, 0, rc2014pro_state, empty_init, "RFC2795 Ltd", "RC2014 Zed Pro", MACHINE_SUPPORTS_SAVE )
+COMP( 2016, rc2014mini, rc2014, 0, rc2014mini, 0, rc2014mini_state, empty_init, "RFC2795 Ltd", "RC2014 Mini", MACHINE_SUPPORTS_SAVE )
+COMP( 2016, rc2014minicpm,rc2014, 0, rc2014minicpm, 0, rc2014mini_state, empty_init, "RFC2795 Ltd", "RC2014 Mini with CP/M Upgrade", MACHINE_SUPPORTS_SAVE )
+COMP( 2019, rc2014micro, rc2014, 0, rc2014micro, 0, rc2014mini_state, empty_init, "RFC2795 Ltd", "RC2014 Micro", MACHINE_SUPPORTS_SAVE )
+COMP( 2018, sc203, rc2014, 0, sc203, 0, scc_state, empty_init, "Stephen C Cousins", "SC203 - Modular Z180 Computer", MACHINE_SUPPORTS_SAVE )
// Backplanes
-COMP( 2016, rc2014bp5, rc2014, 0, rc2014bp5, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Backplane-5", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-COMP( 2016, rc2014bp8, rc2014, 0, rc2014bp8, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Backplane-8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-COMP( 2017, rc2014bppro, rc2014, 0, rc2014bppro, 0, rc2014pro_state, empty_init, "RFC2795 Ltd", "RC2014 Backplane Pro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 2016, rc2014bp5, rc2014, 0, rc2014bp5, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Backplane-5", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 2016, rc2014bp8, rc2014, 0, rc2014bp8, 0, rc2014_state, empty_init, "RFC2795 Ltd", "RC2014 Backplane-8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 2017, rc2014bppro, rc2014, 0, rc2014bppro, 0, rc2014pro_state, empty_init, "RFC2795 Ltd", "RC2014 Backplane Pro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 2018, sc105, rc2014, 0, sc105, 0, scc_state, empty_init, "Stephen C Cousins", "SC105 - Modular Backplane (RC2014)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 2018, sc112, rc2014, 0, sc112, 0, scc_state, empty_init, "Stephen C Cousins", "SC112 - Modular Backplane (RC2014)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 2018, sc116, rc2014, 0, sc116, 0, scc_state, empty_init, "Stephen C Cousins", "SC116 - Modular Backplane (RC2014)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 2018, sc133, rc2014, 0, sc133, 0, rc2014_state, empty_init, "Stephen C Cousins", "SC133 - Modular Backplane (RC2014)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 017c66a5dc6..ec6714629be 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -44637,3 +44637,9 @@ rc2014zed // RC2014 Zed
rc2014zedp // RC2014 Zed Pro
rc2014mini // RC2014 Mini
rc2014minicpm // RC2014 Mini with CP/M upgrade
+rc2014micro // RC2014 Micro
+sc105 // SC105 - Modular Backplane (RC2014)
+sc112 // SC112 - Modular Backplane (RC2014)
+sc116 // SC116 - Modular Backplane (RC2014)
+sc133 // SC133 - Modular Backplane (RC2014)
+sc203 // SC203 - Modular Z180 Computer