Merge pull request #3728 from pmackinlay/ncr5390

ncr5390: dma fixes again (nw)
This commit is contained in:
ajrhacker 2018-07-05 07:59:12 -04:00 committed by GitHub
commit 827fbdbc1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -510,16 +510,16 @@ void ncr5390_device::step(bool timeout)
break;
case INIT_XFR_FUNCTION_COMPLETE:
// wait for dma transfer to complete
if (dma_command && !(status & S_TC0))
// wait for dma transfer to complete or fifo to drain
if (dma_command && !(status & S_TC0) && fifo_pos)
break;
function_complete();
break;
case INIT_XFR_BUS_COMPLETE:
// wait for dma transfer to complete
if (dma_command && !(status & S_TC0))
// wait for dma transfer to complete or fifo to drain
if (dma_command && !(status & S_TC0) && fifo_pos)
break;
bus_complete();
@ -987,7 +987,7 @@ WRITE8_MEMBER(ncr5390_device::clock_w)
void ncr5390_device::dma_set(int dir)
{
dma_dir = dir;
if(dma_dir == DMA_OUT && fifo_pos != 16 && tcounter > fifo_pos)
if(dma_dir == DMA_OUT && fifo_pos != 16 && ((tcounter > fifo_pos) || !tcounter))
drq_set();
}