summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/isbx/compis_fdc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/isbx/compis_fdc.cpp')
-rw-r--r--src/devices/bus/isbx/compis_fdc.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/devices/bus/isbx/compis_fdc.cpp b/src/devices/bus/isbx/compis_fdc.cpp
index fea0e7f59b5..cd247ccf026 100644
--- a/src/devices/bus/isbx/compis_fdc.cpp
+++ b/src/devices/bus/isbx/compis_fdc.cpp
@@ -9,6 +9,8 @@
#include "emu.h"
#include "compis_fdc.h"
+#include "formats/cpis_dsk.h"
+
//**************************************************************************
// MACROS / CONSTANTS
@@ -26,22 +28,24 @@ DEFINE_DEVICE_TYPE(COMPIS_FDC, compis_fdc_device, "compis_fdc", "Compis FDC")
//-------------------------------------------------
-// floppy_format_type floppy_formats
+// floppy_formats
//-------------------------------------------------
-WRITE_LINE_MEMBER( compis_fdc_device::fdc_irq )
+void compis_fdc_device::fdc_irq(int state)
{
m_slot->mintr1_w(state);
}
-WRITE_LINE_MEMBER( compis_fdc_device::fdc_drq )
+void compis_fdc_device::fdc_drq(int state)
{
m_slot->mdrqt_w(state);
}
-FLOPPY_FORMATS_MEMBER( compis_fdc_device::floppy_formats )
- FLOPPY_CPIS_FORMAT
-FLOPPY_FORMATS_END
+void compis_fdc_device::floppy_formats(format_registration &fr)
+{
+ fr.add_mfm_containers();
+ fr.add(FLOPPY_CPIS_FORMAT);
+}
static void compis_floppies(device_slot_interface &device)
{
@@ -59,8 +63,9 @@ void compis_fdc_device::device_add_mconfig(machine_config &config)
I8272A(config, m_fdc, 8'000'000, true);
m_fdc->intrq_wr_callback().set(FUNC(compis_fdc_device::fdc_irq));
m_fdc->drq_wr_callback().set(FUNC(compis_fdc_device::fdc_drq));
- FLOPPY_CONNECTOR(config, m_floppy0, compis_floppies, "525qd", compis_fdc_device::floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppy1, compis_floppies, "525qd", compis_fdc_device::floppy_formats);
+
+ for (auto &floppy : m_floppy)
+ FLOPPY_CONNECTOR(config, floppy, compis_floppies, "525qd", compis_fdc_device::floppy_formats);
}
@@ -77,8 +82,7 @@ compis_fdc_device::compis_fdc_device(const machine_config &mconfig, const char *
device_t(mconfig, COMPIS_FDC, tag, owner, clock),
device_isbx_card_interface(mconfig, *this),
m_fdc(*this, I8272_TAG),
- m_floppy0(*this, I8272_TAG":0"),
- m_floppy1(*this, I8272_TAG":1")
+ m_floppy(*this, I8272_TAG":%u", 0U)
{
}
@@ -169,6 +173,10 @@ void compis_fdc_device::opt0_w(int state)
void compis_fdc_device::opt1_w(int state)
{
- m_floppy0->get_device()->mon_w(state);
- m_floppy1->get_device()->mon_w(state);
+ for (auto &floppy : m_floppy)
+ {
+ floppy_image_device *fd = floppy->get_device();
+ if (fd)
+ fd->mon_w(state);
+ }
}