diff options
Diffstat (limited to 'src/emu/machine/idehd.c')
-rw-r--r-- | src/emu/machine/idehd.c | 14 |
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; |