summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author npwoods <npwoods@mess.org>2020-11-22 20:30:10 -0500
committer GitHub <noreply@github.com>2020-11-23 12:30:10 +1100
commit9649617fb03c8120aaa11ef749c47c6f8ea5f8c7 (patch)
treea661ad2d801181ed5226efb8ba52055a08752872
parent5ed91a1857e55897dcba56233a6c69e0e1cb5a2d (diff)
Cleanups and corrections for CoCo cartridge slot configuration (#7502)
Consolidated CoCo cartridge slot device configuration, to remove duplicate code that was specific to slots on the Multi-Pak interface. Marked "pak" and "banked_16k" as internal, as they are not standalone
-rw-r--r--src/devices/bus/coco/coco_multi.cpp37
-rw-r--r--src/devices/bus/coco/cococart.cpp62
-rw-r--r--src/devices/bus/coco/cococart.h6
-rw-r--r--src/mame/drivers/coco12.cpp38
4 files changed, 78 insertions, 65 deletions
diff --git a/src/devices/bus/coco/coco_multi.cpp b/src/devices/bus/coco/coco_multi.cpp
index 23a69932ef6..4c5c63c003e 100644
--- a/src/devices/bus/coco/coco_multi.cpp
+++ b/src/devices/bus/coco/coco_multi.cpp
@@ -57,16 +57,6 @@
#include "coco_multi.h"
#include "cococart.h"
-#include "coco_dcmodem.h"
-#include "coco_fdc.h"
-#include "coco_gmc.h"
-#include "coco_orch90.h"
-#include "coco_pak.h"
-#include "coco_ram.h"
-#include "coco_rs232.h"
-#include "coco_ssc.h"
-#include "coco_stecomp.h"
-#include "coco_sym12.h"
#define SLOT1_TAG "slot1"
#define SLOT2_TAG "slot2"
@@ -163,32 +153,13 @@ namespace
static void coco_cart_slot1_3(device_slot_interface &device)
{
- device.option_add("banked_16k", COCO_PAK_BANKED);
- device.option_add("dcmodem", COCO_DCMODEM);
- device.option_add("games_master", COCO_PAK_GMC);
- device.option_add("orch90", COCO_ORCH90);
- device.option_add("pak", COCO_PAK);
- device.option_add("ram", COCO_PAK_RAM);
- device.option_add("rs232", COCO_RS232);
- device.option_add("ssc", COCO_SSC);
- device.option_add("stecomp", COCO_STEREO_COMPOSER);
- device.option_add("sym12", COCO_SYM12);
+ coco_cart_add_basic_devices(device);
}
+
static void coco_cart_slot4(device_slot_interface &device)
{
- device.option_add("banked_16k", COCO_PAK_BANKED);
- device.option_add("cc2hdb1", COCO2_HDB1);
- device.option_add("cc3hdb1", COCO3_HDB1);
- device.option_add("dcmodem", COCO_DCMODEM);
- device.option_add("fdcv11", COCO_FDC_V11);
- device.option_add("games_master", COCO_PAK_GMC);
- device.option_add("orch90", COCO_ORCH90);
- device.option_add("pak", COCO_PAK);
- device.option_add("ram", COCO_PAK_RAM);
- device.option_add("rs232", COCO_RS232);
- device.option_add("ssc", COCO_SSC);
- device.option_add("stecomp", COCO_STEREO_COMPOSER);
- device.option_add("sym12", COCO_SYM12);
+ coco_cart_add_basic_devices(device);
+ coco_cart_add_fdcs(device);
}
diff --git a/src/devices/bus/coco/cococart.cpp b/src/devices/bus/coco/cococart.cpp
index 220b0d1cab3..6dc79efefb2 100644
--- a/src/devices/bus/coco/cococart.cpp
+++ b/src/devices/bus/coco/cococart.cpp
@@ -40,6 +40,19 @@
#include "emu.h"
#include "cococart.h"
+#include "coco_dcmodem.h"
+#include "coco_fdc.h"
+#include "coco_gmc.h"
+#include "coco_multi.h"
+#include "coco_orch90.h"
+#include "coco_pak.h"
+#include "coco_psg.h"
+#include "coco_ram.h"
+#include "coco_rs232.h"
+#include "coco_ssc.h"
+#include "coco_stecomp.h"
+#include "coco_sym12.h"
+
/***************************************************************************
PARAMETERS
@@ -649,3 +662,52 @@ void device_cococart_interface::set_line_value(cococart_slot_device::line line,
{
owning_slot().set_line_value(line, value);
}
+
+
+//-------------------------------------------------
+// coco_cart_add_basic_devices
+//-------------------------------------------------
+
+void coco_cart_add_basic_devices(device_slot_interface &device)
+{
+ // basic devices, on both the main slot and the Multi-Pak interface
+ device.option_add_internal("banked_16k", COCO_PAK_BANKED);
+ device.option_add("ccpsg", COCO_PSG);
+ device.option_add("dcmodem", COCO_DCMODEM);
+ device.option_add("games_master", COCO_PAK_GMC);
+ device.option_add("orch90", COCO_ORCH90);
+ device.option_add_internal("pak", COCO_PAK);
+ device.option_add("ram", COCO_PAK_RAM);
+ device.option_add("rs232", COCO_RS232);
+ device.option_add("ssc", COCO_SSC);
+ device.option_add("stecomp", COCO_STEREO_COMPOSER);
+ device.option_add("sym12", COCO_SYM12);
+}
+
+
+//-------------------------------------------------
+// coco_cart_add_fdcs
+//-------------------------------------------------
+
+void coco_cart_add_fdcs(device_slot_interface &device)
+{
+ // FDCs are optional because if they are on a Multi-Pak interface, they must
+ // be on Slot 4
+ device.option_add("cc2hdb1", COCO2_HDB1);
+ device.option_add("cc3hdb1", COCO3_HDB1);
+ device.option_add("cd6809_fdc", CD6809_FDC);
+ device.option_add("cp450_fdc", CP450_FDC);
+ device.option_add("fdc", COCO_FDC);
+ device.option_add("fdcv11", COCO_FDC_V11);
+}
+
+
+//-------------------------------------------------
+// coco_cart_add_multi_pak
+//-------------------------------------------------
+
+void coco_cart_add_multi_pak(device_slot_interface &device)
+{
+ // and the Multi-Pak itself is optional because they cannot be daisy chained
+ device.option_add("multi", COCO_MULTIPAK);
+}
diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h
index d2a573202f0..487858425e0 100644
--- a/src/devices/bus/coco/cococart.h
+++ b/src/devices/bus/coco/cococart.h
@@ -225,4 +225,10 @@ private:
device_cococart_host_interface * m_host;
};
+// methods for configuring CoCo slot devices (the expansion cart
+// itself, as well as slots on the Multi-Pak)
+void coco_cart_add_basic_devices(device_slot_interface &device);
+void coco_cart_add_fdcs(device_slot_interface &device);
+void coco_cart_add_multi_pak(device_slot_interface &device);
+
#endif // MAME_BUS_COCO_COCOCART_H
diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp
index 98c312fb371..5233d3e6948 100644
--- a/src/mame/drivers/coco12.cpp
+++ b/src/mame/drivers/coco12.cpp
@@ -26,19 +26,7 @@
#include "emu.h"
#include "includes/coco12.h"
-#include "bus/coco/coco_dcmodem.h"
-#include "bus/coco/coco_dwsock.h"
-#include "bus/coco/coco_fdc.h"
-#include "bus/coco/coco_gmc.h"
-#include "bus/coco/coco_multi.h"
-#include "bus/coco/coco_orch90.h"
-#include "bus/coco/coco_pak.h"
-#include "bus/coco/coco_psg.h"
-#include "bus/coco/coco_ram.h"
-#include "bus/coco/coco_rs232.h"
-#include "bus/coco/coco_ssc.h"
-#include "bus/coco/coco_stecomp.h"
-#include "bus/coco/coco_sym12.h"
+#include "bus/coco/cococart.h"
#include "bus/coco/coco_t4426.h"
#include "cpu/m6809/m6809.h"
@@ -402,31 +390,17 @@ INPUT_PORTS_END
//**************************************************************************
//-------------------------------------------------
-// SLOT_INTERFACE_START(coco_cart)
+// coco_cart
//-------------------------------------------------
void coco_cart(device_slot_interface &device)
{
- device.option_add("banked_16k", COCO_PAK_BANKED);
- device.option_add("cc2hdb1", COCO2_HDB1);
- device.option_add("cc3hdb1", COCO3_HDB1);
- device.option_add("ccpsg", COCO_PSG);
- device.option_add("cd6809_fdc", CD6809_FDC);
- device.option_add("cp450_fdc", CP450_FDC);
- device.option_add("dcmodem", COCO_DCMODEM);
- device.option_add("fdc", COCO_FDC);
- device.option_add("fdcv11", COCO_FDC_V11);
- device.option_add("games_master", COCO_PAK_GMC);
- device.option_add("multi", COCO_MULTIPAK);
- device.option_add("orch90", COCO_ORCH90);
- device.option_add("pak", COCO_PAK);
- device.option_add("ram", COCO_PAK_RAM);
- device.option_add("rs232", COCO_RS232);
- device.option_add("ssc", COCO_SSC);
- device.option_add("stecomp", COCO_STEREO_COMPOSER);
- device.option_add("sym12", COCO_SYM12);
+ coco_cart_add_basic_devices(device);
+ coco_cart_add_fdcs(device);
+ coco_cart_add_multi_pak(device);
}
+
//-------------------------------------------------
// SLOT_INTERFACE_START(t4426_cart)
//-------------------------------------------------