summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/pc_kbd/pc_kbdc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/pc_kbd/pc_kbdc.cpp')
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.cpp24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/devices/bus/pc_kbd/pc_kbdc.cpp b/src/devices/bus/pc_kbd/pc_kbdc.cpp
index 6d28227bca2..5e99056adbe 100644
--- a/src/devices/bus/pc_kbd/pc_kbdc.cpp
+++ b/src/devices/bus/pc_kbd/pc_kbdc.cpp
@@ -118,9 +118,12 @@ void pc_kbdc_device::update_clock_state()
// We first set our state to prevent possible endless loops
m_clock_state = new_clock_state;
+ // Send state to keyboard interface logic on mainboard
+ m_out_clock_cb(m_clock_state);
+
// Send state to keyboard
if (m_keyboard)
- m_keyboard->clock_write( m_clock_state );
+ m_keyboard->clock_write(m_clock_state);
}
}
@@ -134,6 +137,9 @@ void pc_kbdc_device::update_data_state()
// We first set our state to prevent possible endless loops
m_data_state = new_data_state;
+ // Send state to keyboard interface logic on mainboard
+ m_out_data_cb(m_data_state);
+
// Send state to keyboard
if (m_keyboard)
m_keyboard->data_write(m_data_state);
@@ -157,23 +163,15 @@ WRITE_LINE_MEMBER(pc_kbdc_device::data_write_from_mb)
WRITE_LINE_MEMBER(pc_kbdc_device::clock_write_from_kb)
{
- state = state ? 1 : 0;
- if (state != m_kb_clock_state)
- {
- m_out_clock_cb(m_kb_clock_state = state);
- update_clock_state();
- }
+ m_kb_clock_state = state;
+ update_clock_state();
}
WRITE_LINE_MEMBER(pc_kbdc_device::data_write_from_kb)
{
- state = state ? 1 : 0;
- if (state != m_kb_data_state)
- {
- m_out_data_cb(m_kb_data_state = state);
- update_data_state();
- }
+ m_kb_data_state = state;
+ update_data_state();
}