diff options
author | cracyc <cracyc@users.noreply.github.com> | 2021-05-29 14:11:27 -0500 |
---|---|---|
committer | cracyc <cracyc@users.noreply.github.com> | 2021-05-29 14:11:27 -0500 |
commit | 1cc4958adae2c48986fb3a5a1d077642b95793c3 (patch) | |
tree | 9c83104847c7d853e0b13864b6a5925dca8de6fd | |
parent | b2c8477b23ec3494986024675a22e2b64dc68cc4 (diff) |
hd63450: speed up max rate transfers
-rw-r--r-- | src/devices/machine/hd63450.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/devices/machine/hd63450.cpp b/src/devices/machine/hd63450.cpp index 27ef55487f1..21b032f55f6 100644 --- a/src/devices/machine/hd63450.cpp +++ b/src/devices/machine/hd63450.cpp @@ -298,7 +298,8 @@ void hd63450_device::dma_transfer_start(int channel) } // Burst transfers will halt the CPU until the transfer is complete - if ((m_reg[channel].dcr & 0xc0) == 0x00) // Burst transfer + // max rate transfer hold the bus + if (((m_reg[channel].dcr & 0xc0) == 0x00) || ((m_reg[channel].ocr & 3) == 1)) // Burst transfer { m_cpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); m_timer[channel]->adjust(attotime::zero, channel, m_burst_clock[channel]); @@ -494,8 +495,8 @@ void hd63450_device::single_transfer(int x) m_reg[x].csr &= ~0x08; // channel no longer active m_reg[x].ccr &= ~0xc0; - // Burst transfer - if ((m_reg[x].dcr & 0xc0) == 0x00) + // Burst transfer or max rate transfer + if (((m_reg[x].dcr & 0xc0) == 0x00) || ((m_reg[x].ocr & 3) == 1)) { m_cpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); } |