From ea3185af900624148012b9fda596f7b5f9414d6d Mon Sep 17 00:00:00 2001 From: cracyc Date: Sat, 4 Sep 2021 20:19:56 -0500 Subject: [PATCH] i8257: fix it so tc can work with multiple devices --- src/devices/machine/i8257.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/devices/machine/i8257.cpp b/src/devices/machine/i8257.cpp index 663c5851abf..c2fb87d203b 100644 --- a/src/devices/machine/i8257.cpp +++ b/src/devices/machine/i8257.cpp @@ -428,7 +428,7 @@ void i8257_device::execute_run() if (m_ready) { m_state = STATE_S4; - if (m_channel[m_current_channel].m_count == 0) + if ((m_channel[m_current_channel].m_count == 0) && (MODE_TRANSFER_MASK != MODE_TRANSFER_READ)) set_tc(1); } else @@ -439,7 +439,7 @@ void i8257_device::execute_run() if (m_ready) { m_state = STATE_S4; - if (m_channel[m_current_channel].m_count == 0) + if ((m_channel[m_current_channel].m_count == 0) && (MODE_TRANSFER_MASK != MODE_TRANSFER_READ)) set_tc(1); } break; @@ -449,6 +449,8 @@ void i8257_device::execute_run() { dma_write(); } + if ((m_channel[m_current_channel].m_count == 0) && (MODE_TRANSFER_MASK == MODE_TRANSFER_READ)) + set_tc(1); advance(); if(m_hack && next_channel())