summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2017-08-30 13:22:18 +0700
committer Olivier Galibert <galibert@pobox.com>2017-08-30 08:22:18 +0200
commitb3f7173aabb51208f7c9aec8a9098dcc41dd4ccf (patch)
tree83d2d96081ba87526a2c1d61b495b51cf9daf881
parent50749667bb8b6d0b92d187dffc9dcb0a03907375 (diff)
upd765: added i82072 (#2607)
-rw-r--r--src/devices/machine/upd765.cpp11
-rw-r--r--src/devices/machine/upd765.h12
2 files changed, 23 insertions, 0 deletions
diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp
index adc9f5790fe..39cc69d8c9b 100644
--- a/src/devices/machine/upd765.cpp
+++ b/src/devices/machine/upd765.cpp
@@ -11,6 +11,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(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")
DEFINE_DEVICE_TYPE(PC_FDC_SUPERIO, pc_fdc_superio_device, "pc_fdc_superio", "PC FDC SUPERIO")
@@ -40,6 +41,11 @@ DEVICE_ADDRESS_MAP_START(map, 8, upd72065_device)
AM_RANGE(0x1, 0x1) AM_READWRITE(fifo_r, fifo_w)
ADDRESS_MAP_END
+DEVICE_ADDRESS_MAP_START(map, 8, i82072_device)
+ AM_RANGE(0x0, 0x0) AM_READWRITE(msr_r, dsr_w)
+ AM_RANGE(0x1, 0x1) AM_READWRITE(fifo_r, fifo_w)
+ADDRESS_MAP_END
+
DEVICE_ADDRESS_MAP_START(map, 8, smc37c78_device)
AM_RANGE(0x2, 0x2) AM_READWRITE(dor_r, dor_w)
AM_RANGE(0x3, 0x3) AM_READWRITE(tdr_r, tdr_w)
@@ -2462,6 +2468,11 @@ upd72065_device::upd72065_device(const machine_config &mconfig, const char *tag,
dor_reset = 0x0c;
}
+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;
+}
+
smc37c78_device::smc37c78_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, SMC37C78, tag, owner, clock)
{
ready_connected = false;
diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h
index c1b9e428dda..067551dbe8f 100644
--- a/src/devices/machine/upd765.h
+++ b/src/devices/machine/upd765.h
@@ -33,6 +33,10 @@
downcast<upd72065_device *>(device)->set_ready_line_connected(_ready); \
downcast<upd72065_device *>(device)->set_select_lines_connected(_select);
+#define MCFG_I82072_ADD(_tag, _ready) \
+ MCFG_DEVICE_ADD(_tag, I82072, 0) \
+ downcast<i82072_device *>(device)->set_ready_line_connected(_ready);
+
#define MCFG_SMC37C78_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, SMC37C78, 0)
@@ -442,6 +446,13 @@ public:
virtual DECLARE_ADDRESS_MAP(map, 8) override;
};
+class i82072_device : public upd765_family_device {
+public:
+ i82072_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual DECLARE_ADDRESS_MAP(map, 8) override;
+};
+
class smc37c78_device : public upd765_family_device {
public:
smc37c78_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -527,6 +538,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(I82072, i82072_device)
DECLARE_DEVICE_TYPE(SMC37C78, smc37c78_device)
DECLARE_DEVICE_TYPE(N82077AA, n82077aa_device)
DECLARE_DEVICE_TYPE(PC_FDC_SUPERIO, pc_fdc_superio_device)