From 94f4e197700b6599042f8d68e146ecd92284c2b2 Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 13 Apr 2019 18:14:53 -0400 Subject: upd765: Add uPD72069 device type for mpc3000 (nw) --- src/devices/machine/upd765.cpp | 15 ++++++++++++++- src/devices/machine/upd765.h | 9 +++++++++ src/mame/drivers/mpc3000.cpp | 8 ++++---- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp index 225d6da79cc..9de742a39d9 100644 --- a/src/devices/machine/upd765.cpp +++ b/src/devices/machine/upd765.cpp @@ -45,6 +45,7 @@ DEFINE_DEVICE_TYPE(UPD765A, upd765a_device, "upd765a", "NEC DEFINE_DEVICE_TYPE(UPD765B, upd765b_device, "upd765b", "NEC uPD765B FDC") DEFINE_DEVICE_TYPE(I8272A, i8272a_device, "i8272a", "Intel 8272A FDC") DEFINE_DEVICE_TYPE(UPD72065, upd72065_device, "upd72065", "NEC uPD72065 FDC") +DEFINE_DEVICE_TYPE(UPD72069, upd72069_device, "upd72069", "NEC uPD72069 FDC") DEFINE_DEVICE_TYPE(I82072, i82072_device, "i82072", "Intel 82072 FDC") DEFINE_DEVICE_TYPE(SMC37C78, smc37c78_device, "smc37c78", "SMC FDC73C78 FDC") DEFINE_DEVICE_TYPE(N82077AA, n82077aa_device, "n82077aa", "Intel N82077AA FDC") @@ -2646,11 +2647,23 @@ i8272a_device::i8272a_device(const machine_config &mconfig, const char *tag, dev dor_reset = 0x0c; } -upd72065_device::upd72065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, UPD72065, tag, owner, clock) +upd72065_device::upd72065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd72065_device(mconfig, UPD72065, tag, owner, clock) +{ +} + +upd72065_device::upd72065_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, type, tag, owner, clock) { dor_reset = 0x0c; } +upd72069_device::upd72069_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd72065_device(mconfig, UPD72069, tag, owner, clock) +{ + ready_polled = true; + ready_connected = true; + select_connected = true; + select_multiplexed = false; +} + i82072_device::i82072_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, I82072, tag, owner, clock) { dor_reset = 0x0c; diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h index 6d3d740bb49..ae32663f0da 100644 --- a/src/devices/machine/upd765.h +++ b/src/devices/machine/upd765.h @@ -471,6 +471,14 @@ public: virtual void map(address_map &map) override; void auxcmd_w(uint8_t data); + +protected: + upd72065_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); +}; + +class upd72069_device : public upd72065_device { +public: + upd72069_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; class n82077aa_device : public upd765_family_device { @@ -549,6 +557,7 @@ DECLARE_DEVICE_TYPE(UPD765A, upd765a_device) DECLARE_DEVICE_TYPE(UPD765B, upd765b_device) DECLARE_DEVICE_TYPE(I8272A, i8272a_device) DECLARE_DEVICE_TYPE(UPD72065, upd72065_device) +DECLARE_DEVICE_TYPE(UPD72069, upd72069_device) DECLARE_DEVICE_TYPE(I82072, i82072_device) DECLARE_DEVICE_TYPE(SMC37C78, smc37c78_device) DECLARE_DEVICE_TYPE(N82077AA, n82077aa_device) diff --git a/src/mame/drivers/mpc3000.cpp b/src/mame/drivers/mpc3000.cpp index 3110cd1f0cb..e405225e99f 100644 --- a/src/mame/drivers/mpc3000.cpp +++ b/src/mame/drivers/mpc3000.cpp @@ -82,7 +82,7 @@ public: , m_lcdc(*this, "lcdc") , m_dsp(*this, "dsp") , m_mdout(*this, "mdout") - , m_fdc(*this, "upd72068") + , m_fdc(*this, "fdc") { } void mpc3000(machine_config &config); @@ -94,7 +94,7 @@ private: required_device m_lcdc; required_device m_dsp; required_device m_mdout; - required_device m_fdc; + required_device m_fdc; virtual void machine_start() override; virtual void machine_reset() override; @@ -152,7 +152,7 @@ void mpc3000_state::mpc3000_io_map(address_map &map) //map(0x00d8, 0x00df).rw("sio", FUNC(te7774_device::read3), FUNC(te7774_device::write3)).umask(0x00ff); map(0x00e0, 0x00e0).rw(m_lcdc, FUNC(hd61830_device::data_r), FUNC(hd61830_device::data_w)).umask16(0x00ff); map(0x00e2, 0x00e2).rw(m_lcdc, FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w)).umask16(0x00ff); - map(0x00e8, 0x00eb).m(m_fdc, FUNC(upd72065_device::map)).umask16(0x00ff); + map(0x00e8, 0x00eb).m(m_fdc, FUNC(upd72069_device::map)).umask16(0x00ff); map(0x00f0, 0x00f7).rw("synctmr", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); map(0x00f8, 0x00ff).rw("adcexp", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); } @@ -214,7 +214,7 @@ void mpc3000_state::mpc3000(machine_config &config) PALETTE(config, "palette", FUNC(mpc3000_state::mpc3000_palette), 2); - UPD72065(config, m_fdc, 16_MHz_XTAL, true, true); // clocked by V53 CLKOUT (TODO: upd72068 supports motor control) + UPD72069(config, m_fdc, 16_MHz_XTAL); // clocked by V53 CLKOUT (TODO: upd72069 supports motor control) //m_fdc->intrq_wr_callback().set(m_maincpu, FUNC(v53a_device::ir?_w)); //m_fdc->drq_wr_callback().set(m_maincpu, FUNC(v53a_device::drq?_w)); -- cgit v1.2.3