From: Toni Wilen Date: Sat, 1 Oct 2022 16:52:40 +0000 (+0300) Subject: Don't emulate "sticky" RBF interrupt bit in cycle-accurate or loopback mode. X-Git-Tag: 41000~130 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=a2993060e1aea29ce47ff6fab164fe1552669052;p=francis%2Fwinuae.git Don't emulate "sticky" RBF interrupt bit in cycle-accurate or loopback mode. --- diff --git a/od-win32/serial_win32.cpp b/od-win32/serial_win32.cpp index c0d3ed9d..c03208cb 100644 --- a/od-win32/serial_win32.cpp +++ b/od-win32/serial_win32.cpp @@ -313,8 +313,17 @@ static void serial_rx_irq(void) void serial_rethink(void) { - if (data_in_serdatr && ((currprefs.cpu_memory_cycle_exact && get_cycles() > data_in_serdatr_evt) || !currprefs.cpu_memory_cycle_exact)) { - INTREQ_INT(11, 0); + if (data_in_serdatr) { + if (currprefs.cpu_memory_cycle_exact && get_cycles() > data_in_serdatr_evt) { + data_in_serdatr = 0; + } + if (serloop_enabled) { + data_in_serdatr = 0; + } + // RBF bit is not "sticky" but without it data can be lost when using fast emulation modes and physical serial port. + if (data_in_serdatr) { + INTREQ_INT(11, 0); + } } }