summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/idehd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/machine/idehd.c')
-rw-r--r--src/emu/machine/idehd.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/emu/machine/idehd.c b/src/emu/machine/idehd.c
index d8434bd4d50..f60702ac3bc 100644
--- a/src/emu/machine/idehd.c
+++ b/src/emu/machine/idehd.c
@@ -214,6 +214,8 @@ void ata_mass_storage_device::signature()
void ata_mass_storage_device::finished_command()
{
+ int total_sectors = m_num_cylinders * m_num_heads * m_num_sectors;
+
switch (m_command)
{
case IDE_COMMAND_IDENTIFY_DEVICE:
@@ -261,6 +263,14 @@ void ata_mass_storage_device::finished_command()
set_irq(ASSERT_LINE);
break;
+ case IDE_COMMAND_READ_NATIVE_MAX_ADDRESS:
+ m_buffer[0] = (total_sectors & 0xff000000) >> 24;
+ m_buffer[1] = (total_sectors & 0x00ff0000) >> 16;
+ m_buffer[2] = (total_sectors & 0x0000ff00) >> 8;
+ m_buffer[3] = (total_sectors & 0x000000ff);
+ set_irq(ASSERT_LINE);
+ break;
+
default:
ata_hle_device::finished_command();
break;
@@ -712,6 +722,10 @@ void ata_mass_storage_device::process_command()
set_irq(ASSERT_LINE);
break;
+ case IDE_COMMAND_READ_NATIVE_MAX_ADDRESS:
+ start_busy(MINIMUM_COMMAND_TIME, PARAM_COMMAND);
+ break;
+
default:
ata_hle_device::process_command();
break;