diff options
author | 2020-11-29 23:18:34 -0500 | |
---|---|---|
committer | 2020-11-29 23:18:34 -0500 | |
commit | a2523f472cba6b7f9a4aa9833a28c5be3c2d1dd9 (patch) | |
tree | 7bfd6a49dfca9ac1f026932fc3787a72aaaedebb | |
parent | a480715bda615adb0a77efb092d76993d1200698 (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.cpp | 4 |
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: |