From 865e7c86a115211f9c9ce99763b52569e0b3f0d9 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Thu, 30 May 2019 13:33:23 +0700 Subject: [PATCH] at_keybc: minor tweaks (nw) * resolve aux irq callback * renamed mouse to aux * added logging and some notes * added a Compaq rom dump --- src/devices/machine/at_keybc.cpp | 240 +++++++++++++++++++++++++------ src/devices/machine/at_keybc.h | 37 ++--- src/mame/drivers/jazz.cpp | 22 ++- 3 files changed, 224 insertions(+), 75 deletions(-) diff --git a/src/devices/machine/at_keybc.cpp b/src/devices/machine/at_keybc.cpp index 5e6ac779569..1092f04390f 100644 --- a/src/devices/machine/at_keybc.cpp +++ b/src/devices/machine/at_keybc.cpp @@ -62,10 +62,35 @@ * Expose power fuse failure. ***************************************************************************/ +/* + * References: + * + * http://bitsavers.org/pdf/ibm/pc/at/6183355_PC_AT_Technical_Reference_Mar86.pdf + * http://bitsavers.org/pdf/ibm/pc/ps2/84X1508_PS2_Model_80_Technical_Reference_Apr87.pdf + * http://halicery.com/Hardware/Intel%208042%20and%208048/index.html + * https://web.archive.org/web/20180124085559/http://computer-engineering.org/ps2protocol + * + * The Intel UPI-41AH/42AH datasheet identifies the following variants: + * + * Device Firmware Application Ports + * 8242PC Phoenix Technologies AT, PS/2, EISA kbd+aux + * 8242BB IBM AT, PS/2, EISA, PCI kbd+aux + * 8242WA Award Software AT kbd + * 8242WB Award Software AT kbd+aux + * + */ #include "emu.h" #include "at_keybc.h" +#define LOG_GENERAL (1U << 0) +#define LOG_COMMAND (1U << 1) +#define LOG_STATUS (1U << 2) + +//#define VERBOSE (LOG_GENERAL|LOG_COMMAND) + +#include "logmacro.h" + namespace { ROM_START(at_kbc) @@ -80,7 +105,10 @@ ROM_END ROM_START(ps2_kbc) ROM_REGION(0x0800, "mcu", 0) - ROM_LOAD("72x8455.zm82", 0x0000, 0x0800, CRC(7da223d3) SHA1(54c52ff6c6a2310f79b2c7e6d1259be9de868f0e)) + ROM_SYSTEM_BIOS(0, "ibm", "IBM 1987") // IBM PS/2 Model 50 + ROMX_LOAD("72x8455.zm82", 0x0000, 0x0800, CRC(7da223d3) SHA1(54c52ff6c6a2310f79b2c7e6d1259be9de868f0e), ROM_BIOS(0)) + ROM_SYSTEM_BIOS(1, "compaq", "Compaq 1987") // Compaq Portable 486 + ROMX_LOAD("128251-001.u3", 0x0000, 0x0800, CRC(da968f1e) SHA1(ac45a4d0f30b046ada300f1d105bcf0fb2db318a), ROM_BIOS(1)) ROM_END INPUT_PORTS_START(at_kbc) @@ -112,21 +140,128 @@ DEFINE_DEVICE_TYPE(PS2_KEYBOARD_CONTROLLER, ps2_keyboard_controller_device, "ps2 uint8_t at_kbc_device_base::data_r() { - return m_mcu->upi41_master_r(machine().dummy_space(), 0U); + u8 const data = m_mcu->upi41_master_r(machine().dummy_space(), 0U); + LOG("data_r 0x%02x (%s)\n", data, machine().describe_context()); + return data; } uint8_t at_kbc_device_base::status_r() { - return m_mcu->upi41_master_r(machine().dummy_space(), 1U); + u8 const data = m_mcu->upi41_master_r(machine().dummy_space(), 1U); + LOGMASKED(LOG_STATUS, "status_r 0x%02x%s%s%s%s%s%s%s%s (%s)\n", data, + BIT(data, 7) ? " PER" : "", BIT(data, 6) ? " RTO" : "", + BIT(data, 5) ? " TTO" : "", BIT(data, 4) ? " INH" : "", + BIT(data, 3) ? " CMD" : "", BIT(data, 2) ? " SYS" : "", + BIT(data, 1) ? " IBF" : "", BIT(data, 0) ? " OBF" : "", + machine().describe_context()); + return data; } void at_kbc_device_base::data_w(uint8_t data) { + LOG("data_w 0x%02x (%s)\n", data, machine().describe_context()); machine().scheduler().synchronize(timer_expired_delegate(FUNC(at_kbc_device_base::write_data), this), unsigned(data)); } void at_kbc_device_base::command_w(uint8_t data) { + if (VERBOSE & LOG_COMMAND) + { + switch (data) + { + case 0x00: case 0x01: case 0x02: case 0x03: + case 0x04: case 0x05: case 0x06: case 0x07: + case 0x08: case 0x09: case 0x0a: case 0x0b: + case 0x0c: case 0x0d: case 0x0e: case 0x0f: + case 0x10: case 0x11: case 0x12: case 0x13: + case 0x14: case 0x15: case 0x16: case 0x17: + case 0x18: case 0x19: case 0x1a: case 0x1b: + case 0x1c: case 0x1d: case 0x1e: case 0x1f: + LOGMASKED(LOG_COMMAND, "read controller ram indirect 0x%02x (%s)\n", data & 0x3f, machine().describe_context()); + break; + + case 0x20: LOGMASKED(LOG_COMMAND, "read command byte (%s)\n", machine().describe_context()); break; + + case 0x21: case 0x22: case 0x23: + case 0x24: case 0x25: case 0x26: case 0x27: + case 0x28: case 0x29: case 0x2a: case 0x2b: + case 0x2c: case 0x2d: case 0x2e: case 0x2f: + case 0x30: case 0x31: case 0x32: case 0x33: + case 0x34: case 0x35: case 0x36: case 0x37: + case 0x38: case 0x39: case 0x3a: case 0x3b: + case 0x3c: case 0x3d: case 0x3e: case 0x3f: + LOGMASKED(LOG_COMMAND, "read controller ram offset 0x%02x (%s)\n", data & 0x3f, machine().describe_context()); + break; + + case 0x40: case 0x41: case 0x42: case 0x43: + case 0x44: case 0x45: case 0x46: case 0x47: + case 0x48: case 0x49: case 0x4a: case 0x4b: + case 0x4c: case 0x4d: case 0x4e: case 0x4f: + case 0x50: case 0x51: case 0x52: case 0x53: + case 0x54: case 0x55: case 0x56: case 0x57: + case 0x58: case 0x59: case 0x5a: case 0x5b: + case 0x5c: case 0x5d: case 0x5e: case 0x5f: + LOGMASKED(LOG_COMMAND, "write controller ram indirect 0x%02x (%s)\n", data & 0x3f, machine().describe_context()); + break; + + case 0x60: LOGMASKED(LOG_COMMAND, "write command byte (%s)\n", machine().describe_context()); break; + + case 0x61: case 0x62: case 0x63: + case 0x64: case 0x65: case 0x66: case 0x67: + case 0x68: case 0x69: case 0x6a: case 0x6b: + case 0x6c: case 0x6d: case 0x6e: case 0x6f: + case 0x70: case 0x71: case 0x72: case 0x73: + case 0x74: case 0x75: case 0x76: case 0x77: + case 0x78: case 0x79: case 0x7a: case 0x7b: + case 0x7c: case 0x7d: case 0x7e: case 0x7f: + LOGMASKED(LOG_COMMAND, "write controller ram offset 0x%02x (%s)\n", data & 0x3f, machine().describe_context()); + break; + + case 0x90: case 0x91: case 0x92: case 0x93: + case 0x94: case 0x95: case 0x96: case 0x97: + case 0x98: case 0x99: case 0x9a: case 0x9b: + case 0x9c: case 0x9d: case 0x9e: case 0x9f: + LOGMASKED(LOG_COMMAND, "write output port 0x%1x (%s)\n", data & 0xf, machine().describe_context()); + break; + + case 0xa1: LOGMASKED(LOG_COMMAND, "get version number (%s)\n", machine().describe_context()); break; + case 0xa4: LOGMASKED(LOG_COMMAND, "test password installed (%s)\n", machine().describe_context()); break; + case 0xa5: LOGMASKED(LOG_COMMAND, "load security (%s)\n", machine().describe_context()); break; + case 0xa6: LOGMASKED(LOG_COMMAND, "enable security (%s)\n", machine().describe_context()); break; + case 0xa7: LOGMASKED(LOG_COMMAND, "disable auxiliary interface (%s)\n", machine().describe_context()); break; + case 0xa8: LOGMASKED(LOG_COMMAND, "enable auxiliary interface (%s)\n", machine().describe_context()); break; + case 0xa9: LOGMASKED(LOG_COMMAND, "auxiliary interface test (%s)\n", machine().describe_context()); break; + case 0xaa: LOGMASKED(LOG_COMMAND, "controller self-test (%s)\n", machine().describe_context()); break; + case 0xab: LOGMASKED(LOG_COMMAND, "keyboard interface test (%s)\n", machine().describe_context()); break; + case 0xac: LOGMASKED(LOG_COMMAND, "diagnostic dump (%s)\n", machine().describe_context()); break; + case 0xad: LOGMASKED(LOG_COMMAND, "disable keyboard interface (%s)\n", machine().describe_context()); break; + case 0xae: LOGMASKED(LOG_COMMAND, "enable keyboard interface (%s)\n", machine().describe_context()); break; + case 0xaf: LOGMASKED(LOG_COMMAND, "get version (%s)\n", machine().describe_context()); break; + case 0xc0: LOGMASKED(LOG_COMMAND, "read input port (%s)\n", machine().describe_context()); break; + case 0xc1: LOGMASKED(LOG_COMMAND, "poll input port low (%s)\n", machine().describe_context()); break; + case 0xc2: LOGMASKED(LOG_COMMAND, "poll input port high (%s)\n", machine().describe_context()); break; + case 0xd0: LOGMASKED(LOG_COMMAND, "read output port (%s)\n", machine().describe_context()); break; + case 0xd1: LOGMASKED(LOG_COMMAND, "write output port (%s)\n", machine().describe_context()); break; + case 0xd2: LOGMASKED(LOG_COMMAND, "write keyboard output buffer (%s)\n", machine().describe_context()); break; + case 0xd3: LOGMASKED(LOG_COMMAND, "write auxiliary output buffer (%s)\n", machine().describe_context()); break; + case 0xd4: LOGMASKED(LOG_COMMAND, "write auxiliary device (%s)\n", machine().describe_context()); break; + case 0xe0: LOGMASKED(LOG_COMMAND, "read test inputs (%s)\n", machine().describe_context()); break; + + case 0xf0: case 0xf1: case 0xf2: case 0xf3: + case 0xf4: case 0xf5: case 0xf6: case 0xf7: + case 0xf8: case 0xf9: case 0xfa: case 0xfb: + case 0xfc: case 0xfd: case 0xfe: case 0xff: + LOGMASKED(LOG_COMMAND, "pulse output port 0x%1x (%s)\n", data & 0xf, machine().describe_context()); + break; + + default: + LOGMASKED(LOG_COMMAND, "unknown command 0x%02x (%s)\n", data, machine().describe_context()); + break; + } + } + else + LOG("command_w 0x%02x (%s)\n", data, machine().describe_context()); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(at_kbc_device_base::write_command), this), unsigned(data)); } @@ -282,26 +417,40 @@ void at_keyboard_controller_device::p2_w(uint8_t data) uint8_t ps2_keyboard_controller_device::data_r() { set_kbd_irq(0U); - set_mouse_irq(0U); - return m_mcu->upi41_master_r(machine().dummy_space(), 0U); + set_aux_irq(0U); + u8 const data = m_mcu->upi41_master_r(machine().dummy_space(), 0U); + LOG("data_r 0x%02x (%s)\n", data, machine().describe_context()); + return data; } -WRITE_LINE_MEMBER(ps2_keyboard_controller_device::mouse_clk_w) +uint8_t ps2_keyboard_controller_device::status_r() { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(ps2_keyboard_controller_device::set_mouse_clk_in), this), state); + u8 const data = m_mcu->upi41_master_r(machine().dummy_space(), 1U); + LOGMASKED(LOG_STATUS, "status_r 0x%02x%s%s%s%s%s%s%s%s (%s)\n", data, + BIT(data, 7) ? " PER" : "", BIT(data, 6) ? " GTO" : "", + BIT(data, 5) ? " AUX_OBF" : "", BIT(data, 4) ? " INH" : "", + BIT(data, 3) ? " CMD" : "", BIT(data, 2) ? " SYS" : "", + BIT(data, 1) ? " IBF" : "", BIT(data, 0) ? " OBF" : "", + machine().describe_context()); + return data; } -WRITE_LINE_MEMBER(ps2_keyboard_controller_device::mouse_data_w) +WRITE_LINE_MEMBER(ps2_keyboard_controller_device::aux_clk_w) { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(ps2_keyboard_controller_device::set_mouse_data_in), this), state); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(ps2_keyboard_controller_device::set_aux_clk_in), this), state); +} + +WRITE_LINE_MEMBER(ps2_keyboard_controller_device::aux_data_w) +{ + machine().scheduler().synchronize(timer_expired_delegate(FUNC(ps2_keyboard_controller_device::set_aux_data_in), this), state); } ps2_keyboard_controller_device::ps2_keyboard_controller_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) : at_kbc_device_base(mconfig, PS2_KEYBOARD_CONTROLLER, tag, owner, clock) - , m_mouse_irq_cb(*this) - , m_mouse_clk_cb(*this), m_mouse_data_cb(*this) - , m_mouse_irq(0U) - , m_mouse_clk_in(1U), m_mouse_clk_out(1U), m_mouse_data_in(1U), m_mouse_data_out(1U) + , m_aux_irq_cb(*this) + , m_aux_clk_cb(*this), m_aux_data_cb(*this) + , m_aux_irq(0U) + , m_aux_clk_in(1U), m_aux_clk_out(1U), m_aux_data_in(1U), m_aux_data_out(1U) , m_p2_data(0xffU) { } @@ -319,89 +468,90 @@ void ps2_keyboard_controller_device::device_add_mconfig(machine_config &config) m_mcu->p2_in_cb().set_constant(0xffU); m_mcu->p2_out_cb().set(FUNC(ps2_keyboard_controller_device::p2_w)); m_mcu->t0_in_cb().set([this] () { return kbd_clk_r(); }); - m_mcu->t1_in_cb().set([this] () { return mouse_clk_r(); }); + m_mcu->t1_in_cb().set([this] () { return aux_clk_r(); }); } void ps2_keyboard_controller_device::device_resolve_objects() { at_kbc_device_base::device_resolve_objects(); - m_mouse_clk_cb.resolve_safe(); - m_mouse_data_cb.resolve_safe(); + m_aux_irq_cb.resolve_safe(); + m_aux_clk_cb.resolve_safe(); + m_aux_data_cb.resolve_safe(); } void ps2_keyboard_controller_device::device_start() { at_kbc_device_base::device_start(); - save_item(NAME(m_mouse_irq)); - save_item(NAME(m_mouse_clk_in)); - save_item(NAME(m_mouse_clk_out)); - save_item(NAME(m_mouse_data_in)); - save_item(NAME(m_mouse_data_out)); + save_item(NAME(m_aux_irq)); + save_item(NAME(m_aux_clk_in)); + save_item(NAME(m_aux_clk_out)); + save_item(NAME(m_aux_data_in)); + save_item(NAME(m_aux_data_out)); save_item(NAME(m_p2_data)); - m_mouse_irq = 0U; - m_mouse_clk_in = m_mouse_clk_out = 1U; - m_mouse_data_in = m_mouse_data_out = 1U; + m_aux_irq = 0U; + m_aux_clk_in = m_aux_clk_out = 1U; + m_aux_data_in = m_aux_data_out = 1U; m_p2_data = 0xffU; } -inline void ps2_keyboard_controller_device::set_mouse_irq(u8 state) +inline void ps2_keyboard_controller_device::set_aux_irq(u8 state) { - if (state != m_mouse_irq) - m_mouse_irq_cb((m_mouse_irq = state) ? ASSERT_LINE : CLEAR_LINE); + if (state != m_aux_irq) + m_aux_irq_cb((m_aux_irq = state) ? ASSERT_LINE : CLEAR_LINE); } -inline void ps2_keyboard_controller_device::set_mouse_clk_out(u8 state) +inline void ps2_keyboard_controller_device::set_aux_clk_out(u8 state) { - if (state != m_mouse_clk_out) - m_mouse_clk_cb(m_mouse_clk_out = state); + if (state != m_aux_clk_out) + m_aux_clk_cb(m_aux_clk_out = state); } -inline void ps2_keyboard_controller_device::set_mouse_data_out(u8 state) +inline void ps2_keyboard_controller_device::set_aux_data_out(u8 state) { - if (state != m_mouse_data_out) - m_mouse_data_cb(m_mouse_data_out = state); + if (state != m_aux_data_out) + m_aux_data_cb(m_aux_data_out = state); } -inline u8 ps2_keyboard_controller_device::mouse_clk_r() const +inline u8 ps2_keyboard_controller_device::aux_clk_r() const { - return m_mouse_clk_in & m_mouse_clk_out; + return m_aux_clk_in & m_aux_clk_out; } -inline u8 ps2_keyboard_controller_device::mouse_data_r() const +inline u8 ps2_keyboard_controller_device::aux_data_r() const { - return m_mouse_data_in & m_mouse_data_out; + return m_aux_data_in & m_aux_data_out; } -TIMER_CALLBACK_MEMBER(ps2_keyboard_controller_device::set_mouse_clk_in) +TIMER_CALLBACK_MEMBER(ps2_keyboard_controller_device::set_aux_clk_in) { - m_mouse_clk_in = param ? 1U : 0U; + m_aux_clk_in = param ? 1U : 0U; } -TIMER_CALLBACK_MEMBER(ps2_keyboard_controller_device::set_mouse_data_in) +TIMER_CALLBACK_MEMBER(ps2_keyboard_controller_device::set_aux_data_in) { - m_mouse_data_in = param ? 1U : 0U; + m_aux_data_in = param ? 1U : 0U; } uint8_t ps2_keyboard_controller_device::p1_r() { - return kbd_data_r() | (mouse_data_r() << 1) | 0xfcU; + return kbd_data_r() | (aux_data_r() << 1) | 0xfcU; } void ps2_keyboard_controller_device::p2_w(uint8_t data) { set_hot_res(BIT(~data, 0)); set_gate_a20(BIT(data, 1)); - set_mouse_data_out(BIT(~data, 2)); - set_mouse_clk_out(BIT(~data, 3)); + set_aux_data_out(BIT(~data, 2)); + set_aux_clk_out(BIT(~data, 3)); set_kbd_clk_out(BIT(~data, 6)); set_kbd_data_out(BIT(~data, 7)); if (BIT(data & ~m_p2_data, 4)) set_kbd_irq(1U); if (BIT(data & ~m_p2_data, 5)) - set_mouse_irq(1U); + set_aux_irq(1U); m_p2_data = data; } diff --git a/src/devices/machine/at_keybc.h b/src/devices/machine/at_keybc.h index 5ff11aa6ba1..9e769416cb2 100644 --- a/src/devices/machine/at_keybc.h +++ b/src/devices/machine/at_keybc.h @@ -105,18 +105,19 @@ class ps2_keyboard_controller_device : public at_kbc_device_base { public: // outputs to host - auto mouse_irq() { return m_mouse_irq_cb.bind(); } + auto aux_irq() { return m_aux_irq_cb.bind(); } - // outputs to mouse - auto mouse_clk() { return m_mouse_clk_cb.bind(); } // open collector with 10kΩ pull-up - auto mouse_data() { return m_mouse_data_cb.bind(); } // open collector with 10kΩ pull-up + // outputs to aux + auto aux_clk() { return m_aux_clk_cb.bind(); } // open collector with 10kΩ pull-up + auto aux_data() { return m_aux_data_cb.bind(); } // open collector with 10kΩ pull-up // host interface virtual uint8_t data_r() override; + virtual uint8_t status_r() override; - // inputs from mouse - DECLARE_WRITE_LINE_MEMBER(mouse_clk_w); - DECLARE_WRITE_LINE_MEMBER(mouse_data_w); + // inputs from aux + DECLARE_WRITE_LINE_MEMBER(aux_clk_w); + DECLARE_WRITE_LINE_MEMBER(aux_data_w); // standard constructor ps2_keyboard_controller_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); @@ -130,27 +131,27 @@ protected: private: // host outputs - use 1 = asserted, 0 = deasserted - void set_mouse_irq(u8 state); + void set_aux_irq(u8 state); // mouse line drive - use 1 = pulled up, 0 = driven low - void set_mouse_clk_out(u8 state); - void set_mouse_data_out(u8 state); - u8 mouse_clk_r() const; - u8 mouse_data_r() const; + void set_aux_clk_out(u8 state); + void set_aux_data_out(u8 state); + u8 aux_clk_r() const; + u8 aux_data_r() const; // internal sync helpers - TIMER_CALLBACK_MEMBER(set_mouse_clk_in); - TIMER_CALLBACK_MEMBER(set_mouse_data_in); + TIMER_CALLBACK_MEMBER(set_aux_clk_in); + TIMER_CALLBACK_MEMBER(set_aux_data_in); // MCU I/O handlers uint8_t p1_r(); void p2_w(uint8_t data); - devcb_write_line m_mouse_irq_cb; - devcb_write_line m_mouse_clk_cb, m_mouse_data_cb; + devcb_write_line m_aux_irq_cb; + devcb_write_line m_aux_clk_cb, m_aux_data_cb; - u8 m_mouse_irq; - u8 m_mouse_clk_in, m_mouse_clk_out, m_mouse_data_in, m_mouse_data_out; + u8 m_aux_irq; + u8 m_aux_clk_in, m_aux_clk_out, m_aux_data_in, m_aux_data_out; u8 m_p2_data; }; diff --git a/src/mame/drivers/jazz.cpp b/src/mame/drivers/jazz.cpp index 94aaf060b80..06a62ae935b 100644 --- a/src/mame/drivers/jazz.cpp +++ b/src/mame/drivers/jazz.cpp @@ -262,27 +262,25 @@ void jazz_state::jazz(machine_config &config) AMD_28F020(config, m_flash); // pc keyboard connector - pc_kbdc_device &kbdc(PC_KBDC(config, "pc_kbdc", 0)); - kbdc.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w)); - kbdc.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w)); + pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd_con", 0)); + kbd_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w)); + kbd_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w)); // keyboard port - pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", 0)); - pc_at_keyboards(kbd); - kbd.set_default_option(STR_KBD_MICROSOFT_NATURAL); - kbd.set_pc_kbdc_slot(&kbdc); + pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL)); + kbd.set_pc_kbdc_slot(&kbd_con); // keyboard controller PS2_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL); // FIXME: reset is probably routed through the MCT-ADR m_kbdc->hot_res().set([this](int state) { logerror("reset %d\n", state); }); - m_kbdc->kbd_clk().set(kbdc, FUNC(pc_kbdc_device::clock_write_from_mb)); - m_kbdc->kbd_data().set(kbdc, FUNC(pc_kbdc_device::data_write_from_mb)); + m_kbdc->kbd_clk().set(kbd_con, FUNC(pc_kbdc_device::clock_write_from_mb)); + m_kbdc->kbd_data().set(kbd_con, FUNC(pc_kbdc_device::data_write_from_mb)); m_kbdc->kbd_irq().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<6>));; - //m_kbdc->mouse_clk().set(); - //m_kbdc->mouse_data().set(); - m_kbdc->mouse_irq().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<7>)); + //m_kbdc->aux_clk().set(); + //m_kbdc->aux_data().set(); + m_kbdc->aux_irq().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<7>)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(78643200, 1280, 0, 1280, 1024, 0, 1024);