summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-07-11 17:05:05 -0400
committer AJR <ajrhacker@users.noreply.github.com>2019-07-11 17:08:12 -0400
commit4105acd1edded88dc211ceaa2259df64ea8756d8 (patch)
treefecfe4b8a17fe42730233d54e3bb94fb4dec5214 /src
parent60d4fea8c8c2af49b8c388c36aaf04b3095b13da (diff)
cw7501, cdr4201: Transform skeleton drivers into SCSI bus devices
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/nscsi/cw7501.cpp96
-rw-r--r--src/devices/bus/nscsi/cw7501.h52
-rw-r--r--src/devices/bus/nscsi/devices.cpp3
-rw-r--r--src/mame/drivers/cdr4210.cpp114
-rw-r--r--src/mame/mame.lst4
-rw-r--r--src/mame/mess.flt1
6 files changed, 151 insertions, 119 deletions
diff --git a/src/devices/bus/nscsi/cw7501.cpp b/src/devices/bus/nscsi/cw7501.cpp
new file mode 100644
index 00000000000..c3ff2286f57
--- /dev/null
+++ b/src/devices/bus/nscsi/cw7501.cpp
@@ -0,0 +1,96 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/*******************************************************************************
+
+ Skeleton device for Panasonic CW-7501 CD-R drive and clones.
+
+*******************************************************************************/
+
+#include "emu.h"
+#include "bus/nscsi/cw7501.h"
+#include "machine/ncr5390.h"
+
+DEFINE_DEVICE_TYPE(CW7501, cw7501_device, "cw7501", "Panasonic CW-7501 CD-R")
+DEFINE_DEVICE_TYPE(CDR4210, cdr4210_device, "cdr4210", "Creative Technology Blaster CD-R 4210")
+
+cw7501_device::cw7501_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , nscsi_slot_card_interface(mconfig, *this, "scsic")
+ , m_cdcpu(*this, "cdcpu")
+{
+}
+
+cw7501_device::cw7501_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : cw7501_device(mconfig, CW7501, tag, owner, clock)
+{
+}
+
+cdr4210_device::cdr4210_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : cw7501_device(mconfig, CDR4210, tag, owner, clock)
+{
+}
+
+void cw7501_device::device_start()
+{
+ m_mystery_address = 0;
+
+ save_item(NAME(m_mystery_address));
+}
+
+u8 cw7501_device::mystery_data_r()
+{
+ if (!machine().side_effects_disabled())
+ logerror("%s: Reading from mystery register #%02X\n", machine().describe_context(), m_mystery_address);
+
+ return 0;
+}
+
+void cw7501_device::mystery_data_w(u8 data)
+{
+ logerror("%s: Writing %02X to mystery register #%02X\n", machine().describe_context(), data, m_mystery_address);
+}
+
+void cw7501_device::mystery_address_w(u8 data)
+{
+ m_mystery_address = data;
+}
+
+void cw7501_device::mem_map(address_map &map)
+{
+ map(0x000880, 0x007fff).ram();
+ map(0x008000, 0x03ffff).rom().region("flash", 0x08000);
+ map(0x050000, 0x050000).w(FUNC(cw7501_device::mystery_address_w));
+ map(0x050001, 0x050001).rw(FUNC(cw7501_device::mystery_data_r), FUNC(cw7501_device::mystery_data_w));
+ map(0x058000, 0x05800f).m("scsic", FUNC(ncr53cf94_device::map));
+ map(0x060000, 0x060003).noprw(); // ?
+}
+
+void cw7501_device::device_add_mconfig(machine_config &config)
+{
+ M37710S4(config, m_cdcpu, 12'500'000); // type and clock are total guesses
+ m_cdcpu->set_addrmap(AS_PROGRAM, &cw7501_device::mem_map);
+
+ NCR53CF94(config, "scsic", 25'000'000); // type and clock guessed
+}
+
+ROM_START(cw7501)
+ ROM_REGION16_LE(0x40000, "flash", 0)
+ ROM_LOAD("mk200.bin", 0x00000, 0x40000, CRC(12efd802) SHA1(2986ee5eedbe0cb662a9a7e7fa4e6ca7ccd8c539)) // v2.00 (1996)
+ROM_END
+
+const tiny_rom_entry *cw7501_device::device_rom_region() const
+{
+ return ROM_NAME(cw7501);
+}
+
+ROM_START(cdr4210)
+ ROM_REGION16_LE(0x40000, "flash", 0)
+ ROM_LOAD("cr113.bin", 0x00000, 0x40000, CRC(fd2faff9) SHA1(6aafdedf12240ad347427287c0db289f90bd064d)) // v1.13 (1996)
+ROM_END
+
+const tiny_rom_entry *cdr4210_device::device_rom_region() const
+{
+ return ROM_NAME(cdr4210);
+}
+
+// another clone: Plasmon CDR 4240
diff --git a/src/devices/bus/nscsi/cw7501.h b/src/devices/bus/nscsi/cw7501.h
new file mode 100644
index 00000000000..0b785c4d3ba
--- /dev/null
+++ b/src/devices/bus/nscsi/cw7501.h
@@ -0,0 +1,52 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+
+#ifndef MAME_BUS_NSCSI_CW7501
+#define MAME_BUS_NSCSI_CW7501 1
+
+#pragma once
+
+#include "cpu/m37710/m37710.h"
+#include "machine/nscsi_bus.h"
+
+class cw7501_device : public device_t, public nscsi_slot_card_interface
+{
+public:
+ cw7501_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ static constexpr feature_type unemulated_features() { return feature::DISK; }
+
+protected:
+ cw7501_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ virtual void device_start() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+private:
+ u8 mystery_data_r();
+ void mystery_data_w(u8 data);
+ void mystery_address_w(u8 data);
+
+ void mem_map(address_map &map);
+
+ required_device<m37710s4_device> m_cdcpu;
+
+ u8 m_mystery_address;
+};
+
+class cdr4210_device : public cw7501_device
+{
+public:
+ cdr4210_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ static constexpr feature_type unemulated_features() { return feature::DISK; }
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
+DECLARE_DEVICE_TYPE(CW7501, cw7501_device)
+DECLARE_DEVICE_TYPE(CDR4210, cdr4210_device)
+
+#endif // MAME_BUS_NSCSI_CW7501
diff --git a/src/devices/bus/nscsi/devices.cpp b/src/devices/bus/nscsi/devices.cpp
index 79bd99a7e54..5013bb12795 100644
--- a/src/devices/bus/nscsi/devices.cpp
+++ b/src/devices/bus/nscsi/devices.cpp
@@ -2,6 +2,7 @@
// copyright-holders:AJR
#include "bus/nscsi/cd.h"
+#include "bus/nscsi/cw7501.h"
#include "bus/nscsi/hd.h"
#include "bus/nscsi/s1410.h"
@@ -10,4 +11,6 @@ void default_scsi_devices(device_slot_interface &device)
device.option_add("cdrom", NSCSI_CDROM);
device.option_add("harddisk", NSCSI_HARDDISK);
device.option_add("s1410", NSCSI_S1410);
+ device.option_add("cw7501", CW7501);
+ device.option_add("cdr4210", CDR4210);
};
diff --git a/src/mame/drivers/cdr4210.cpp b/src/mame/drivers/cdr4210.cpp
deleted file mode 100644
index 8dbf7d733f9..00000000000
--- a/src/mame/drivers/cdr4210.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/*******************************************************************************
-
- Skeleton driver for CDR4210 SCSI CD-R drive by Creative Technology Ltd.
-
-*******************************************************************************/
-
-#include "emu.h"
-#include "cpu/m37710/m37710.h"
-#include "machine/ncr5390.h"
-#include "machine/nscsi_bus.h"
-
-class cdr4210_state : public driver_device
-{
-public:
- cdr4210_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- {
- }
-
- void cdr4210(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- u8 mystery_data_r();
- void mystery_data_w(u8 data);
- void mystery_address_w(u8 data);
-
- void mem_map(address_map &map);
-
- required_device<m37710s4_device> m_maincpu;
-
- u8 m_mystery_address;
-};
-
-void cdr4210_state::machine_start()
-{
- m_mystery_address = 0;
-
- save_item(NAME(m_mystery_address));
-}
-
-u8 cdr4210_state::mystery_data_r()
-{
- if (!machine().side_effects_disabled())
- logerror("%s: Reading from mystery register #%02X\n", machine().describe_context(), m_mystery_address);
-
- return 0;
-}
-
-void cdr4210_state::mystery_data_w(u8 data)
-{
- logerror("%s: Writing %02X to mystery register #%02X\n", machine().describe_context(), data, m_mystery_address);
-}
-
-void cdr4210_state::mystery_address_w(u8 data)
-{
- m_mystery_address = data;
-}
-
-void cdr4210_state::mem_map(address_map &map)
-{
- map(0x000880, 0x007fff).ram();
- map(0x008000, 0x03ffff).rom().region("flash", 0x08000);
- map(0x050000, 0x050000).w(FUNC(cdr4210_state::mystery_address_w));
- map(0x050001, 0x050001).rw(FUNC(cdr4210_state::mystery_data_r), FUNC(cdr4210_state::mystery_data_w));
- map(0x058000, 0x05800f).m("scsi:7:scsic", FUNC(ncr53cf94_device::map));
- map(0x060000, 0x060003).noprw(); // ?
-}
-
-static INPUT_PORTS_START(cdr4210)
-INPUT_PORTS_END
-
-static void scsi_devices(device_slot_interface &device)
-{
- device.option_add_internal("scsic", NCR53CF94).clock(25'000'000); // type guessed
-}
-
-void cdr4210_state::cdr4210(machine_config &config)
-{
- M37710S4(config, m_maincpu, 12'500'000); // type and clock are total guesses
- m_maincpu->set_addrmap(AS_PROGRAM, &cdr4210_state::mem_map);
-
- NSCSI_BUS(config, "scsi");
- NSCSI_CONNECTOR(config, "scsi:0", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:1", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:2", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:3", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:4", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:5", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:6", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:7", scsi_devices, "scsic", true);
-}
-
-ROM_START(cdr4210)
- ROM_REGION16_LE(0x40000, "flash", 0)
- ROM_LOAD("cr113.bin", 0x00000, 0x40000, CRC(fd2faff9) SHA1(6aafdedf12240ad347427287c0db289f90bd064d))
-ROM_END
-
-// this should probably be the parent
-ROM_START(cw7501)
- ROM_REGION16_LE(0x40000, "flash", 0)
- ROM_LOAD("mk200.bin", 0x00000, 0x40000, CRC(12efd802) SHA1(2986ee5eedbe0cb662a9a7e7fa4e6ca7ccd8c539))
-ROM_END
-
-// another clone: Plasmon CDR 4240
-
-
-SYST(1996, cdr4210, 0, 0, cdr4210, cdr4210, cdr4210_state, empty_init, "Creative Technology", "CD-R 4210 (v1.13)", MACHINE_IS_SKELETON)
-SYST(1996, cw7501, cdr4210, 0, cdr4210, cdr4210, cdr4210_state, empty_init, "Panasonic", "CW-7501 (v2.00)", MACHINE_IS_SKELETON)
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 35056f023fd..abb9ea2e4d4 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -9740,10 +9740,6 @@ quizard4 // (c) TAB Austria 1998
quizard4_40 // (c) TAB Austria 1997
quizard4_41 // (c) TAB Austria 1998
-@source:cdr4210.cpp
-cdr4210 //
-cw7501 // 1996 Panasonic
-
@source:cedar_magnet.cpp
cedmag
mag_time
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index d9544bbbc2e..20fd3854b01 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -135,7 +135,6 @@ ccs2810.cpp
ccs300.cpp
cd2650.cpp
cdc721.cpp
-cdr4210.cpp
cfx9850.cpp
cgc7900.cpp
cgenie.cpp