summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/bus.lua6
-rw-r--r--scripts/src/machine.lua24
-rw-r--r--src/devices/bus/ata/atadev.cpp2
-rw-r--r--src/devices/bus/ata/atapicdr.cpp1
-rw-r--r--src/devices/bus/ata/atapicdr.h26
-rw-r--r--src/devices/bus/ata/atapihle.cpp12
-rw-r--r--src/devices/bus/ata/atapihle.h4
-rw-r--r--src/devices/bus/ata/hdd.cpp45
-rw-r--r--src/devices/bus/ata/hdd.h92
-rw-r--r--src/devices/bus/epson_qx/ide.cpp23
-rw-r--r--src/devices/bus/epson_qx/ide.h17
-rw-r--r--src/devices/machine/ataflash.cpp12
-rw-r--r--src/devices/machine/ataflash.h14
-rw-r--r--src/devices/machine/atahle.cpp (renamed from src/devices/bus/ata/atahle.cpp)161
-rw-r--r--src/devices/machine/atahle.h (renamed from src/devices/bus/ata/atahle.h)83
-rw-r--r--src/devices/machine/atastorage.cpp (renamed from src/devices/bus/ata/idehd.cpp)87
-rw-r--r--src/devices/machine/atastorage.h (renamed from src/devices/bus/ata/idehd.h)45
-rw-r--r--src/mame/atari/jaguar.cpp10
-rw-r--r--src/mame/konami/cobra.cpp2
-rw-r--r--src/mame/konami/djmain.cpp2
-rw-r--r--src/mame/konami/firebeat.cpp7
-rw-r--r--src/mame/konami/viper.cpp4
-rw-r--r--src/mame/merit/mtouchxl.cpp2
-rw-r--r--src/mame/microsoft/xbox.cpp10
-rw-r--r--src/mame/midway/seattle.cpp2
-rw-r--r--src/mame/midway/vegas.cpp2
-rw-r--r--src/mame/namco/turrett.cpp4
-rw-r--r--src/mame/rare/kinst.cpp2
-rw-r--r--src/mame/sega/chihiro.cpp39
-rw-r--r--src/mame/sinclair/atm.cpp2
-rw-r--r--src/mame/sinclair/sprinter.cpp2
-rw-r--r--src/mame/sony/taitogn.cpp58
-rw-r--r--src/mame/taito/taitotz.cpp2
33 files changed, 495 insertions, 309 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua
index 6a8a3735a29..df37b27033e 100644
--- a/scripts/src/bus.lua
+++ b/scripts/src/bus.lua
@@ -496,8 +496,6 @@ if (BUSES["ATA"]~=null) then
files {
MAME_DIR .. "src/devices/bus/ata/atadev.cpp",
MAME_DIR .. "src/devices/bus/ata/atadev.h",
- MAME_DIR .. "src/devices/bus/ata/atahle.cpp",
- MAME_DIR .. "src/devices/bus/ata/atahle.h",
MAME_DIR .. "src/devices/bus/ata/ataintf.cpp",
MAME_DIR .. "src/devices/bus/ata/ataintf.h",
MAME_DIR .. "src/devices/bus/ata/atapicdr.cpp",
@@ -508,10 +506,10 @@ if (BUSES["ATA"]~=null) then
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/hdd.cpp",
+ MAME_DIR .. "src/devices/bus/ata/hdd.h",
MAME_DIR .. "src/devices/bus/ata/gdrom.cpp",
MAME_DIR .. "src/devices/bus/ata/gdrom.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",
}
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua
index 2fcc8ea9a69..59dfd6dbdea 100644
--- a/scripts/src/machine.lua
+++ b/scripts/src/machine.lua
@@ -930,6 +930,18 @@ end
---------------------------------------------------
--
+--@src/devices/machine/atahle.h,MACHINES["ATAHLE"] = true
+---------------------------------------------------
+
+if (MACHINES["ATAHLE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/atahle.cpp",
+ MAME_DIR .. "src/devices/machine/atahle.h",
+ }
+end
+
+---------------------------------------------------
+--
--@src/devices/machine/ataflash.h,MACHINES["ATAFLASH"] = true
---------------------------------------------------
@@ -943,6 +955,18 @@ end
---------------------------------------------------
--
+--@src/devices/machine/atastorage.h,MACHINES["ATASTORAGE"] = true
+---------------------------------------------------
+
+if (MACHINES["ATASTORAGE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/atastorage.cpp",
+ MAME_DIR .. "src/devices/machine/atastorage.h",
+ }
+end
+
+---------------------------------------------------
+--
--@src/devices/machine/atmel_arm_aic.h,MACHINES["ARM_AIC"] = true
---------------------------------------------------
diff --git a/src/devices/bus/ata/atadev.cpp b/src/devices/bus/ata/atadev.cpp
index a3cec8b2238..5f2b317bddb 100644
--- a/src/devices/bus/ata/atadev.cpp
+++ b/src/devices/bus/ata/atadev.cpp
@@ -11,7 +11,7 @@
#include "atapicdr.h"
#include "cp2024.h"
-#include "idehd.h"
+#include "hdd.h"
#include "px320a.h"
//-------------------------------------------------
diff --git a/src/devices/bus/ata/atapicdr.cpp b/src/devices/bus/ata/atapicdr.cpp
index 17f26855090..ecf4abd8af8 100644
--- a/src/devices/bus/ata/atapicdr.cpp
+++ b/src/devices/bus/ata/atapicdr.cpp
@@ -21,6 +21,7 @@ atapi_cdrom_device::atapi_cdrom_device(const machine_config &mconfig, const char
atapi_cdrom_device::atapi_cdrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
atapi_hle_device(mconfig, type, tag, owner, clock),
+ device_ata_interface(mconfig, *this),
ultra_dma_mode(0)
{
}
diff --git a/src/devices/bus/ata/atapicdr.h b/src/devices/bus/ata/atapicdr.h
index 24e94ea4d8e..459058596e0 100644
--- a/src/devices/bus/ata/atapicdr.h
+++ b/src/devices/bus/ata/atapicdr.h
@@ -13,10 +13,13 @@
#pragma once
+#include "atadev.h"
#include "atapihle.h"
+
#include "machine/t10mmc.h"
-class atapi_cdrom_device : public atapi_hle_device, public t10mmc
+
+class atapi_cdrom_device : public atapi_hle_device, public device_ata_interface, public t10mmc
{
public:
atapi_cdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -25,6 +28,20 @@ public:
uint16_t *identify_device_buffer() { return m_identify_buffer; }
+ // device_ata_interface implementation
+ virtual uint16_t read_dma() override { return dma_r(); }
+ virtual uint16_t read_cs0(offs_t offset, uint16_t mem_mask) override { return command_r(offset); }
+ virtual uint16_t read_cs1(offs_t offset, uint16_t mem_mask) override { return control_r(offset); }
+
+ virtual void write_dma(uint16_t data) override { dma_w(data); }
+ virtual void write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask) override { command_w(offset, data); }
+ virtual void write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask) override { control_w(offset, data); }
+
+ virtual void write_dmack(int state) override { set_dmack_in(state); }
+ virtual void write_csel(int state) override { set_csel_in(state); }
+ virtual void write_dasp(int state) override { set_dasp_in(state); }
+ virtual void write_pdiag(int state) override { set_pdiag_in(state); }
+
protected:
atapi_cdrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -40,6 +57,13 @@ protected:
u32 m_sequence_counter;
bool m_media_change;
uint16_t ultra_dma_mode;
+
+private:
+ // ata_hle_device_base implementation
+ virtual void set_irq_out(int state) override { device_ata_interface::set_irq(state); }
+ virtual void set_dmarq_out(int state) override { device_ata_interface::set_dmarq(state); }
+ virtual void set_dasp_out(int state) override { device_ata_interface::set_dasp(state); }
+ virtual void set_pdiag_out(int state) override { device_ata_interface::set_pdiag(state); }
};
class atapi_fixed_cdrom_device : public atapi_cdrom_device
diff --git a/src/devices/bus/ata/atapihle.cpp b/src/devices/bus/ata/atapihle.cpp
index b416cdf1e94..8b2f3fd0548 100644
--- a/src/devices/bus/ata/atapihle.cpp
+++ b/src/devices/bus/ata/atapihle.cpp
@@ -3,8 +3,8 @@
#include "emu.h"
#include "atapihle.h"
-atapi_hle_device::atapi_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
- : ata_hle_device(mconfig, type, tag, owner, clock),
+atapi_hle_device::atapi_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ ata_hle_device_base(mconfig, type, tag, owner, clock),
m_packet(0),
m_data_size(0)
{
@@ -13,13 +13,13 @@ atapi_hle_device::atapi_hle_device(const machine_config &mconfig, device_type ty
void atapi_hle_device::device_start()
{
t10_start(*this);
- ata_hle_device::device_start();
+ ata_hle_device_base::device_start();
}
void atapi_hle_device::device_reset()
{
t10_reset();
- ata_hle_device::device_reset();
+ ata_hle_device_base::device_reset();
}
void atapi_hle_device::process_buffer()
@@ -257,7 +257,7 @@ void atapi_hle_device::process_command()
break;
default:
- ata_hle_device::process_command();
+ ata_hle_device_base::process_command();
break;
}
}
@@ -267,7 +267,7 @@ void atapi_hle_device::finished_command()
switch (m_command)
{
default:
- ata_hle_device::finished_command();
+ ata_hle_device_base::finished_command();
break;
}
}
diff --git a/src/devices/bus/ata/atapihle.h b/src/devices/bus/ata/atapihle.h
index 8d1bb95eec4..80a194afa62 100644
--- a/src/devices/bus/ata/atapihle.h
+++ b/src/devices/bus/ata/atapihle.h
@@ -13,10 +13,10 @@
#pragma once
-#include "atahle.h"
+#include "machine/atahle.h"
#include "machine/t10spc.h"
-class atapi_hle_device : public ata_hle_device, public virtual t10spc
+class atapi_hle_device : public ata_hle_device_base, public virtual t10spc
{
public:
enum atapi_features_flag_t
diff --git a/src/devices/bus/ata/hdd.cpp b/src/devices/bus/ata/hdd.cpp
new file mode 100644
index 00000000000..8eac9aa9163
--- /dev/null
+++ b/src/devices/bus/ata/hdd.cpp
@@ -0,0 +1,45 @@
+// license:BSD-3-Clause
+// copyright-holders:smf
+#include "emu.h"
+#include "hdd.h"
+
+
+//**************************************************************************
+// IDE HARD DISK DEVICE
+//**************************************************************************
+
+// device type definition
+DEFINE_DEVICE_TYPE(IDE_HARDDISK, ide_hdd_device, "idehd", "IDE Hard Disk")
+
+//-------------------------------------------------
+// ide_hdd_device - constructor
+//-------------------------------------------------
+
+ide_hdd_device::ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ ide_hdd_device(mconfig, IDE_HARDDISK, tag, owner, clock)
+{
+}
+
+ide_hdd_device::ide_hdd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ ide_hdd_device_base(mconfig, type, tag, owner, clock),
+ device_ata_interface(mconfig, *this)
+{
+}
+
+
+//**************************************************************************
+// ATA COMPACTFLASH CARD DEVICE
+//**************************************************************************
+
+// device type definition
+DEFINE_DEVICE_TYPE(ATA_CF, ata_cf_device, "atacf", "ATA CompactFlash Card")
+
+//-------------------------------------------------
+// ata_cf_device - constructor
+//-------------------------------------------------
+
+ata_cf_device::ata_cf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ cf_device_base(mconfig, ATA_CF, tag, owner, clock),
+ device_ata_interface(mconfig, *this)
+{
+}
diff --git a/src/devices/bus/ata/hdd.h b/src/devices/bus/ata/hdd.h
new file mode 100644
index 00000000000..345b6c77115
--- /dev/null
+++ b/src/devices/bus/ata/hdd.h
@@ -0,0 +1,92 @@
+// license:BSD-3-Clause
+// copyright-holders:smf
+/***************************************************************************
+
+ hdd.h
+
+ IDE hard disk on ATA bus
+
+***************************************************************************/
+
+#ifndef MAME_BUS_ATA_IDEHD_H
+#define MAME_BUS_ATA_IDEHD_H
+
+#pragma once
+
+#include "atadev.h"
+
+#include "machine/atastorage.h"
+#include "imagedev/harddriv.h"
+
+#include "harddisk.h"
+
+
+// ======================> ide_hdd_device
+
+class ide_hdd_device : public ide_hdd_device_base, public device_ata_interface
+{
+public:
+ // construction/destruction
+ ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // device_ata_interface implementation
+ virtual uint16_t read_dma() override { return dma_r(); }
+ virtual uint16_t read_cs0(offs_t offset, uint16_t mem_mask) override { return command_r(offset); }
+ virtual uint16_t read_cs1(offs_t offset, uint16_t mem_mask) override { return control_r(offset); }
+
+ virtual void write_dma(uint16_t data) override { dma_w(data); }
+ virtual void write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask) override { command_w(offset, data); }
+ virtual void write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask) override { control_w(offset, data); }
+
+ virtual void write_dmack(int state) override { set_dmack_in(state); }
+ virtual void write_csel(int state) override { set_csel_in(state); }
+ virtual void write_dasp(int state) override { set_dasp_in(state); }
+ virtual void write_pdiag(int state) override { set_pdiag_in(state); }
+
+protected:
+ ide_hdd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+private:
+ // ata_hle_device_base implementation
+ virtual void set_irq_out(int state) override { device_ata_interface::set_irq(state); }
+ virtual void set_dmarq_out(int state) override { device_ata_interface::set_dmarq(state); }
+ virtual void set_dasp_out(int state) override { device_ata_interface::set_dasp(state); }
+ virtual void set_pdiag_out(int state) override { device_ata_interface::set_pdiag(state); }
+};
+
+
+// ======================> ata_cf_device
+
+class ata_cf_device : public cf_device_base, public device_ata_interface
+{
+public:
+ // construction/destruction
+ ata_cf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // device_ata_interface implementation
+ virtual uint16_t read_dma() override { return dma_r(); }
+ virtual uint16_t read_cs0(offs_t offset, uint16_t mem_mask) override { return command_r(offset); }
+ virtual uint16_t read_cs1(offs_t offset, uint16_t mem_mask) override { return control_r(offset); }
+
+ virtual void write_dma(uint16_t data) override { dma_w(data); }
+ virtual void write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask) override { command_w(offset, data); }
+ virtual void write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask) override { control_w(offset, data); }
+
+ virtual void write_dmack(int state) override { set_dmack_in(state); }
+ virtual void write_csel(int state) override { set_csel_in(state); }
+ virtual void write_dasp(int state) override { set_dasp_in(state); }
+ virtual void write_pdiag(int state) override { set_pdiag_in(state); }
+
+private:
+ // ata_hle_device_base implementation
+ virtual void set_irq_out(int state) override { device_ata_interface::set_irq(state); }
+ virtual void set_dmarq_out(int state) override { device_ata_interface::set_dmarq(state); }
+ virtual void set_dasp_out(int state) override { device_ata_interface::set_dasp(state); }
+ virtual void set_pdiag_out(int state) override { device_ata_interface::set_pdiag(state); }
+};
+
+// device type declaration
+DECLARE_DEVICE_TYPE(IDE_HARDDISK, ide_hdd_device)
+DECLARE_DEVICE_TYPE(ATA_CF, ata_cf_device)
+
+#endif // MAME_BUS_ATA_IDEHD_H
diff --git a/src/devices/bus/epson_qx/ide.cpp b/src/devices/bus/epson_qx/ide.cpp
index 80c613bf87d..7d709f442dc 100644
--- a/src/devices/bus/epson_qx/ide.cpp
+++ b/src/devices/bus/epson_qx/ide.cpp
@@ -41,9 +41,8 @@ INPUT_PORTS_END
// ide_device - constructor
//-------------------------------------------------
ide_device::ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EPSON_QX_OPTION_IDE, tag, owner, clock),
+ ide_hdd_device_base(mconfig, EPSON_QX_OPTION_IDE, tag, owner, clock),
device_option_expansion_interface(mconfig, *this),
- m_hdd(*this, "hdd"),
m_iobase(*this, "IOBASE"),
m_installed(false)
{
@@ -58,18 +57,12 @@ ioport_constructor ide_device::device_input_ports() const
}
//-------------------------------------------------
-// device_add_mconfig - device-specific config
-//-------------------------------------------------
-void ide_device::device_add_mconfig(machine_config &config)
-{
- IDE_HARDDISK(config, m_hdd, 0);
-}
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void ide_device::device_start()
{
+ ide_hdd_device_base::device_start();
+
m_installed = false;
save_item(NAME(m_installed));
@@ -80,6 +73,8 @@ void ide_device::device_start()
//-------------------------------------------------
void ide_device::device_reset()
{
+ ide_hdd_device_base::device_reset();
+
if (!m_installed) {
address_space &space = m_bus->iospace();
offs_t iobase = m_iobase->read() & 0xf0;
@@ -91,9 +86,9 @@ void ide_device::device_reset()
uint8_t ide_device::read(offs_t offset)
{
if (offset < 8) {
- return m_hdd->read_cs0(offset);
+ return command_r(offset);
} else if (offset == 14 || offset == 15) {
- return m_hdd->read_cs1(offset & 7);
+ return control_r(offset & 7);
}
return 0xff;
}
@@ -101,9 +96,9 @@ uint8_t ide_device::read(offs_t offset)
void ide_device::write(offs_t offset, uint8_t data)
{
if (offset < 8) {
- m_hdd->write_cs0(offset, data);
+ command_w(offset, data);
} else if (offset == 14) {
- m_hdd->write_cs1(offset & 7, data);
+ control_w(offset & 7, data);
}
}
diff --git a/src/devices/bus/epson_qx/ide.h b/src/devices/bus/epson_qx/ide.h
index 3bc61b333ca..19c8f2a3a5d 100644
--- a/src/devices/bus/epson_qx/ide.h
+++ b/src/devices/bus/epson_qx/ide.h
@@ -13,7 +13,7 @@
#include "option.h"
-#include "bus/ata/idehd.h"
+#include "machine/atastorage.h"
namespace bus::epson_qx {
@@ -23,19 +23,17 @@ namespace bus::epson_qx {
/* Epson IDE Device */
-class ide_device : public device_t, public bus::epson_qx::device_option_expansion_interface
+// TODO: this thing should probably implement the ATA controller interface rather than having an IDE hard disk with no slot
+class ide_device : public ide_hdd_device_base, public device_option_expansion_interface
{
public:
// construction/destruction
ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
- // device-level overrides
+ // device_t implementation
virtual void device_start() override;
virtual void device_reset() override;
-
- // optional information overrides
- virtual void device_add_mconfig(machine_config &config) override;
virtual ioport_constructor device_input_ports() const override;
uint8_t read(offs_t offset);
@@ -44,7 +42,12 @@ protected:
void map(address_map &map);
private:
- required_device<ide_hdd_device> m_hdd;
+ // ata_hle_device_base implementation
+ virtual void set_irq_out(int state) override { }
+ virtual void set_dmarq_out(int state) override { }
+ virtual void set_dasp_out(int state) override { }
+ virtual void set_pdiag_out(int state) override { }
+
required_ioport m_iobase;
bool m_installed;
diff --git a/src/devices/machine/ataflash.cpp b/src/devices/machine/ataflash.cpp
index 2cf2428db31..7846ce9a888 100644
--- a/src/devices/machine/ataflash.cpp
+++ b/src/devices/machine/ataflash.cpp
@@ -11,14 +11,14 @@ ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig,
}
ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
- : ide_hdd_device(mconfig, type, tag, owner, clock)
+ : ide_hdd_device_base(mconfig, type, tag, owner, clock)
, device_pccard_interface(mconfig, *this)
{
}
void ata_flash_pccard_device::device_reset()
{
- ide_hdd_device::device_reset();
+ ide_hdd_device_base::device_reset();
if (m_image->exists())
{
@@ -36,11 +36,11 @@ uint16_t ata_flash_pccard_device::read_memory(offs_t offset, uint16_t mem_mask)
if(offset <= 7)
{
m_8bit_data_transfers = !ACCESSING_BITS_8_15; // HACK
- return read_cs0(offset, mem_mask);
+ return command_r(offset);
}
else if(offset <= 15)
{
- return read_cs1(offset & 7, mem_mask);
+ return control_r(offset & 7);
}
else
{
@@ -53,11 +53,11 @@ void ata_flash_pccard_device::write_memory(offs_t offset, uint16_t data, uint16_
if(offset <= 7)
{
m_8bit_data_transfers = !ACCESSING_BITS_8_15; // HACK
- write_cs0(offset, data, mem_mask);
+ command_w(offset, data);
}
else if( offset <= 15)
{
- write_cs1(offset & 7, data, mem_mask);
+ control_w(offset & 7, data);
}
}
diff --git a/src/devices/machine/ataflash.h b/src/devices/machine/ataflash.h
index c9e3cbbf991..acf37a283d5 100644
--- a/src/devices/machine/ataflash.h
+++ b/src/devices/machine/ataflash.h
@@ -6,11 +6,11 @@
#pragma once
#include "pccard.h"
-#include "bus/ata/idehd.h"
+#include "atastorage.h"
DECLARE_DEVICE_TYPE(ATA_FLASH_PCCARD, ata_flash_pccard_device)
-class ata_flash_pccard_device : public ide_hdd_device, public device_pccard_interface
+class ata_flash_pccard_device : public ide_hdd_device_base, public device_pccard_interface
{
public:
ata_flash_pccard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -23,13 +23,19 @@ public:
protected:
ata_flash_pccard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
+ // device_t implementation
virtual void device_reset() override;
virtual attotime seek_time() override;
- uint8_t calculate_status() override { return ata_hle_device::calculate_status(); }
+ uint8_t calculate_status() override { return ata_hle_device_base::calculate_status(); }
private:
+ // ata_hle_device_base implementation
+ virtual void set_irq_out(int state) override { }
+ virtual void set_dmarq_out(int state) override { }
+ virtual void set_dasp_out(int state) override { }
+ virtual void set_pdiag_out(int state) override { }
+
std::vector<uint8_t> m_cis;
uint8_t m_configuration_option;
uint8_t m_configuration_and_status;
diff --git a/src/devices/bus/ata/atahle.cpp b/src/devices/machine/atahle.cpp
index 3e5ab4838ef..85b9ad958fe 100644
--- a/src/devices/bus/ata/atahle.cpp
+++ b/src/devices/machine/atahle.cpp
@@ -40,9 +40,8 @@ enum
#define DEVICE1_PDIAG_TIME (attotime::from_msec(2))
#define DIAGNOSTIC_TIME (attotime::from_msec(2))
-ata_hle_device::ata_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ata_hle_device_base::ata_hle_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
- device_ata_interface(mconfig, *this),
m_buffer_offset(0),
m_buffer_size(0),
m_error(0),
@@ -70,7 +69,7 @@ ata_hle_device::ata_hle_device(const machine_config &mconfig, device_type type,
{
}
-void ata_hle_device::device_start()
+void ata_hle_device_base::device_start()
{
MINIMUM_COMMAND_TIME = attotime::from_usec(10);
@@ -105,11 +104,11 @@ void ata_hle_device::device_start()
save_item(NAME(m_identify_buffer));
- m_busy_timer = timer_alloc(FUNC(ata_hle_device::busy_tick), this);
- m_buffer_empty_timer = timer_alloc(FUNC(ata_hle_device::empty_tick), this);
+ m_busy_timer = timer_alloc(FUNC(ata_hle_device_base::busy_tick), this);
+ m_buffer_empty_timer = timer_alloc(FUNC(ata_hle_device_base::empty_tick), this);
}
-void ata_hle_device::device_reset()
+void ata_hle_device_base::device_reset()
{
/* reset the drive state */
set_dasp(CLEAR_LINE);
@@ -132,7 +131,7 @@ void ata_hle_device::device_reset()
}
}
-void ata_hle_device::soft_reset()
+void ata_hle_device_base::soft_reset()
{
m_buffer_offset = 0;
m_buffer_size = 0;
@@ -146,19 +145,19 @@ void ata_hle_device::soft_reset()
start_busy(DIAGNOSTIC_TIME, PARAM_DIAGNOSTIC);
}
-TIMER_CALLBACK_MEMBER(ata_hle_device::busy_tick)
+TIMER_CALLBACK_MEMBER(ata_hle_device_base::busy_tick)
{
m_status &= ~IDE_STATUS_BSY;
finished_busy(param);
}
-TIMER_CALLBACK_MEMBER(ata_hle_device::empty_tick)
+TIMER_CALLBACK_MEMBER(ata_hle_device_base::empty_tick)
{
m_buffer_empty_timer->enable(false);
fill_buffer();
}
-void ata_hle_device::finished_busy(int param)
+void ata_hle_device_base::finished_busy(int param)
{
switch (param)
{
@@ -182,7 +181,7 @@ void ata_hle_device::finished_busy(int param)
}
}
-void ata_hle_device::process_command()
+void ata_hle_device_base::process_command()
{
switch (m_command)
{
@@ -208,7 +207,7 @@ void ata_hle_device::process_command()
}
}
-void ata_hle_device::finished_command()
+void ata_hle_device_base::finished_command()
{
switch (m_command)
{
@@ -240,7 +239,7 @@ void ata_hle_device::finished_command()
}
}
-bool ata_hle_device::set_dma_mode(int word)
+bool ata_hle_device_base::set_dma_mode(int word)
{
if ((m_identify_buffer[word] >> (m_sector_count & 7)) & 1)
{
@@ -255,7 +254,7 @@ bool ata_hle_device::set_dma_mode(int word)
return false;
}
-bool ata_hle_device::set_features()
+bool ata_hle_device_base::set_features()
{
switch (m_feature)
{
@@ -318,7 +317,7 @@ bool ata_hle_device::set_features()
return false;
}
-int ata_hle_device::bit_to_mode(uint16_t word)
+int ata_hle_device_base::bit_to_mode(uint16_t word)
{
switch (word>>8)
{
@@ -344,24 +343,24 @@ int ata_hle_device::bit_to_mode(uint16_t word)
}
// Return the currently selected single word dma mode, -1 if none selected
-int ata_hle_device::single_word_dma_mode()
+int ata_hle_device_base::single_word_dma_mode()
{
return bit_to_mode(m_identify_buffer[62]);
}
// Return the currently selected multi word dma mode, -1 if none selected
-int ata_hle_device::multi_word_dma_mode()
+int ata_hle_device_base::multi_word_dma_mode()
{
return bit_to_mode(m_identify_buffer[63]);
}
// Return the currently selected ultra dma mode, -1 if none selected
-int ata_hle_device::ultra_dma_mode()
+int ata_hle_device_base::ultra_dma_mode()
{
return bit_to_mode(m_identify_buffer[88]);
}
-uint16_t ata_hle_device::read_data()
+uint16_t ata_hle_device_base::read_data()
{
/* fetch the correct amount of data */
uint16_t result = m_buffer[m_buffer_offset++];
@@ -378,7 +377,7 @@ uint16_t ata_hle_device::read_data()
return result;
}
-void ata_hle_device::write_data(uint16_t data)
+void ata_hle_device_base::write_data(uint16_t data)
{
/* store the correct amount of data */
m_buffer[m_buffer_offset++] = data;
@@ -393,67 +392,27 @@ void ata_hle_device::write_data(uint16_t data)
}
}
-void ata_hle_device::update_irq()
+void ata_hle_device_base::update_irq()
{
if (device_selected() && (m_device_control & IDE_DEVICE_CONTROL_NIEN) == 0)
- device_ata_interface::set_irq(m_irq);
+ set_irq_out(m_irq);
else
- device_ata_interface::set_irq(CLEAR_LINE);
+ set_irq_out(CLEAR_LINE);
}
-void ata_hle_device::set_irq(int state)
-{
- if (m_irq != state)
- {
- m_irq = state;
-
- update_irq();
- }
-}
-
-void ata_hle_device::set_dmarq(int state)
-{
- if (m_dmarq != state)
- {
- m_dmarq = state;
-
- device_ata_interface::set_dmarq(state);
- }
-}
-
-void ata_hle_device::set_dasp(int state)
-{
- if (m_daspout != state)
- {
- m_daspout = state;
-
- device_ata_interface::set_dasp(state);
- }
-}
-
-void ata_hle_device::set_pdiag(int state)
-{
- if (m_pdiagout != state)
- {
- m_pdiagout = state;
-
- device_ata_interface::set_pdiag(state);
- }
-}
-
-void ata_hle_device::start_busy(const attotime &time, int param)
+void ata_hle_device_base::start_busy(const attotime &time, int param)
{
m_status |= IDE_STATUS_BSY;
m_busy_timer->adjust(time, param);
}
-void ata_hle_device::stop_busy()
+void ata_hle_device_base::stop_busy()
{
m_status &= ~IDE_STATUS_BSY;
m_busy_timer->adjust(attotime::never);
}
-void ata_hle_device::read_buffer_empty()
+void ata_hle_device_base::read_buffer_empty()
{
m_buffer_offset = 0;
@@ -471,7 +430,7 @@ void ata_hle_device::read_buffer_empty()
fill_buffer();
}
-void ata_hle_device::write_buffer_full()
+void ata_hle_device_base::write_buffer_full()
{
m_buffer_offset = 0;
@@ -484,7 +443,7 @@ void ata_hle_device::write_buffer_full()
process_buffer();
}
-void ata_hle_device::start_diagnostic()
+void ata_hle_device_base::start_diagnostic()
{
m_error = IDE_ERROR_DIAGNOSTIC_FAILED;
@@ -499,7 +458,7 @@ void ata_hle_device::start_diagnostic()
finished_diagnostic();
}
-void ata_hle_device::finished_diagnostic()
+void ata_hle_device_base::finished_diagnostic()
{
m_resetting = false;
@@ -507,17 +466,7 @@ void ata_hle_device::finished_diagnostic()
}
-void ata_hle_device::write_csel(int state)
-{
- m_csel = state;
-}
-
-void ata_hle_device::write_dasp(int state)
-{
- m_daspin = state;
-}
-
-void ata_hle_device::write_dmack(int state)
+void ata_hle_device_base::set_dmack_in(int state)
{
if (state && !m_dmack && single_word_dma_mode() >= 0)
set_dmarq(CLEAR_LINE);
@@ -525,7 +474,7 @@ void ata_hle_device::write_dmack(int state)
m_dmack = state;
}
-void ata_hle_device::write_pdiag(int state)
+void ata_hle_device_base::set_pdiag_in(int state)
{
m_pdiagin = state;
@@ -536,7 +485,7 @@ void ata_hle_device::write_pdiag(int state)
}
}
-uint16_t ata_hle_device::read_dma()
+uint16_t ata_hle_device_base::dma_r()
{
uint16_t result = 0xffff;
@@ -578,7 +527,7 @@ uint16_t ata_hle_device::read_dma()
return result;
}
-uint16_t ata_hle_device::read_cs0(offs_t offset, uint16_t mem_mask)
+uint16_t ata_hle_device_base::command_r(offs_t offset)
{
uint16_t result = 0xffff;
@@ -586,7 +535,7 @@ uint16_t ata_hle_device::read_cs0(offs_t offset, uint16_t mem_mask)
{
if (m_dmack)
{
- logerror( "%s: %s dev %d read_cs0 %04x %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset, mem_mask );
+ logerror( "%s: %s dev %d read_cs0 %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset );
}
else if ((m_status & IDE_STATUS_BSY) && offset != IDE_CS0_STATUS_R)
{
@@ -597,7 +546,7 @@ uint16_t ata_hle_device::read_cs0(offs_t offset, uint16_t mem_mask)
switch (offset)
{
case IDE_CS0_DATA_RW:
- logerror( "%s: %s dev %d read_cs0 %04x %04x ignored (BSY)\n", machine().describe_context(), tag(), dev(), offset, mem_mask );
+ logerror( "%s: %s dev %d read_cs0 %04x ignored (BSY)\n", machine().describe_context(), tag(), dev(), offset );
break;
default:
@@ -682,7 +631,7 @@ uint16_t ata_hle_device::read_cs0(offs_t offset, uint16_t mem_mask)
/* log anything else */
default:
- logerror("%s:unknown IDE cs0 read at %03X, mem_mask=%X\n", machine().describe_context(), offset, mem_mask);
+ logerror("%s:unknown IDE cs0 read at %03X\n", machine().describe_context(), offset);
break;
}
}
@@ -690,18 +639,18 @@ uint16_t ata_hle_device::read_cs0(offs_t offset, uint16_t mem_mask)
/* logit */
// if (offset != IDE_CS0_DATA_RW && offset != IDE_CS0_STATUS_R)
- LOG(("%s:IDE cs0 read %X at %X (err: %X), mem_mask=%X\n", machine().describe_context(), result, offset, m_error, mem_mask));
+ LOG(("%s:IDE cs0 read %X at %X (err: %X)\n", machine().describe_context(), result, offset, m_error));
/* return the result */
return result;
}
-uint16_t ata_hle_device::read_cs1(offs_t offset, uint16_t mem_mask)
+uint16_t ata_hle_device_base::control_r(offs_t offset)
{
/* logit */
// if (offset != IDE_CS1_ALTERNATE_STATUS_R)
- LOG(("%s:IDE cs1 read at %X, mem_mask=%d\n", machine().describe_context(), offset, mem_mask));
+ LOG(("%s:IDE cs1 read at %X\n", machine().describe_context(), offset));
uint16_t result = 0xffff;
@@ -709,7 +658,7 @@ uint16_t ata_hle_device::read_cs1(offs_t offset, uint16_t mem_mask)
{
if (m_dmack)
{
- logerror( "%s: %s dev %d read_cs1 %04x %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset, mem_mask );
+ logerror( "%s: %s dev %d read_cs1 %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset );
}
else
{
@@ -753,7 +702,7 @@ uint16_t ata_hle_device::read_cs1(offs_t offset, uint16_t mem_mask)
/* log anything else */
default:
- logerror("%s:unknown IDE cs1 read at %03X, mem_mask=%d\n", machine().describe_context(), offset, mem_mask);
+ logerror("%s:unknown IDE cs1 read at %03X\n", machine().describe_context(), offset);
break;
}
}
@@ -763,7 +712,7 @@ uint16_t ata_hle_device::read_cs1(offs_t offset, uint16_t mem_mask)
return result;
}
-void ata_hle_device::write_dma( uint16_t data )
+void ata_hle_device_base::dma_w(uint16_t data)
{
if (device_selected())
{
@@ -801,23 +750,23 @@ void ata_hle_device::write_dma( uint16_t data )
}
}
-void ata_hle_device::write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask)
+void ata_hle_device_base::command_w(offs_t offset, uint16_t data)
{
/* logit */
if (offset != IDE_CS0_DATA_RW)
- LOG(("%s:IDE cs0 write to %X = %08X, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask));
+ LOG(("%s:IDE cs0 write to %X = %04X\n", machine().describe_context(), offset, data));
if (m_dmack)
{
- logerror( "%s: %s dev %d write_cs0 %04x %04x %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask );
+ logerror( "%s: %s dev %d write_cs0 %04x %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset, data );
}
else if ((m_status & IDE_STATUS_BSY) && offset != IDE_CS0_COMMAND_W)
{
- logerror( "%s: %s dev %d write_cs0 %04x %04x %04x ignored (BSY) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask, m_command );
+ logerror( "%s: %s dev %d write_cs0 %04x %04x ignored (BSY) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, m_command );
}
else if ((m_status & IDE_STATUS_DRQ) && offset != IDE_CS0_DATA_RW && offset != IDE_CS0_COMMAND_W)
{
- logerror( "%s: %s dev %d write_cs0 %04x %04x %04x ignored (DRQ) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask, m_command );
+ logerror( "%s: %s dev %d write_cs0 %04x %04x ignored (DRQ) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, m_command );
}
else
{
@@ -831,7 +780,7 @@ void ata_hle_device::write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask)
{
if (!(m_status & IDE_STATUS_DRQ))
{
- logerror( "%s: %s dev %d write_cs0 %04x %04x %04x ignored (!DRQ)\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask );
+ logerror( "%s: %s dev %d write_cs0 %04x %04x ignored (!DRQ)\n", machine().describe_context(), tag(), dev(), offset, data );
}
else
{
@@ -878,11 +827,11 @@ void ata_hle_device::write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask)
// Packet devices can accept DEVICE RESET when BSY or DRQ is set.
if (m_status & IDE_STATUS_BSY)
{
- logerror( "%s: %s dev %d write_cs0 %04x %04x %04x ignored (BSY) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask, m_command );
+ logerror( "%s: %s dev %d write_cs0 %04x %04x ignored (BSY) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, m_command );
}
else if (m_status & IDE_STATUS_DRQ)
{
- logerror( "%s: %s dev %d write_cs0 %04x %04x %04x ignored (DRQ) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask, m_command );
+ logerror( "%s: %s dev %d write_cs0 %04x %04x ignored (DRQ) command %02x\n", machine().describe_context(), tag(), dev(), offset, data, m_command );
}
else if (device_selected() || m_command == IDE_COMMAND_DIAGNOSTIC)
{
@@ -904,20 +853,20 @@ void ata_hle_device::write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask)
break;
default:
- logerror("%s:unknown IDE cs0 write at %03X = %04x, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask);
+ logerror("%s:unknown IDE cs0 write at %03X = %04x\n", machine().describe_context(), offset, data);
break;
}
}
}
-void ata_hle_device::write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask)
+void ata_hle_device_base::control_w(offs_t offset, uint16_t data)
{
/* logit */
- LOG(("%s:IDE cs1 write to %X = %08X, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask));
+ LOG(("%s:IDE cs1 write to %X = %08X\n", machine().describe_context(), offset, data));
if (m_dmack)
{
- logerror( "%s: %s dev %d write_cs1 %04x %04x %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask );
+ logerror( "%s: %s dev %d write_cs1 %04x %04x ignored (DMACK)\n", machine().describe_context(), tag(), dev(), offset, data);
}
else
{
@@ -939,7 +888,7 @@ void ata_hle_device::write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask)
{
if (m_resetting)
{
- logerror( "%s: %s dev %d write_cs1 %04x %04x %04x ignored (RESET)\n", machine().describe_context(), tag(), dev(), offset, data, mem_mask );
+ logerror( "%s: %s dev %d write_cs1 %04x %04x ignored (RESET)\n", machine().describe_context(), tag(), dev(), offset, data );
}
else
{
@@ -959,7 +908,7 @@ void ata_hle_device::write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask)
break;
default:
- logerror("%s:unknown IDE cs1 write at %03X = %04x, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask);
+ logerror("%s:unknown IDE cs1 write at %03X = %04x\n", machine().describe_context(), offset, data);
break;
}
}
diff --git a/src/devices/bus/ata/atahle.h b/src/devices/machine/atahle.h
index fa85cae7213..03c367e4784 100644
--- a/src/devices/bus/ata/atahle.h
+++ b/src/devices/machine/atahle.h
@@ -7,31 +7,15 @@
ATA Device HLE
***************************************************************************/
-
-#ifndef MAME_BUS_ATA_ATAHLE_H
-#define MAME_BUS_ATA_ATAHLE_H
+#ifndef MAME_MACHINE_ATAHLE_H
+#define MAME_MACHINE_ATAHLE_H
#pragma once
-#include "atadev.h"
-
-class ata_hle_device : public device_t, public device_ata_interface
+class ata_hle_device_base : public device_t
{
-public:
- virtual uint16_t read_dma() override;
- virtual uint16_t read_cs0(offs_t offset, uint16_t mem_mask = 0xffff) override;
- virtual uint16_t read_cs1(offs_t offset, uint16_t mem_mask = 0xffff) override;
-
- virtual void write_dma(uint16_t data) override;
- virtual void write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask = 0xffff) override;
- virtual void write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask = 0xffff) override;
- virtual void write_csel(int state) override;
- virtual void write_dasp(int state) override;
- virtual void write_dmack(int state) override;
- virtual void write_pdiag(int state) override;
-
protected:
- ata_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ ata_hle_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
@@ -39,10 +23,54 @@ protected:
TIMER_CALLBACK_MEMBER(busy_tick);
TIMER_CALLBACK_MEMBER(empty_tick);
- void set_irq(int state);
- void set_dmarq(int state);
- void set_dasp(int state);
- void set_pdiag(int state);
+ uint16_t dma_r();
+ uint16_t command_r(offs_t offset);
+ uint16_t control_r(offs_t offset);
+
+ void dma_w(uint16_t data);
+ void command_w(offs_t offset, uint16_t data);
+ void control_w(offs_t offset, uint16_t data);
+
+ void set_csel_in(int state) { m_csel = state; }
+ void set_dasp_in(int state) { m_daspin = state; }
+ void set_dmack_in(int state);
+ void set_pdiag_in(int state);
+
+ void set_irq(int state)
+ {
+ if (m_irq != state)
+ {
+ m_irq = state;
+ update_irq();
+ }
+ }
+
+ void set_dmarq(int state)
+ {
+ if (m_dmarq != state)
+ {
+ m_dmarq = state;
+ set_dmarq_out(state);
+ }
+ }
+
+ void set_dasp(int state)
+ {
+ if (m_daspout != state)
+ {
+ m_daspout = state;
+ set_dasp_out(state);
+ }
+ }
+
+ void set_pdiag(int state)
+ {
+ if (m_pdiagout != state)
+ {
+ m_pdiagout = state;
+ set_pdiag_out(state);
+ }
+ }
void start_busy(const attotime &time, int param);
void stop_busy();
@@ -197,6 +225,11 @@ protected:
bool m_8bit_data_transfers;
private:
+ virtual void set_irq_out(int state) = 0;
+ virtual void set_dmarq_out(int state) = 0;
+ virtual void set_dasp_out(int state) = 0;
+ virtual void set_pdiag_out(int state) = 0;
+
void update_irq();
void write_buffer_full();
void start_diagnostic();
@@ -220,4 +253,4 @@ private:
emu_timer *m_buffer_empty_timer;
};
-#endif // MAME_BUS_ATA_ATAHLE_H
+#endif // MAME_MACHINE_ATAHLE_H
diff --git a/src/devices/bus/ata/idehd.cpp b/src/devices/machine/atastorage.cpp
index 6734bfa82c4..b869f50ceea 100644
--- a/src/devices/bus/ata/idehd.cpp
+++ b/src/devices/machine/atastorage.cpp
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
#include "emu.h"
-#include "idehd.h"
+#include "atastorage.h"
/***************************************************************************
DEBUGGING
@@ -20,8 +20,8 @@
#define TIME_FULL_STROKE_SEEK (attotime::from_usec(13000))
#define TIME_AVERAGE_ROTATIONAL_LATENCY (attotime::from_usec(1300))
-ata_mass_storage_device::ata_mass_storage_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
- : ata_hle_device(mconfig, type, tag, owner, clock),
+ata_mass_storage_device_base::ata_mass_storage_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ ata_hle_device_base(mconfig, type, tag, owner, clock),
m_can_identify_device(0),
m_num_cylinders(0),
m_num_sectors(0),
@@ -38,7 +38,7 @@ ata_mass_storage_device::ata_mass_storage_device(const machine_config &mconfig,
*
*************************************/
-uint32_t ata_mass_storage_device::lba_address()
+uint32_t ata_mass_storage_device_base::lba_address()
{
/* LBA direct? */
if (m_device_head & IDE_DEVICE_HEAD_L)
@@ -87,7 +87,7 @@ static void swap_strncpy(uint16_t *dst, const char *src, int field_size_in_words
}
-void ata_mass_storage_device::ide_build_identify_device()
+void ata_mass_storage_device_base::ide_build_identify_device()
{
memset(m_identify_buffer, 0, sizeof(m_identify_buffer));
int total_sectors = m_num_cylinders * m_num_heads * m_num_sectors;
@@ -196,9 +196,9 @@ void ata_mass_storage_device::ide_build_identify_device()
// device_start - device-specific startup
//-------------------------------------------------
-void ata_mass_storage_device::device_start()
+void ata_mass_storage_device_base::device_start()
{
- ata_hle_device::device_start();
+ ata_hle_device_base::device_start();
save_item(NAME(m_can_identify_device));
save_item(NAME(m_num_cylinders));
@@ -212,9 +212,9 @@ void ata_mass_storage_device::device_start()
save_item(NAME(m_block_count));
}
-void ata_mass_storage_device::soft_reset()
+void ata_mass_storage_device_base::soft_reset()
{
- ata_hle_device::soft_reset();
+ ata_hle_device_base::soft_reset();
m_cur_lba = 0;
m_status |= IDE_STATUS_DSC;
@@ -223,13 +223,13 @@ void ata_mass_storage_device::soft_reset()
m_user_password_enable = (m_user_password != nullptr);
}
-void ata_mass_storage_device::perform_diagnostic()
+void ata_mass_storage_device_base::perform_diagnostic()
{
if (m_can_identify_device)
m_error = IDE_ERROR_DIAGNOSTIC_PASSED;
}
-void ata_mass_storage_device::signature()
+void ata_mass_storage_device_base::signature()
{
m_sector_count = 1;
m_sector_number = 1;
@@ -238,7 +238,7 @@ void ata_mass_storage_device::signature()
m_device_head = 0;
}
-void ata_mass_storage_device::finished_command()
+void ata_mass_storage_device_base::finished_command()
{
int total_sectors = m_num_cylinders * m_num_heads * m_num_sectors;
@@ -298,7 +298,7 @@ void ata_mass_storage_device::finished_command()
break;
default:
- ata_hle_device::finished_command();
+ ata_hle_device_base::finished_command();
break;
}
}
@@ -309,7 +309,7 @@ void ata_mass_storage_device::finished_command()
*
*************************************/
-void ata_mass_storage_device::next_sector()
+void ata_mass_storage_device_base::next_sector()
{
uint8_t cur_head = m_device_head & IDE_DEVICE_HEAD_HS;
@@ -362,7 +362,7 @@ void ata_mass_storage_device::next_sector()
*
*************************************/
-void ata_mass_storage_device::security_error()
+void ata_mass_storage_device_base::security_error()
{
/* set error state */
m_status |= IDE_STATUS_ERR;
@@ -378,7 +378,7 @@ void ata_mass_storage_device::security_error()
*
*************************************/
-attotime ata_mass_storage_device::seek_time()
+attotime ata_mass_storage_device_base::seek_time()
{
int sectors_per_cylinder = m_num_heads * m_num_sectors;
@@ -400,7 +400,7 @@ attotime ata_mass_storage_device::seek_time()
return seek_time + TIME_AVERAGE_ROTATIONAL_LATENCY;
}
-void ata_mass_storage_device::fill_buffer()
+void ata_mass_storage_device_base::fill_buffer()
{
switch (m_command)
{
@@ -437,7 +437,7 @@ void ata_mass_storage_device::fill_buffer()
}
-void ata_mass_storage_device::finished_read()
+void ata_mass_storage_device_base::finished_read()
{
int lba = lba_address(), read_status;
@@ -489,7 +489,7 @@ void ata_mass_storage_device::finished_read()
}
-void ata_mass_storage_device::read_first_sector()
+void ata_mass_storage_device_base::read_first_sector()
{
if (m_master_password_enable || m_user_password_enable)
{
@@ -509,7 +509,7 @@ void ata_mass_storage_device::read_first_sector()
*
*************************************/
-void ata_mass_storage_device::process_buffer()
+void ata_mass_storage_device_base::process_buffer()
{
if (m_command == IDE_COMMAND_SECURITY_UNLOCK)
{
@@ -571,7 +571,7 @@ void ata_mass_storage_device::process_buffer()
}
-void ata_mass_storage_device::finished_write()
+void ata_mass_storage_device_base::finished_write()
{
int lba = lba_address(), count;
@@ -627,7 +627,7 @@ void ata_mass_storage_device::finished_write()
*
*************************************/
-void ata_mass_storage_device::process_command()
+void ata_mass_storage_device_base::process_command()
{
m_sectors_until_int = 0;
m_buffer_size = IDE_DISK_SECTOR_SIZE;
@@ -780,7 +780,7 @@ void ata_mass_storage_device::process_command()
break;
default:
- ata_hle_device::process_command();
+ ata_hle_device_base::process_command();
break;
}
}
@@ -789,27 +789,19 @@ void ata_mass_storage_device::process_command()
// IDE HARD DISK DEVICE
//**************************************************************************
-// device type definition
-DEFINE_DEVICE_TYPE(IDE_HARDDISK, ide_hdd_device, "idehd", "IDE Hard Disk")
-
//-------------------------------------------------
-// ide_hdd_device - constructor
+// ide_hdd_device_base - constructor
//-------------------------------------------------
-ide_hdd_device::ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ide_hdd_device(mconfig, IDE_HARDDISK, tag, owner, clock)
-{
-}
-
-ide_hdd_device::ide_hdd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
- : ata_mass_storage_device(mconfig, type, tag, owner, clock),
+ide_hdd_device_base::ide_hdd_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ ata_mass_storage_device_base(mconfig, type, tag, owner, clock),
m_image(*this, "image")
{
}
-void ide_hdd_device::device_start()
+void ide_hdd_device_base::device_start()
{
- ata_mass_storage_device::device_start();
+ ata_mass_storage_device_base::device_start();
/* create a timer for timing status */
m_last_status_timer = machine().scheduler().timer_alloc(timer_expired_delegate());
@@ -819,7 +811,7 @@ void ide_hdd_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void ide_hdd_device::device_reset()
+void ide_hdd_device_base::device_reset()
{
if (m_image->exists() && !m_can_identify_device)
{
@@ -851,12 +843,12 @@ void ide_hdd_device::device_reset()
m_can_identify_device = 1;
}
- ata_mass_storage_device::device_reset();
+ ata_mass_storage_device_base::device_reset();
}
-uint8_t ide_hdd_device::calculate_status()
+uint8_t ide_hdd_device_base::calculate_status()
{
- uint8_t result = ata_hle_device::calculate_status();
+ uint8_t result = ata_hle_device_base::calculate_status();
if (m_last_status_timer->elapsed() > TIME_PER_ROTATION)
{
@@ -871,7 +863,7 @@ uint8_t ide_hdd_device::calculate_status()
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void ide_hdd_device::device_add_mconfig(machine_config &config)
+void ide_hdd_device_base::device_add_mconfig(machine_config &config)
{
HARDDISK(config, "image", "ide_hdd");
}
@@ -880,15 +872,12 @@ void ide_hdd_device::device_add_mconfig(machine_config &config)
// ATA COMPACTFLASH CARD DEVICE
//**************************************************************************
-// device type definition
-DEFINE_DEVICE_TYPE(ATA_CF, ide_cf_device, "atacf", "ATA CompactFlash Card")
-
//-------------------------------------------------
-// ide_cf_device - constructor
+// cf_device_base - constructor
//-------------------------------------------------
-ide_cf_device::ide_cf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ide_hdd_device(mconfig, ATA_CF, tag, owner, clock)
+cf_device_base::cf_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ ide_hdd_device_base(mconfig, type, tag, owner, clock)
{
}
@@ -896,7 +885,7 @@ ide_cf_device::ide_cf_device(const machine_config &mconfig, const char *tag, dev
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void ide_cf_device::device_add_mconfig(machine_config &config)
+void cf_device_base::device_add_mconfig(machine_config &config)
{
HARDDISK(config, "image", "ata_cf");
}
@@ -905,7 +894,7 @@ void ide_cf_device::device_add_mconfig(machine_config &config)
// ide_build_identify_device
//-------------------------------------------------
-void ide_cf_device::ide_build_identify_device()
+void cf_device_base::ide_build_identify_device()
{
memset(m_identify_buffer, 0, sizeof(m_identify_buffer));
int total_sectors = m_num_cylinders * m_num_heads * m_num_sectors;
diff --git a/src/devices/bus/ata/idehd.h b/src/devices/machine/atastorage.h
index 1a6342ea6d9..cb1212ccece 100644
--- a/src/devices/bus/ata/idehd.h
+++ b/src/devices/machine/atastorage.h
@@ -4,20 +4,23 @@
idehd.h
- IDE Harddisk
+ IDE hard disk
***************************************************************************/
-#ifndef MAME_BUS_ATA_IDEHD_H
-#define MAME_BUS_ATA_IDEHD_H
+#ifndef MAME_MACHINE_ATASTORAGE_H
+#define MAME_MACHINE_ATASTORAGE_H
#pragma once
#include "atahle.h"
-#include "harddisk.h"
+
#include "imagedev/harddriv.h"
-class ata_mass_storage_device : public ata_hle_device
+#include "harddisk.h"
+
+
+class ata_mass_storage_device_base : public ata_hle_device_base
{
public:
uint16_t *identify_device_buffer() { return m_identify_buffer; }
@@ -35,8 +38,9 @@ public:
}
void set_dma_transfer_time(const attotime time) { m_dma_transfer_time = time; }
+
protected:
- ata_mass_storage_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ ata_mass_storage_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
@@ -84,16 +88,13 @@ private:
attotime m_dma_transfer_time;
};
-// ======================> ide_hdd_device
+// ======================> ide_hdd_device_base
-class ide_hdd_device : public ata_mass_storage_device
+class ide_hdd_device_base : public ata_mass_storage_device_base
{
-public:
- // construction/destruction
- ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
protected:
- ide_hdd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ ide_hdd_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -117,23 +118,19 @@ private:
emu_timer * m_last_status_timer;
};
-// ======================> ide_cf_device
-class ide_cf_device : public ide_hdd_device
+// ======================> cf_device_base
+
+class cf_device_base : public ide_hdd_device_base
{
-public:
+protected:
// construction/destruction
- ide_cf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cf_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-protected:
// optional information overrides
virtual void device_add_mconfig(machine_config &config) override;
- void ide_build_identify_device() override;
+ virtual void ide_build_identify_device() override;
};
-// device type definition
-DECLARE_DEVICE_TYPE(IDE_HARDDISK, ide_hdd_device)
-DECLARE_DEVICE_TYPE(ATA_CF, ide_cf_device)
-
-#endif // MAME_BUS_ATA_IDEHD_H
+#endif // MAME_MACHINE_ATASTORAGE_H
diff --git a/src/mame/atari/jaguar.cpp b/src/mame/atari/jaguar.cpp
index 506408c0f6a..45cccf07e27 100644
--- a/src/mame/atari/jaguar.cpp
+++ b/src/mame/atari/jaguar.cpp
@@ -337,22 +337,24 @@ Notes:
#include "emu.h"
#include "jaguar.h"
+#include "bus/ata/hdd.h"
#include "bus/generic/carts.h"
-#include "bus/ata/idehd.h"
+#include "cpu/jaguar/jaguar.h"
#include "cpu/m68000/m68000.h"
#include "cpu/m68000/m68020.h"
#include "cpu/mips/mips1.h"
-#include "cpu/jaguar/jaguar.h"
#include "imagedev/cdromimg.h"
#include "imagedev/snapquik.h"
#include "machine/eepromser.h"
-#include "machine/watchdog.h"
#include "machine/vt83c461.h"
+#include "machine/watchdog.h"
#include "sound/cdda.h"
-#include "cdrom.h"
+
#include "softlist_dev.h"
#include "speaker.h"
+#include "cdrom.h"
+
#define COJAG_CLOCK XTAL(52'000'000)
#define R3000_CLOCK XTAL(40'000'000)
#define M68K_CLOCK XTAL(50'000'000)
diff --git a/src/mame/konami/cobra.cpp b/src/mame/konami/cobra.cpp
index 032a9861aa9..d9f57bdf322 100644
--- a/src/mame/konami/cobra.cpp
+++ b/src/mame/konami/cobra.cpp
@@ -321,7 +321,7 @@
#include "windy2.h"
#include "bus/ata/ataintf.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "cpu/powerpc/ppc.h"
#include "machine/lpci.h"
#include "machine/timekpr.h"
diff --git a/src/mame/konami/djmain.cpp b/src/mame/konami/djmain.cpp
index baee3bbc92e..b0fb9c0e66d 100644
--- a/src/mame/konami/djmain.cpp
+++ b/src/mame/konami/djmain.cpp
@@ -72,7 +72,7 @@ hard drive 3.5 adapter long 3.5 IDE cable 3.5 adapter PCB
#include "konami_helper.h"
#include "bus/ata/ataintf.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "cpu/m68000/m68020.h"
#include "sound/k054539.h"
diff --git a/src/mame/konami/firebeat.cpp b/src/mame/konami/firebeat.cpp
index da72fcef089..40b7deb3861 100644
--- a/src/mame/konami/firebeat.cpp
+++ b/src/mame/konami/firebeat.cpp
@@ -139,30 +139,31 @@
*/
#include "emu.h"
+#include "k057714.h"
+#include "midikbd.h"
#include "bus/ata/ataintf.h"
#include "bus/ata/atapicdr.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "cpu/m68000/m68000.h"
#include "cpu/powerpc/ppc.h"
#include "machine/fdc37c665gt.h"
#include "machine/ins8250.h"
#include "machine/intelfsh.h"
#include "machine/mb8421.h"
-#include "midikbd.h"
#include "machine/rtc65271.h"
#include "machine/timer.h"
#include "sound/cdda.h"
#include "sound/xt446.h"
#include "sound/rf5c400.h"
#include "sound/ymz280b.h"
-#include "k057714.h"
#include "imagedev/floppy.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+
#include "osdcomm.h"
#include "wdlfft/fft.h"
diff --git a/src/mame/konami/viper.cpp b/src/mame/konami/viper.cpp
index ba1bd5e6da7..5b29e8d67be 100644
--- a/src/mame/konami/viper.cpp
+++ b/src/mame/konami/viper.cpp
@@ -403,15 +403,17 @@ The golf club acts like a LED gun. PCB power input is 12V.
*/
#include "emu.h"
+
#include "cpu/powerpc/ppc.h"
#include "cpu/upd78k/upd78k4.h"
#include "bus/ata/ataintf.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "machine/lpci.h"
#include "machine/timekpr.h"
#include "machine/timer.h"
#include "sound/dmadac.h"
#include "video/voodoo_banshee.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
diff --git a/src/mame/merit/mtouchxl.cpp b/src/mame/merit/mtouchxl.cpp
index 07388dda653..d82c9b17ed5 100644
--- a/src/mame/merit/mtouchxl.cpp
+++ b/src/mame/merit/mtouchxl.cpp
@@ -31,7 +31,7 @@
#include "emu.h"
#include "bus/ata/atapicdr.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "bus/isa/isa_cards.h"
#include "cpu/i386/i386.h"
#include "machine/at.h"
diff --git a/src/mame/microsoft/xbox.cpp b/src/mame/microsoft/xbox.cpp
index 43b27d58172..f59a3acc799 100644
--- a/src/mame/microsoft/xbox.cpp
+++ b/src/mame/microsoft/xbox.cpp
@@ -8,14 +8,14 @@
#include "emu.h"
-#include "machine/pci.h"
-#include "machine/idectrl.h"
#include "xbox_pci.h"
#include "xbox.h"
-#include "cpu/i386/i386.h"
#include "bus/ata/atapicdr.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
+#include "cpu/i386/i386.h"
+#include "machine/idectrl.h"
+#include "machine/pci.h"
#include "speaker.h"
@@ -49,7 +49,7 @@ protected:
// devices
optional_device<bus_master_ide_controller_device> m_ide;
- required_device<ata_mass_storage_device> m_devh;
+ required_device<ata_mass_storage_device_base> m_devh;
required_device<atapi_cdrom_device> m_devc;
};
diff --git a/src/mame/midway/seattle.cpp b/src/mame/midway/seattle.cpp
index c02d4e9ef09..7955fabb0a5 100644
--- a/src/mame/midway/seattle.cpp
+++ b/src/mame/midway/seattle.cpp
@@ -191,7 +191,7 @@
#include "cage.h"
#include "dcs.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "cpu/adsp2100/adsp2100.h"
#include "cpu/mips/mips3.h"
#include "machine/gt64xxx.h"
diff --git a/src/mame/midway/vegas.cpp b/src/mame/midway/vegas.cpp
index 3f09e7fbdcb..0a0e7269198 100644
--- a/src/mame/midway/vegas.cpp
+++ b/src/mame/midway/vegas.cpp
@@ -277,7 +277,7 @@
#include "dcs.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "bus/rs232/rs232.h"
#include "cpu/adsp2100/adsp2100.h"
#include "cpu/mips/mips3.h"
diff --git a/src/mame/namco/turrett.cpp b/src/mame/namco/turrett.cpp
index 229db6c8b7a..a43f47c76ca 100644
--- a/src/mame/namco/turrett.cpp
+++ b/src/mame/namco/turrett.cpp
@@ -11,7 +11,7 @@
#include "emu.h"
#include "turrett.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
/*************************************
@@ -331,7 +331,7 @@ public:
if (m_device_head & IDE_DEVICE_HEAD_L)
return (((m_device_head & IDE_DEVICE_HEAD_HS) << 24) | (m_cylinder_high << 16) | (m_cylinder_low << 8) | m_sector_number) - 63;
- return ata_mass_storage_device::lba_address();
+ return ide_hdd_device::lba_address();
}
};
diff --git a/src/mame/rare/kinst.cpp b/src/mame/rare/kinst.cpp
index d789a5c9491..be7eed48e31 100644
--- a/src/mame/rare/kinst.cpp
+++ b/src/mame/rare/kinst.cpp
@@ -187,7 +187,7 @@ Notes:
#include "dcs.h"
#include "bus/ata/ataintf.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "cpu/adsp2100/adsp2100.h"
#include "cpu/mips/mips3.h"
diff --git a/src/mame/sega/chihiro.cpp b/src/mame/sega/chihiro.cpp
index 7388632baad..1567f32671a 100644
--- a/src/mame/sega/chihiro.cpp
+++ b/src/mame/sega/chihiro.cpp
@@ -430,15 +430,15 @@ Thanks to Alex, Mr Mudkips, and Philip Burke for this info.
#include "emu.h"
+#include "jvs13551.h"
#include "xbox_pci.h"
#include "xbox.h"
#include "machine/pci.h"
#include "machine/idectrl.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "cpu/i386/i386.h"
-#include "jvs13551.h"
#include "machine/jvshost.h"
#include "naomigd.h"
@@ -1506,22 +1506,46 @@ void ohci_hlean2131sc_device::device_start()
// ======================> ide_baseboard_device
-class ide_baseboard_device : public ata_mass_storage_device
+class ide_baseboard_device : public ata_mass_storage_device_base, public device_ata_interface
{
public:
// construction/destruction
ide_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // device_ata_interface implementation
+ virtual uint16_t read_dma() override { return dma_r(); }
+ virtual uint16_t read_cs0(offs_t offset, uint16_t mem_mask) override { return command_r(offset); }
+ virtual uint16_t read_cs1(offs_t offset, uint16_t mem_mask) override { return control_r(offset); }
+
+ virtual void write_dma(uint16_t data) override { dma_w(data); }
+ virtual void write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask) override { command_w(offset, data); }
+ virtual void write_cs1(offs_t offset, uint16_t data, uint16_t mem_mask) override { control_w(offset, data); }
+
+ virtual void write_dmack(int state) override { set_dmack_in(state); }
+ virtual void write_csel(int state) override { set_csel_in(state); }
+ virtual void write_dasp(int state) override { set_dasp_in(state); }
+ virtual void write_pdiag(int state) override { set_pdiag_in(state); }
+
+ // ata_mass_storage_device_base implementation
virtual int read_sector(uint32_t lba, void *buffer) override;
virtual int write_sector(uint32_t lba, const void *buffer) override;
+
protected:
- // device-level overrides
+ // device_t implementation
virtual void device_start() override;
virtual void device_reset() override;
+
uint8_t read_buffer[0x20]{};
uint8_t write_buffer[0x20]{};
chihiro_state *chihirosystem{};
static const int size_factor = 2;
+
+private:
+ // ata_hle_device_base implementation
+ virtual void set_irq_out(int state) override { device_ata_interface::set_irq(state); }
+ virtual void set_dmarq_out(int state) override { device_ata_interface::set_dmarq(state); }
+ virtual void set_dasp_out(int state) override { device_ata_interface::set_dasp(state); }
+ virtual void set_pdiag_out(int state) override { device_ata_interface::set_pdiag(state); }
};
//**************************************************************************
@@ -1536,7 +1560,8 @@ DEFINE_DEVICE_TYPE(IDE_BASEBOARD, ide_baseboard_device, "ide_baseboard", "IDE Ba
//-------------------------------------------------
ide_baseboard_device::ide_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ata_mass_storage_device(mconfig, IDE_BASEBOARD, tag, owner, clock)
+ : ata_mass_storage_device_base(mconfig, IDE_BASEBOARD, tag, owner, clock)
+ , device_ata_interface(mconfig, *this)
{
}
@@ -1546,7 +1571,7 @@ ide_baseboard_device::ide_baseboard_device(const machine_config &mconfig, const
void ide_baseboard_device::device_start()
{
- ata_mass_storage_device::device_start();
+ ata_mass_storage_device_base::device_start();
chihirosystem = machine().driver_data<chihiro_state>();
// savestates
save_item(NAME(read_buffer));
@@ -1568,7 +1593,7 @@ void ide_baseboard_device::device_reset()
m_can_identify_device = 1;
}
- ata_mass_storage_device::device_reset();
+ ata_mass_storage_device_base::device_reset();
}
int ide_baseboard_device::read_sector(uint32_t lba, void *buffer)
diff --git a/src/mame/sinclair/atm.cpp b/src/mame/sinclair/atm.cpp
index a4fcb355eda..ea2e3ce5307 100644
--- a/src/mame/sinclair/atm.cpp
+++ b/src/mame/sinclair/atm.cpp
@@ -14,7 +14,7 @@ NOTES:
#include "atm.h"
#include "bus/ata/atapicdr.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "sound/ay8910.h"
#define LOG_MEM (1U << 1)
diff --git a/src/mame/sinclair/sprinter.cpp b/src/mame/sinclair/sprinter.cpp
index e33a3197ba9..d5371c299da 100644
--- a/src/mame/sinclair/sprinter.cpp
+++ b/src/mame/sinclair/sprinter.cpp
@@ -40,7 +40,7 @@ TODO:
#include "bus/ata/atapicdr.h"
#include "bus/ata/ataintf.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "bus/isa/isa.h"
#include "bus/isa/isa_cards.h"
#include "bus/pc_kbd/keyboards.h"
diff --git a/src/mame/sony/taitogn.cpp b/src/mame/sony/taitogn.cpp
index 28b49681bc6..0b069a33be9 100644
--- a/src/mame/sony/taitogn.cpp
+++ b/src/mame/sony/taitogn.cpp
@@ -873,91 +873,91 @@ ROM_END
ROM_START(raycris)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "raycris", 0, SHA1(9d255710c87c3286542d357820d828807cc6ca07))
ROM_END
ROM_START(raycrisj)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "raycrisj", 0, SHA1(015cb0e6c4421cc38809de28c4793b4491386aee))
ROM_END
ROM_START(gobyrc)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard2:image" )
+ DISK_REGION( "ata:pccard:taitopccard2" )
DISK_IMAGE( "gobyrc", 0, SHA1(0bee1f495fc8b033fd56aad9260ae94abb35eb58))
ROM_END
ROM_START(rcdego)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "rcdego", 0, SHA1(9e177f2a3954cfea0c8c5a288e116324d10f5dd1))
ROM_END
ROM_START(chaoshea)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "chaosheat", 0, SHA1(c13b7d7025eee05f1f696d108801c7bafb3f1356))
ROM_END
ROM_START(chaosheaj)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "chaosheatj", 0, SHA1(2f211ac08675ea8ec33c7659a13951db94eaa627))
ROM_END
ROM_START(flipmaze)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "flipmaze", 0, SHA1(423b6c06f4f2d9a608ce20b61a3ac11687d22c40) )
ROM_END
ROM_START(spuzbobl)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard2:image" )
+ DISK_REGION( "ata:pccard:taitopccard2" )
DISK_IMAGE( "spuzbobl", 0, SHA1(1b1c72fb7e5656021485fefaef8f2ba48e2b4ea8))
ROM_END
ROM_START(spuzboblj)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard2:image" )
+ DISK_REGION( "ata:pccard:taitopccard2" )
DISK_IMAGE( "spuzbobj", 0, SHA1(dac433cf88543d2499bf797d7406b82ae4338726))
ROM_END
ROM_START(soutenry)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "soutenry", 0, SHA1(9204d0be833d29f37b8cd3fbdf09da69b622254b))
ROM_END
ROM_START(shanghss)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "shanghss", 0, SHA1(7964f71ec5c81d2120d83b63a82f97fbad5a8e6d))
ROM_END
ROM_START(sianniv)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "sianniv", 0, SHA1(1e08b813190a9e1baf29bc16884172d6c8da7ae3))
ROM_END
ROM_START(kollon)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "kollon", 0, SHA1(d8ea5b5b0ee99004b16ef89883e23de6c7ddd7ce))
ROM_END
@@ -965,21 +965,21 @@ ROM_START(kollonc)
TAITOGNET_BIOS
ROM_DEFAULT_BIOS( "v2" )
- DISK_REGION( "pccard:taitocf:image" )
+ DISK_REGION( "ata:pccard:taitocf" )
DISK_IMAGE( "kollonc", 0, SHA1(ce62181659701cfb8f7c564870ab902be4d8e060)) /* Original Taito Compact Flash version */
ROM_END
ROM_START(shikigam)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "shikigam", 0, SHA1(fa49a0bc47f5cb7c30d7e49e2c3696b21bafb840))
ROM_END
ROM_START(shikigama)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "shikigama", 0, SHA1(a6fe194c86730963301be9710782ca4ac1bf3e8d))
ROM_END
@@ -989,42 +989,42 @@ ROM_END
ROM_START(otenamih)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "otenamih", 0, SHA1(b3babe3a1876c43745616ee1e7d87276ce7dad0b) )
ROM_END
ROM_START(psyvaria)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "psyvaria", 0, SHA1(3c7fca5180356190a8bf94b22a847fdd2e6a4e13))
ROM_END
ROM_START(psyvarij)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "psyvarij", 0, SHA1(b981a42a10069322b77f7a268beae1d409b4156d))
ROM_END
ROM_START(psyvarrv)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "psyvarrv", 0, SHA1(277c4f52502bcd7acc1889840962ec80d56465f3))
ROM_END
ROM_START(zooo)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "zooo", 0, SHA1(e275b3141b2bc49142990e6b497a5394a314a30b))
ROM_END
ROM_START(zokuoten)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "zokuoten", 0, SHA1(5ce13db00518f96af64935176c71ec68d2a51938))
ROM_END
@@ -1032,7 +1032,7 @@ ROM_START(otenamhf)
TAITOGNET_BIOS
ROM_DEFAULT_BIOS( "v2" )
- DISK_REGION( "pccard:taitocf:image" )
+ DISK_REGION( "ata:pccard:taitocf" )
DISK_IMAGE( "otenamhf", 0, SHA1(5b15c33bf401e5546d78e905f538513d6ffcf562)) /* Original Taito Compact Flash version */
ROM_END
@@ -1042,14 +1042,14 @@ ROM_END
ROM_START(nightrai)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "nightrai", 0, SHA1(74d0458f851cbcf10453c5cc4c47bb4388244cdf))
ROM_END
ROM_START(otenki)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "otenki", 0, SHA1(7e745ca4c4570215f452fd09cdd56a42c39caeba))
ROM_END
@@ -1059,21 +1059,21 @@ ROM_END
ROM_START(usagi)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard2:image" )
+ DISK_REGION( "ata:pccard:taitopccard2" )
DISK_IMAGE( "usagi", 0, SHA1(edf9dd271957f6cb06feed238ae21100514bef8e))
ROM_END
ROM_START(mahjngoh)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "mahjngoh", 0, SHA1(3ef1110d15582d7c0187438d7ad61765dd121cff))
ROM_END
ROM_START(shangtou)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "shanghaito", 0, SHA1(9901db5a9aae77e3af4157aa2c601eaab5b7ca85) )
ROM_END
@@ -1083,7 +1083,7 @@ ROM_END
ROM_START(xiistag)
TAITOGNET_BIOS
- DISK_REGION( "pccard:taitopccard1:image" )
+ DISK_REGION( "ata:pccard:taitopccard1" )
DISK_IMAGE( "xiistag", 0, SHA1(586e37c8d926293b2bd928e5f0d693910cfb05a2))
ROM_END
diff --git a/src/mame/taito/taitotz.cpp b/src/mame/taito/taitotz.cpp
index c9ea63ce3e8..89eaa68337f 100644
--- a/src/mame/taito/taitotz.cpp
+++ b/src/mame/taito/taitotz.cpp
@@ -173,7 +173,7 @@ Notes:
#include "emu.h"
#include "bus/ata/ataintf.h"
-#include "bus/ata/idehd.h"
+#include "bus/ata/hdd.h"
#include "cpu/powerpc/ppc.h"
#include "cpu/tlcs900/tmp95c063.h"
#include "machine/nvram.h"