summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2019-06-25 23:09:36 +0200
committer Olivier Galibert <galibert@pobox.com>2019-06-25 23:09:36 +0200
commite5112a99c9d70001b82f7370cfa498de2b02c632 (patch)
treed2423d8e2f395c5e351dbb7c25b2292c93739f2e
parentdc35885dcd5272e6ddcb8a24c2b7fbe92b5599ac (diff)
mindset: Cleanup floppy motor control [O. Galibert]
-rw-r--r--src/mame/drivers/mindset.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mame/drivers/mindset.cpp b/src/mame/drivers/mindset.cpp
index e421889fc4b..d39f122e13d 100644
--- a/src/mame/drivers/mindset.cpp
+++ b/src/mame/drivers/mindset.cpp
@@ -25,11 +25,13 @@ protected:
required_device<i8749_device> m_kbdcpu;
required_device<screen_device> m_screen;
required_device<i8272a_device> m_fdc;
+ required_device<floppy_connector> m_fdco[2];
required_shared_ptr<u16> m_vram;
required_ioport_array<11> m_kbd_row;
memory_access_cache<1, 0, ENDIANNESS_LITTLE> *m_gcos;
+ floppy_image_device *m_floppy[2];
u32 m_palette[16];
bool m_genlock[16];
u16 m_dispctrl, m_screenpos, m_intpos, m_intaddr, m_fdc_dma_count;
@@ -104,6 +106,7 @@ mindset_state::mindset_state(const machine_config &mconfig, device_type type, co
m_kbdcpu(*this, "kbdcpu"),
m_screen(*this, "screen"),
m_fdc(*this, "fdc"),
+ m_fdco{{*this, "fdc:0"}, {*this, "fdc:1"}},
m_vram(*this, "vram"),
m_kbd_row(*this, "K%02u", 0U)
{
@@ -112,6 +115,8 @@ mindset_state::mindset_state(const machine_config &mconfig, device_type type, co
void mindset_state::machine_start()
{
m_gcos = m_maincpu->space(AS_PROGRAM).cache<1, 0, ENDIANNESS_LITTLE>();
+ for(int i=0; i<2; i++)
+ m_floppy[i] = m_fdco[i]->get_device();
}
void mindset_state::machine_reset()
@@ -669,8 +674,8 @@ void mindset_state::fdc_ctrl_w(u8 data)
logerror("fdc control %02x\n", data);
if(data & 0x04)
m_fdc->reset();
- subdevice<floppy_connector>(":fdc:0")->get_device()->mon_w(false);
- subdevice<floppy_connector>(":fdc:1")->get_device()->mon_w(false);
+ m_floppy[data & 1]->mon_w(!(data & 2));
+ m_floppy[(data & 1)^1]->mon_w(true);
}
void mindset_state::fdc_int_w(int state)
@@ -782,8 +787,8 @@ void mindset_state::mindset(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(mindset_state::fdc_int_w));
m_fdc->drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w));
m_fdc->set_ready_line_connected(false);
- FLOPPY_CONNECTOR(config, "fdc:0", pc_dd_floppies, "525dd", mindset_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", pc_dd_floppies, "525dd", mindset_state::floppy_formats);
+ FLOPPY_CONNECTOR(config, m_fdco[0], pc_dd_floppies, "525dd", mindset_state::floppy_formats);
+ FLOPPY_CONNECTOR(config, m_fdco[1], pc_dd_floppies, "525dd", mindset_state::floppy_formats);
}
static INPUT_PORTS_START(mindset)