summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/8042kbdc.h
diff options
context:
space:
mode:
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
commit29225a4dbbab572f3ea1f01a77f9cd549bc52cd3 (patch)
tree9bb38db252604dcda9b45174fefd8e018053637b /src/emu/machine/8042kbdc.h
parent0b4e78bc26db01773acaea541cf8ef2711de44ae (diff)
kbdc8042_device: converted to devcb2 (nw)
Diffstat (limited to 'src/emu/machine/8042kbdc.h')
-rw-r--r--src/emu/machine/8042kbdc.h56
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