From 1eb3d397aedb20718ac1c08a49cf45c7a05ef4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felipe=20Corr=C3=AAa=20da=20Silva=20Sanches?= Date: Wed, 22 Nov 2017 10:49:25 -0200 Subject: [PATCH] new CoCo fdc clone: Codimex CD6809_FDC (1986) --- src/devices/bus/coco/coco_fdc.cpp | 34 +++++++++++++++++++++++++++++++ src/devices/bus/coco/coco_fdc.h | 1 + src/devices/bus/coco/cococart.h | 1 - src/mame/drivers/coco12.cpp | 15 +++++++++++--- 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/devices/bus/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp index 89a9d8bd548..64268c8b17b 100644 --- a/src/devices/bus/coco/coco_fdc.cpp +++ b/src/devices/bus/coco/coco_fdc.cpp @@ -523,3 +523,37 @@ namespace } DEFINE_DEVICE_TYPE(CP400_FDC, cp400_fdc_device, "cp400_fdc", "CP400 FDC") + +//************************************************************************** +// Codimex CD-6809 FDC (1986) +// +// Seems to be a clone of the JFD-COCO originally manufactured by J&M +// More ifo at: http://amxproject.com/?p=2747 +//************************************************************************** + +ROM_START(cd6809_fdc) + ROM_REGION(0x4000, "eprom", ROMREGION_ERASE00) + ROM_LOAD("cd6809dsk.u16", 0x0000, 0x2000, CRC(3c35bda8) SHA1(9b2eec25188bed4326b84739a666435884e4ddf4)) +ROM_END + +namespace +{ + class cd6809_fdc_device : public coco_fdc_device_base + { + public: + // construction/destruction + cd6809_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : coco_fdc_device_base(mconfig, CD6809_FDC, tag, owner, clock) + { + } + + protected: + // optional information overrides + virtual const tiny_rom_entry *device_rom_region() const override + { + return ROM_NAME(cd6809_fdc); + } + }; +} + +DEFINE_DEVICE_TYPE(CD6809_FDC, cd6809_fdc_device, "cd6809_fdc", "CD6809 FDC") diff --git a/src/devices/bus/coco/coco_fdc.h b/src/devices/bus/coco/coco_fdc.h index c9525831575..11343ec2610 100644 --- a/src/devices/bus/coco/coco_fdc.h +++ b/src/devices/bus/coco/coco_fdc.h @@ -65,5 +65,6 @@ extern const device_type COCO_FDC; extern const device_type COCO_FDC_V11; extern const device_type COCO3_HDB1; extern const device_type CP400_FDC; +extern const device_type CD6809_FDC; #endif // MAME_BUS_COCO_COCO_FDC_H diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h index 38e4e21d3d7..e22e4c55e99 100644 --- a/src/devices/bus/coco/cococart.h +++ b/src/devices/bus/coco/cococart.h @@ -215,5 +215,4 @@ private: #define MCFG_COCO_CARTRIDGE_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) - #endif // MAME_BUS_COCO_COCOCART_H diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp index c29ab6a47fd..3980fa017f1 100644 --- a/src/mame/drivers/coco12.cpp +++ b/src/mame/drivers/coco12.cpp @@ -354,6 +354,7 @@ SLOT_INTERFACE_START( coco_cart ) SLOT_INTERFACE("fdcv11", COCO_FDC_V11) SLOT_INTERFACE("cc3hdb1", COCO3_HDB1) SLOT_INTERFACE("cp400_fdc", CP400_FDC) + SLOT_INTERFACE("cd6809_fdc", CD6809_FDC) SLOT_INTERFACE("rs232", COCO_RS232) SLOT_INTERFACE("dcmodem", COCO_DCMODEM) SLOT_INTERFACE("orch90", COCO_ORCH90) @@ -544,6 +545,14 @@ static MACHINE_CONFIG_DERIVED( t4426, coco2 ) MCFG_SLOT_FIXED(true) // This cart is fixed so no way to change it MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( cd6809, coco ) + MCFG_COCO_CARTRIDGE_REMOVE(CARTRIDGE_TAG) + MCFG_COCO_CARTRIDGE_ADD(CARTRIDGE_TAG, coco_cart, "cd6809_fdc") + MCFG_COCO_CARTRIDGE_CART_CB(WRITELINE(coco_state, cart_w)) + MCFG_COCO_CARTRIDGE_NMI_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_NMI)) + MCFG_COCO_CARTRIDGE_HALT_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_HALT)) +MACHINE_CONFIG_END + //************************************************************************** // ROMS //************************************************************************** @@ -581,7 +590,7 @@ ROM_START(cp400c2) ROM_LOAD("cp400bas.rom", 0x0000, 0x4000, CRC(878396a5) SHA1(292c545da3c77978e043b00a3dbc317201d18c3b)) ROM_END -ROM_START(mx1600 ) +ROM_START(mx1600) ROM_REGION(0x8000,MAINCPU_TAG,0) ROM_LOAD("mx1600bas.rom", 0x2000, 0x2000, CRC(d918156e) SHA1(70a464edf3a654ed4ffe687e6dee4f0d2acc758b)) ROM_LOAD("mx1600extbas.rom", 0x0000, 0x2000, CRC(322a3d58) SHA1(9079a477c3f22e46cebb1e68b61df5bd607c71a4)) @@ -623,7 +632,7 @@ COMP( 1985?, coco2b, coco, 0, coco2b, coco, coco12_state, 0, COMP( 1983, cp400, coco, 0, cp400, coco, coco12_state, 0, "Prológica", "CP400", 0 ) COMP( 1985, cp400c2, coco, 0, cp400, cp400c2, coco12_state, 0, "Prológica", "CP400 Color II", 0 ) COMP( 1983, lzcolor64, coco, 0, coco, coco, coco12_state, 0, "Novo Tempo / LZ Equipamentos", "Color64", 0 ) -COMP( 1983, cd6809_83, coco, 0, coco, coco, coco12_state, 0, "Codimex", "CD-6809", 0 ) -COMP( 1984, cd6809_84, coco, 0, coco, coco, coco12_state, 0, "Codimex", "CD-6809", 0 ) +COMP( 1983, cd6809_83, coco, 0, cd6809, coco, coco12_state, 0, "Codimex", "CD-6809 (1983 version)", 0 ) +COMP( 1984, cd6809_84, coco, 0, cd6809, coco, coco12_state, 0, "Codimex", "CD-6809 (1984 version)", 0 ) COMP( 1984, mx1600, coco, 0, coco, coco, coco12_state, 0, "Dynacom", "MX-1600", 0 ) COMP( 1986, t4426, coco, 0, t4426, coco, coco12_state, 0, "Terco AB", "Terco 4426 CNC Programming station", 0 )