diff options
author | 2021-04-14 09:33:59 +0200 | |
---|---|---|
committer | 2021-04-14 09:34:44 +0200 | |
commit | 6cbee7f176d7ae66cbcb51d256426756e1859240 (patch) | |
tree | 1edea10ed44ca06ef7ad775397e7815388b39483 | |
parent | 619559516f7df2f60150bf4277aaaf9bd3f843de (diff) |
cdu415: Add skeleton
-rw-r--r-- | scripts/src/bus.lua | 2 | ||||
-rw-r--r-- | src/devices/bus/nscsi/cdu415.cpp | 72 | ||||
-rw-r--r-- | src/devices/bus/nscsi/cdu415.h | 38 | ||||
-rw-r--r-- | src/devices/bus/nscsi/cdu75s.cpp | 8 | ||||
-rw-r--r-- | src/devices/bus/nscsi/devices.cpp | 2 |
5 files changed, 118 insertions, 4 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index e30a51e2c2e..2467b670916 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -2505,6 +2505,8 @@ if (BUSES["NSCSI"]~=null) then MAME_DIR .. "src/devices/bus/nscsi/cdrn820s.h", MAME_DIR .. "src/devices/bus/nscsi/cdu75s.cpp", MAME_DIR .. "src/devices/bus/nscsi/cdu75s.h", + MAME_DIR .. "src/devices/bus/nscsi/cdu415.cpp", + MAME_DIR .. "src/devices/bus/nscsi/cdu415.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", diff --git a/src/devices/bus/nscsi/cdu415.cpp b/src/devices/bus/nscsi/cdu415.cpp new file mode 100644 index 00000000000..a3b733b01d7 --- /dev/null +++ b/src/devices/bus/nscsi/cdu415.cpp @@ -0,0 +1,72 @@ +// license:BSD-3-Clause +// copyright-holders:Olivier Galibert +/******************************************************************************* + + Skeleton device for Sony CDU415 cdrom reader + +*******************************************************************************/ + +// Chips: +// - IC201: H8/3032 - main mcu, 64k internal rom +// - IC202: CXD1804AR - cdrom decoder and scsi interface +// - IC203: V53C16126HK40 - DRAM 128k*16 +// - IC205: BU6243K - ? +// - IC207: AM28F512 - Firmware + +#include "emu.h" +#include "cdu415.h" + +DEFINE_DEVICE_TYPE(CDU415, cdu415_device, "cdu415", "Sony CDU415 CD-R") + +cdu415_device::cdu415_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, CDU415, tag, owner, clock) + , nscsi_slot_card_interface(mconfig, *this, "cxd1804ar") + , m_mcu(*this, "mcu") + , m_scsi(*this, "cxd1804ar") + , m_rom(*this, "mcu") +{ +} + +void cdu415_device::device_start() +{ + // The reset vector is the only obvious one there. + m_rom[0] = m_rom[0x8000]; + m_rom[1] = m_rom[0x8001]; +} + +void cdu415_device::mem_map(address_map &map) +{ + map(0x00000, 0x0ffff).rom().region("mcu", 0); + map(0x20000, 0x2ffff).rom().region("mcu", 0x10000); +} + +void cdu415_device::io_map(address_map &map) +{ +} + +void cdu415_device::device_add_mconfig(machine_config &config) +{ + H83032(config, m_mcu, 10000000); + m_mcu->set_addrmap(AS_PROGRAM, &cdu415_device::mem_map); + m_mcu->set_addrmap(AS_IO, &cdu415_device::io_map); + + NCR53C94(config, m_scsi, 25'000'000); // Temporary placeholder +} + +ROM_START(cdu415) + ROM_REGION(0x20000, "mcu", 0) + ROM_FILL(0x00000, 0x10000, 0x00) // Internal rom not yet dumped + ROM_LOAD("cdu415.bin", 0x10000, 0x10000, CRC(9873b898) SHA1(72d0b192efc32f7c8985dd96df3e346c57a236e7)) +ROM_END + +const tiny_rom_entry *cdu415_device::device_rom_region() const +{ + return ROM_NAME(cdu415); +} + +u8 cdu415_device::jumpers_r() +{ + u32 jumpers_id = strtol(owner()->basetag(), nullptr, 16); + return (jumpers_id ^ 7) << 1; +} + diff --git a/src/devices/bus/nscsi/cdu415.h b/src/devices/bus/nscsi/cdu415.h new file mode 100644 index 00000000000..2874c69a8cf --- /dev/null +++ b/src/devices/bus/nscsi/cdu415.h @@ -0,0 +1,38 @@ +// license:BSD-3-Clause +// copyright-holders:O. Galibert + +#ifndef MAME_BUS_NSCSI_CDU415_H +#define MAME_BUS_NSCSI_CDU415_H + +#pragma once + +#include "machine/nscsi_bus.h" +#include "cpu/h8/h83032.h" +#include "machine/ncr5390.h" + +class cdu415_device : public device_t, public nscsi_slot_card_interface +{ +public: + cdu415_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + static constexpr feature_type unemulated_features() { return feature::DISK; } + +protected: + 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: + void mem_map(address_map &map); + void io_map(address_map &map); + + required_device<h83032_device> m_mcu; + required_device<ncr53c94_device> m_scsi; + required_region_ptr<u16> m_rom; + + u8 jumpers_r(); +}; + +DECLARE_DEVICE_TYPE(CDU415, cdu415_device) + +#endif // MAME_BUS_NSCSI_CDU415_H diff --git a/src/devices/bus/nscsi/cdu75s.cpp b/src/devices/bus/nscsi/cdu75s.cpp index 3d5618e3575..9d77fe226d3 100644 --- a/src/devices/bus/nscsi/cdu75s.cpp +++ b/src/devices/bus/nscsi/cdu75s.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:AJR +// copyright-holders:Olivier Galibert /******************************************************************************* Skeleton device for Sony/Apple CDU75S 2x cdrom reader @@ -7,7 +7,7 @@ *******************************************************************************/ // Chips: -// - IC101: CXA1841Q - ? probably something related to audio +// - IC101: CXA1841Q - RF signal analog amplifier // - IC102: CXA1182Q-Z - servo control // - IC103: CXD2510Q - CD DSP // - IC105: BU4053BCF - analog mux/demux @@ -22,7 +22,7 @@ #include "emu.h" #include "cdu75s.h" -DEFINE_DEVICE_TYPE(CDU75S, cdu75s_device, "cdu75s", "Philips CDU75S CD-R") +DEFINE_DEVICE_TYPE(CDU75S, cdu75s_device, "cdu75s", "Sony/Apple CDU75S CD-R") cdu75s_device::cdu75s_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : device_t(mconfig, CDU75S, tag, owner, clock) @@ -64,7 +64,7 @@ void cdu75s_device::mem_map(address_map &map) map(0x00000, 0x1ffff).rom().region("mcu", 0); map(0x40000, 0x4000f).m(m_scsi, FUNC(ncr53c94_device::map)); - map(0x60000, 0x60007); // General i/o? + map(0x60000, 0x60007); // CXD8532Q map(0x60005, 0x60005).r(FUNC(cdu75s_device::jumpers_r)); map(0xc0000, 0xc003f); // CXD1808AQ diff --git a/src/devices/bus/nscsi/devices.cpp b/src/devices/bus/nscsi/devices.cpp index 98d6db0553a..92df70735d1 100644 --- a/src/devices/bus/nscsi/devices.cpp +++ b/src/devices/bus/nscsi/devices.cpp @@ -8,6 +8,7 @@ #include "bus/nscsi/cdd2000.h" #include "bus/nscsi/cdrn820s.h" #include "bus/nscsi/cdu75s.h" +#include "bus/nscsi/cdu415.h" #include "bus/nscsi/cw7501.h" #include "bus/nscsi/hd.h" #include "bus/nscsi/s1410.h" @@ -23,6 +24,7 @@ void default_scsi_devices(device_slot_interface &device) device.option_add("cdrn820s", CDRN820S); device.option_add("cdd2000", CDD2000); device.option_add("cdu75s", CDU75S); + device.option_add("cdu415", CDU415); device.option_add("smoc501", SMOC501); device.option_add("aplcd150", APPLECD150); }; |