From da0cf02007ac3e70b4d470fd7f188c5b1274f83d Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 6 Jun 2022 13:37:08 +0200 Subject: New working clones ------------------ RC2014 Micro [Miodrag Milanovic] SC203 - Modular Z180 Computer [Miodrag Milanovic] SC105 - Modular Backplane (RC2014) [Miodrag Milanovic] SC112 - Modular Backplane (RC2014) [Miodrag Milanovic] SC116 - Modular Backplane (RC2014) [Miodrag Milanovic] SC133 - Modular Backplane (RC2014) [Miodrag Milanovic] --- scripts/src/bus.lua | 4 + src/devices/bus/rc2014/edge.cpp | 203 ++++++++++++++++++++++ src/devices/bus/rc2014/edge.h | 23 +++ src/devices/bus/rc2014/micro.cpp | 1 + src/devices/bus/rc2014/modules.cpp | 18 ++ src/devices/bus/rc2014/modules.h | 2 + src/devices/bus/rc2014/rc2014.cpp | 4 +- src/devices/bus/rc2014/rc2014.h | 4 +- src/devices/bus/rc2014/romram.cpp | 64 +++++++ src/devices/bus/rc2014/romram.h | 1 + src/devices/bus/rc2014/serial.cpp | 4 + src/devices/bus/rc2014/z180cpu.cpp | 133 +++++++++++++++ src/devices/bus/rc2014/z180cpu.h | 18 ++ src/mame/drivers/rc2014.cpp | 338 ++++++++++++++++++++++++++----------- src/mame/mame.lst | 6 + 15 files changed, 717 insertions(+), 106 deletions(-) create mode 100644 src/devices/bus/rc2014/edge.cpp create mode 100644 src/devices/bus/rc2014/edge.h create mode 100644 src/devices/bus/rc2014/z180cpu.cpp create mode 100644 src/devices/bus/rc2014/z180cpu.h 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 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 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 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 - 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(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 m_ram; + required_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(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 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 m_rc2014_bus; + required_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 m_rc2014_bus; + required_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 m_rc2014_bus; + required_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 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 -- cgit v1.2.3