diff options
Diffstat (limited to 'src/devices/bus/tiki100/exp.h')
-rw-r--r-- | src/devices/bus/tiki100/exp.h | 83 |
1 files changed, 41 insertions, 42 deletions
diff --git a/src/devices/bus/tiki100/exp.h b/src/devices/bus/tiki100/exp.h index f97d46faee4..9ae56520527 100644 --- a/src/devices/bus/tiki100/exp.h +++ b/src/devices/bus/tiki100/exp.h @@ -9,10 +9,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_TIKI100_EXP_H +#define MAME_BUS_TIKI100_EXP_H -#ifndef __TIKI100_BUS__ -#define __TIKI100_BUS__ +#pragma once #include "cpu/z80/z80daisy.h" @@ -39,19 +39,19 @@ #define MCFG_TIKI100_BUS_IRQ_CALLBACK(_write) \ - devcb = &tiki100_bus_t::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &tiki100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write); #define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \ - devcb = &tiki100_bus_t::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &tiki100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write); #define MCFG_TIKI100_BUS_BUSRQ_CALLBACK(_write) \ - devcb = &tiki100_bus_t::set_busrq_wr_callback(*device, DEVCB_##_write); + devcb = &tiki100_bus_device::set_busrq_wr_callback(*device, DEVCB_##_write); #define MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(_read) \ - devcb = &tiki100_bus_t::set_mrq_rd_callback(*device, DEVCB_##_read); + devcb = &tiki100_bus_device::set_mrq_rd_callback(*device, DEVCB_##_read); #define MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(_write) \ - devcb = &tiki100_bus_t::set_mrq_wr_callback(*device, DEVCB_##_write); + devcb = &tiki100_bus_device::set_mrq_wr_callback(*device, DEVCB_##_write); @@ -59,57 +59,59 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> tiki100_bus_slot_t +// ======================> tiki100_bus_slot_device -class tiki100_bus_t; -class tiki100_bus_slot_t; +class tiki100_bus_device; +class tiki100_bus_slot_device; // ======================> device_tiki100bus_card_interface class device_tiki100bus_card_interface : public device_slot_card_interface { - friend class tiki100_bus_t; + friend class tiki100_bus_device; + template <class ElementType> friend class simple_list; public: - // construction/destruction - device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device); - virtual ~device_tiki100bus_card_interface() { } - device_tiki100bus_card_interface *next() const { return m_next; } // memory access - virtual uint8_t mrq_r(address_space &space, offs_t offset, uint8_t data, bool &mdis) { mdis = 1; return data; }; - virtual void mrq_w(address_space &space, offs_t offset, uint8_t data) { }; + virtual uint8_t mrq_r(address_space &space, offs_t offset, uint8_t data, bool &mdis) { mdis = 1; return data; } + virtual void mrq_w(address_space &space, offs_t offset, uint8_t data) { } // I/O access - virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data) { return data; }; - virtual void iorq_w(address_space &space, offs_t offset, uint8_t data) { }; + virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data) { return data; } + virtual void iorq_w(address_space &space, offs_t offset, uint8_t data) { } - virtual void busak_w(int state) { m_busak = state; }; + virtual void busak_w(int state) { m_busak = state; } // Z80 daisy chain virtual int z80daisy_irq_state() { return 0; } virtual int z80daisy_irq_ack() { return 0; } virtual void z80daisy_irq_reti() { } - tiki100_bus_t *m_bus; - tiki100_bus_slot_t *m_slot; +protected: + // construction/destruction + device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device); + + tiki100_bus_device *m_bus; + tiki100_bus_slot_device *m_slot; int m_busak; +private: device_tiki100bus_card_interface *m_next; }; -// ======================> tiki100_bus_slot_t +// ======================> tiki100_bus_slot_device -class tiki100_bus_slot_t : public device_t, +class tiki100_bus_slot_device : public device_t, public device_slot_interface, public device_z80daisy_interface { public: // construction/destruction - tiki100_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + tiki100_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual void device_start() override; @@ -122,29 +124,29 @@ protected: private: // configuration - tiki100_bus_t *m_bus; + tiki100_bus_device *m_bus; device_tiki100bus_card_interface *m_card; }; // device type definition -extern const device_type TIKI100_BUS_SLOT; +DECLARE_DEVICE_TYPE(TIKI100_BUS_SLOT, tiki100_bus_slot_device) -// ======================> tiki100_bus_t +// ======================> tiki100_bus_device -class tiki100_bus_t : public device_t +class tiki100_bus_device : public device_t { public: // construction/destruction - tiki100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tiki100_bus_t() { m_device_list.detach_all(); } + tiki100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ~tiki100_bus_device() { m_device_list.detach_all(); } - template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_irq_cb.set_callback(object); } - template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_nmi_cb.set_callback(object); } - template<class _Object> static devcb_base &set_busrq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_busrq_cb.set_callback(object); } - template<class _Object> static devcb_base &set_mrq_rd_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_in_mrq_cb.set_callback(object); } - template<class _Object> static devcb_base &set_mrq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_out_mrq_cb.set_callback(object); } + template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_busrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_busrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_mrq_rd_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_in_mrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_mrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_out_mrq_cb.set_callback(std::forward<Object>(cb)); } void add_card(device_tiki100bus_card_interface *card); @@ -180,13 +182,10 @@ private: // device type definition -extern const device_type TIKI100_BUS; - +DECLARE_DEVICE_TYPE(TIKI100_BUS, tiki100_bus_device) SLOT_INTERFACE_EXTERN( tiki100_cards ); - - -#endif +#endif // MAME_BUS_TIKI100_EXP_H |