From d4370f150dc811b15a66111a98352b16a066e1fe Mon Sep 17 00:00:00 2001 From: AJR Date: Mon, 25 Feb 2019 19:59:38 -0500 Subject: bus/cgenie/expansion, bus/einstein/pipe, bus/nasbus, bus/spectrum, bus/vtech: Install spaces through finders (nw) --- src/devices/bus/cgenie/expansion/expansion.cpp | 22 ++----------- src/devices/bus/cgenie/expansion/expansion.h | 8 ++--- src/devices/bus/einstein/pipe/pipe.cpp | 44 ++++++++++++++------------ src/devices/bus/einstein/pipe/pipe.h | 9 +++--- src/devices/bus/einstein/pipe/tk02.cpp | 3 -- src/devices/bus/nasbus/nasbus.cpp | 22 ++----------- src/devices/bus/nasbus/nasbus.h | 8 ++--- src/devices/bus/spectrum/exp.cpp | 28 ++++++++++------ src/devices/bus/spectrum/exp.h | 5 +-- src/devices/bus/spectrum/fuller.cpp | 2 -- src/devices/bus/spectrum/intf1.cpp | 2 -- src/devices/bus/spectrum/melodik.cpp | 2 -- src/devices/bus/spectrum/uslot.cpp | 2 -- src/devices/bus/vtech/ioexp/ioexp.cpp | 11 +------ src/devices/bus/vtech/ioexp/ioexp.h | 4 +-- src/devices/bus/vtech/memexp/floppy.cpp | 3 -- src/devices/bus/vtech/memexp/memexp.cpp | 44 ++++++++++++++------------ src/devices/bus/vtech/memexp/memexp.h | 9 +++--- src/mame/drivers/cgenie.cpp | 6 ++-- src/mame/drivers/einstein.cpp | 6 ++-- src/mame/drivers/nascom1.cpp | 18 ++--------- src/mame/drivers/spec128.cpp | 17 ++++------ src/mame/drivers/specpls3.cpp | 7 +--- src/mame/drivers/spectrum.cpp | 4 +-- src/mame/drivers/timex.cpp | 12 ++----- src/mame/drivers/vtech1.cpp | 32 +++++++------------ src/mame/drivers/vtech2.cpp | 2 +- src/mame/includes/spectrum.h | 2 -- src/mame/machine/vtech2.cpp | 3 -- 29 files changed, 125 insertions(+), 212 deletions(-) diff --git a/src/devices/bus/cgenie/expansion/expansion.cpp b/src/devices/bus/cgenie/expansion/expansion.cpp index 366b1513aca..3a7665f7c2b 100644 --- a/src/devices/bus/cgenie/expansion/expansion.cpp +++ b/src/devices/bus/cgenie/expansion/expansion.cpp @@ -30,8 +30,8 @@ DEFINE_DEVICE_TYPE(CG_EXP_SLOT, cg_exp_slot_device, "cg_exp_slot", "Colour Genie cg_exp_slot_device::cg_exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, CG_EXP_SLOT, tag, owner, clock), device_slot_interface(mconfig, *this), - m_program(nullptr), - m_io(nullptr), + m_program(*this, finder_base::DUMMY_TAG, -1), + m_io(*this, finder_base::DUMMY_TAG, -1), m_cart(nullptr), m_int_handler(*this), m_nmi_handler(*this), @@ -67,24 +67,6 @@ void cg_exp_slot_device::device_reset() { } -//------------------------------------------------- -// set_program_space - set address space we are attached to -//------------------------------------------------- - -void cg_exp_slot_device::set_program_space(address_space *program) -{ - m_program = program; -} - -//------------------------------------------------- -// set_io_space - set address space we are attached to -//------------------------------------------------- - -void cg_exp_slot_device::set_io_space(address_space *io) -{ - m_io = io; -} - //************************************************************************** // CARTRIDGE INTERFACE diff --git a/src/devices/bus/cgenie/expansion/expansion.h b/src/devices/bus/cgenie/expansion/expansion.h index 86c4d42d41f..3f61b275c19 100644 --- a/src/devices/bus/cgenie/expansion/expansion.h +++ b/src/devices/bus/cgenie/expansion/expansion.h @@ -64,8 +64,8 @@ public: cg_exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~cg_exp_slot_device(); - void set_program_space(address_space *program); - void set_io_space(address_space *io); + template void set_program_space(T &&tag, int spacenum) { m_program.set_tag(std::forward(tag), spacenum); } + template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); } // callbacks auto int_handler() { return m_int_handler.bind(); } @@ -77,8 +77,8 @@ public: DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_handler(state); } DECLARE_WRITE_LINE_MEMBER( reset_w ) { m_reset_handler(state); } - address_space *m_program; - address_space *m_io; + required_address_space m_program; + required_address_space m_io; protected: // device-level overrides diff --git a/src/devices/bus/einstein/pipe/pipe.cpp b/src/devices/bus/einstein/pipe/pipe.cpp index b40038e650b..d521d146325 100644 --- a/src/devices/bus/einstein/pipe/pipe.cpp +++ b/src/devices/bus/einstein/pipe/pipe.cpp @@ -33,8 +33,8 @@ DEFINE_DEVICE_TYPE(TATUNG_PIPE, tatung_pipe_device, "tatung_pipe", "Tatung Pipe tatung_pipe_device::tatung_pipe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, TATUNG_PIPE, tag, owner, clock), device_slot_interface(mconfig, *this), - m_program(nullptr), - m_io(nullptr), + m_program(*this, finder_base::DUMMY_TAG, -1), + m_io(*this, finder_base::DUMMY_TAG, -1), m_card(nullptr), m_int_handler(*this), m_nmi_handler(*this), @@ -50,6 +50,28 @@ tatung_pipe_device::~tatung_pipe_device() { } +//------------------------------------------------- +// device_config_complete - perform any +// operations now that the configuration is +// complete +//------------------------------------------------- + +void tatung_pipe_device::device_config_complete() +{ + // for passthrough connectors, use the parent slot's spaces + if (dynamic_cast(owner()) != nullptr) + { + auto parent = dynamic_cast(owner()->owner()); + if (parent != nullptr) + { + if (m_program.finder_tag() == finder_base::DUMMY_TAG) + m_program.set_tag(parent->m_program, parent->m_program.spacenum()); + if (m_io.finder_tag() == finder_base::DUMMY_TAG) + m_io.set_tag(parent->m_io, parent->m_io.spacenum()); + } + } +} + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -83,24 +105,6 @@ WRITE_LINE_MEMBER( tatung_pipe_device::host_int_w ) m_card->int_w(state); } -//------------------------------------------------- -// set_program_space - set address space we are attached to -//------------------------------------------------- - -void tatung_pipe_device::set_program_space(address_space *program) -{ - m_program = program; -} - -//------------------------------------------------- -// set_io_space - set address space we are attached to -//------------------------------------------------- - -void tatung_pipe_device::set_io_space(address_space *io) -{ - m_io = io; -} - //************************************************************************** // CARD INTERFACE diff --git a/src/devices/bus/einstein/pipe/pipe.h b/src/devices/bus/einstein/pipe/pipe.h index e0ce7e9a6f7..f0c32bd0043 100644 --- a/src/devices/bus/einstein/pipe/pipe.h +++ b/src/devices/bus/einstein/pipe/pipe.h @@ -68,8 +68,8 @@ public: } virtual ~tatung_pipe_device(); - void set_program_space(address_space *program); - void set_io_space(address_space *io); + template void set_program_space(T &&tag, int spacenum) { m_program.set_tag(std::forward(tag), spacenum); } + template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); } // callbacks auto int_handler() { return m_int_handler.bind(); } @@ -86,11 +86,12 @@ public: protected: // device-level overrides + virtual void device_config_complete() override; virtual void device_start() override; virtual void device_reset() override; - address_space *m_program; - address_space *m_io; + required_address_space m_program; + required_address_space m_io; device_tatung_pipe_interface *m_card; diff --git a/src/devices/bus/einstein/pipe/tk02.cpp b/src/devices/bus/einstein/pipe/tk02.cpp index d0926f2e320..311c3099011 100644 --- a/src/devices/bus/einstein/pipe/tk02.cpp +++ b/src/devices/bus/einstein/pipe/tk02.cpp @@ -159,9 +159,6 @@ void tk02_device::device_start() void tk02_device::device_reset() { - m_pipe->set_io_space(&io_space()); - m_pipe->set_program_space(&program_space()); - io_space().install_device(0x40, 0x4f, *this, &tk02_device::map); io_space().install_readwrite_handler(0x40, 0x47, 0, 0, 0xff00, read8_delegate(FUNC(tk02_device::ram_r), this), write8_delegate(FUNC(tk02_device::ram_w), this)); } diff --git a/src/devices/bus/nasbus/nasbus.cpp b/src/devices/bus/nasbus/nasbus.cpp index 817e486af8f..ed6cf27bc7a 100644 --- a/src/devices/bus/nasbus/nasbus.cpp +++ b/src/devices/bus/nasbus/nasbus.cpp @@ -61,8 +61,8 @@ DEFINE_DEVICE_TYPE(NASBUS, nasbus_device, "nasbus", "NASBUS Backplane") nasbus_device::nasbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, NASBUS, tag, owner, clock), - m_program(nullptr), - m_io(nullptr), + m_program(*this, finder_base::DUMMY_TAG, -1), + m_io(*this, finder_base::DUMMY_TAG, -1), m_ram_disable_handler(*this) { } @@ -104,24 +104,6 @@ void nasbus_device::add_card(device_nasbus_card_interface *card) m_dev.append(*card); } -//------------------------------------------------- -// set_program_space - set address space we are attached to -//------------------------------------------------- - -void nasbus_device::set_program_space(address_space *program) -{ - m_program = program; -} - -//------------------------------------------------- -// set_io_space - set address space we are attached to -//------------------------------------------------- - -void nasbus_device::set_io_space(address_space *io) -{ - m_io = io; -} - // callbacks from slot device to the host WRITE_LINE_MEMBER( nasbus_device::ram_disable_w ) { m_ram_disable_handler(state); } diff --git a/src/devices/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h index bdeb39a879f..c2c11e2db9a 100644 --- a/src/devices/bus/nasbus/nasbus.h +++ b/src/devices/bus/nasbus/nasbus.h @@ -149,8 +149,8 @@ public: void add_card(device_nasbus_card_interface *card); - void set_program_space(address_space *program); - void set_io_space(address_space *io); + template void set_program_space(T &&tag, int spacenum) { m_program.set_tag(std::forward(tag), spacenum); } + template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); } // from cards DECLARE_WRITE_LINE_MEMBER( ram_disable_w ); @@ -161,8 +161,8 @@ protected: virtual void device_reset() override; private: - address_space *m_program; - address_space *m_io; + required_address_space m_program; + required_address_space m_io; simple_list m_dev; diff --git a/src/devices/bus/spectrum/exp.cpp b/src/devices/bus/spectrum/exp.cpp index 73e1d4a3a9a..2c8f86f6a9d 100644 --- a/src/devices/bus/spectrum/exp.cpp +++ b/src/devices/bus/spectrum/exp.cpp @@ -43,7 +43,7 @@ device_spectrum_expansion_interface::device_spectrum_expansion_interface(const m spectrum_expansion_slot_device::spectrum_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SPECTRUM_EXPANSION_SLOT, tag, owner, clock), device_slot_interface(mconfig, *this), - m_io(nullptr), + m_io(*this, finder_base::DUMMY_TAG, -1), m_card(nullptr), m_irq_handler(*this), m_nmi_handler(*this) @@ -51,6 +51,23 @@ spectrum_expansion_slot_device::spectrum_expansion_slot_device(const machine_con } +//------------------------------------------------- +// device_config_complete - perform any +// operations now that the configuration is +// complete +//------------------------------------------------- + +void spectrum_expansion_slot_device::device_config_complete() +{ + // for passthrough connectors, use the parent slot's I/O space + if (m_io.finder_tag() == finder_base::DUMMY_TAG && dynamic_cast(owner()) != nullptr) + { + auto parent = dynamic_cast(owner()->owner()); + if (parent != nullptr) + m_io.set_tag(parent->m_io, parent->m_io.spacenum()); + } +} + //------------------------------------------------- // device_validity_check - device-specific checks //------------------------------------------------- @@ -86,15 +103,6 @@ void spectrum_expansion_slot_device::device_reset() { } -//------------------------------------------------- -// set_io_space - set address space we are attached to -//------------------------------------------------- - -void spectrum_expansion_slot_device::set_io_space(address_space *io) -{ - m_io = io; -} - //------------------------------------------------- // port_fe_r //------------------------------------------------- diff --git a/src/devices/bus/spectrum/exp.h b/src/devices/bus/spectrum/exp.h index 1d8eb5f21f2..a20308fd12d 100644 --- a/src/devices/bus/spectrum/exp.h +++ b/src/devices/bus/spectrum/exp.h @@ -69,7 +69,7 @@ public: spectrum_expansion_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock = 0); - void set_io_space(address_space *io); + template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); } // callbacks auto irq_handler() { return m_irq_handler.bind(); } @@ -83,10 +83,11 @@ public: DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_handler(state); } DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_handler(state); } - address_space *m_io; + required_address_space m_io; protected: // device-level overrides + virtual void device_config_complete() override; virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/bus/spectrum/fuller.cpp b/src/devices/bus/spectrum/fuller.cpp index bf3630dc9ff..1fa96a92071 100644 --- a/src/devices/bus/spectrum/fuller.cpp +++ b/src/devices/bus/spectrum/fuller.cpp @@ -90,8 +90,6 @@ void spectrum_fuller_device::device_start() void spectrum_fuller_device::device_reset() { - m_exp->set_io_space(&io_space()); - io_space().install_write_handler(0x3f, 0x3f, 0, 0xff00, 0, write8smo_delegate(FUNC(ay8910_device::address_w), m_psg.target())); io_space().install_readwrite_handler(0x5f, 0x5f, 0, 0xff00, 0, read8smo_delegate(FUNC(ay8910_device::data_r), m_psg.target()), write8smo_delegate(FUNC(ay8910_device::data_w), m_psg.target())); io_space().install_read_handler(0x7f, 0x7f, 0, 0xff00, 0, read8_delegate(FUNC(spectrum_fuller_device::joystick_r), this)); diff --git a/src/devices/bus/spectrum/intf1.cpp b/src/devices/bus/spectrum/intf1.cpp index d324e931e2c..f95da3cfa36 100644 --- a/src/devices/bus/spectrum/intf1.cpp +++ b/src/devices/bus/spectrum/intf1.cpp @@ -93,8 +93,6 @@ void spectrum_intf1_device::device_start() void spectrum_intf1_device::device_reset() { - m_exp->set_io_space(&io_space()); - m_romcs = 0; } diff --git a/src/devices/bus/spectrum/melodik.cpp b/src/devices/bus/spectrum/melodik.cpp index 0a7e04371fe..2de5ab7797a 100644 --- a/src/devices/bus/spectrum/melodik.cpp +++ b/src/devices/bus/spectrum/melodik.cpp @@ -66,8 +66,6 @@ void spectrum_melodik_device::device_start() void spectrum_melodik_device::device_reset() { - m_exp->set_io_space(&io_space()); - io_space().install_write_handler(0x8000, 0x8000, 0, 0x3ffd, 0, write8smo_delegate(FUNC(ay8910_device::address_w), m_psg.target())); io_space().install_readwrite_handler(0xc000, 0xc000, 0, 0x3ffd, 0, read8smo_delegate(FUNC(ay8910_device::data_r), m_psg.target()), write8smo_delegate(FUNC(ay8910_device::data_w), m_psg.target())); } diff --git a/src/devices/bus/spectrum/uslot.cpp b/src/devices/bus/spectrum/uslot.cpp index d2d75d6a72c..3e25046e506 100644 --- a/src/devices/bus/spectrum/uslot.cpp +++ b/src/devices/bus/spectrum/uslot.cpp @@ -64,8 +64,6 @@ void spectrum_uslot_device::device_start() void spectrum_uslot_device::device_reset() { - m_exp1->set_io_space(&io_space()); - m_exp2->set_io_space(&io_space()); } diff --git a/src/devices/bus/vtech/ioexp/ioexp.cpp b/src/devices/bus/vtech/ioexp/ioexp.cpp index c2916a0ba14..897b0dba95b 100644 --- a/src/devices/bus/vtech/ioexp/ioexp.cpp +++ b/src/devices/bus/vtech/ioexp/ioexp.cpp @@ -30,7 +30,7 @@ DEFINE_DEVICE_TYPE(VTECH_IOEXP_SLOT, vtech_ioexp_slot_device, "vtech_ioexp_slot" vtech_ioexp_slot_device::vtech_ioexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, VTECH_IOEXP_SLOT, tag, owner, clock), device_slot_interface(mconfig, *this), - m_io(nullptr), + m_io(*this, finder_base::DUMMY_TAG, -1), m_cart(nullptr) { } @@ -59,15 +59,6 @@ void vtech_ioexp_slot_device::device_reset() { } -//------------------------------------------------- -// set_io_space - set address space we are attached to -//------------------------------------------------- - -void vtech_ioexp_slot_device::set_io_space(address_space *io) -{ - m_io = io; -} - //************************************************************************** // CARTRIDGE INTERFACE diff --git a/src/devices/bus/vtech/ioexp/ioexp.h b/src/devices/bus/vtech/ioexp/ioexp.h index 0c2a3d2d431..9a78f861478 100644 --- a/src/devices/bus/vtech/ioexp/ioexp.h +++ b/src/devices/bus/vtech/ioexp/ioexp.h @@ -54,14 +54,14 @@ public: vtech_ioexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~vtech_ioexp_slot_device(); - void set_io_space(address_space *io); + template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); } protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - address_space *m_io; + required_address_space m_io; device_vtech_ioexp_interface *m_cart; }; diff --git a/src/devices/bus/vtech/memexp/floppy.cpp b/src/devices/bus/vtech/memexp/floppy.cpp index bf7a3175594..5807588ec27 100644 --- a/src/devices/bus/vtech/memexp/floppy.cpp +++ b/src/devices/bus/vtech/memexp/floppy.cpp @@ -107,9 +107,6 @@ void vtech_floppy_controller_device::device_start() void vtech_floppy_controller_device::device_reset() { - m_memexp->set_io_space(&io_space()); - m_memexp->set_program_space(&program_space()); - program_space().install_rom(0x4000, 0x5fff, memregion("software")->base()); io_space().install_device(0x10, 0x1f, *this, &vtech_floppy_controller_device::map); diff --git a/src/devices/bus/vtech/memexp/memexp.cpp b/src/devices/bus/vtech/memexp/memexp.cpp index e7f61e5d048..90f51da7345 100644 --- a/src/devices/bus/vtech/memexp/memexp.cpp +++ b/src/devices/bus/vtech/memexp/memexp.cpp @@ -30,8 +30,8 @@ DEFINE_DEVICE_TYPE(VTECH_MEMEXP_SLOT, vtech_memexp_slot_device, "vtech_memexp_sl vtech_memexp_slot_device::vtech_memexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, VTECH_MEMEXP_SLOT, tag, owner, clock), device_slot_interface(mconfig, *this), - m_program(nullptr), - m_io(nullptr), + m_program(*this, finder_base::DUMMY_TAG, -1), + m_io(*this, finder_base::DUMMY_TAG, -1), m_cart(nullptr), m_int_handler(*this), m_nmi_handler(*this), @@ -47,6 +47,28 @@ vtech_memexp_slot_device::~vtech_memexp_slot_device() { } +//------------------------------------------------- +// device_config_complete - perform any +// operations now that the configuration is +// complete +//------------------------------------------------- + +void vtech_memexp_slot_device::device_config_complete() +{ + // for passthrough connectors, use the parent slot's spaces + if (dynamic_cast(owner()) != nullptr) + { + auto parent = dynamic_cast(owner()->owner()); + if (parent != nullptr) + { + if (m_program.finder_tag() == finder_base::DUMMY_TAG) + m_program.set_tag(parent->m_program, parent->m_program.spacenum()); + if (m_io.finder_tag() == finder_base::DUMMY_TAG) + m_io.set_tag(parent->m_io, parent->m_io.spacenum()); + } + } +} + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -67,24 +89,6 @@ void vtech_memexp_slot_device::device_reset() { } -//------------------------------------------------- -// set_program_space - set address space we are attached to -//------------------------------------------------- - -void vtech_memexp_slot_device::set_program_space(address_space *program) -{ - m_program = program; -} - -//------------------------------------------------- -// set_io_space - set address space we are attached to -//------------------------------------------------- - -void vtech_memexp_slot_device::set_io_space(address_space *io) -{ - m_io = io; -} - //************************************************************************** // CARTRIDGE INTERFACE diff --git a/src/devices/bus/vtech/memexp/memexp.h b/src/devices/bus/vtech/memexp/memexp.h index 097036bfd92..ca096075e90 100644 --- a/src/devices/bus/vtech/memexp/memexp.h +++ b/src/devices/bus/vtech/memexp/memexp.h @@ -61,8 +61,8 @@ public: vtech_memexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~vtech_memexp_slot_device(); - void set_program_space(address_space *program); - void set_io_space(address_space *io); + template void set_program_space(T &&tag, int spacenum) { m_program.set_tag(std::forward(tag), spacenum); } + template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); } // callbacks auto int_handler() { return m_int_handler.bind(); } @@ -76,11 +76,12 @@ public: protected: // device-level overrides + virtual void device_config_complete() override; virtual void device_start() override; virtual void device_reset() override; - address_space *m_program; - address_space *m_io; + required_address_space m_program; + required_address_space m_io; device_vtech_memexp_interface *m_cart; diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp index 6e61298660a..b8728da66b5 100644 --- a/src/mame/drivers/cgenie.cpp +++ b/src/mame/drivers/cgenie.cpp @@ -306,10 +306,6 @@ void cgenie_state::machine_start() { // setup ram m_maincpu->space(AS_PROGRAM).install_ram(0x4000, 0x4000 + m_ram->size() - 1, m_ram->pointer()); - - // setup expansion bus - m_exp->set_program_space(&m_maincpu->space(AS_PROGRAM)); - m_exp->set_io_space(&m_maincpu->space(AS_IO)); } @@ -480,6 +476,8 @@ void cgenie_state::cgenie(machine_config &config) // cartridge expansion slot CG_EXP_SLOT(config, m_exp); + m_exp->set_program_space(m_maincpu, AS_PROGRAM); + m_exp->set_io_space(m_maincpu, AS_IO); m_exp->int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); // parallel slot diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp index 093d47bcb0b..6e1834edb2e 100644 --- a/src/mame/drivers/einstein.cpp +++ b/src/mame/drivers/einstein.cpp @@ -390,10 +390,6 @@ void einstein_state::machine_start() m_bank1->configure_entry(1, m_bios->base()); m_bank2->set_base(m_ram->pointer()); m_bank3->set_base(m_ram->pointer() + 0x8000); - - // setup expansion slot - m_pipe->set_program_space(&m_maincpu->space(AS_PROGRAM)); - m_pipe->set_io_space(&m_maincpu->space(AS_IO)); } void einstein_state::machine_reset() @@ -674,6 +670,8 @@ void einstein_state::einstein(machine_config &config) // tatung pipe connector TATUNG_PIPE(config, m_pipe, XTAL_X002 / 2, tatung_pipe_cards, nullptr); + m_pipe->set_program_space(m_maincpu, AS_PROGRAM); + m_pipe->set_io_space(m_maincpu, AS_IO); m_pipe->nmi_handler().set_inputline(IC_I001, INPUT_LINE_NMI); // user port diff --git a/src/mame/drivers/nascom1.cpp b/src/mame/drivers/nascom1.cpp index 27a3e13c8c2..588cb5d126b 100644 --- a/src/mame/drivers/nascom1.cpp +++ b/src/mame/drivers/nascom1.cpp @@ -120,7 +120,6 @@ public: void nascom2(machine_config &config); void nascom2c(machine_config &config); - void init_nascom2(); void init_nascom2c(); private: @@ -394,15 +393,6 @@ void nascom2_state::machine_reset() m_maincpu->set_state_int(Z80_PC, m_lsw1->read() << 12); } -void nascom2_state::init_nascom2() -{ - init_nascom(); - - // setup nasbus - m_nasbus->set_program_space(&m_maincpu->space(AS_PROGRAM)); - m_nasbus->set_io_space(&m_maincpu->space(AS_IO)); -} - // since we don't know for which regions we should disable ram, we just let other devices // overwrite the region they need, and re-install our ram when they are disabled WRITE_LINE_MEMBER( nascom2_state::ram_disable_w ) @@ -418,10 +408,6 @@ void nascom2_state::init_nascom2c() { // install memory m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x0000 + m_ram->size() - 1, m_ram->pointer()); - - // setup nasbus - m_nasbus->set_program_space(&m_maincpu->space(AS_PROGRAM)); - m_nasbus->set_io_space(&m_maincpu->space(AS_IO)); } WRITE_LINE_MEMBER( nascom2_state::ram_disable_cpm_w ) @@ -764,6 +750,8 @@ void nascom2_state::nascom2(machine_config &config) // nasbus expansion bus nasbus_device &nasbus(NASBUS(config, NASBUS_TAG)); nasbus.ram_disable().set(FUNC(nascom2_state::ram_disable_w)); + nasbus.set_program_space(m_maincpu, AS_PROGRAM); + nasbus.set_io_space(m_maincpu, AS_IO); NASBUS_SLOT(config, "nasbus1", nasbus_slot_cards, nullptr); NASBUS_SLOT(config, "nasbus2", nasbus_slot_cards, nullptr); NASBUS_SLOT(config, "nasbus3", nasbus_slot_cards, nullptr); @@ -848,5 +836,5 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1978, nascom1, 0, 0, nascom1, nascom1, nascom1_state, init_nascom, "Nascom Microcomputers", "Nascom 1", MACHINE_NO_SOUND_HW ) -COMP( 1979, nascom2, 0, 0, nascom2, nascom2, nascom2_state, init_nascom2, "Nascom Microcomputers", "Nascom 2", MACHINE_NO_SOUND_HW ) +COMP( 1979, nascom2, 0, 0, nascom2, nascom2, nascom2_state, init_nascom, "Nascom Microcomputers", "Nascom 2", MACHINE_NO_SOUND_HW ) COMP( 1980, nascom2c, nascom2, 0, nascom2c, nascom2c, nascom2_state, init_nascom2c, "Nascom Microcomputers", "Nascom 2 (CP/M)", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/spec128.cpp b/src/mame/drivers/spec128.cpp index 8da68cafa73..dc57b656b0f 100644 --- a/src/mame/drivers/spec128.cpp +++ b/src/mame/drivers/spec128.cpp @@ -250,12 +250,6 @@ void spectrum_state::spectrum_128_mem(address_map &map) map(0xc000, 0xffff).bankrw("bank4"); } -void spectrum_state::init_spec128() -{ - // setup expansion slot - m_exp->set_io_space(&m_maincpu->space(AS_IO)); -} - MACHINE_RESET_MEMBER(spectrum_state,spectrum_128) { uint8_t *messram = m_ram->pointer(); @@ -319,6 +313,7 @@ void spectrum_state::spectrum_128(machine_config &config) /* expansion port */ SPECTRUM_EXPANSION_SLOT(config.replace(), m_exp, spec128_expansion_devices, nullptr); + m_exp->set_io_space(m_maincpu, AS_IO); m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); @@ -380,8 +375,8 @@ ROM_START(hc2000) ROMX_LOAD("hc2000.v2", 0x14000,0x4000, CRC(65d90464) SHA1(5e2096e6460ff2120c8ada97579fdf82c1199c09), ROM_BIOS(1)) ROM_END -// YEAR NAME PARENT COMPAT MACHINE CLASS STATE INIT COMPANY FULLNAME FLAGS -COMP( 1986, spec128, 0, 0, spectrum_128, spec128, spectrum_state, init_spec128, "Sinclair Research Ltd", "ZX Spectrum 128", 0 ) -COMP( 1986, specpls2, spec128, 0, spectrum_128, spec_plus, spectrum_state, init_spec128, "Amstrad plc", "ZX Spectrum +2", 0 ) -COMP( 1991, hc128, spec128, 0, spectrum_128, spec_plus, spectrum_state, init_spec128, "ICE-Felix", "HC-128", 0 ) -COMP( 1992, hc2000, spec128, 0, spectrum_128, spec_plus, spectrum_state, init_spec128, "ICE-Felix", "HC-2000", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE CLASS STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, spec128, 0, 0, spectrum_128, spec128, spectrum_state, empty_init, "Sinclair Research Ltd", "ZX Spectrum 128", 0 ) +COMP( 1986, specpls2, spec128, 0, spectrum_128, spec_plus, spectrum_state, empty_init, "Amstrad plc", "ZX Spectrum +2", 0 ) +COMP( 1991, hc128, spec128, 0, spectrum_128, spec_plus, spectrum_state, empty_init, "ICE-Felix", "HC-128", 0 ) +COMP( 1992, hc2000, spec128, 0, spectrum_128, spec_plus, spectrum_state, empty_init, "ICE-Felix", "HC-2000", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/specpls3.cpp b/src/mame/drivers/specpls3.cpp index 13c28e1fa65..64b4695360b 100644 --- a/src/mame/drivers/specpls3.cpp +++ b/src/mame/drivers/specpls3.cpp @@ -341,17 +341,11 @@ MACHINE_RESET_MEMBER(spectrum_state,spectrum_plus3) void spectrum_state::init_plus3() { m_floppy = 1; - - // setup expansion slot - m_exp->set_io_space(&m_maincpu->space(AS_IO)); } void spectrum_state::init_plus2() { m_floppy = 0; - - // setup expansion slot - m_exp->set_io_space(&m_maincpu->space(AS_IO)); } static void specpls3_floppies(device_slot_interface &device) @@ -396,6 +390,7 @@ void spectrum_state::spectrum_plus3(machine_config &config) FLOPPY_CONNECTOR(config, "upd765:1", specpls3_floppies, "3ssdd", floppy_image_device::default_floppy_formats); SPECTRUM_EXPANSION_SLOT(config.replace(), m_exp, specpls3_expansion_devices, nullptr); + m_exp->set_io_space(m_maincpu, AS_IO); m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp index ccd29d7cc45..4a7bec87583 100644 --- a/src/mame/drivers/spectrum.cpp +++ b/src/mame/drivers/spectrum.cpp @@ -617,9 +617,6 @@ void spectrum_state::init_spectrum() case 16*1024: space.install_ram(0x5b00, 0x7fff, nullptr); } - - // setup expansion slot - m_exp->set_io_space(&m_maincpu->space(AS_IO)); } MACHINE_RESET_MEMBER(spectrum_state,spectrum) @@ -699,6 +696,7 @@ void spectrum_state::spectrum_common(machine_config &config) /* expansion port */ SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, "kempjoy"); + m_exp->set_io_space(m_maincpu, AS_IO); m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); diff --git a/src/mame/drivers/timex.cpp b/src/mame/drivers/timex.cpp index ae0d2d29549..561c41193b0 100644 --- a/src/mame/drivers/timex.cpp +++ b/src/mame/drivers/timex.cpp @@ -583,12 +583,6 @@ void spectrum_state::tc2048_mem(address_map &map) map(0x4000, 0xffff).bankr("bank1").bankw("bank2"); } -void spectrum_state::init_timex() -{ - // setup expansion slot - m_exp->set_io_space(&m_maincpu->space(AS_IO)); -} - MACHINE_RESET_MEMBER(spectrum_state,tc2048) { uint8_t *messram = m_ram->pointer(); @@ -784,6 +778,6 @@ ROM_START(uk2086) ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1984, tc2048, spectrum, 0, tc2048, spectrum, spectrum_state, init_timex, "Timex of Portugal", "TC-2048" , 0 ) -COMP( 1983, ts2068, spectrum, 0, ts2068, spectrum, spectrum_state, init_timex, "Timex Sinclair", "TS-2068" , 0 ) -COMP( 1986, uk2086, spectrum, 0, uk2086, spectrum, spectrum_state, init_timex, "Unipolbrit", "UK-2086 ver. 1.2" , 0 ) +COMP( 1984, tc2048, spectrum, 0, tc2048, spectrum, spectrum_state, empty_init, "Timex of Portugal", "TC-2048" , 0 ) +COMP( 1983, ts2068, spectrum, 0, ts2068, spectrum, spectrum_state, empty_init, "Timex Sinclair", "TS-2068" , 0 ) +COMP( 1986, uk2086, spectrum, 0, uk2086, spectrum, spectrum_state, empty_init, "Unipolbrit", "UK-2086 ver. 1.2" , 0 ) diff --git a/src/mame/drivers/vtech1.cpp b/src/mame/drivers/vtech1.cpp index ad26a417244..05b3252abc6 100644 --- a/src/mame/drivers/vtech1.cpp +++ b/src/mame/drivers/vtech1.cpp @@ -83,7 +83,6 @@ public: void laser110(machine_config &config); void laser210(machine_config &config); - void init_vtech1(); void init_vtech1h(); private: @@ -280,18 +279,8 @@ READ8_MEMBER( vtech1_state::mc6847_videoram_r ) DRIVER INIT ***************************************************************************/ -void vtech1_state::init_vtech1() -{ - // setup expansion slots - m_ioexp->set_io_space(&m_maincpu->space(AS_IO)); - m_memexp->set_program_space(&m_maincpu->space(AS_PROGRAM)); - m_memexp->set_io_space(&m_maincpu->space(AS_IO)); -} - void vtech1_state::init_vtech1h() { - init_vtech1(); - // the SHRG mod replaces the standard videoram chip with an 8k chip m_videoram.allocate(0x2000); @@ -463,7 +452,10 @@ void vtech1_state::laser110(machine_config &config) // peripheral and memory expansion slots VTECH_IOEXP_SLOT(config, m_ioexp); + m_ioexp->set_io_space(m_maincpu, AS_IO); VTECH_MEMEXP_SLOT(config, m_memexp); + m_memexp->set_program_space(m_maincpu, AS_PROGRAM); + m_memexp->set_io_space(m_maincpu, AS_IO); // snapshot snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot", 0)); @@ -574,13 +566,13 @@ ROM_END ***************************************************************************/ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1983, laser110, 0, 0, laser110, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 110", 0 ) -COMP( 1983, laser200, 0, 0, laser200, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 200", 0 ) -COMP( 1983, vz200de, laser200, 0, laser200, vtech1, vtech1_state, init_vtech1, "Video Technology", "VZ-200 (Germany & Netherlands)", MACHINE_NOT_WORKING ) -COMP( 1983, fellow, laser200, 0, laser200, vtech1, vtech1_state, init_vtech1, "Salora", "Fellow (Finland)", 0 ) -COMP( 1983, tx8000, laser200, 0, laser200, vtech1, vtech1_state, init_vtech1, "Texet", "TX-8000 (UK)", 0 ) -COMP( 1984, laser210, 0, 0, laser210, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 210", 0 ) -COMP( 1984, vz200, laser210, 0, laser210, vtech1, vtech1_state, init_vtech1, "Dick Smith Electronics", "VZ-200 (Oceania)", 0 ) -COMP( 1984, laser310, 0, 0, laser310, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 310", 0 ) -COMP( 1984, vz300, laser310, 0, laser310, vtech1, vtech1_state, init_vtech1, "Dick Smith Electronics", "VZ-300 (Oceania)", 0 ) +COMP( 1983, laser110, 0, 0, laser110, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 110", 0 ) +COMP( 1983, laser200, 0, 0, laser200, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 200", 0 ) +COMP( 1983, vz200de, laser200, 0, laser200, vtech1, vtech1_state, empty_init, "Video Technology", "VZ-200 (Germany & Netherlands)", MACHINE_NOT_WORKING ) +COMP( 1983, fellow, laser200, 0, laser200, vtech1, vtech1_state, empty_init, "Salora", "Fellow (Finland)", 0 ) +COMP( 1983, tx8000, laser200, 0, laser200, vtech1, vtech1_state, empty_init, "Texet", "TX-8000 (UK)", 0 ) +COMP( 1984, laser210, 0, 0, laser210, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 210", 0 ) +COMP( 1984, vz200, laser210, 0, laser210, vtech1, vtech1_state, empty_init, "Dick Smith Electronics", "VZ-200 (Oceania)", 0 ) +COMP( 1984, laser310, 0, 0, laser310, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 310", 0 ) +COMP( 1984, vz300, laser310, 0, laser310, vtech1, vtech1_state, empty_init, "Dick Smith Electronics", "VZ-300 (Oceania)", 0 ) COMP( 1984, laser310h, laser310, 0, laser310h, vtech1, vtech1_state, init_vtech1h, "Video Technology", "Laser 310 (SHRG)", MACHINE_UNOFFICIAL ) diff --git a/src/mame/drivers/vtech2.cpp b/src/mame/drivers/vtech2.cpp index 751ae7b0fda..6f724b3f2f4 100644 --- a/src/mame/drivers/vtech2.cpp +++ b/src/mame/drivers/vtech2.cpp @@ -518,7 +518,7 @@ MACHINE_CONFIG_START(vtech2_state::laser350) m_cassette->set_formats(vtech2_cassette_formats); m_cassette->set_default_state(CASSETTE_PLAY); - VTECH_IOEXP_SLOT(config, "io"); + VTECH_IOEXP_SLOT(config, "io").set_io_space(m_maincpu, AS_IO); /* cartridge */ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "vtech_cart") diff --git a/src/mame/includes/spectrum.h b/src/mame/includes/spectrum.h index 9ace2a689fc..4a48fb41772 100644 --- a/src/mame/includes/spectrum.h +++ b/src/mame/includes/spectrum.h @@ -107,8 +107,6 @@ public: void spectrum_128(machine_config &config); void init_spectrum(); - void init_spec128(); - void init_timex(); void init_plus2(); void init_plus3(); diff --git a/src/mame/machine/vtech2.cpp b/src/mame/machine/vtech2.cpp index 8f5be7013b8..494044db80b 100644 --- a/src/mame/machine/vtech2.cpp +++ b/src/mame/machine/vtech2.cpp @@ -43,9 +43,6 @@ void vtech2_state::init_laser() // check ROM expansion std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); - - // setup expansion slot - m_ioexp->set_io_space(&m_maincpu->space(AS_IO)); } -- cgit v1.2.3