diff options
author | 2018-05-09 00:09:49 +0200 | |
---|---|---|
committer | 2018-05-09 00:11:09 +0200 | |
commit | 54471cc53c423efe1e457876774f7f49d254855d (patch) | |
tree | 572795973abea4e24d761eb2ae201e0e14a5d392 | |
parent | 027d863b5315587b133517923ac89d6ece31b5e6 (diff) |
tmpz84c015: Add missing callback for ctc zc3
-rw-r--r-- | src/devices/cpu/z80/tmpz84c015.cpp | 16 | ||||
-rw-r--r-- | src/devices/cpu/z80/tmpz84c015.h | 21 | ||||
-rw-r--r-- | src/devices/machine/z80ctc.h | 4 |
3 files changed, 20 insertions, 21 deletions
diff --git a/src/devices/cpu/z80/tmpz84c015.cpp b/src/devices/cpu/z80/tmpz84c015.cpp index 8f5e3b6b716..54219bd493d 100644 --- a/src/devices/cpu/z80/tmpz84c015.cpp +++ b/src/devices/cpu/z80/tmpz84c015.cpp @@ -51,9 +51,7 @@ tmpz84c015_device::tmpz84c015_device(const machine_config &mconfig, const char * m_out_rxdrqb_cb(*this), m_out_txdrqb_cb(*this), - m_zc0_cb(*this), - m_zc1_cb(*this), - m_zc2_cb(*this), + m_zc_cb{ {*this}, {*this}, {*this}, {*this} }, m_in_pa_cb(*this), m_out_pa_cb(*this), @@ -99,9 +97,8 @@ void tmpz84c015_device::device_start() m_out_rxdrqb_cb.resolve_safe(); m_out_txdrqb_cb.resolve_safe(); - m_zc0_cb.resolve_safe(); - m_zc1_cb.resolve_safe(); - m_zc2_cb.resolve_safe(); + for (unsigned i = 0; i < 4; i++) + m_zc_cb[i].resolve_safe(); m_in_pa_cb.resolve_safe(0); m_out_pa_cb.resolve_safe(); @@ -206,9 +203,10 @@ MACHINE_CONFIG_START(tmpz84c015_device::device_add_mconfig) MCFG_DEVICE_ADD("tmpz84c015_ctc", Z80CTC, DERIVED_CLOCK(1,1) ) MCFG_Z80CTC_INTR_CB(INPUTLINE(DEVICE_SELF, INPUT_LINE_IRQ0)) - MCFG_Z80CTC_ZC0_CB(WRITELINE(*this, tmpz84c015_device, zc0_cb_trampoline_w)) - MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, tmpz84c015_device, zc1_cb_trampoline_w)) - MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, tmpz84c015_device, zc2_cb_trampoline_w)) + MCFG_Z80CTC_ZC0_CB(WRITELINE(*this, tmpz84c015_device, zc_cb_trampoline_w<0>)) + MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, tmpz84c015_device, zc_cb_trampoline_w<1>)) + MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, tmpz84c015_device, zc_cb_trampoline_w<2>)) + MCFG_Z80CTC_ZC3_CB(WRITELINE(*this, tmpz84c015_device, zc_cb_trampoline_w<3>)) MCFG_DEVICE_ADD("tmpz84c015_pio", Z80PIO, DERIVED_CLOCK(1,1) ) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(DEVICE_SELF, INPUT_LINE_IRQ0)) diff --git a/src/devices/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h index 626099512b3..287647913cb 100644 --- a/src/devices/cpu/z80/tmpz84c015.h +++ b/src/devices/cpu/z80/tmpz84c015.h @@ -68,13 +68,16 @@ // CTC callbacks #define MCFG_TMPZ84C015_ZC0_CB(_devcb) \ - devcb = &downcast<tmpz84c015_device &>(*device).set_zc0_callback(DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<0>(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC1_CB(_devcb) \ - devcb = &downcast<tmpz84c015_device &>(*device).set_zc1_callback(DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<1>(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC2_CB(_devcb) \ - devcb = &downcast<tmpz84c015_device &>(*device).set_zc2_callback(DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<2>(DEVCB_##_devcb); + +#define MCFG_TMPZ84C015_ZC3_CB(_devcb) \ + devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<3>(DEVCB_##_devcb); // PIO callbacks @@ -124,9 +127,7 @@ public: template<class Object> devcb_base &set_out_rxdrqb_callback(Object &&cb) { return m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); } template<class Object> devcb_base &set_out_txdrqb_callback(Object &&cb) { return m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); } + template<unsigned N, class Object> devcb_base &set_zc_callback(Object &&cb) { return m_zc_cb[N].set_callback(std::forward<Object>(cb)); } template<class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } template<class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } @@ -229,9 +230,7 @@ private: devcb_write_line m_out_rxdrqb_cb; devcb_write_line m_out_txdrqb_cb; - devcb_write_line m_zc0_cb; - devcb_write_line m_zc1_cb; - devcb_write_line m_zc2_cb; + devcb_write_line m_zc_cb[4]; devcb_read8 m_in_pa_cb; devcb_write8 m_out_pa_cb; @@ -258,9 +257,7 @@ private: DECLARE_WRITE_LINE_MEMBER( out_rxdrqb_cb_trampoline_w ) { m_out_rxdrqb_cb(state); } DECLARE_WRITE_LINE_MEMBER( out_txdrqb_cb_trampoline_w ) { m_out_txdrqb_cb(state); } - DECLARE_WRITE_LINE_MEMBER( zc0_cb_trampoline_w ) { m_zc0_cb(state); } - DECLARE_WRITE_LINE_MEMBER( zc1_cb_trampoline_w ) { m_zc1_cb(state); } - DECLARE_WRITE_LINE_MEMBER( zc2_cb_trampoline_w ) { m_zc2_cb(state); } + template<unsigned N> DECLARE_WRITE_LINE_MEMBER( zc_cb_trampoline_w ) { m_zc_cb[N](state); } DECLARE_READ8_MEMBER( in_pa_cb_trampoline_r ) { return m_in_pa_cb(); } DECLARE_WRITE8_MEMBER( out_pa_cb_trampoline_w ) { m_out_pa_cb(data); } diff --git a/src/devices/machine/z80ctc.h b/src/devices/machine/z80ctc.h index 724a6dbb9c0..76e4e66e2d1 100644 --- a/src/devices/machine/z80ctc.h +++ b/src/devices/machine/z80ctc.h @@ -47,6 +47,10 @@ #define MCFG_Z80CTC_ZC2_CB(_devcb) \ devcb = &downcast<z80ctc_device &>(*device).set_zc_callback<2>(DEVCB_##_devcb); +// not supported on a standard ctc, only used for the tmpz84c015 +#define MCFG_Z80CTC_ZC3_CB(_devcb) \ + devcb = &downcast<z80ctc_device &>(*device).set_zc_callback<3>(DEVCB_##_devcb); + //************************************************************************** // TYPE DEFINITIONS |