diff options
author | Ivan Vangelista <mesgnet@yahoo.it> | 2014-04-11 16:40:07 +0000 |
---|---|---|
committer | Ivan Vangelista <mesgnet@yahoo.it> | 2014-04-11 16:40:07 +0000 |
commit | 29225a4dbbab572f3ea1f01a77f9cd549bc52cd3 (patch) | |
tree | 9bb38db252604dcda9b45174fefd8e018053637b /src/emu/machine/8042kbdc.h | |
parent | 0b4e78bc26db01773acaea541cf8ef2711de44ae (diff) |
kbdc8042_device: converted to devcb2 (nw)
Diffstat (limited to 'src/emu/machine/8042kbdc.h')
-rw-r--r-- | src/emu/machine/8042kbdc.h | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/src/emu/machine/8042kbdc.h b/src/emu/machine/8042kbdc.h index 81f2d63a323..c7e14ec1609 100644 --- a/src/emu/machine/8042kbdc.h +++ b/src/emu/machine/8042kbdc.h @@ -24,39 +24,44 @@ enum kbdc8042_type_t // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_KBDC8042_ADD(_tag, _interface) \ - MCFG_DEVICE_ADD(_tag, KBDC8042, 0) \ - MCFG_DEVICE_CONFIG(_interface) +#define MCFG_KBDC8042_KEYBOARD_TYPE(_kbdt) \ + kbdc8042_device::set_keyboard_type(*device, _kbdt); +#define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \ + devcb = &kbdc8042_device::set_system_reset_callback(*device, DEVCB2_##_devcb); -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** +#define MCFG_KBDC8042_GATE_A20_CB(_devcb) \ + devcb = &kbdc8042_device::set_gate_a20_callback(*device, DEVCB2_##_devcb); -// ======================> kbdc8042_interface +#define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \ + devcb = &kbdc8042_device::set_input_buffer_full_callback(*device, DEVCB2_##_devcb); -struct kbdc8042_interface -{ - kbdc8042_type_t m_keybtype; - // interface to the host pc - devcb_write_line m_system_reset_cb; - devcb_write_line m_gate_a20_cb; - devcb_write_line m_input_buffer_full_cb; - devcb_write_line m_output_buffer_empty_cb; +#define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \ + devcb = &kbdc8042_device::set_output_buffer_empty_callback(*device, DEVCB2_##_devcb); - devcb_write8 m_speaker_cb; -}; +#define MCFG_KBDC8042_SPEAKER_CB(_devcb) \ + devcb = &kbdc8042_device::set_speaker_callback(*device, DEVCB2_##_devcb); + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** // ======================> kbdc8042_device -class kbdc8042_device : public device_t, - public kbdc8042_interface +class kbdc8042_device : public device_t { public: // construction/destruction kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); virtual machine_config_constructor device_mconfig_additions() const; + + static void set_keyboard_type(device_t &device, kbdc8042_type_t keybtype) { downcast<kbdc8042_device &>(device).m_keybtype = keybtype; } + template<class _Object> static devcb2_base &set_system_reset_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_system_reset_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_gate_a20_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_gate_a20_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_input_buffer_full_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_input_buffer_full_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_output_buffer_empty_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_output_buffer_empty_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_speaker_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_speaker_cb.set_callback(object); } DECLARE_READ8_MEMBER( data_r ); DECLARE_WRITE8_MEMBER( data_w ); @@ -74,7 +79,6 @@ protected: // device-level overrides virtual void device_start(); virtual void device_reset(); - virtual void device_config_complete(); UINT8 m_inport, m_outport, m_data, m_command; @@ -104,12 +108,14 @@ protected: required_device<at_keyboard_device> m_keyboard_dev; - devcb_resolved_write_line m_system_reset_func; - devcb_resolved_write_line m_gate_a20_func; - devcb_resolved_write_line m_input_buffer_full_func; - devcb_resolved_write_line m_output_buffer_empty_func; + kbdc8042_type_t m_keybtype; + + devcb2_write_line m_system_reset_cb; + devcb2_write_line m_gate_a20_cb; + devcb2_write_line m_input_buffer_full_cb; + devcb2_write_line m_output_buffer_empty_cb; - devcb_resolved_write8 m_speaker_func; + devcb2_write8 m_speaker_cb; }; // device type definition |