diff options
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 |
commit | 606c3e2b8ecda125b29d59ca7bc5702a08e34ca0 (patch) | |
tree | 9e9c4d546e32e56c74017909c376b573902d6a69 | |
parent | dfb5f8e1c560ae5ed191198fa730ea5905b091b5 (diff) |
mcs40: cleaner boilerplate (nw)
-rw-r--r-- | src/devices/cpu/mcs40/mcs40.h | 45 | ||||
-rw-r--r-- | src/mame/drivers/4004clk.cpp | 12 | ||||
-rw-r--r-- | src/mame/drivers/busicom.cpp | 12 | ||||
-rw-r--r-- | src/mame/drivers/flicker.cpp | 12 | ||||
-rw-r--r-- | src/mame/drivers/intellec4.cpp | 28 | ||||
-rw-r--r-- | src/mame/drivers/sartorius.cpp | 8 |
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 |