summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2018-06-07 01:21:21 +1000
committer Vas Crabb <vas@vastheman.com>2018-06-07 01:21:21 +1000
commit606c3e2b8ecda125b29d59ca7bc5702a08e34ca0 (patch)
tree9e9c4d546e32e56c74017909c376b573902d6a69
parentdfb5f8e1c560ae5ed191198fa730ea5905b091b5 (diff)
mcs40: cleaner boilerplate (nw)
-rw-r--r--src/devices/cpu/mcs40/mcs40.h45
-rw-r--r--src/mame/drivers/4004clk.cpp12
-rw-r--r--src/mame/drivers/busicom.cpp12
-rw-r--r--src/mame/drivers/flicker.cpp12
-rw-r--r--src/mame/drivers/intellec4.cpp28
-rw-r--r--src/mame/drivers/sartorius.cpp8
6 files changed, 46 insertions, 71 deletions
diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h
index 337e171736b..a56a1813f34 100644
--- a/src/devices/cpu/mcs40/mcs40.h
+++ b/src/devices/cpu/mcs40/mcs40.h
@@ -5,6 +5,9 @@
#pragma once
+#include <memory>
+#include <utility>
+
/***********************************************************************
CONSTANTS
@@ -29,24 +32,6 @@ enum
mcs40_cpu_device_base::bus_cycle_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, (cls *)nullptr)
-#define MCFG_I4004_ROM_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_ROM, map)
-
-#define MCFG_I4004_RAM_MEMORY_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_RAM_MEMORY, map)
-
-#define MCFG_I4004_ROM_PORTS_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_ROM_PORTS, map)
-
-#define MCFG_I4004_RAM_STATUS_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_RAM_STATUS, map)
-
-#define MCFG_I4004_RAM_PORTS_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_RAM_PORTS, map)
-
-#define MCFG_I4004_PROGRAM_MEMORY_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_PROGRAM_MEMORY, map)
-
#define MCFG_I4004_BUS_CYCLE_CB(obj) \
downcast<i4004_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj));
@@ -75,24 +60,6 @@ enum
devcb = &downcast<i4004_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj);
-#define MCFG_I4040_ROM_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_ROM, map)
-
-#define MCFG_I4040_RAM_MEMORY_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_RAM_MEMORY, map)
-
-#define MCFG_I4040_ROM_PORTS_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_ROM_PORTS, map)
-
-#define MCFG_I4040_RAM_STATUS_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_RAM_STATUS, map)
-
-#define MCFG_I4040_RAM_PORTS_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_RAM_PORTS, map)
-
-#define MCFG_I4040_PROGRAM_MEMORY_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_PROGRAM_MEMORY, map)
-
#define MCFG_I4040_BUS_CYCLE_CB(obj) \
downcast<i4040_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj));
@@ -152,6 +119,12 @@ public:
typedef device_delegate<void (phase step, u8 sync, u8 data)> bus_cycle_delegate;
// configuration helpers
+ template <typename... T> void set_rom_map(T &&... args) { set_addrmap(AS_ROM, std::forward<T>(args)...); }
+ template <typename... T> void set_ram_memory_map(T &&... args) { set_addrmap(AS_RAM_MEMORY, std::forward<T>(args)...); }
+ template <typename... T> void set_rom_ports_map(T &&... args) { set_addrmap(AS_ROM_PORTS, std::forward<T>(args)...); }
+ template <typename... T> void set_ram_status_map(T &&... args) { set_addrmap(AS_RAM_STATUS, std::forward<T>(args)...); }
+ template <typename... T> void set_ram_ports_map(T &&... args) { set_addrmap(AS_RAM_PORTS, std::forward<T>(args)...); }
+ template <typename... T> void set_program_memory_map(T &&... args) { set_addrmap(AS_PROGRAM_MEMORY, std::forward<T>(args)...); }
template <typename Obj> void set_bus_cycle_cb(Obj &&cb) { m_bus_cycle_cb = std::forward<Obj>(cb); }
template <typename Obj> devcb_base &set_4289_pm_cb(Obj &&cb) { return m_4289_pm_cb.set_callback(std::forward<Obj>(cb)); }
template <typename Obj> devcb_base &set_4289_f_l_cb(Obj &&cb) { return m_4289_f_l_cb.set_callback(std::forward<Obj>(cb)); }
diff --git a/src/mame/drivers/4004clk.cpp b/src/mame/drivers/4004clk.cpp
index 7dfe00db589..2fe4e672e3c 100644
--- a/src/mame/drivers/4004clk.cpp
+++ b/src/mame/drivers/4004clk.cpp
@@ -138,12 +138,12 @@ void nixieclock_state::machine_start()
MACHINE_CONFIG_START(nixieclock_state::_4004clk)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I4004, 5_MHz_XTAL / 8);
- MCFG_I4004_ROM_MAP(_4004clk_rom)
- MCFG_I4004_RAM_MEMORY_MAP(_4004clk_mem)
- MCFG_I4004_ROM_PORTS_MAP(_4004clk_rp)
- MCFG_I4004_RAM_STATUS_MAP(_4004clk_stat)
- MCFG_I4004_RAM_PORTS_MAP(_4004clk_mp)
+ i4004_cpu_device &cpu(I4004(config, "maincpu", 5_MHz_XTAL / 8));
+ cpu.set_rom_map(&nixieclock_state::_4004clk_rom);
+ cpu.set_ram_memory_map(&nixieclock_state::_4004clk_mem);
+ cpu.set_rom_ports_map(&nixieclock_state::_4004clk_rp);
+ cpu.set_ram_status_map(&nixieclock_state::_4004clk_stat);
+ cpu.set_ram_ports_map(&nixieclock_state::_4004clk_mp);
/* video hardware */
MCFG_DEFAULT_LAYOUT(layout_4004clk)
diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp
index 6db227c172e..689fc193deb 100644
--- a/src/mame/drivers/busicom.cpp
+++ b/src/mame/drivers/busicom.cpp
@@ -226,12 +226,12 @@ void busicom_state::machine_reset()
MACHINE_CONFIG_START(busicom_state::busicom)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I4004, 750000)
- MCFG_I4004_ROM_MAP(busicom_rom)
- MCFG_I4004_RAM_MEMORY_MAP(busicom_mem)
- MCFG_I4004_ROM_PORTS_MAP(busicom_rp)
- MCFG_I4004_RAM_STATUS_MAP(busicom_stat)
- MCFG_I4004_RAM_PORTS_MAP(busicom_mp)
+ I4004(config, m_maincpu, 750000);
+ m_maincpu->set_rom_map(&busicom_state::busicom_rom);
+ m_maincpu->set_ram_memory_map(&busicom_state::busicom_mem);
+ m_maincpu->set_rom_ports_map(&busicom_state::busicom_rp);
+ m_maincpu->set_ram_status_map(&busicom_state::busicom_stat);
+ m_maincpu->set_ram_ports_map(&busicom_state::busicom_mp);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/flicker.cpp b/src/mame/drivers/flicker.cpp
index 0a8d794af9c..52c70edbc29 100644
--- a/src/mame/drivers/flicker.cpp
+++ b/src/mame/drivers/flicker.cpp
@@ -398,12 +398,12 @@ void flicker_state::driver_start()
MACHINE_CONFIG_START(flicker_state::flicker)
// basic machine hardware
- MCFG_DEVICE_ADD("maincpu", I4004, 5_MHz_XTAL / 8)
- MCFG_I4004_ROM_MAP(flicker_rom)
- MCFG_I4004_RAM_MEMORY_MAP(flicker_memory)
- MCFG_I4004_ROM_PORTS_MAP(flicker_rom_ports)
- MCFG_I4004_RAM_STATUS_MAP(flicker_status)
- MCFG_I4004_RAM_PORTS_MAP(flicker_ram_ports)
+ MCFG_DEVICE_ADD(m_maincpu, I4004, 5_MHz_XTAL / 8)
+ m_maincpu->set_rom_map(&flicker_state::flicker_rom);
+ m_maincpu->set_ram_memory_map(&flicker_state::flicker_memory);
+ m_maincpu->set_rom_ports_map(&flicker_state::flicker_rom_ports);
+ m_maincpu->set_ram_status_map(&flicker_state::flicker_status);
+ m_maincpu->set_ram_ports_map(&flicker_state::flicker_ram_ports);
MCFG_I4004_CM_RAM1_CB(WRITELINE(*this, flicker_state, cm_ram1_w))
MCFG_I4004_CM_RAM2_CB(WRITELINE(*this, flicker_state, cm_ram2_w))
diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp
index 9dfa4d57272..399badace3d 100644
--- a/src/mame/drivers/intellec4.cpp
+++ b/src/mame/drivers/intellec4.cpp
@@ -1123,13 +1123,14 @@ INPUT_CHANGED_MEMBER(mod4_state::sw_one_shot)
MACHINE_CONFIG_START(mod4_state::mod4)
intellec4(config);
+
MCFG_DEVICE_ADD(m_cpu, I4004, 5.185_MHz_XTAL / 7)
- MCFG_I4004_ROM_MAP(intellec4_rom)
- MCFG_I4004_RAM_MEMORY_MAP(intellec4_ram_memory)
- MCFG_I4004_ROM_PORTS_MAP(intellec4_rom_ports)
- MCFG_I4004_RAM_STATUS_MAP(intellec4_ram_status)
- MCFG_I4004_RAM_PORTS_MAP(intellec4_ram_ports)
- MCFG_I4004_PROGRAM_MEMORY_MAP(intellec4_program_memory)
+ m_cpu->set_rom_map(&mod4_state::intellec4_rom);
+ m_cpu->set_ram_memory_map(&mod4_state::intellec4_ram_memory);
+ m_cpu->set_rom_ports_map(&mod4_state::intellec4_rom_ports);
+ m_cpu->set_ram_status_map(&mod4_state::intellec4_ram_status);
+ m_cpu->set_ram_ports_map(&mod4_state::intellec4_ram_ports);
+ m_cpu->set_program_memory_map(&mod4_state::intellec4_program_memory);
MCFG_I4004_BUS_CYCLE_CB(BUSCYCLE(mod4_state, bus_cycle));
MCFG_I4004_SYNC_CB(WRITELINE(m_bus, bus::intellec4::univ_bus_device, sync_in))
@@ -1348,14 +1349,15 @@ INPUT_CHANGED_MEMBER(mod40_state::sw_single_step)
MACHINE_CONFIG_START(mod40_state::mod40)
intellec4(config);
+
MCFG_DEVICE_ADD(m_cpu, I4040, 5.185_MHz_XTAL / 7)
- MCFG_I4040_ROM_MAP(intellec4_rom)
- MCFG_I4040_RAM_MEMORY_MAP(intellec4_ram_memory)
- MCFG_I4040_ROM_PORTS_MAP(intellec4_rom_ports)
- MCFG_I4040_RAM_STATUS_MAP(intellec4_ram_status)
- MCFG_I4040_RAM_PORTS_MAP(intellec4_ram_ports)
- MCFG_I4040_PROGRAM_MEMORY_MAP(intellec4_program_memory)
- MCFG_I4040_BUS_CYCLE_CB(BUSCYCLE(mod40_state, bus_cycle));
+ m_cpu->set_rom_map(&mod40_state::intellec4_rom);
+ m_cpu->set_ram_memory_map(&mod40_state::intellec4_ram_memory);
+ m_cpu->set_rom_ports_map(&mod40_state::intellec4_rom_ports);
+ m_cpu->set_ram_status_map(&mod40_state::intellec4_ram_status);
+ m_cpu->set_ram_ports_map(&mod40_state::intellec4_ram_ports);
+ m_cpu->set_program_memory_map(&mod40_state::intellec4_program_memory);
+ MCFG_I4040_BUS_CYCLE_CB(BUSCYCLE(mod40_state, bus_cycle))
MCFG_I4040_SYNC_CB(WRITELINE(m_bus, bus::intellec4::univ_bus_device, sync_in))
MCFG_I4040_STP_ACK_CB(WRITELINE(*this, mod40_state, stp_ack))
diff --git a/src/mame/drivers/sartorius.cpp b/src/mame/drivers/sartorius.cpp
index 714a3947acc..751cdf5807b 100644
--- a/src/mame/drivers/sartorius.cpp
+++ b/src/mame/drivers/sartorius.cpp
@@ -86,10 +86,10 @@ public:
MACHINE_CONFIG_START(sart3733_state::sart3733)
- MCFG_DEVICE_ADD("maincpu", I4040, 750'000) // clock speed is a complete guess - can't see crystal or multi-phase clock generator
- MCFG_I4040_ROM_MAP(sart3733_rom)
- MCFG_I4040_RAM_MEMORY_MAP(sart3733_memory)
- MCFG_I4040_RAM_STATUS_MAP(sart3733_status)
+ i4040_cpu_device &cpu(I4040(config, "maincpu", 750'000)); // clock speed is a complete guess - can't see crystal or multi-phase clock generator
+ cpu.set_rom_map(&sart3733_state::sart3733_rom);
+ cpu.set_ram_memory_map(&sart3733_state::sart3733_memory);
+ cpu.set_ram_status_map(&sart3733_state::sart3733_status);
MACHINE_CONFIG_END