From 1cc4958adae2c48986fb3a5a1d077642b95793c3 Mon Sep 17 00:00:00 2001 From: cracyc Date: Sat, 29 May 2021 14:11:27 -0500 Subject: hd63450: speed up max rate transfers --- src/devices/machine/hd63450.cpp | 7 ++++--- 1 file 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); } -- cgit v1.2.3