diff options
author | 2019-07-11 17:05:05 -0400 | |
---|---|---|
committer | 2019-07-11 17:08:12 -0400 | |
commit | 4105acd1edded88dc211ceaa2259df64ea8756d8 (patch) | |
tree | fecfe4b8a17fe42730233d54e3bb94fb4dec5214 /src | |
parent | 60d4fea8c8c2af49b8c388c36aaf04b3095b13da (diff) |
cw7501, cdr4201: Transform skeleton drivers into SCSI bus devices
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/bus/nscsi/cw7501.cpp | 96 | ||||
-rw-r--r-- | src/devices/bus/nscsi/cw7501.h | 52 | ||||
-rw-r--r-- | src/devices/bus/nscsi/devices.cpp | 3 | ||||
-rw-r--r-- | src/mame/drivers/cdr4210.cpp | 114 | ||||
-rw-r--r-- | src/mame/mame.lst | 4 | ||||
-rw-r--r-- | src/mame/mess.flt | 1 |
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 |