summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2019-08-20 16:13:29 -0500
committer cracyc <cracyc@users.noreply.github.com>2019-08-20 16:13:29 -0500
commit2c704f837be1a946a0dc2fc854d5b427616de929 (patch)
tree9cbce8169adc7f5a38edf7adb09ce8d9e10f4c3a
parent5284e44ee2f0e37a0b8b2c209c53167d3b7d563d (diff)
8042kbdc: only include mouse on ps2 keyboards, avoids extra invalid mouse device on touchscreen drivers and fixes input on the tv990 (nw)
-rw-r--r--src/devices/machine/8042kbdc.cpp6
-rw-r--r--src/devices/machine/8042kbdc.h9
-rw-r--r--src/mame/drivers/mtouchxl.cpp4
-rw-r--r--src/mame/drivers/tv990.cpp2
-rw-r--r--src/mame/drivers/vis.cpp2
-rw-r--r--src/mame/machine/pcshare.cpp2
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<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;
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));