diff options
author | 2014-04-16 16:57:56 +0000 | |
---|---|---|
committer | 2014-04-16 16:57:56 +0000 | |
commit | c1fb959dbd64c0da3425686e54b9f455fac4a7a7 (patch) | |
tree | bb7aed7206e672407efc72790191df133efcc12a /src/emu/bus/pc_kbd | |
parent | 121d5e1907672e5b4bc734692078e66a03223fb5 (diff) |
pc_kbdc_device: converted to devcb2 (nw)
Diffstat (limited to 'src/emu/bus/pc_kbd')
-rw-r--r-- | src/emu/bus/pc_kbd/pc_kbdc.c | 34 | ||||
-rw-r--r-- | src/emu/bus/pc_kbd/pc_kbdc.h | 27 |
2 files changed, 18 insertions, 43 deletions
diff --git a/src/emu/bus/pc_kbd/pc_kbdc.c b/src/emu/bus/pc_kbd/pc_kbdc.c index 2928259261b..856e1a34761 100644 --- a/src/emu/bus/pc_kbd/pc_kbdc.c +++ b/src/emu/bus/pc_kbd/pc_kbdc.c @@ -69,6 +69,8 @@ const device_type PC_KBDC = &device_creator<pc_kbdc_device>; //------------------------------------------------- pc_kbdc_device::pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, PC_KBDC, "PC_KBDC", tag, owner, clock, "pc_kbdc", __FILE__), + m_out_clock_cb(*this), + m_out_data_cb(*this), m_clock_state(-1), m_data_state(-1), m_kb_clock_state(1), @@ -77,30 +79,6 @@ pc_kbdc_device::pc_kbdc_device(const machine_config &mconfig, const char *tag, d { } - -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- -void pc_kbdc_device::device_config_complete() -{ - // inherit a copy of the static data - const pc_kbdc_interface *intf = reinterpret_cast<const pc_kbdc_interface *>(static_config()); - if (intf != NULL) - { - *static_cast<pc_kbdc_interface *>(this) = *intf; - } - - // or initialize to defaults if none provided - else - { - memset(&m_out_clock_cb, 0, sizeof(m_out_clock_cb)); - memset(&m_out_data_cb, 0, sizeof(m_out_data_cb)); - } -} - - void pc_kbdc_device::set_keyboard( device_pc_kbd_interface *keyboard ) { m_keyboard = keyboard; @@ -113,8 +91,8 @@ void pc_kbdc_device::set_keyboard( device_pc_kbd_interface *keyboard ) void pc_kbdc_device::device_start() { // resolve callbacks - m_out_clock_func.resolve(m_out_clock_cb, *this); - m_out_data_func.resolve(m_out_data_cb, *this); + m_out_clock_cb.resolve_safe(); + m_out_data_cb.resolve_safe(); } @@ -144,7 +122,7 @@ void pc_kbdc_device::update_clock_state() m_clock_state = new_clock_state; // Send state to keyboard interface logic on mainboard - m_out_clock_func( m_clock_state ); + m_out_clock_cb( m_clock_state ); // Send state to keyboard if ( m_keyboard ) @@ -165,7 +143,7 @@ void pc_kbdc_device::update_data_state() m_data_state = new_data_state; // Send state to keyboard interface logic on mainboard - m_out_data_func( m_data_state ); + m_out_data_cb( m_data_state ); // Send state to keyboard if ( m_keyboard ) diff --git a/src/emu/bus/pc_kbd/pc_kbdc.h b/src/emu/bus/pc_kbd/pc_kbdc.h index 7e2fda1e8ef..dcbb6cd362f 100644 --- a/src/emu/bus/pc_kbd/pc_kbdc.h +++ b/src/emu/bus/pc_kbd/pc_kbdc.h @@ -19,9 +19,12 @@ set the data line and then set the clock line. // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_PC_KBDC_ADD(_tag, _config) \ - MCFG_DEVICE_ADD(_tag, PC_KBDC, 0) \ - MCFG_DEVICE_CONFIG(_config) +#define MCFG_PC_KBDC_OUT_CLOCK_CB(_devcb) \ + devcb = &pc_kbdc_device::set_out_clock_callback(*device, DEVCB2_##_devcb); + +#define MCFG_PC_KBDC_OUT_DATA_CB(_devcb) \ + devcb = &pc_kbdc_device::set_out_data_callback(*device, DEVCB2_##_devcb); + #define MCFG_PC_KBDC_SLOT_ADD(_kbdc_tag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, PC_KBDC_SLOT, 0 ) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ @@ -54,22 +57,17 @@ protected: extern const device_type PC_KBDC_SLOT; -struct pc_kbdc_interface -{ - devcb_write_line m_out_clock_cb; - devcb_write_line m_out_data_cb; -}; - - class device_pc_kbd_interface; -class pc_kbdc_device : public device_t, - public pc_kbdc_interface +class pc_kbdc_device : public device_t { public: // construction/destruction pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + template<class _Object> static devcb2_base &set_out_clock_callback(device_t &device, _Object object) { return downcast<pc_kbdc_device &>(device).m_out_clock_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_data_callback(device_t &device, _Object object) { return downcast<pc_kbdc_device &>(device).m_out_data_cb.set_callback(object); } + void set_keyboard(device_pc_kbd_interface *keyboard); int clock_signal() { return m_clock_state; } @@ -84,13 +82,12 @@ protected: // device-level overrides virtual void device_start(); virtual void device_reset(); - virtual void device_config_complete(); void update_clock_state(); void update_data_state(); - devcb_resolved_write_line m_out_clock_func; - devcb_resolved_write_line m_out_data_func; + devcb2_write_line m_out_clock_cb; + devcb2_write_line m_out_data_cb; int m_clock_state; int m_data_state; |