dmvbus: Add address space finders; remove machine().device (nw)

This commit is contained in:
AJR 2019-02-08 10:41:36 -05:00
parent 35cf6670f1
commit 4a14085bae
7 changed files with 27 additions and 10 deletions

View File

@ -201,7 +201,10 @@ dmvcart_slot_device::dmvcart_slot_device(const machine_config &mconfig, const ch
m_prog_write_cb(*this),
m_out_int_cb(*this),
m_out_irq_cb(*this),
m_out_thold_cb(*this), m_cart(nullptr)
m_out_thold_cb(*this),
m_memspace(*this, finder_base::DUMMY_TAG, -1),
m_iospace(*this, finder_base::DUMMY_TAG, -1),
m_cart(nullptr)
{
}

View File

@ -76,6 +76,8 @@ public:
auto out_int() { return m_out_int_cb.bind(); }
auto out_irq() { return m_out_irq_cb.bind(); }
auto out_thold() { return m_out_thold_cb.bind(); }
template <typename T> void set_memspace(T &&tag, int spacenum) { m_memspace.set_tag(std::forward<T>(tag), spacenum); }
template <typename T> void set_iospace(T &&tag, int spacenum) { m_iospace.set_tag(std::forward<T>(tag), spacenum); }
// device-level overrides
virtual void device_start() override;
@ -107,6 +109,10 @@ public:
devcb_write_line m_out_int_cb;
devcb_write_line m_out_irq_cb;
devcb_write_line m_out_thold_cb;
required_address_space m_memspace;
required_address_space m_iospace;
device_dmvslot_interface* m_cart;
};

View File

@ -122,6 +122,7 @@ DEFINE_DEVICE_TYPE(DMV_K220, dmv_k220_device, "dmv_k220", "K220 diagnostic")
dmv_k220_device::dmv_k220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, DMV_K220, tag, owner, clock)
, device_dmvslot_interface(mconfig, *this)
, m_bus(*this, DEVICE_SELF_OWNER)
, m_pit(*this, "pit8253")
, m_ppi(*this, "ppi8255")
, m_ram(*this, "ram")
@ -137,7 +138,7 @@ dmv_k220_device::dmv_k220_device(const machine_config &mconfig, const char *tag,
void dmv_k220_device::device_start()
{
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
address_space &space = *m_bus->m_iospace;
space.install_readwrite_handler(0x08, 0x0b, read8sm_delegate(FUNC(pit8253_device::read), &(*m_pit)), write8sm_delegate(FUNC(pit8253_device::write), &(*m_pit)), 0);
space.install_readwrite_handler(0x0c, 0x0f, read8sm_delegate(FUNC(i8255_device::read), &(*m_ppi)), write8sm_delegate(FUNC(i8255_device::write), &(*m_ppi)), 0);

View File

@ -44,6 +44,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(write_out1);
DECLARE_WRITE_LINE_MEMBER(write_out2);
required_device<dmvcart_slot_device> m_bus;
required_device<pit8253_device> m_pit;
required_device<i8255_device> m_ppi;
required_memory_region m_ram;

View File

@ -98,7 +98,10 @@ dmv_k230_device::dmv_k230_device(const machine_config &mconfig, device_type type
: device_t(mconfig, type, tag, owner, clock)
, device_dmvslot_interface(mconfig, *this)
, m_maincpu(*this, "maincpu")
, m_rom(*this, "rom"), m_bus(nullptr), m_io(nullptr), m_switch16(0), m_hold(0)
, m_rom(*this, "rom")
, m_bus(*this, DEVICE_SELF_OWNER)
, m_switch16(0)
, m_hold(0)
{
}
@ -136,14 +139,12 @@ dmv_k235_device::dmv_k235_device(const machine_config &mconfig, const char *tag,
void dmv_k230_device::device_start()
{
m_bus = static_cast<dmvcart_slot_device*>(owner());
m_io = &machine().device<cpu_device>("maincpu")->space(AS_IO);
}
void dmv_k234_device::device_start()
{
dmv_k230_device::device_start();
m_io->install_readwrite_handler(0xd8, 0xdf, read8_delegate(FUNC(dmv_k234_device::snr_r), this), write8_delegate(FUNC(dmv_k234_device::snr_w), this), 0);
m_bus->m_iospace->install_readwrite_handler(0xd8, 0xdf, read8_delegate(FUNC(dmv_k234_device::snr_r), this), write8_delegate(FUNC(dmv_k234_device::snr_w), this), 0);
}
//-------------------------------------------------
@ -247,12 +248,12 @@ READ8_MEMBER(dmv_k230_device::rom_r)
READ8_MEMBER( dmv_k230_device::io_r )
{
return m_io->read_byte(offset);
return m_bus->m_iospace->read_byte(offset);
}
WRITE8_MEMBER( dmv_k230_device::io_w )
{
m_io->write_byte(offset, data);
m_bus->m_iospace->write_byte(offset, data);
}
READ8_MEMBER( dmv_k230_device::program_r )

View File

@ -51,8 +51,7 @@ protected:
required_device<cpu_device> m_maincpu;
optional_memory_region m_rom;
dmvcart_slot_device * m_bus;
address_space * m_io;
required_device<dmvcart_slot_device> m_bus;
int m_switch16;
int m_hold;

View File

@ -872,6 +872,12 @@ void dmv_state::dmv(machine_config &config)
m_slot7a->out_int().set(FUNC(dmv_state::busint7a_w));
m_slot7a->out_irq().set(FUNC(dmv_state::irq7a_w));
for (auto &slot : { m_slot1, m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a })
{
slot->set_memspace(m_maincpu, AS_PROGRAM);
slot->set_iospace(m_maincpu, AS_IO);
}
SOFTWARE_LIST(config, "flop_list").set_original("dmv");
quickload_image_device &quickload(QUICKLOAD(config, "quickload"));