summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2020-11-29 23:18:34 -0500
committer arbee <rb6502@users.noreply.github.com>2020-11-29 23:18:34 -0500
commita2523f472cba6b7f9a4aa9833a28c5be3c2d1dd9 (patch)
tree7bfd6a49dfca9ac1f026932fc3787a72aaaedebb
parenta480715bda615adb0a77efb092d76993d1200698 (diff)
h8: fixed race condition in SCI where a new byte was written right before the last tick and froze the transmitter. [R. Belmont]
-rw-r--r--src/devices/cpu/h8/h8_sci.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/devices/cpu/h8/h8_sci.cpp b/src/devices/cpu/h8/h8_sci.cpp
index 7f6c84b21d9..04a666e5066 100644
--- a/src/devices/cpu/h8/h8_sci.cpp
+++ b/src/devices/cpu/h8/h8_sci.cpp
@@ -609,6 +609,10 @@ void h8_sci_device::tx_dropped_edge()
ssr |= SSR_TEND;
if(scr & SCR_TEIE)
intc->internal_interrupt(tei_int);
+
+ // if there's more to send, start the transmitter
+ if ((scr & SCR_TE) && !(ssr & SSR_TDRE))
+ tx_start();
break;
default: