diff options
Diffstat (limited to 'src/mame/machine/interpro_ioga.h')
-rw-r--r-- | src/mame/machine/interpro_ioga.h | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index 489753b6586..67c53ea96ab 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -7,30 +7,30 @@ #pragma once #define MCFG_INTERPRO_IOGA_NMI_CB(_out_nmi) \ - devcb = &interpro_ioga_device::static_set_out_nmi_callback(*device, DEVCB_##_out_nmi); + devcb = &downcast<interpro_ioga_device &>(*device).set_out_nmi_callback(DEVCB_##_out_nmi); #define MCFG_INTERPRO_IOGA_IRQ_CB(_out_irq) \ - devcb = &interpro_ioga_device::static_set_out_irq_callback(*device, DEVCB_##_out_irq); + devcb = &downcast<interpro_ioga_device &>(*device).set_out_irq_callback(DEVCB_##_out_irq); #define MCFG_INTERPRO_IOGA_IVEC_CB(_out_ivec) \ - devcb = &interpro_ioga_device::static_set_out_ivec_callback(*device, DEVCB_##_out_ivec); + devcb = &downcast<interpro_ioga_device &>(*device).set_out_ivec_callback(DEVCB_##_out_ivec); #define MCFG_INTERPRO_IOGA_DMA_CB(_channel, _dma_r, _dma_w) \ - devcb = &interpro_ioga_device::static_set_dma_r_callback(*device, _channel, DEVCB_##_dma_r); \ - devcb = &interpro_ioga_device::static_set_dma_w_callback(*device, _channel, DEVCB_##_dma_w); + devcb = &downcast<interpro_ioga_device &>(*device).set_dma_r_callback(_channel, DEVCB_##_dma_r); \ + devcb = &downcast<interpro_ioga_device &>(*device).set_dma_w_callback(_channel, DEVCB_##_dma_w); #define MCFG_INTERPRO_IOGA_SERIAL_DMA_CB(_channel, _dma_r, _dma_w) \ - devcb = &interpro_ioga_device::static_set_serial_dma_r_callback(*device, _channel, DEVCB_##_dma_r); \ - devcb = &interpro_ioga_device::static_set_serial_dma_w_callback(*device, _channel, DEVCB_##_dma_w); + devcb = &downcast<interpro_ioga_device &>(*device).set_serial_dma_r_callback(_channel, DEVCB_##_dma_r); \ + devcb = &downcast<interpro_ioga_device &>(*device).set_serial_dma_w_callback(_channel, DEVCB_##_dma_w); #define MCFG_INTERPRO_IOGA_FDCTC_CB(_tc) \ - devcb = &interpro_ioga_device::static_set_fdc_tc_callback(*device, DEVCB_##_tc); + devcb = &downcast<interpro_ioga_device &>(*device).set_fdc_tc_callback(DEVCB_##_tc); #define MCFG_INTERPRO_IOGA_ETH_CA_CB(_ca) \ - devcb = &interpro_ioga_device::static_set_eth_ca_callback(*device, DEVCB_##_ca); + devcb = &downcast<interpro_ioga_device &>(*device).set_eth_ca_callback(DEVCB_##_ca); #define MCFG_INTERPRO_IOGA_MEMORY(_tag, _spacenum) \ - interpro_ioga_device::static_set_memory(*device, _tag, _spacenum); + downcast<interpro_ioga_device &>(*device).set_memory(_tag, _spacenum); class interpro_ioga_device : public device_t { @@ -106,17 +106,21 @@ protected: }; public: - template<class _Object> static devcb_base &static_set_out_nmi_callback(device_t &device, _Object object) { return downcast<interpro_ioga_device &>(device).m_out_nmi_func.set_callback(object); } - template<class _Object> static devcb_base &static_set_out_irq_callback(device_t &device, _Object object) { return downcast<interpro_ioga_device &>(device).m_out_irq_func.set_callback(object); } - template<class _Object> static devcb_base &static_set_out_ivec_callback(device_t &device, _Object object) { return downcast<interpro_ioga_device &>(device).m_out_ivec_func.set_callback(object); } - template<class _Object> static devcb_base &static_set_dma_r_callback(device_t &device, int channel, _Object object) { return downcast<interpro_ioga_device &>(device).m_dma_channel[channel].device_r.set_callback(object); } - template<class _Object> static devcb_base &static_set_dma_w_callback(device_t &device, int channel, _Object object) { return downcast<interpro_ioga_device &>(device).m_dma_channel[channel].device_w.set_callback(object); } - template<class _Object> static devcb_base &static_set_serial_dma_r_callback(device_t &device, int channel, _Object object) { return downcast<interpro_ioga_device &>(device).m_serial_dma_channel[channel].device_r.set_callback(object); } - template<class _Object> static devcb_base &static_set_serial_dma_w_callback(device_t &device, int channel, _Object object) { return downcast<interpro_ioga_device &>(device).m_serial_dma_channel[channel].device_w.set_callback(object); } - template<class _Object> static devcb_base &static_set_fdc_tc_callback(device_t &device, _Object object) { return downcast<interpro_ioga_device &>(device).m_fdc_tc_func.set_callback(object); } - template<class _Object> static devcb_base &static_set_eth_ca_callback(device_t &device, _Object object) { return downcast<interpro_ioga_device &>(device).m_eth_ca_func.set_callback(object); } - - static void static_set_memory(device_t &device, const char *const tag, const int spacenum); + template<class _Object> devcb_base &set_out_nmi_callback(_Object object) { return m_out_nmi_func.set_callback(object); } + template<class _Object> devcb_base &set_out_irq_callback(_Object object) { return m_out_irq_func.set_callback(object); } + template<class _Object> devcb_base &set_out_ivec_callback(_Object object) { return m_out_ivec_func.set_callback(object); } + template<class _Object> devcb_base &set_dma_r_callback(int channel, _Object object) { return m_dma_channel[channel].device_r.set_callback(object); } + template<class _Object> devcb_base &set_dma_w_callback(int channel, _Object object) { return m_dma_channel[channel].device_w.set_callback(object); } + template<class _Object> devcb_base &set_serial_dma_r_callback(int channel, _Object object) { return m_serial_dma_channel[channel].device_r.set_callback(object); } + template<class _Object> devcb_base &set_serial_dma_w_callback(int channel, _Object object) { return m_serial_dma_channel[channel].device_w.set_callback(object); } + template<class _Object> devcb_base &set_fdc_tc_callback(_Object object) { return m_fdc_tc_func.set_callback(object); } + template<class _Object> devcb_base &set_eth_ca_callback(_Object object) { return m_eth_ca_func.set_callback(object); } + + void set_memory(const char *const tag, const int spacenum) + { + m_memory_tag = tag; + m_memory_spacenum = spacenum; + } virtual void map(address_map &map) = 0; |