summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-04-13 18:14:53 -0400
committer AJR <ajrhacker@users.noreply.github.com>2019-04-13 18:14:53 -0400
commit94f4e197700b6599042f8d68e146ecd92284c2b2 (patch)
treed062d9cbae1e235952cdb03ef1592a3d8b44307f
parent31fad1a57c7f20986e5687b2678598e91a798a3b (diff)
upd765: Add uPD72069 device type for mpc3000 (nw)
-rw-r--r--src/devices/machine/upd765.cpp15
-rw-r--r--src/devices/machine/upd765.h9
-rw-r--r--src/mame/drivers/mpc3000.cpp8
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<hd61830_device> m_lcdc;
required_device<l7a1045_sound_device> m_dsp;
required_device<midi_port_device> m_mdout;
- required_device<upd72065_device> m_fdc;
+ required_device<upd72069_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));