mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
Work round a race condition in the Compaq i8042 rom. Fixes using ctmouse.exe (v2.1 beta4) in shutms11. [smf]
This commit is contained in:
parent
f724192b85
commit
7fc77f3f4c
@ -484,6 +484,8 @@ void ps2_keyboard_controller_device::device_start()
|
||||
{
|
||||
at_kbc_device_base::device_start();
|
||||
|
||||
m_aux_irq_timer = timer_alloc(FUNC(ps2_keyboard_controller_device::set_aux_irq_timer_callback), this);
|
||||
|
||||
save_item(NAME(m_aux_irq));
|
||||
save_item(NAME(m_aux_clk_in));
|
||||
save_item(NAME(m_aux_clk_out));
|
||||
@ -552,6 +554,17 @@ void ps2_keyboard_controller_device::p2_w(uint8_t data)
|
||||
if (BIT(data & ~m_p2_data, 4))
|
||||
set_kbd_irq(1U);
|
||||
if (BIT(data & ~m_p2_data, 5))
|
||||
set_aux_irq(1U);
|
||||
{
|
||||
// HACK: delay raising the aux irq until compaq queues the data
|
||||
if (m_mcu->pcbase() == 0x7ba)
|
||||
m_aux_irq_timer->adjust(attotime::from_hz(clock() / 16));
|
||||
else
|
||||
set_aux_irq(1U);
|
||||
}
|
||||
m_p2_data = data;
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER(ps2_keyboard_controller_device::set_aux_irq_timer_callback)
|
||||
{
|
||||
set_aux_irq(1U);
|
||||
}
|
||||
|
@ -144,11 +144,13 @@ private:
|
||||
// internal sync helpers
|
||||
TIMER_CALLBACK_MEMBER(set_aux_clk_in);
|
||||
TIMER_CALLBACK_MEMBER(set_aux_data_in);
|
||||
TIMER_CALLBACK_MEMBER(set_aux_irq_timer_callback);
|
||||
|
||||
// MCU I/O handlers
|
||||
uint8_t p1_r();
|
||||
void p2_w(uint8_t data);
|
||||
|
||||
emu_timer* m_aux_irq_timer;
|
||||
devcb_write_line m_aux_irq_cb;
|
||||
devcb_write_line m_aux_clk_cb, m_aux_data_cb;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user