i8251, upd765: Allow read side effects to be disabled (nw)

This commit is contained in:
AJR 2019-03-10 16:56:06 -04:00
parent 79040abaf0
commit afd80b1a98
2 changed files with 22 additions and 14 deletions

View File

@ -674,9 +674,11 @@ uint8_t i8251_device::data_r()
{
LOG("read data: %02x, STATUS=%02x\n",m_rx_data,m_status);
/* reading clears */
if (!machine().side_effects_disabled())
{
m_status &= ~I8251_STATUS_RX_READY;
update_rx_ready();
}
return m_rx_data;
}

View File

@ -444,7 +444,7 @@ uint8_t upd765_family_device::msr_r()
}
msr |= get_drive_busy();
if(data_irq) {
if(data_irq && !machine().side_effects_disabled()) {
data_irq = false;
check_irq();
}
@ -471,6 +471,8 @@ uint8_t upd765_family_device::fifo_r()
uint8_t r = 0xff;
switch(main_phase) {
case PHASE_EXEC:
if(machine().side_effects_disabled())
return fifo[0];
if(internal_drq)
return fifo_pop(false);
LOGFIFO("fifo_r in phase %d\n", main_phase);
@ -478,6 +480,7 @@ uint8_t upd765_family_device::fifo_r()
case PHASE_RESULT:
r = result[0];
if(!machine().side_effects_disabled()) {
result_pos--;
memmove(result, result+1, result_pos);
if(!result_pos)
@ -489,6 +492,7 @@ uint8_t upd765_family_device::fifo_r()
fi.main_state = IDLE;
clr_drive_busy();
}
}
break;
default:
LOGFIFO("fifo_r in phase %d\n", main_phase);
@ -645,6 +649,8 @@ void upd765_family_device::fifo_expect(int size, bool write)
uint8_t upd765_family_device::dma_r()
{
if(machine().side_effects_disabled())
return fifo[0];
return fifo_pop(false);
}