diff options
Diffstat (limited to 'src/devices/bus/nasbus/nasbus.h')
-rw-r--r-- | src/devices/bus/nasbus/nasbus.h | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/src/devices/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h index 7d6151d513e..c20445c741c 100644 --- a/src/devices/bus/nasbus/nasbus.h +++ b/src/devices/bus/nasbus/nasbus.h @@ -87,10 +87,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_BUS_NASBUS_NASBUS_H +#define MAME_BUS_NASBUS_NASBUS_H -#ifndef __NASBUS_H__ -#define __NASBUS_H__ +#pragma once @@ -131,34 +131,34 @@ class nasbus_slot_device : public device_t, public device_slot_interface public: // construction/destruction nasbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - nasbus_slot_device(const machine_config &mconfig, device_type type, const char *name, - const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - - // device-level overrides - virtual void device_start() override; - // inline configuration static void set_nasbus_slot(device_t &device, device_t *owner, const char *nasbus_tag); protected: + nasbus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override; + // configuration const char *m_nasbus_tag; }; // device type definition -extern const device_type NASBUS_SLOT; +DECLARE_DEVICE_TYPE(NASBUS_SLOT, nasbus_slot_device) // ======================> nasbus_device class nasbus_device : public device_t { + friend class device_nasbus_card_interface; public: // construction/destruction nasbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~nasbus_device(); - template<class _Object> static devcb_base &set_ram_disable_handler(device_t &device, _Object object) - { return downcast<nasbus_device &>(device).m_ram_disable_handler.set_callback(object); } + template <class Object> static devcb_base &set_ram_disable_handler(device_t &device, Object &&cb) + { return downcast<nasbus_device &>(device).m_ram_disable_handler.set_callback(std::forward<Object>(cb)); } void add_card(device_nasbus_card_interface *card); @@ -168,42 +168,49 @@ public: // from cards DECLARE_WRITE_LINE_MEMBER( ram_disable_w ); - address_space *m_program; - address_space *m_io; - protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; private: + address_space *m_program; + address_space *m_io; + simple_list<device_nasbus_card_interface> m_dev; devcb_write_line m_ram_disable_handler; }; // device type definition -extern const device_type NASBUS; +DECLARE_DEVICE_TYPE(NASBUS, nasbus_device) // ======================> device_nasbus_interface class device_nasbus_card_interface : public device_slot_card_interface { + template <class ElementType> friend class simple_list; public: // construction/destruction - device_nasbus_card_interface(const machine_config &mconfig, device_t &device); virtual ~device_nasbus_card_interface(); void set_nasbus_device(nasbus_device *nasbus); device_nasbus_card_interface *next() const { return m_next; } - device_nasbus_card_interface *m_next; protected: + device_nasbus_card_interface(const machine_config &mconfig, device_t &device); + + address_space &program_space() { return *m_nasbus->m_program; } + address_space &io_space() { return *m_nasbus->m_io; } + nasbus_device *m_nasbus; + +private: + device_nasbus_card_interface *m_next; }; // include here so drivers don't need to #include "cards.h" -#endif // __NASBUS_H__ +#endif // MAME_BUS_NASBUS_NASBUS_H |