diff options
Diffstat (limited to 'src/devices/cpu/cop400/cop400.h')
-rw-r--r-- | src/devices/cpu/cop400/cop400.h | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h index 3630c2c41b7..643f6129fe1 100644 --- a/src/devices/cpu/cop400/cop400.h +++ b/src/devices/cpu/cop400/cop400.h @@ -17,40 +17,40 @@ // L pins: 8-bit bi-directional #define MCFG_COP400_READ_L_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_l_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_L_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_l_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_l_callback(DEVCB_##_devcb); // output state when pins are in tri-state, default 0 #define MCFG_COP400_READ_L_TRISTATE_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_l_tristate_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_tristate_callback(DEVCB_##_devcb); // G pins: 4-bit bi-directional #define MCFG_COP400_READ_G_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_g_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_G_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb); // D outputs: 4-bit general purpose output #define MCFG_COP400_WRITE_D_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // IN inputs: 4-bit general purpose input #define MCFG_COP400_READ_IN_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_in_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_in_callback(DEVCB_##_devcb); // SI/SO lines: serial in/out or counter/gen.purpose #define MCFG_COP400_READ_SI_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_SO_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_so_callback(DEVCB_##_devcb); // SK output line: logic-controlled clock or gen.purpose #define MCFG_COP400_WRITE_SK_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_sk_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_sk_callback(DEVCB_##_devcb); // CKI/CKO lines: only CKO input here #define MCFG_COP400_READ_CKO_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_cko_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_cko_callback(DEVCB_##_devcb); /*************************************************************************** @@ -112,9 +112,9 @@ enum cop400_cko_bond { #define MCFG_COP400_CONFIG(_cki, _cko, _microbus) \ - cop400_cpu_device::set_cki(*device, _cki); \ - cop400_cpu_device::set_cko(*device, _cko); \ - cop400_cpu_device::set_microbus(*device, _microbus); + downcast<cop400_cpu_device &>(*device).set_cki(_cki); \ + downcast<cop400_cpu_device &>(*device).set_cko(_cko); \ + downcast<cop400_cpu_device &>(*device).set_microbus(_microbus); class cop400_cpu_device : public cpu_device @@ -122,22 +122,22 @@ class cop400_cpu_device : public cpu_device public: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - // static configuration helpers - template<class _Object> static devcb_base &set_read_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l.set_callback(object); } - template<class _Object> static devcb_base &set_read_l_tristate_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l_tristate.set_callback(object); } - template<class _Object> static devcb_base &set_write_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_l.set_callback(object); } - template<class _Object> static devcb_base &set_read_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_g.set_callback(object); } - template<class _Object> static devcb_base &set_write_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_g.set_callback(object); } - template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_d.set_callback(object); } - template<class _Object> static devcb_base &set_read_in_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_in.set_callback(object); } - template<class _Object> static devcb_base &set_read_si_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_si.set_callback(object); } - template<class _Object> static devcb_base &set_write_so_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_so.set_callback(object); } - template<class _Object> static devcb_base &set_write_sk_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_sk.set_callback(object); } - template<class _Object> static devcb_base &set_read_cko_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_cko.set_callback(object); } - - static void set_cki(device_t &device, cop400_cki_bond cki) { downcast<cop400_cpu_device &>(device).m_cki = cki; } - static void set_cko(device_t &device, cop400_cko_bond cko) { downcast<cop400_cpu_device &>(device).m_cko = cko; } - static void set_microbus(device_t &device, bool has_microbus) { downcast<cop400_cpu_device &>(device).m_has_microbus = has_microbus; } + // configuration helpers + template<class Object> devcb_base &set_read_l_callback(Object &&cb) { return m_read_l.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_l_tristate_callback(Object &&cb) { return m_read_l_tristate.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_l_callback(Object &&cb) { return m_write_l.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_g_callback(Object &&cb) { return m_read_g.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_in_callback(Object &&cb) { return m_read_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_sk_callback(Object &&cb) { return m_write_sk.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_cko_callback(Object &&cb) { return m_read_cko.set_callback(std::forward<Object>(cb)); } + + void set_cki(cop400_cki_bond cki) { m_cki = cki; } + void set_cko(cop400_cko_bond cko) { m_cko = cko; } + void set_microbus(bool has_microbus) { m_has_microbus = has_microbus; } DECLARE_READ8_MEMBER( microbus_rd ); DECLARE_WRITE8_MEMBER( microbus_wr ); |