summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/bus/pc_kbd
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2014-04-16 16:57:56 +0000
committer Ivan Vangelista <mesgnet@yahoo.it>2014-04-16 16:57:56 +0000
commitc1fb959dbd64c0da3425686e54b9f455fac4a7a7 (patch)
treebb7aed7206e672407efc72790191df133efcc12a /src/emu/bus/pc_kbd
parent121d5e1907672e5b4bc734692078e66a03223fb5 (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.c34
-rw-r--r--src/emu/bus/pc_kbd/pc_kbdc.h27
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;