bus/ata/atahle.cpp: Reset error state on writing CS0 command. (#10869)

Also added constants for standby commands (not implemented yet).
This commit is contained in:
holub 2023-02-14 14:44:07 -05:00 committed by GitHub
parent 5569cefdc2
commit 28669c5007
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 4 deletions

View File

@ -583,10 +583,6 @@ uint16_t ata_hle_device::read_dma()
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 at %X, mem_mask=%X\n", machine().describe_context(), offset, mem_mask));
uint16_t result = 0xffff;
if (device_selected() || m_single_device)
@ -695,6 +691,10 @@ 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));
/* return the result */
return result;
}
@ -890,6 +890,7 @@ void ata_hle_device::write_cs0(offs_t offset, uint16_t data, uint16_t mem_mask)
else if (device_selected() || m_command == IDE_COMMAND_DIAGNOSTIC)
{
m_command = data;
m_error = IDE_ERROR_NONE;
/* implicitly clear interrupts & dmarq here */
set_irq(CLEAR_LINE);

View File

@ -120,7 +120,9 @@ protected:
IDE_COMMAND_SET_BLOCK_COUNT = 0xc6,
IDE_COMMAND_READ_DMA = 0xc8,
IDE_COMMAND_WRITE_DMA = 0xca,
IDE_COMMAND_STANDBY_IMMEDIATE = 0xe0,
IDE_COMMAND_IDLE_IMMEDIATE = 0xe1,
IDE_COMMAND_STANDBY = 0xe2,
IDE_COMMAND_IDLE = 0xe3,
IDE_COMMAND_CHECK_POWER_MODE = 0xe5,
IDE_COMMAND_CACHE_FLUSH = 0xe7,