upd765: Add uPD72069 device type for mpc3000 (nw)

This commit is contained in:
AJR 2019-04-13 18:14:53 -04:00
parent 31fad1a57c
commit 94f4e19770
3 changed files with 27 additions and 5 deletions

View File

@ -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;

View File

@ -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)

View File

@ -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));