From e979607ad8afab9fe09e43e0598ef4786ee7a793 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Sun, 16 Jun 2019 19:42:16 +0200 Subject: mindset: Fix the 8042s, clock starts ticking [O. Galibert] --- src/devices/bus/hp_dio/human_interface.cpp | 2 +- src/devices/bus/hp_dio/human_interface.h | 2 +- src/devices/cpu/mcs48/mcs48.cpp | 6 ++++++ src/devices/cpu/mcs48/mcs48.h | 10 +++++++++- src/devices/machine/at_keybc.cpp | 4 ++-- src/mame/drivers/bitel.cpp | 2 +- src/mame/drivers/mindset.cpp | 2 +- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/devices/bus/hp_dio/human_interface.cpp b/src/devices/bus/hp_dio/human_interface.cpp index d7cfad37d50..509a2151a3b 100644 --- a/src/devices/bus/hp_dio/human_interface.cpp +++ b/src/devices/bus/hp_dio/human_interface.cpp @@ -26,7 +26,7 @@ namespace bus { void human_interface_device::device_add_mconfig(machine_config &config) { - i8042_device &iocpu(I8042(config, "iocpu", XTAL(5'000'000))); + i8042ah_device &iocpu(I8042AH(config, "iocpu", XTAL(5'000'000))); iocpu.set_addrmap(AS_PROGRAM, &human_interface_device::iocpu_map); iocpu.p1_out_cb().set(FUNC(human_interface_device::iocpu_port1_w)); iocpu.p2_out_cb().set(FUNC(human_interface_device::iocpu_port2_w)); diff --git a/src/devices/bus/hp_dio/human_interface.h b/src/devices/bus/hp_dio/human_interface.h index 053fa468208..4a2e159d3f7 100644 --- a/src/devices/bus/hp_dio/human_interface.h +++ b/src/devices/bus/hp_dio/human_interface.h @@ -61,7 +61,7 @@ private: void update_gpib_irq(); void update_gpib_dma(); - required_device m_iocpu; + required_device m_iocpu; required_device m_mlc; required_device m_sound; required_device m_tms9914; diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp index 735b2cd113e..1cb829902e9 100644 --- a/src/devices/cpu/mcs48/mcs48.cpp +++ b/src/devices/cpu/mcs48/mcs48.cpp @@ -159,6 +159,7 @@ DEFINE_DEVICE_TYPE(I8050, i8050_device, "i8050", "Intel I8050") DEFINE_DEVICE_TYPE(I8041, i8041_device, "i8041", "Intel I8041") DEFINE_DEVICE_TYPE(I8741, i8741_device, "i8741", "Intel I8741") DEFINE_DEVICE_TYPE(I8042, i8042_device, "i8042", "Intel I8042") +DEFINE_DEVICE_TYPE(I8042AH,i8042ah_device,"i8042ah","Intel I8042AH") DEFINE_DEVICE_TYPE(I8242, i8242_device, "i8242", "Intel I8242") DEFINE_DEVICE_TYPE(I8742, i8742_device, "i8742", "Intel I8742") DEFINE_DEVICE_TYPE(MB8884, mb8884_device, "mb8884", "MB8884") @@ -320,6 +321,11 @@ i8741_device::i8741_device(const machine_config &mconfig, const char *tag, devic } i8042_device::i8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : upi41_cpu_device(mconfig, I8042, tag, owner, clock, 2048, 128) +{ +} + +i8042ah_device::i8042ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upi41_cpu_device(mconfig, I8042, tag, owner, clock, 2048, 256) { } diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h index cc0ccbec1fe..e7dd33722ac 100644 --- a/src/devices/cpu/mcs48/mcs48.h +++ b/src/devices/cpu/mcs48/mcs48.h @@ -88,7 +88,8 @@ DECLARE_DEVICE_TYPE(I8050, i8050_device) /* 4k internal ROM, 256 bytes in /* Official Intel UPI-41 parts */ DECLARE_DEVICE_TYPE(I8041, i8041_device) /* 1k internal ROM, 128 bytes internal RAM */ DECLARE_DEVICE_TYPE(I8741, i8741_device) /* 1k internal EEPROM, 128 bytes internal RAM */ -DECLARE_DEVICE_TYPE(I8042, i8042_device) /* 2k internal ROM, 256 bytes internal RAM */ +DECLARE_DEVICE_TYPE(I8042, i8042_device) /* 2k internal ROM, 128 bytes internal RAM */ +DECLARE_DEVICE_TYPE(I8042AH, i8042ah_device)/* 2k internal ROM, 256 bytes internal RAM */ DECLARE_DEVICE_TYPE(I8242, i8242_device) /* 2k internal ROM, 256 bytes internal RAM */ DECLARE_DEVICE_TYPE(I8742, i8742_device) /* 2k internal EEPROM, 256 bytes internal RAM */ @@ -656,6 +657,13 @@ public: i8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; +class i8042ah_device : public upi41_cpu_device +{ +public: + // construction/destruction + i8042ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + class i8242_device : public upi41_cpu_device { public: diff --git a/src/devices/machine/at_keybc.cpp b/src/devices/machine/at_keybc.cpp index 1265c0bf54e..c6d2e037973 100644 --- a/src/devices/machine/at_keybc.cpp +++ b/src/devices/machine/at_keybc.cpp @@ -386,7 +386,7 @@ tiny_rom_entry const *at_keyboard_controller_device::device_rom_region() const void at_keyboard_controller_device::device_add_mconfig(machine_config &config) { - I8042(config, m_mcu, DERIVED_CLOCK(1, 1)); + I8042AH(config, m_mcu, DERIVED_CLOCK(1, 1)); m_mcu->p1_in_cb().set_ioport("P1"); m_mcu->p1_out_cb().set_nop(); m_mcu->p2_in_cb().set_constant(0xffU); @@ -462,7 +462,7 @@ tiny_rom_entry const *ps2_keyboard_controller_device::device_rom_region() const void ps2_keyboard_controller_device::device_add_mconfig(machine_config &config) { - I8042(config, m_mcu, DERIVED_CLOCK(1, 1)); + I8042AH(config, m_mcu, DERIVED_CLOCK(1, 1)); m_mcu->p1_in_cb().set(FUNC(ps2_keyboard_controller_device::p1_r)); m_mcu->p1_out_cb().set_nop(); m_mcu->p2_in_cb().set_constant(0xffU); diff --git a/src/mame/drivers/bitel.cpp b/src/mame/drivers/bitel.cpp index dc5b30ec13e..7471130627b 100644 --- a/src/mame/drivers/bitel.cpp +++ b/src/mame/drivers/bitel.cpp @@ -66,7 +66,7 @@ void bitel_state::feap90(machine_config &config) I8031(config, m_maincpu, 12000000); // XTAL illegible m_maincpu->set_addrmap(AS_PROGRAM, &bitel_state::prog_map); - I8042(config, "upi", 6000000).set_disable(); // XTAL illegible + I8042AH(config, "upi", 6000000).set_disable(); // XTAL illegible } ROM_START(t3210) // i8031, 8742, D80C39C // 4+2k ram onboard; 24kb in battery-backed expansion diff --git a/src/mame/drivers/mindset.cpp b/src/mame/drivers/mindset.cpp index 22ae0cc4215..77cdcb35042 100644 --- a/src/mame/drivers/mindset.cpp +++ b/src/mame/drivers/mindset.cpp @@ -525,7 +525,7 @@ void mindset_state::mindset(machine_config &config) m_syscpu->t0_in_cb().set(FUNC(mindset_state::sys_t0_r)); m_syscpu->t1_in_cb().set(FUNC(mindset_state::sys_t1_r)); - I8042(config, m_soundcpu, 14.318181_MHz_XTAL/2); + I8042(config, m_soundcpu, 12_MHz_XTAL/2); I8749(config, m_kbdcpu, 6_MHz_XTAL); m_kbdcpu->p1_out_cb().set(FUNC(mindset_state::kbd_p1_w)); -- cgit v1.2.3