summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/cbmiec
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2018-05-04 03:01:32 +1000
committer Vas Crabb <vas@vastheman.com>2018-05-04 03:01:32 +1000
commit32a73f450da82c345b0f694bee311af34a5e717d (patch)
treede6259ee4c0120e992f348afcc9078e16bbe49d4 /src/devices/bus/cbmiec
parentaa96f47092f764f089c2ce9e0f26d756197150e8 (diff)
Make MCFG_DEVICE_ADD and callable device types more flexible:
* Allows defaulted clocks (see subtle example with vboy) * Allows additional constructors (see RS232 port in tranz330) * Allows use of device finder in place of tag in MCFG_DEVICE_ADD * Requires out-of-line destructor for devices using incomplete types * Requires XTAL or explicit u32 for clocks for devices with private types Devices must still define the standard constructor. When writing additional constructors, be aware that the constructor runs before device_add_mconfig in the context of the existing device, not the new device. See osborne1, zorba, tranz330, and vboy for examples of this in use. Compilation is a bit slower, but this is temporary while refactoring is in progress. Eliminated the need for MCFG_SOUND_ROUTE_EX. Removed macros from slot option configuration - they just obfuscated code and slowed it down with needless dynamic casts, but didn't actually simplify it.
Diffstat (limited to 'src/devices/bus/cbmiec')
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp7
-rw-r--r--src/devices/bus/cbmiec/c1571.cpp14
-rw-r--r--src/devices/bus/cbmiec/c1581.cpp7
-rw-r--r--src/devices/bus/cbmiec/cbmiec.cpp55
-rw-r--r--src/devices/bus/cbmiec/cbmiec.h3
-rw-r--r--src/devices/bus/cbmiec/fd2000.cpp14
6 files changed, 53 insertions, 47 deletions
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index 4070cecebec..bbadac3b80f 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -754,9 +754,10 @@ WRITE_LINE_MEMBER( c1541_device_base::byte_w )
// SLOT_INTERFACE( c1540_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c1540_floppies )
- SLOT_INTERFACE( "525ssqd", ALPS_3255190X )
-SLOT_INTERFACE_END
+static void c1540_floppies(device_slot_interface &device)
+{
+ device.option_add("525ssqd", ALPS_3255190X);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp
index 097dbc77cf8..2cbe03c58c2 100644
--- a/src/devices/bus/cbmiec/c1571.cpp
+++ b/src/devices/bus/cbmiec/c1571.cpp
@@ -564,9 +564,10 @@ WRITE_LINE_MEMBER( c1571_device::byte_w )
// SLOT_INTERFACE( c1571_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c1571_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void c1571_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
@@ -594,9 +595,10 @@ FLOPPY_FORMATS_END
// isa8bus_interface isabus_intf
//-------------------------------------------------
-static SLOT_INTERFACE_START( mini_chief_isa8_cards )
- SLOT_INTERFACE("wd1002a_wx1", ISA8_WD1002A_WX1)
-SLOT_INTERFACE_END
+static void mini_chief_isa8_cards(device_slot_interface &device)
+{
+ device.option_add("wd1002a_wx1", ISA8_WD1002A_WX1);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/cbmiec/c1581.cpp b/src/devices/bus/cbmiec/c1581.cpp
index d16ca955bc0..8e9f0ec9555 100644
--- a/src/devices/bus/cbmiec/c1581.cpp
+++ b/src/devices/bus/cbmiec/c1581.cpp
@@ -248,9 +248,10 @@ WRITE8_MEMBER( c1581_device::cia_pb_w )
// SLOT_INTERFACE( c1581_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c1581_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) // Chinon F-354-E
-SLOT_INTERFACE_END
+static void c1581_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD); // Chinon F-354-E
+}
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/cbmiec.cpp b/src/devices/bus/cbmiec/cbmiec.cpp
index 4384dbcd1cc..c91a9d54773 100644
--- a/src/devices/bus/cbmiec/cbmiec.cpp
+++ b/src/devices/bus/cbmiec/cbmiec.cpp
@@ -497,30 +497,31 @@ int cbm_iec_device::get_signal(int signal)
#include "vic1520.h"
#include "c1526.h"
-SLOT_INTERFACE_START( cbm_iec_devices )
- SLOT_INTERFACE("c1540", C1540)
- SLOT_INTERFACE("c1541", C1541)
- SLOT_INTERFACE("c1541c", C1541C)
- SLOT_INTERFACE("c1541ii", C1541II)
- SLOT_INTERFACE("fsd1", FSD1)
- SLOT_INTERFACE("fsd2", FSD2)
- SLOT_INTERFACE("csd1", CSD1)
- SLOT_INTERFACE("c1541dd", C1541_DOLPHIN_DOS)
- SLOT_INTERFACE("c1541pd", C1541_PROFESSIONAL_DOS_V1)
- SLOT_INTERFACE("c1541pdc", C1541_PROLOGIC_DOS_CLASSIC)
- SLOT_INTERFACE("c1570", C1570)
- SLOT_INTERFACE("c1571", C1571)
- SLOT_INTERFACE("c1581", C1581)
- SLOT_INTERFACE("indusgt", INDUS_GT)
- SLOT_INTERFACE("cmdhd", CMD_HD)
- SLOT_INTERFACE("fd2000", FD2000)
- SLOT_INTERFACE("fd4000", FD4000)
- SLOT_INTERFACE("interpod", INTERPOD)
- SLOT_INTERFACE("minichief", MINI_CHIEF)
- SLOT_INTERFACE("serialbox", SERIAL_BOX)
- SLOT_INTERFACE("diag264", DIAG264_SERIAL_LOOPBACK)
- SLOT_INTERFACE("nl10", C64_NL10_INTERFACE)
- SLOT_INTERFACE("vic1515", VIC1515)
- SLOT_INTERFACE("vic1520", VIC1520)
- SLOT_INTERFACE("c1526", C1526)
-SLOT_INTERFACE_END
+void cbm_iec_devices(device_slot_interface &device)
+{
+ device.option_add("c1540", C1540);
+ device.option_add("c1541", C1541);
+ device.option_add("c1541c", C1541C);
+ device.option_add("c1541ii", C1541II);
+ device.option_add("fsd1", FSD1);
+ device.option_add("fsd2", FSD2);
+ device.option_add("csd1", CSD1);
+ device.option_add("c1541dd", C1541_DOLPHIN_DOS);
+ device.option_add("c1541pd", C1541_PROFESSIONAL_DOS_V1);
+ device.option_add("c1541pdc", C1541_PROLOGIC_DOS_CLASSIC);
+ device.option_add("c1570", C1570);
+ device.option_add("c1571", C1571);
+ device.option_add("c1581", C1581);
+ device.option_add("indusgt", INDUS_GT);
+ device.option_add("cmdhd", CMD_HD);
+ device.option_add("fd2000", FD2000);
+ device.option_add("fd4000", FD4000);
+ device.option_add("interpod", INTERPOD);
+ device.option_add("minichief", MINI_CHIEF);
+ device.option_add("serialbox", SERIAL_BOX);
+ device.option_add("diag264", DIAG264_SERIAL_LOOPBACK);
+ device.option_add("nl10", C64_NL10_INTERFACE);
+ device.option_add("vic1515", VIC1515);
+ device.option_add("vic1520", VIC1520);
+ device.option_add("c1526", C1526);
+}
diff --git a/src/devices/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index 6c7d60f471b..f7d9f5d73ff 100644
--- a/src/devices/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
@@ -204,7 +204,6 @@ DECLARE_DEVICE_TYPE(CBM_IEC, cbm_iec_device)
DECLARE_DEVICE_TYPE(CBM_IEC_SLOT, cbm_iec_slot_device)
-SLOT_INTERFACE_EXTERN( cbm_iec_devices );
-
+void cbm_iec_devices(device_slot_interface &device);
#endif // MAME_BUS_CBMIEC_CBMIEC_H
diff --git a/src/devices/bus/cbmiec/fd2000.cpp b/src/devices/bus/cbmiec/fd2000.cpp
index 46dd1151a34..a14f69d17a6 100644
--- a/src/devices/bus/cbmiec/fd2000.cpp
+++ b/src/devices/bus/cbmiec/fd2000.cpp
@@ -194,13 +194,15 @@ WRITE8_MEMBER( fd2000_device::via_pb_w )
*/
}
-static SLOT_INTERFACE_START( fd2000_floppies )
- SLOT_INTERFACE( "35hd", FLOPPY_35_HD ) // TEAC FD-235HF
-SLOT_INTERFACE_END
+static void fd2000_floppies(device_slot_interface &device)
+{
+ device.option_add("35hd", FLOPPY_35_HD); // TEAC FD-235HF
+}
-static SLOT_INTERFACE_START( fd4000_floppies )
- SLOT_INTERFACE( "35ed", FLOPPY_35_ED ) // TEAC FD-235J
-SLOT_INTERFACE_END
+static void fd4000_floppies(device_slot_interface &device)
+{
+ device.option_add("35ed", FLOPPY_35_ED); // TEAC FD-235J
+}
/*
FLOPPY_FORMATS_MEMBER( fd2000_device::floppy_formats )
FLOPPY_D81_FORMAT