summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/bus.lua2
-rw-r--r--src/devices/bus/ata/atadev.cpp2
-rw-r--r--src/devices/bus/ata/px320a.cpp99
-rw-r--r--src/devices/bus/ata/px320a.h42
4 files changed, 145 insertions, 0 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua
index da475f25379..22f5f77e3fe 100644
--- a/scripts/src/bus.lua
+++ b/scripts/src/bus.lua
@@ -306,6 +306,8 @@ if (BUSES["ATA"]~=null) then
MAME_DIR .. "src/devices/bus/ata/cr589.h",
MAME_DIR .. "src/devices/bus/ata/idehd.cpp",
MAME_DIR .. "src/devices/bus/ata/idehd.h",
+ MAME_DIR .. "src/devices/bus/ata/px320a.cpp",
+ MAME_DIR .. "src/devices/bus/ata/px320a.h",
}
end
diff --git a/src/devices/bus/ata/atadev.cpp b/src/devices/bus/ata/atadev.cpp
index a44a162c6fb..609674d79f3 100644
--- a/src/devices/bus/ata/atadev.cpp
+++ b/src/devices/bus/ata/atadev.cpp
@@ -11,6 +11,7 @@
#include "atapicdr.h"
#include "idehd.h"
+#include "px320a.h"
//-------------------------------------------------
// device_ata_interface - constructor
@@ -68,4 +69,5 @@ void ata_devices(device_slot_interface &device)
{
device.option_add("hdd", IDE_HARDDISK);
device.option_add("cdrom", ATAPI_CDROM);
+ device.option_add("px320a", PX320A);
}
diff --git a/src/devices/bus/ata/px320a.cpp b/src/devices/bus/ata/px320a.cpp
new file mode 100644
index 00000000000..befaad3befd
--- /dev/null
+++ b/src/devices/bus/ata/px320a.cpp
@@ -0,0 +1,99 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/*******************************************************************************
+
+ Skeleton device for Plextor PleXCombo PX-320A IDE DVD/CD-RW drive.
+
+*******************************************************************************/
+
+#include "emu.h"
+#include "px320a.h"
+#include "cpu/fr/fr.h"
+
+DEFINE_DEVICE_TYPE(PX320A, px320a_device, "px320a", "PleXCombo PX-320A CD-RW/DVD-ROM Drive")
+
+px320a_device::px320a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, PX320A, tag, owner, clock)
+ , device_ata_interface(mconfig, *this)
+ , m_frcpu(*this, "frcpu")
+{
+}
+
+void px320a_device::device_start()
+{
+}
+
+
+u16 px320a_device::read_dma()
+{
+ return 0;
+}
+
+u16 px320a_device::read_cs0(offs_t offset, u16 mem_mask)
+{
+ return 0;
+}
+
+u16 px320a_device::read_cs1(offs_t offset, u16 mem_mask)
+{
+ return 0;
+}
+
+void px320a_device::write_dma(u16 data)
+{
+}
+
+void px320a_device::write_cs0(offs_t offset, u16 data, u16 mem_mask)
+{
+}
+
+void px320a_device::write_cs1(offs_t offset, u16 data, u16 mem_mask)
+{
+}
+
+WRITE_LINE_MEMBER(px320a_device::write_dmack)
+{
+}
+
+WRITE_LINE_MEMBER(px320a_device::write_csel)
+{
+}
+
+WRITE_LINE_MEMBER(px320a_device::write_dasp)
+{
+}
+
+WRITE_LINE_MEMBER(px320a_device::write_pdiag)
+{
+}
+
+
+void px320a_device::frcpu_map(address_map &map)
+{
+ map(0x00080000, 0x000fffff).rom().region("firmware", 0);
+}
+
+void px320a_device::device_add_mconfig(machine_config &config)
+{
+ MB91101A(config, m_frcpu, 8000000); // FR type guessed; clock unknown
+ m_frcpu->set_addrmap(AS_PROGRAM, &px320a_device::frcpu_map);
+}
+
+ROM_START(px320a)
+ ROM_REGION32_BE(0x80000, "firmware", 0)
+ ROM_SYSTEM_BIOS(0, "v106", "Firmware v1.06")
+ ROM_LOAD("sapp106.bin", 0x00000, 0x80000, CRC(2ba54c7a) SHA1(032cc5009fe84db902096ea2bb9dc2221601ab20))
+ ROM_SYSTEM_BIOS(1, "v105", "Firmware v1.05")
+ ROM_LOAD("sapp105.bin", 0x00000, 0x80000, CRC(3755a053) SHA1(fb966d506edb6e0a97ad64de3898ce9e75e22d7d))
+ ROM_SYSTEM_BIOS(2, "v104", "Firmware v1.04a")
+ ROM_LOAD("sapp104.bin", 0x00000, 0x80000, CRC(7197425f) SHA1(0b02508d668439a78ea8e3d97eddf5a3de6e2ba5))
+ ROM_SYSTEM_BIOS(3, "v103", "Firmware v1.03")
+ ROM_LOAD("sap1032.bin", 0x00000, 0x80000, CRC(9ff1c729) SHA1(6ed44bf8decaac2ee9127bdd66e0ff1fd52969c3))
+ ROM_SYSTEM_BIOS(4, "v102", "Firmware v1.02")
+ ROM_LOAD("sapp102.bin", 0x00000, 0x80000, CRC(9f96bea4) SHA1(5b70f32e83d8c19d2895d38d0f7e15f2eee326fd))
+ROM_END
+
+const tiny_rom_entry *px320a_device::device_rom_region() const
+{
+ return ROM_NAME(px320a);
+}
diff --git a/src/devices/bus/ata/px320a.h b/src/devices/bus/ata/px320a.h
new file mode 100644
index 00000000000..938fc3a580b
--- /dev/null
+++ b/src/devices/bus/ata/px320a.h
@@ -0,0 +1,42 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+
+#ifndef MAME_BUS_ATA_PX320A_H
+#define MAME_BUS_ATA_PX320A_H
+
+#pragma once
+
+#include "atadev.h"
+
+class px320a_device : public device_t, public device_ata_interface
+{
+public:
+ px320a_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 frcpu_map(address_map &map);
+
+ required_device<cpu_device> m_frcpu;
+};
+
+DECLARE_DEVICE_TYPE(PX320A, px320a_device)
+
+#endif // MAME_BUS_ATA_PX320A_H