summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/cop400/cop400.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/cop400/cop400.h')
-rw-r--r--src/devices/cpu/cop400/cop400.h60
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 );