mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
cw7501, cdr4201: Transform skeleton drivers into SCSI bus devices
This commit is contained in:
parent
60d4fea8c8
commit
4105acd1ed
@ -2152,6 +2152,8 @@ if (BUSES["NSCSI"]~=null) then
|
||||
files {
|
||||
MAME_DIR .. "src/devices/bus/nscsi/cd.cpp",
|
||||
MAME_DIR .. "src/devices/bus/nscsi/cd.h",
|
||||
MAME_DIR .. "src/devices/bus/nscsi/cw7501.cpp",
|
||||
MAME_DIR .. "src/devices/bus/nscsi/cw7501.h",
|
||||
MAME_DIR .. "src/devices/bus/nscsi/devices.cpp",
|
||||
MAME_DIR .. "src/devices/bus/nscsi/devices.h",
|
||||
MAME_DIR .. "src/devices/bus/nscsi/hd.cpp",
|
||||
|
@ -3885,7 +3885,6 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/chaos.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/cd2650.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/cdc721.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/cdr4210.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/cit101.cpp",
|
||||
MAME_DIR .. "src/mame/machine/cit101_kbd.cpp",
|
||||
MAME_DIR .. "src/mame/machine/cit101_kbd.h",
|
||||
|
96
src/devices/bus/nscsi/cw7501.cpp
Normal file
96
src/devices/bus/nscsi/cw7501.cpp
Normal file
@ -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
|
52
src/devices/bus/nscsi/cw7501.h
Normal file
52
src/devices/bus/nscsi/cw7501.h
Normal file
@ -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
|
@ -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);
|
||||
};
|
||||
|
@ -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)
|
@ -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
|
||||
|
@ -135,7 +135,6 @@ ccs2810.cpp
|
||||
ccs300.cpp
|
||||
cd2650.cpp
|
||||
cdc721.cpp
|
||||
cdr4210.cpp
|
||||
cfx9850.cpp
|
||||
cgc7900.cpp
|
||||
cgenie.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user