diff options
Diffstat (limited to 'src/devices/bus/pc_kbd/pc_kbdc.cpp')
-rw-r--r-- | src/devices/bus/pc_kbd/pc_kbdc.cpp | 24 |
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(); } |