Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06606 Interface Minor Always Jun 6, 2017, 01:07 Sep 18, 2022, 19:28
Tester star2root View Status Public Platform MAME (Self-compiled)
Assigned To Resolution Open OS
Status [?] Acknowledged Driver
Version 0.186 Fixed in Version Build
Fixed in Git Commit Github Pull Request #
Summary MESS-specific 06606: coco, coco2, coco3: On the CoCo systems with a multi-pak the devices cc3hdb1 and fdcv11 should be able to be inserted into any slot.
Description On the CoCo systems with a multi-pak the devices cc3hdb1 and fdcv11 should be able to be inserted into any slot. On the real hardware this device will function in any slot.
Steps To Reproduce Try to select either cc3hdb1 or fdcv11 in any multi-pak slot other than 4.
Additional Information There is no selection available to insert either cp400_fdc or fdc into any slot in a multi-pak, the only floppy controller available for use in a multi-pak is fdcv11.
Github Commit
Flags
Regression Version
Affected Sets / Systems coco, coco2, coco3
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
12
User avatar
No.13884
star2root
Viewer
Jun 6, 2017, 03:19
Suggested patch in diff format:

--- src/devices/bus/coco/coco_multi.cpp 2017-06-05 23:10:42.000000000 -0400
+++ src/devices/bus/coco/coco_multi.cpp 2017-06-05 23:13:13.000000000 -0400
@@ -135,16 +135,7 @@
     IMPLEMENTATION
 ***************************************************************************/
 
-static SLOT_INTERFACE_START(coco_cart_slot1_3)
- SLOT_INTERFACE("rs232", COCO_RS232)
- SLOT_INTERFACE("dcmodem", COCO_DCMODEM)
- SLOT_INTERFACE("orch90", COCO_ORCH90)
- SLOT_INTERFACE("ssc", COCO_SSC) MCFG_SLOT_OPTION_CLOCK("ssc", DERIVED_CLOCK(1, 1))
- SLOT_INTERFACE("games_master", COCO_PAK_GMC)
- SLOT_INTERFACE("banked_16k", COCO_PAK_BANKED)
- SLOT_INTERFACE("pak", COCO_PAK)
-SLOT_INTERFACE_END
-static SLOT_INTERFACE_START(coco_cart_slot4)
+static SLOT_INTERFACE_START(coco_cart_slot1_4)
  SLOT_INTERFACE("cc3hdb1", COCO3_HDB1)
  SLOT_INTERFACE("fdcv11", COCO_FDC_V11)
  SLOT_INTERFACE("rs232", COCO_RS232)
@@ -156,27 +147,25 @@
  SLOT_INTERFACE("pak", COCO_PAK)
 SLOT_INTERFACE_END
 
-
 MACHINE_CONFIG_MEMBER(coco_multipak_device::device_add_mconfig)
- MCFG_COCO_CARTRIDGE_ADD(SLOT1_TAG, coco_cart_slot1_3, nullptr)
+ MCFG_COCO_CARTRIDGE_ADD(SLOT1_TAG, coco_cart_slot1_4, nullptr)
  MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot1_cart_w))
  MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot1_nmi_w))
  MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot1_halt_w))
- MCFG_COCO_CARTRIDGE_ADD(SLOT2_TAG, coco_cart_slot1_3, nullptr)
+ MCFG_COCO_CARTRIDGE_ADD(SLOT2_TAG, coco_cart_slot1_4, nullptr)
  MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot2_cart_w))
  MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot2_nmi_w))
  MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot2_halt_w))
- MCFG_COCO_CARTRIDGE_ADD(SLOT3_TAG, coco_cart_slot1_3, nullptr)
+ MCFG_COCO_CARTRIDGE_ADD(SLOT3_TAG, coco_cart_slot1_4, nullptr)
  MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot3_cart_w))
  MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot3_nmi_w))
  MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot3_halt_w))
- MCFG_COCO_CARTRIDGE_ADD(SLOT4_TAG, coco_cart_slot4, "fdcv11")
+ MCFG_COCO_CARTRIDGE_ADD(SLOT4_TAG, coco_cart_slot1_4, "fdcv11")
  MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot4_cart_w))
  MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot4_nmi_w))
  MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_slot4_halt_w))
 MACHINE_CONFIG_END
 
-
 //**************************************************************************
 // GLOBAL VARIABLES
 //**************************************************************************
User avatar
No.13886
Tafoid
Administrator
Jun 6, 2017, 18:19
Awaiting Dev interaction
User avatar
No.13902
Pernod
Developer
Jun 8, 2017, 14:54
The MultiPak manual clearly states that 'the disk interface pak must be inserted into slot 4', but I agree that cp400_fdc and fdc should be added to coco_cart_slot4 in coco_multi.cpp.
User avatar
No.13913
star2root
Viewer
Jun 16, 2017, 02:35
The manual does make that statement, but the disk controller does in fact function in any of the 4 slots. There is nothing mechanical or electrical on the actual system that prevent the disk controller from working in any slot under BASIC. I tested this on an actual CoCo 1 and a CoCo 3.
User avatar
No.15532
star2root
Viewer
Oct 14, 2018, 08:06
This issue still exists as of version 0.202.
User avatar
No.16379
star2root
Viewer
Apr 25, 2019, 13:51
Any updates?
User avatar
No.16392
star2root
Viewer
Apr 28, 2019, 02:26
This issue still exists as of 0.209. My real CoCo still lets me insert the disk controller in any slot I want, and it works too, never mind what the manual says.
User avatar
No.18552
star2root
Viewer
Mar 15, 2021, 14:14
As of version 0.0229 I see MAME is still emulating the description in the manual, rather than the behavior or the actual hardware of the system.
User avatar
No.19203
star2root
Viewer
Sep 2, 2021, 00:14
Any updates on this issue?
User avatar
No.20534
star2root
Viewer
Sep 13, 2022, 17:53
This issue still exists in version 0.247. I provided a patch previously.
Here is an updated one for 0.247:
--- src/devices/bus/coco/cococart.cpp 2022-09-08 09:54:10.000000000 -0400
+++ src/devices/bus/coco/cococart.cpp 2022-09-08 11:06:27.000000000 -0400
@@ -832,7 +832,13 @@
 {
  // basic devices, on both the main slot and the Multi-Pak interface
- device.option_add_internal("banked_16k", COCO_PAK_BANKED);
- device.option_add_internal("pak", COCO_PAK);
+ device.option_add("pak", COCO_PAK);
+ 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("fdc", COCO_FDC);
+ device.option_add("fdcv11", COCO_FDC_V11);
  device.option_add("dcmodem", COCO_DCMODEM);
  device.option_add("gmc", COCO_PAK_GMC);
@@ -842,4 +848,5 @@
  device.option_add("orch90", COCO_ORCH90);
  device.option_add("ram", COCO_PAK_RAM);
  device.option_add("rs232", COCO_RS232);
  device.option_add("ssc", COCO_SSC);
@@ -855,21 +862,4 @@
 
 //-------------------------------------------------
-// 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
 //-------------------------------------------------

--- src/devices/bus/coco/cococart.h 2022-09-08 10:31:33.000000000 -0400
+++ src/devices/bus/coco/cococart.h 2022-09-08 10:32:53.000000000 -0400
@@ -229,5 +229,5 @@
 // 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_fdcs(device_slot_interface &device);
 void coco_cart_add_multi_pak(device_slot_interface &device);
 void dragon_cart_add_basic_devices(device_slot_interface &device);

--- src/mame/trs/coco12.cpp 2022-09-08 10:13:47.000000000 -0400
+++ src/mame/trs/coco12.cpp 2022-09-12 12:57:54.000000000 -0400
@@ -404,5 +405,5 @@
 {
  coco_cart_add_basic_devices(device);
- coco_cart_add_fdcs(device);
+// coco_cart_add_fdcs(device);
  coco_cart_add_multi_pak(device);
 }

--- src/devices/bus/coco/coco_ide.cpp 2022-09-08 10:24:56.000000000 -0400
+++ src/devices/bus/coco/coco_ide.cpp 2022-09-08 10:26:25.000000000 -0400
@@ -85,5 +85,5 @@
 {
  coco_cart_add_basic_devices(device);
- coco_cart_add_fdcs(device);
+// coco_cart_add_fdcs(device);
 }

--- src/devices/bus/coco/coco_multi.cpp.orig 2022-09-08 09:39:04.000000000 -0400
+++ src/devices/bus/coco/coco_multi.cpp 2022-09-08 10:24:11.000000000 -0400
@@ -173,5 +173,5 @@
 {
  coco_cart_add_basic_devices(device);
- coco_cart_add_fdcs(device);
+// coco_cart_add_fdcs(device);
 }
User avatar
No.20543
star2root
Viewer
Sep 18, 2022, 07:10
Is this EVER going to be fixed? I thought the purpose of MAME was to document the ACTUAL hardware behavior, not what the manual (mistakenly) says. Just because the manual says it does mean that it is really so. I think there is a statement somewhere that says the CoCo 3 can only be expanded to 512k of RAM, but despite what the Tandy documentation says, 2Mb RAM expansions did and still do exist. Just because certain hardware configurations weren't supported by the manufacturer doesn't mean they don't work and/or weren't used. So is MAME documenting and emulating the REAL system, or some imaginary machine described in a book?
User avatar
No.20547
cuavas
Administrator
Sep 18, 2022, 19:28
You really need to drop the attitude. When half the items on the recently updated bugs page are one guy’s obnoxious rants, that’s a problem. Consider this a warning.