diff --git a/src/mess/includes/genpc.h b/src/mess/includes/genpc.h index c2816caddbb..6c5be1e2469 100644 --- a/src/mess/includes/genpc.h +++ b/src/mess/includes/genpc.h @@ -78,7 +78,7 @@ public: IRQ_CALLBACK_MEMBER(pc_irq_callback); // interface to the keyboard - DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ); + virtual DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ); DECLARE_WRITE_LINE_MEMBER( keyboard_data_w ); virtual DECLARE_READ8_MEMBER ( pc_ppi_porta_r ); @@ -131,7 +131,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const; - DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ); + virtual DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ); protected: // device-level overrides @@ -173,6 +173,8 @@ protected: public: virtual DECLARE_READ8_MEMBER ( pc_ppi_portc_r ); virtual DECLARE_WRITE8_MEMBER( pc_ppi_portb_w ); + + virtual DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ); }; diff --git a/src/mess/machine/genpc.c b/src/mess/machine/genpc.c index 66f09f662e0..7b9dbe58e9b 100644 --- a/src/mess/machine/genpc.c +++ b/src/mess/machine/genpc.c @@ -308,6 +308,19 @@ WRITE_LINE_MEMBER( ibm5150_mb_device::keyboard_clock_w ) } } +WRITE_LINE_MEMBER( ec1841_mb_device::keyboard_clock_w ) +{ + if (!m_ppi_keyboard_clear && !state && !m_ppi_shift_enable) + { + m_ppi_shift_enable = m_ppi_shift_register & 0x01; + + m_ppi_shift_register >>= 1; + m_ppi_shift_register |= m_ppi_data_signal << 7; + + m_pic8259->ir1_w(m_ppi_shift_enable); + m_pc_kbdc->data_write_from_mb(!m_ppi_shift_enable); + } +} WRITE_LINE_MEMBER( ibm5160_mb_device::keyboard_clock_w ) { @@ -448,6 +461,12 @@ static const pc_kbdc_interface pc_kbdc_intf_5150 = DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, keyboard_data_w) }; +static const pc_kbdc_interface pc_kbdc_intf_ec1841 = +{ + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ec1841_mb_device, keyboard_clock_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, keyboard_data_w) +}; + /********************************************************** * * NMI handling @@ -890,7 +909,7 @@ static MACHINE_CONFIG_FRAGMENT( ec1841_mb_config ) MCFG_FRAGMENT_ADD(ibm5160_mb_config) MCFG_DEVICE_REMOVE("pc_kbdc") - MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf_5150) + MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf_ec1841) MACHINE_CONFIG_END