summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/hd63450.c
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2014-04-06 16:03:17 +0000
committer cracyc <cracyc@users.noreply.github.com>2014-04-06 16:03:17 +0000
commit3a2d05048629902324044b4204cc7efe0c013af9 (patch)
treeef728540bb1b0d6aaed6ccd2a3ffff49938d2b76 /src/emu/machine/hd63450.c
parent4a2be6f1637dfaeb98aea894c742457e9515cfca (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.c4
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);
}