From 390bb74da9c6997ebd7ef4c0b2716ea05ed909c9 Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 20 Nov 2020 12:35:18 -0500 Subject: [PATCH] Add dump of AppleCD 150 [DBWBP] --- scripts/src/bus.lua | 2 + src/devices/bus/nscsi/applecd.cpp | 92 +++++++++++++++++++++++++++++++ src/devices/bus/nscsi/applecd.h | 30 ++++++++++ src/devices/bus/nscsi/devices.cpp | 2 + 4 files changed, 126 insertions(+) create mode 100644 src/devices/bus/nscsi/applecd.cpp create mode 100644 src/devices/bus/nscsi/applecd.h diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 89f9a3d3a06..5ce0effcac9 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -2466,6 +2466,8 @@ end if (BUSES["NSCSI"]~=null) then files { + MAME_DIR .. "src/devices/bus/nscsi/applecd.cpp", + MAME_DIR .. "src/devices/bus/nscsi/applecd.h", MAME_DIR .. "src/devices/bus/nscsi/cd.cpp", MAME_DIR .. "src/devices/bus/nscsi/cd.h", MAME_DIR .. "src/devices/bus/nscsi/cdd2000.cpp", diff --git a/src/devices/bus/nscsi/applecd.cpp b/src/devices/bus/nscsi/applecd.cpp new file mode 100644 index 00000000000..4f526de85fa --- /dev/null +++ b/src/devices/bus/nscsi/applecd.cpp @@ -0,0 +1,92 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/******************************************************************************* + + Skeleton device for Apple external CD-ROM drives. + + PCB: 1-631-957-15 + + Microcontrollers: + - Intel S80C31-1 + - Mitsubishi M37450M8-452FP © SONY '91 + + Memories: + - National NMC27C256Q (or BQ) 32,768x8 EEPROM (for 80C31) + - Sony CXK5864BM-12L 8,192x8 Static RAM (x2) + (one near EEPROM, one between LC8951 and M37450M8) + - Fujitsu MB81464-12 65,536x4 Dynamic RAM (x2: for CXD1184) + - Fujitsu MB81C79A-45 8,192x9 Static RAM (for LC8951) + - Sony CXK5816MS-12L 2,048x8 Static RAM (near CXD1135) + + Other major digital ICs: + - Sony CXD1180AQ SCSI Controller + - Sony CXD1184Q + - Sanyo LC8951 CD-ROM Error Correction & Host Interface Processor + - Sony CXD1135Q + + Linear ICs: + - Toshiba TC9154AP Dual Volume Control + - Burr-Brown PCM67U Dual Audio DAC + - Sony CXA1182Q-Z CD Servo Signal Processor + - Sony CXA1081M + - Toshiba TA8406P Dual Power Operational Amplifier (x3) + + XTALs: 12A KSS2A (80C31?), 20A KSS2A (CXD1184), D167 (LC8951?) + +*******************************************************************************/ + +#include "emu.h" +#include "applecd.h" + +#include "cpu/mcs51/mcs51.h" +#include "cpu/m6502/m3745x.h" +#include "machine/ncr5380n.h" + +DEFINE_DEVICE_TYPE(APPLECD150, applecd150_device, "aplcd150", "AppleCD 150") + +applecd150_device::applecd150_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, APPLECD150, tag, owner, clock) + , nscsi_slot_card_interface(mconfig, *this, "scsic") +{ +} + +void applecd150_device::device_start() +{ +} + +void applecd150_device::prog_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("eeprom", 0); +} + +void applecd150_device::ext_map(address_map &map) +{ + map(0xc020, 0xc027).m("scsic", FUNC(cxd1180_device::map)); +} + +void applecd150_device::device_add_mconfig(machine_config &config) +{ + i80c31_device &mcu1(I80C31(config, "mcu1", 12_MHz_XTAL)); + mcu1.set_addrmap(AS_PROGRAM, &applecd150_device::prog_map); + mcu1.set_addrmap(AS_IO, &applecd150_device::ext_map); + + M37450(config, "mcu2", 16.9344_MHz_XTAL / 2).set_disable(); + + CXD1180(config, "scsic").irq_handler().set_inputline("mcu1", MCS51_INT1_LINE); + + //LC8951(config, "cdintf", 16.9344_MHz_XTAL); +} + +ROM_START(aplcd150) + ROM_REGION(0x8000, "eeprom", 0) + ROM_LOAD("apl_1.8g_1289.ic303", 0x0000, 0x8000, CRC(54ebf81f) SHA1(e4cd656e2a433229543e874a29f1567758170fc6)) + + ROM_REGION(0x4000, "mcu2", 0) + ROM_LOAD("m37450m8-452fp.ic201", 0x0000, 0x4000, NO_DUMP) +ROM_END + +const tiny_rom_entry *applecd150_device::device_rom_region() const +{ + return ROM_NAME(aplcd150); +} + diff --git a/src/devices/bus/nscsi/applecd.h b/src/devices/bus/nscsi/applecd.h new file mode 100644 index 00000000000..577dfcf5b01 --- /dev/null +++ b/src/devices/bus/nscsi/applecd.h @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:AJR + +#ifndef MAME_BUS_NSCSI_APPLECD_H +#define MAME_BUS_NSCSI_APPLECD_H + +#pragma once + +#include "machine/nscsi_bus.h" + +class applecd150_device : public device_t, public nscsi_slot_card_interface +{ +public: + applecd150_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 prog_map(address_map &map); + void ext_map(address_map &map); +}; + +DECLARE_DEVICE_TYPE(APPLECD150, applecd150_device) + +#endif // MAME_BUS_NSCSI_APPLECD_H diff --git a/src/devices/bus/nscsi/devices.cpp b/src/devices/bus/nscsi/devices.cpp index b4ed8530db4..cc44339902a 100644 --- a/src/devices/bus/nscsi/devices.cpp +++ b/src/devices/bus/nscsi/devices.cpp @@ -3,6 +3,7 @@ #include "emu.h" +#include "bus/nscsi/applecd.h" #include "bus/nscsi/cd.h" #include "bus/nscsi/cdd2000.h" #include "bus/nscsi/cdrn820s.h" @@ -21,4 +22,5 @@ void default_scsi_devices(device_slot_interface &device) device.option_add("cdrn820s", CDRN820S); device.option_add("cdd2000", CDD2000); device.option_add("smoc501", SMOC501); + device.option_add("aplcd150", APPLECD150); };