mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
i8251, upd765: Allow read side effects to be disabled (nw)
This commit is contained in:
parent
79040abaf0
commit
afd80b1a98
@ -674,9 +674,11 @@ uint8_t i8251_device::data_r()
|
|||||||
{
|
{
|
||||||
LOG("read data: %02x, STATUS=%02x\n",m_rx_data,m_status);
|
LOG("read data: %02x, STATUS=%02x\n",m_rx_data,m_status);
|
||||||
/* reading clears */
|
/* reading clears */
|
||||||
|
if (!machine().side_effects_disabled())
|
||||||
|
{
|
||||||
m_status &= ~I8251_STATUS_RX_READY;
|
m_status &= ~I8251_STATUS_RX_READY;
|
||||||
|
|
||||||
update_rx_ready();
|
update_rx_ready();
|
||||||
|
}
|
||||||
return m_rx_data;
|
return m_rx_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,7 +444,7 @@ uint8_t upd765_family_device::msr_r()
|
|||||||
}
|
}
|
||||||
msr |= get_drive_busy();
|
msr |= get_drive_busy();
|
||||||
|
|
||||||
if(data_irq) {
|
if(data_irq && !machine().side_effects_disabled()) {
|
||||||
data_irq = false;
|
data_irq = false;
|
||||||
check_irq();
|
check_irq();
|
||||||
}
|
}
|
||||||
@ -471,6 +471,8 @@ uint8_t upd765_family_device::fifo_r()
|
|||||||
uint8_t r = 0xff;
|
uint8_t r = 0xff;
|
||||||
switch(main_phase) {
|
switch(main_phase) {
|
||||||
case PHASE_EXEC:
|
case PHASE_EXEC:
|
||||||
|
if(machine().side_effects_disabled())
|
||||||
|
return fifo[0];
|
||||||
if(internal_drq)
|
if(internal_drq)
|
||||||
return fifo_pop(false);
|
return fifo_pop(false);
|
||||||
LOGFIFO("fifo_r in phase %d\n", main_phase);
|
LOGFIFO("fifo_r in phase %d\n", main_phase);
|
||||||
@ -478,6 +480,7 @@ uint8_t upd765_family_device::fifo_r()
|
|||||||
|
|
||||||
case PHASE_RESULT:
|
case PHASE_RESULT:
|
||||||
r = result[0];
|
r = result[0];
|
||||||
|
if(!machine().side_effects_disabled()) {
|
||||||
result_pos--;
|
result_pos--;
|
||||||
memmove(result, result+1, result_pos);
|
memmove(result, result+1, result_pos);
|
||||||
if(!result_pos)
|
if(!result_pos)
|
||||||
@ -489,6 +492,7 @@ uint8_t upd765_family_device::fifo_r()
|
|||||||
fi.main_state = IDLE;
|
fi.main_state = IDLE;
|
||||||
clr_drive_busy();
|
clr_drive_busy();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGFIFO("fifo_r in phase %d\n", main_phase);
|
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()
|
uint8_t upd765_family_device::dma_r()
|
||||||
{
|
{
|
||||||
|
if(machine().side_effects_disabled())
|
||||||
|
return fifo[0];
|
||||||
return fifo_pop(false);
|
return fifo_pop(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user