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]
This commit is contained in:
Miodrag Milanovic 2022-06-06 13:37:08 +02:00
parent b26c4ed848
commit da0cf02007
15 changed files with 717 additions and 106 deletions

View File

@ -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",
}

View File

@ -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)")

View File

@ -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

View File

@ -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 )

View File

@ -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);
}

View File

@ -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

View File

@ -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)
{
}

View File

@ -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:

View File

@ -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")

View File

@ -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

View File

@ -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 )

View File

@ -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")

View File

@ -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

View File

@ -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 )

View File

@ -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