diff options
author | 2014-04-06 16:03:17 +0000 | |
---|---|---|
committer | 2014-04-06 16:03:17 +0000 | |
commit | 3a2d05048629902324044b4204cc7efe0c013af9 (patch) | |
tree | ef728540bb1b0d6aaed6ccd2a3ffff49938d2b76 /src/emu/machine/hd63450.c | |
parent | 4a2be6f1637dfaeb98aea894c742457e9515cfca (diff) |
(mess) x68k: rework bus errors (nw)
hd63450: don't set timer when transfer expects only drqs (nw)
upd765: x68k hangs when it receives polling irqs so can only guess the upd72065 doesn't send them (nw)
Diffstat (limited to 'src/emu/machine/hd63450.c')
-rw-r--r-- | src/emu/machine/hd63450.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/emu/machine/hd63450.c b/src/emu/machine/hd63450.c index 60a68345702..a95a3ba9d5d 100644 --- a/src/emu/machine/hd63450.c +++ b/src/emu/machine/hd63450.c @@ -269,6 +269,8 @@ void hd63450_device::dma_transfer_start(int channel, int dir) m_timer[channel]->adjust(attotime::from_usec(500), channel, m_our_clock[channel]); else if((m_reg[channel].ocr & 3) == 3) m_timer[channel]->adjust(attotime::from_usec(500), channel, attotime::never); + else if((m_reg[channel].ocr & 3) == 2) + m_timer[channel]->adjust(attotime::never, channel, attotime::never); m_transfer_size[channel] = m_reg[channel].mtc; @@ -284,6 +286,8 @@ void hd63450_device::set_timer(int channel, attotime tm) TIMER_CALLBACK_MEMBER(hd63450_device::dma_transfer_timer) { + if((m_reg[param].ocr & 3) == 2) + return; single_transfer(param); } |