From 2c704f837be1a946a0dc2fc854d5b427616de929 Mon Sep 17 00:00:00 2001 From: cracyc Date: Tue, 20 Aug 2019 16:13:29 -0500 Subject: 8042kbdc: only include mouse on ps2 keyboards, avoids extra invalid mouse device on touchscreen drivers and fixes input on the tv990 (nw) --- src/devices/machine/8042kbdc.cpp | 6 +++--- src/devices/machine/8042kbdc.h | 9 ++++----- src/mame/drivers/mtouchxl.cpp | 4 ++-- src/mame/drivers/tv990.cpp | 2 +- src/mame/drivers/vis.cpp | 2 +- src/mame/machine/pcshare.cpp | 2 +- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/devices/machine/8042kbdc.cpp b/src/devices/machine/8042kbdc.cpp index 541e7575b63..77d06e0e506 100644 --- a/src/devices/machine/8042kbdc.cpp +++ b/src/devices/machine/8042kbdc.cpp @@ -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; } diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h index 38bdbe3814a..774f019ebe2 100644 --- a/src/devices/machine/8042kbdc.h +++ b/src/devices/machine/8042kbdc.h @@ -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 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; diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp index e0c0d743301..b46833a322d 100644 --- a/src/mame/drivers/mtouchxl.cpp +++ b/src/mame/drivers/mtouchxl.cpp @@ -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)); diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp index 9042c92f36e..eaf42c3f9c4 100644 --- a/src/mame/drivers/tv990.cpp +++ b/src/mame/drivers/tv990.cpp @@ -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); diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp index c0bb8750c58..8e0421c206e 100644 --- a/src/mame/drivers/vis.cpp +++ b/src/mame/drivers/vis.cpp @@ -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)); diff --git a/src/mame/machine/pcshare.cpp b/src/mame/machine/pcshare.cpp index 8d9fbac3f27..74aef6177de 100644 --- a/src/mame/machine/pcshare.cpp +++ b/src/mame/machine/pcshare.cpp @@ -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)); -- cgit v1.2.3