mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
wd33c93: handle 'polled DMA' in vme_hcpu30 (nw)
This commit is contained in:
parent
fd99568b8c
commit
dd52821ceb
@ -901,8 +901,8 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
set_scsi_state(FINISHED);
|
||||
irq_fifo_push(SCSI_STATUS_SELECT_TRANSFER_SUCCESS);
|
||||
} else {
|
||||
// Makes very little sense, but the previous code did it and warzard seems to need it - XXX
|
||||
m_regs[CONTROL] |= CONTROL_EDI;
|
||||
set_scsi_state(FINISHED);
|
||||
irq_fifo_push(SCSI_STATUS_DISCONNECT);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1164,6 +1164,8 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
delay(send_byte());
|
||||
} else if ((m_regs[CONTROL] & CONTROL_DM) == CONTROL_DM_POLLED) {
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
} else {
|
||||
delay(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1208,9 +1210,13 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
if (!data_fifo_full()) {
|
||||
// if it's the last message byte, ACK remains asserted, terminate with function_complete()
|
||||
//state = (m_xfr_phase == S_PHASE_MSG_IN && (!dma_command || tcounter == 1)) ? INIT_XFR_RECV_BYTE_NACK : INIT_XFR_RECV_BYTE_ACK;
|
||||
scsi_bus->ctrl_wait(scsi_refid, S_REQ, S_REQ);
|
||||
set_scsi_state((RECV_WAIT_REQ_1 << SUB_SHIFT) | INIT_XFR_RECV_BYTE_ACK);
|
||||
step(false);
|
||||
if (m_drq_state) {
|
||||
delay(1);
|
||||
} else {
|
||||
scsi_bus->ctrl_wait(scsi_refid, S_REQ, S_REQ);
|
||||
set_scsi_state((RECV_WAIT_REQ_1 << SUB_SHIFT) | INIT_XFR_RECV_BYTE_ACK);
|
||||
step(false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user