diff options
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 |
commit | 1032098a74d73914147a4afc4b16ec541d81ef35 (patch) | |
tree | 71bb3176b9e47acffbea7b61cf8277e981bae590 | |
parent | 1c2c55c82ad4970f438c84e29192036a87430090 (diff) |
upd765: add aux commands to 72065 (nw)
-rw-r--r-- | src/devices/machine/upd765.cpp | 16 | ||||
-rw-r--r-- | src/devices/machine/upd765.h | 1 | ||||
-rw-r--r-- | src/mame/drivers/mpc3000.cpp | 9 |
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")); |