8042kbdc: only include mouse on ps2 keyboards, avoids extra invalid mouse device on touchscreen drivers and fixes input on the tv990 (nw)

This commit is contained in:
cracyc 2019-08-20 16:13:29 -05:00
parent 5284e44ee2
commit 2c704f837b
6 changed files with 12 additions and 13 deletions

View File

@ -142,7 +142,7 @@ void kbdc8042_device::at_8042_check_keyboard()
void kbdc8042_device::at_8042_check_mouse()
{
if (!m_keyboard.received && !m_mouse.received)
if ((m_keybtype == KBDC8042_PS2) && PS2_MOUSE_ON && !m_keyboard.received && !m_mouse.received)
{
if (m_mouse.to_transmit == 0)
{
@ -415,7 +415,7 @@ WRITE8_MEMBER(kbdc8042_device::data_w)
m_mouse.on = 1;
break;
case 0xa9: /* test mouse */
at_8042_receive(PS2_MOUSE_ON ? 0x00 : 0xff);
at_8042_receive(((m_keybtype == KBDC8042_PS2) && PS2_MOUSE_ON) ? 0x00 : 0xff);
break;
case 0xaa: /* selftest */
at_8042_receive(0x55);
@ -530,5 +530,5 @@ INPUT_PORTS_END
ioport_constructor kbdc8042_device::device_input_ports() const
{
return INPUT_PORTS_NAME(kbdc8042_mouse);
return ((m_keybtype == KBDC8042_PS2) && PS2_MOUSE_ON) ? INPUT_PORTS_NAME(kbdc8042_mouse) : nullptr;
}

View File

@ -28,8 +28,7 @@ public:
enum kbdc8042_type_t
{
KBDC8042_STANDARD,
KBDC8042_PS2, /* another timing of integrated controller */
KBDC8042_AT386 /* hack for at386 driver */
KBDC8042_PS2
};
// construction/destruction
@ -98,9 +97,9 @@ private:
int m_poll_delay;
required_device<at_keyboard_device> m_keyboard_dev;
required_ioport m_mousex_port;
required_ioport m_mousey_port;
required_ioport m_mousebtn_port;
optional_ioport m_mousex_port;
optional_ioport m_mousey_port;
optional_ioport m_mousebtn_port;
kbdc8042_type_t m_keybtype;

View File

@ -259,7 +259,7 @@ void mtxl_state::at486(machine_config &config)
config.device_remove("mb:keybc");
config.device_remove("mb:pc_kbdc");
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
kbdc.gate_a20_callback().set_inputline(m_maincpu, INPUT_LINE_A20);
kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));
@ -319,7 +319,7 @@ void mtxl_state::at486hd(machine_config &config)
config.device_remove("mb:keybc");
config.device_remove("mb:pc_kbdc");
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
kbdc.gate_a20_callback().set_inputline(m_maincpu, INPUT_LINE_A20);
kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));

View File

@ -416,7 +416,7 @@ void tv990_state::tv990(machine_config &config)
rs232b.cts_handler().set(m_uart[1], FUNC(ns16450_device::cts_w));
KBDC8042(config, m_kbdc);
m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
m_kbdc->input_buffer_full_callback().set_inputline("maincpu", M68K_IRQ_2);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);

View File

@ -917,7 +917,7 @@ void vis_state::vis(machine_config &config)
config.device_remove("mb:pc_kbdc");
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
kbdc.system_reset_callback().set_inputline("maincpu", INPUT_LINE_RESET);
kbdc.gate_a20_callback().set_inputline("maincpu", INPUT_LINE_A20);
kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));

View File

@ -221,7 +221,7 @@ void pcat_base_state::pcat_common(machine_config &config)
m_mc146818->set_century_index(0x32);
KBDC8042(config, m_kbdc, 0);
m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
m_kbdc->system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
m_kbdc->gate_a20_callback().set_inputline(m_maincpu, INPUT_LINE_A20);
m_kbdc->input_buffer_full_callback().set(m_pic8259_1, FUNC(pic8259_device::ir1_w));