From cc2bc7700499c27da0ca13317396a4a4d326c446 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 17 May 2023 14:09:20 -0400 Subject: Add dump and skeleton device for Conner Peripherals CD-2024 hard disk [Bitsavers] --- scripts/src/bus.lua | 2 + src/devices/bus/ata/atadev.cpp | 2 + src/devices/bus/ata/cp2024.cpp | 101 +++++++++++++++++++++++++++++++++++++++++ src/devices/bus/ata/cp2024.h | 40 ++++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 src/devices/bus/ata/cp2024.cpp create mode 100644 src/devices/bus/ata/cp2024.h diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 57f321e2af4..bf5aef132eb 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -481,6 +481,8 @@ if (BUSES["ATA"]~=null) then MAME_DIR .. "src/devices/bus/ata/atapicdr.h", MAME_DIR .. "src/devices/bus/ata/atapihle.cpp", MAME_DIR .. "src/devices/bus/ata/atapihle.h", + MAME_DIR .. "src/devices/bus/ata/cp2024.cpp", + MAME_DIR .. "src/devices/bus/ata/cp2024.h", MAME_DIR .. "src/devices/bus/ata/cr589.cpp", MAME_DIR .. "src/devices/bus/ata/cr589.h", MAME_DIR .. "src/devices/bus/ata/gdrom.cpp", diff --git a/src/devices/bus/ata/atadev.cpp b/src/devices/bus/ata/atadev.cpp index d4e3e3cd3fa..811bed7a938 100644 --- a/src/devices/bus/ata/atadev.cpp +++ b/src/devices/bus/ata/atadev.cpp @@ -10,6 +10,7 @@ #include "atadev.h" #include "atapicdr.h" +#include "cp2024.h" #include "idehd.h" #include "px320a.h" @@ -71,4 +72,5 @@ void ata_devices(device_slot_interface &device) device.option_add("cdrom", ATAPI_CDROM); device.option_add("px320a", PX320A); device.option_add("cf", ATA_CF); + device.option_add("cp2024", CP2024); } diff --git a/src/devices/bus/ata/cp2024.cpp b/src/devices/bus/ata/cp2024.cpp new file mode 100644 index 00000000000..89e0251ad34 --- /dev/null +++ b/src/devices/bus/ata/cp2024.cpp @@ -0,0 +1,101 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/******************************************************************************* + + Skeleton device for Conner Peripherals CP-2024 2.5″ IDE hard disk drive. + + Codename: "Kato" + ICs: Linear Technology LT1072 (DIP8) + Cirrus Logic SH110-00PC (PLCC28) + Cirrus Logic CL-SH265-25QC-C (QFP100) + Microchip 27C256-20/L (PLCC32) + Motorola SC80566FN (PLCC52) + Texas Instruments LS01 (SOP14) + S-MOS 61100-003 (QFP64) + Cirrus Logic 61094-4 (PLCC44) + LSI Logic(?) 61089-003 (PLCC52) + +*******************************************************************************/ + +#include "emu.h" +#include "cp2024.h" +#include "cpu/mc68hc11/mc68hc11.h" + +DEFINE_DEVICE_TYPE(CP2024, cp2024_device, "cp2024", "Conner Peripherals CP-2024 hard disk") + +cp2024_device::cp2024_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, CP2024, tag, owner, clock) + , device_ata_interface(mconfig, *this) +{ +} + +void cp2024_device::device_start() +{ +} + + +u16 cp2024_device::read_dma() +{ + return 0; +} + +u16 cp2024_device::read_cs0(offs_t offset, u16 mem_mask) +{ + return 0; +} + +u16 cp2024_device::read_cs1(offs_t offset, u16 mem_mask) +{ + return 0; +} + +void cp2024_device::write_dma(u16 data) +{ +} + +void cp2024_device::write_cs0(offs_t offset, u16 data, u16 mem_mask) +{ +} + +void cp2024_device::write_cs1(offs_t offset, u16 data, u16 mem_mask) +{ +} + +WRITE_LINE_MEMBER(cp2024_device::write_dmack) +{ +} + +WRITE_LINE_MEMBER(cp2024_device::write_csel) +{ +} + +WRITE_LINE_MEMBER(cp2024_device::write_dasp) +{ +} + +WRITE_LINE_MEMBER(cp2024_device::write_pdiag) +{ +} + + +void cp2024_device::mcu_map(address_map &map) +{ + //map(0x0000, 0x00ff).m("sh265", FUNC(cl_sh265_device::map)); + map(0x8000, 0xffff).rom().region("eprom", 0); +} + +void cp2024_device::device_add_mconfig(machine_config &config) +{ + mc68hc11a1_device &mcu(MC68HC11A1(config, "mcu", 10'000'000)); // clock unknown + mcu.set_addrmap(AS_PROGRAM, &cp2024_device::mcu_map); +} + +ROM_START(cp2024) + ROM_REGION(0x8000, "eprom", 0) + ROM_LOAD("27c256.bin", 0x0000, 0x8000, CRC(574b5904) SHA1(79bccc33835ba01fc4eb33fb4d412a691e7790c2)) +ROM_END + +const tiny_rom_entry *cp2024_device::device_rom_region() const +{ + return ROM_NAME(cp2024); +} diff --git a/src/devices/bus/ata/cp2024.h b/src/devices/bus/ata/cp2024.h new file mode 100644 index 00000000000..a7a0f497d57 --- /dev/null +++ b/src/devices/bus/ata/cp2024.h @@ -0,0 +1,40 @@ +// license:BSD-3-Clause +// copyright-holders:AJR + +#ifndef MAME_BUS_ATA_CP2024_H +#define MAME_BUS_ATA_CP2024_H + +#pragma once + +#include "atadev.h" + +class cp2024_device : public device_t, public device_ata_interface +{ +public: + cp2024_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; + + virtual u16 read_dma() override; + virtual u16 read_cs0(offs_t offset, u16 mem_mask = 0xffff) override; + virtual u16 read_cs1(offs_t offset, u16 mem_mask = 0xffff) override; + virtual void write_dma(u16 data) override; + virtual void write_cs0(offs_t offset, u16 data, u16 mem_mask = 0xffff) override; + virtual void write_cs1(offs_t offset, u16 data, u16 mem_mask = 0xffff) override; + virtual DECLARE_WRITE_LINE_MEMBER(write_dmack) override; + virtual DECLARE_WRITE_LINE_MEMBER(write_csel) override; + virtual DECLARE_WRITE_LINE_MEMBER(write_dasp) override; + virtual DECLARE_WRITE_LINE_MEMBER(write_pdiag) override; + +private: + void mcu_map(address_map &map); +}; + +DECLARE_DEVICE_TYPE(CP2024, cp2024_device) + +#endif // MAME_BUS_ATA_CP2024_H -- cgit v1.2.3