diff options
Diffstat (limited to 'src/devices/bus/s100/s100.h')
-rw-r--r-- | src/devices/bus/s100/s100.h | 150 |
1 files changed, 74 insertions, 76 deletions
diff --git a/src/devices/bus/s100/s100.h b/src/devices/bus/s100/s100.h index 44f2d642770..a4eef9f5f83 100644 --- a/src/devices/bus/s100/s100.h +++ b/src/devices/bus/s100/s100.h @@ -59,10 +59,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_S100_H +#define MAME_BUS_S100_S100_H -#ifndef __S100__ -#define __S100__ +#pragma once @@ -88,55 +88,55 @@ #define MCFG_S100_IRQ_CALLBACK(_write) \ - devcb = &s100_bus_t::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_NMI_CALLBACK(_write) \ - devcb = &s100_bus_t::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI0_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi0_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi0_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI1_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi1_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi1_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI2_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi2_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi2_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI3_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi3_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi3_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI4_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi4_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi4_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI5_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi5_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi5_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI6_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi6_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi6_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI7_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi7_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi7_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA0_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma0_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma0_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA1_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma1_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma1_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA2_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma2_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma2_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA3_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma3_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma3_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_RDY_CALLBACK(_write) \ - devcb = &s100_bus_t::set_rdy_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_rdy_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_HOLD_CALLBACK(_write) \ - devcb = &s100_bus_t::set_hold_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_hold_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_ERROR_CALLBACK(_write) \ - devcb = &s100_bus_t::set_error_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_error_wr_callback(*device, DEVCB_##_write); @@ -144,43 +144,40 @@ // TYPE DEFINITIONS //************************************************************************** -class s100_bus_t; +class s100_bus_device; // ======================> device_s100_card_interface class device_s100_card_interface : public device_slot_card_interface { - friend class s100_bus_t; + friend class s100_bus_device; + template <class ElementType> friend class simple_list; public: - // construction/destruction - device_s100_card_interface(const machine_config &mconfig, device_t &device); - virtual ~device_s100_card_interface() { } - device_s100_card_interface *next() const { return m_next; } // interrupts - virtual void s100_int_w(int state) { }; - virtual void s100_nmi_w(int state) { }; - virtual uint8_t s100_sinta_r(offs_t offset) { return 0; }; + virtual void s100_int_w(int state) { } + virtual void s100_nmi_w(int state) { } + virtual uint8_t s100_sinta_r(offs_t offset) { return 0; } // vectored interrupts - virtual void s100_vi0_w(int state) { }; - virtual void s100_vi1_w(int state) { }; - virtual void s100_vi2_w(int state) { }; - virtual void s100_vi3_w(int state) { }; - virtual void s100_vi4_w(int state) { }; - virtual void s100_vi5_w(int state) { }; - virtual void s100_vi6_w(int state) { }; - virtual void s100_vi7_w(int state) { }; + virtual void s100_vi0_w(int state) { } + virtual void s100_vi1_w(int state) { } + virtual void s100_vi2_w(int state) { } + virtual void s100_vi3_w(int state) { } + virtual void s100_vi4_w(int state) { } + virtual void s100_vi5_w(int state) { } + virtual void s100_vi6_w(int state) { } + virtual void s100_vi7_w(int state) { } // memory access - virtual uint8_t s100_smemr_r(address_space &space, offs_t offset) { return 0; }; - virtual void s100_mwrt_w(address_space &space, offs_t offset, uint8_t data) { }; + virtual uint8_t s100_smemr_r(address_space &space, offs_t offset) { return 0; } + virtual void s100_mwrt_w(address_space &space, offs_t offset, uint8_t data) { } // I/O access - virtual uint8_t s100_sinp_r(address_space &space, offs_t offset) { return 0; }; - virtual void s100_sout_w(address_space &space, offs_t offset, uint8_t data) { }; + virtual uint8_t s100_sinp_r(address_space &space, offs_t offset) { return 0; } + virtual void s100_sout_w(address_space &space, offs_t offset, uint8_t data) { } // configuration access virtual void s100_phlda_w(int state) { } @@ -194,39 +191,44 @@ public: virtual void s100_reset_w(int state) { } virtual void s100_slave_clr_w(int state) { } -public: - s100_bus_t *m_bus; +protected: + // construction/destruction + device_s100_card_interface(const machine_config &mconfig, device_t &device); + + s100_bus_device *m_bus; + +private: device_s100_card_interface *m_next; }; -// ======================> s100_bus_t +// ======================> s100_bus_device -class s100_bus_t : public device_t +class s100_bus_device : public device_t { public: // construction/destruction - s100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~s100_bus_t() { m_device_list.detach_all(); } - - template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_irq.set_callback(object); } - template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_nmi.set_callback(object); } - template<class _Object> static devcb_base &set_vi0_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi0.set_callback(object); } - template<class _Object> static devcb_base &set_vi1_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi1.set_callback(object); } - template<class _Object> static devcb_base &set_vi2_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi2.set_callback(object); } - template<class _Object> static devcb_base &set_vi3_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi3.set_callback(object); } - template<class _Object> static devcb_base &set_vi4_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi4.set_callback(object); } - template<class _Object> static devcb_base &set_vi5_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi5.set_callback(object); } - template<class _Object> static devcb_base &set_vi6_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi6.set_callback(object); } - template<class _Object> static devcb_base &set_vi7_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi7.set_callback(object); } - template<class _Object> static devcb_base &set_dma0_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma0.set_callback(object); } - template<class _Object> static devcb_base &set_dma1_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma1.set_callback(object); } - template<class _Object> static devcb_base &set_dma2_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma2.set_callback(object); } - template<class _Object> static devcb_base &set_dma3_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma3.set_callback(object); } - template<class _Object> static devcb_base &set_rdy_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_rdy.set_callback(object); } - template<class _Object> static devcb_base &set_hold_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_hold.set_callback(object); } - template<class _Object> static devcb_base &set_error_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_error.set_callback(object); } + s100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ~s100_bus_device() { m_device_list.detach_all(); } + + template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi0.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi1.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi2.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi3.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi4_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi4.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi5_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi5.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi6_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi6.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi7_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi7.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma0.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma1.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma2.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma3.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_rdy_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_rdy.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_hold_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_hold.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); } void add_card(device_s100_card_interface *card); @@ -282,29 +284,25 @@ private: }; -// ======================> s100_slot_t +// ======================> s100_slot_device -class s100_slot_t : public device_t, - public device_slot_interface +class s100_slot_device : public device_t, public device_slot_interface { public: // construction/destruction - s100_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + s100_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual void device_start() override; private: - s100_bus_t *m_bus; + s100_bus_device *m_bus; }; // device type definition -extern const device_type S100_BUS; -extern const device_type S100_SLOT; - - - +DECLARE_DEVICE_TYPE(S100_BUS, s100_bus_device) +DECLARE_DEVICE_TYPE(S100_SLOT, s100_slot_device) -#endif +#endif // MAME_BUS_S100_S100_H |