summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2018-08-16 22:00:21 -0500
committer cracyc <cracyc@users.noreply.github.com>2018-08-16 22:00:21 -0500
commit1032098a74d73914147a4afc4b16ec541d81ef35 (patch)
tree71bb3176b9e47acffbea7b61cf8277e981bae590
parent1c2c55c82ad4970f438c84e29192036a87430090 (diff)
upd765: add aux commands to 72065 (nw)
-rw-r--r--src/devices/machine/upd765.cpp16
-rw-r--r--src/devices/machine/upd765.h1
-rw-r--r--src/mame/drivers/mpc3000.cpp9
3 files changed, 24 insertions, 2 deletions
diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp
index 8d324ea91a7..32cc58fe20f 100644
--- a/src/devices/machine/upd765.cpp
+++ b/src/devices/machine/upd765.cpp
@@ -72,7 +72,7 @@ void i8272a_device::map(address_map &map)
void upd72065_device::map(address_map &map)
{
- map(0x0, 0x0).r(FUNC(upd72065_device::msr_r));
+ map(0x0, 0x0).rw(FUNC(upd72065_device::msr_r), FUNC(upd72065_device::auxcmd_w));
map(0x1, 0x1).rw(FUNC(upd72065_device::fifo_r), FUNC(upd72065_device::fifo_w));
}
@@ -2989,3 +2989,17 @@ WRITE8_MEMBER(tc8566af_device::cr1_w)
tc_w((m_cr1 & 0x01) ? true : false);
}
}
+
+WRITE8_MEMBER(upd72065_device::auxcmd_w)
+{
+ switch(data)
+ {
+ case 0x36: // reset
+ soft_reset();
+ break;
+ case 0x35: // set standby
+ break;
+ case 0x34: // reset standby
+ break;
+ }
+}
diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h
index c4fd1acb2da..9d71c51858a 100644
--- a/src/devices/machine/upd765.h
+++ b/src/devices/machine/upd765.h
@@ -510,6 +510,7 @@ public:
upd72065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void map(address_map &map) override;
+ DECLARE_WRITE8_MEMBER(auxcmd_w);
};
class n82077aa_device : public upd765_family_device {
diff --git a/src/mame/drivers/mpc3000.cpp b/src/mame/drivers/mpc3000.cpp
index f682f53fd21..b5d2fb1e347 100644
--- a/src/mame/drivers/mpc3000.cpp
+++ b/src/mame/drivers/mpc3000.cpp
@@ -61,6 +61,7 @@
#include "speaker.h"
#include "screen.h"
#include "emupal.h"
+#include "machine/upd765.h"
class mpc3000_state : public driver_device
{
@@ -71,6 +72,7 @@ public:
, m_lcdc(*this, "lcdc")
, m_dsp(*this, "dsp")
, m_mdout(*this, "mdout")
+ , m_fdc(*this, "upd72068")
{ }
void mpc3000(machine_config &config);
@@ -82,7 +84,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;
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -131,6 +133,7 @@ void mpc3000_state::mpc3000_io_map(address_map &map)
map(0x0068, 0x0069).rw(FUNC(mpc3000_state::dsp_0008_hack_r), FUNC(mpc3000_state::dsp_0008_hack_w));
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);
}
READ8_MEMBER(mpc3000_state::dma_memr_cb)
@@ -170,6 +173,10 @@ void mpc3000_state::mpc3000(machine_config &config)
MCFG_PALETTE_ADD("palette", 2)
MCFG_PALETTE_INIT_OWNER(mpc3000_state, mpc3000)
+ MCFG_UPD72065_ADD("upd72068", true, true) // TODO: upd72068 supports motor control
+ //MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("maincpu", v53a_device, ir?_w))
+ //MCFG_UPD765_DRQ_CALLBACK(WRITELINE("maincpu", v53a_device, drq?_w))
+
HD61830(config, m_lcdc, 4.9152_MHz_XTAL / 2 / 2);
auto &mdin(MIDI_PORT(config, "mdin"));