summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-02-26 00:37:22 -0500
committer AJR <ajrhacker@users.noreply.github.com>2019-02-26 00:37:22 -0500
commit430dccc5e8feeaaaa9025cb68badbf2eebf42d36 (patch)
tree0af57afba0e22041a708e814a4bf84da2140900a
parentd48297261dd29646243caad3045504f992e5f644 (diff)
bus/interpro/sr: Replace CPU finder with required_address_space (nw)
-rw-r--r--src/devices/bus/interpro/sr/sr.cpp3
-rw-r--r--src/devices/bus/interpro/sr/sr.h26
-rw-r--r--src/mame/drivers/interpro.cpp16
3 files changed, 20 insertions, 25 deletions
diff --git a/src/devices/bus/interpro/sr/sr.cpp b/src/devices/bus/interpro/sr/sr.cpp
index 6d6d76bee42..82071af86d2 100644
--- a/src/devices/bus/interpro/sr/sr.cpp
+++ b/src/devices/bus/interpro/sr/sr.cpp
@@ -267,9 +267,6 @@ DEFINE_DEVICE_TYPE(SRX_SLOT, srx_slot_device, "srx_slot", "InterPro SRX slot")
void interpro_bus_device::device_resolve_objects()
{
- m_main_space = &m_maincpu->space(0);
- m_io_space = &m_maincpu->space(1);
-
// resolve callbacks
m_out_irq0_cb.resolve_safe();
m_out_irq1_cb.resolve_safe();
diff --git a/src/devices/bus/interpro/sr/sr.h b/src/devices/bus/interpro/sr/sr.h
index 0fcecc086f8..858590f5075 100644
--- a/src/devices/bus/interpro/sr/sr.h
+++ b/src/devices/bus/interpro/sr/sr.h
@@ -9,6 +9,10 @@
class interpro_bus_device : public device_t
{
public:
+ // space configuration
+ template <typename T> void set_main_space(T &&tag, int spacenum) { m_main_space.set_tag(std::forward<T>(tag), spacenum); }
+ template <typename T> void set_io_space(T &&tag, int spacenum) { m_io_space.set_tag(std::forward<T>(tag), spacenum); }
+
// callback configuration
auto out_irq0_cb() { return m_out_irq0_cb.bind(); }
auto out_irq1_cb() { return m_out_irq1_cb.bind(); }
@@ -24,9 +28,8 @@ protected:
// construction/destruction
interpro_bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, type, tag, owner, clock)
- , m_maincpu(*this, finder_base::DUMMY_TAG)
- , m_main_space(nullptr)
- , m_io_space(nullptr)
+ , m_main_space(*this, finder_base::DUMMY_TAG, -1)
+ , m_io_space(*this, finder_base::DUMMY_TAG, -1)
, m_out_irq0_cb(*this)
, m_out_irq1_cb(*this)
, m_out_irq2_cb(*this)
@@ -38,9 +41,8 @@ protected:
virtual void device_resolve_objects() override;
// internal state
- required_device<cpu_device> m_maincpu;
- address_space *m_main_space;
- address_space *m_io_space;
+ required_address_space m_main_space;
+ required_address_space m_io_space;
private:
devcb_write_line m_out_irq0_cb;
@@ -55,12 +57,6 @@ class cbus_bus_device : public interpro_bus_device
{
public:
// construction/destruction
- template <typename T>
- cbus_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock, T &&cpu_device)
- : cbus_bus_device(mconfig, tag, owner, clock)
- {
- m_maincpu.set_tag(std::forward<T>(cpu_device));
- }
cbus_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
static const u32 CBUS_BASE = 0x87000000;
@@ -158,12 +154,6 @@ class srx_bus_device : public interpro_bus_device
{
public:
// construction/destruction
- template <typename T>
- srx_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock, T &&cpu_device)
- : srx_bus_device(mconfig, tag, owner, clock)
- {
- m_maincpu.set_tag(std::forward<T>(cpu_device));
- }
srx_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
static const u32 SRX_BASE = 0x8f000000;
diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp
index 37766029ba4..12d0f858533 100644
--- a/src/mame/drivers/interpro.cpp
+++ b/src/mame/drivers/interpro.cpp
@@ -900,7 +900,9 @@ void emerald_state::emerald(machine_config &config)
ioga(config);
// srx bus
- SRX_BUS(config, m_bus, 0, m_maincpu);
+ SRX_BUS(config, m_bus, 0);
+ m_bus->set_main_space(m_maincpu, 0);
+ m_bus->set_io_space(m_maincpu, 1);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));
@@ -972,7 +974,9 @@ void turquoise_state::turquoise(machine_config &config)
ioga(config);
// cbus bus
- CBUS_BUS(config, m_bus, 0, m_maincpu);
+ CBUS_BUS(config, m_bus, 0);
+ m_bus->set_main_space(m_maincpu, 0);
+ m_bus->set_io_space(m_maincpu, 0);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));
@@ -1064,7 +1068,9 @@ void cbus_sapphire_state::cbus_sapphire(machine_config &config)
m_mse_port->state_func().set(m_ioga, FUNC(interpro_ioga_device::mouse_status_w));
// cbus bus
- CBUS_BUS(config, m_bus, 0, m_maincpu);
+ CBUS_BUS(config, m_bus, 0);
+ m_bus->set_main_space(m_maincpu, 0);
+ m_bus->set_io_space(m_maincpu, 0);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));
@@ -1077,7 +1083,9 @@ void srx_sapphire_state::srx_sapphire(machine_config &config)
sapphire(config);
// srx bus
- SRX_BUS(config, m_bus, 0, m_maincpu);
+ SRX_BUS(config, m_bus, 0);
+ m_bus->set_main_space(m_maincpu, 0);
+ m_bus->set_io_space(m_maincpu, 1);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));