summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit1cc4958adae2c48986fb3a5a1d077642b95793c3 (patch)
tree9c83104847c7d853e0b13864b6a5925dca8de6fd
parentb2c8477b23ec3494986024675a22e2b64dc68cc4 (diff)
hd63450: speed up max rate transfers
-rw-r--r--src/devices/machine/hd63450.cpp7
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);
}