]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
SERDATR() fix
authorToni Wilen <twilen@winuae.net>
Sun, 19 Feb 2023 15:55:45 +0000 (17:55 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 19 Feb 2023 15:55:45 +0000 (17:55 +0200)
od-win32/serial_win32.cpp

index 33597757593fabe043af41493688d5059710c268..448ea8d780e0c291f435c2417849e8a7abf99158 100644 (file)
@@ -597,7 +597,7 @@ static void checksend(void)
        }
 #ifdef RETROPLATFORM
        if (rp_ismodem()) {
-               rp_writemodem(serdatshift & 0xff);
+               rp_writemodem((uae_u8)serdatshift_masked);
        }
 #endif
        if (serempty_enabled && !serxdevice_enabled) {
@@ -892,7 +892,7 @@ static void SERDAT_send(uae_u32 v)
 uae_u16 SERDATR(void)
 {
        serdatr &= 0x03ff;
-       if (!data_in_serdat || (ser_accurate && get_cycles() >= data_in_serdat_delay)) {
+       if (!data_in_serdat && (!ser_accurate || (ser_accurate && get_cycles() >= data_in_serdat_delay))) {
                serdatr |= 0x2000; // TBE (Transmit buffer empty)
        }
        if (!data_in_sershift && (serdatr & 0x2000)) {
@@ -1240,6 +1240,7 @@ void serial_close(void)
        serxdevice_enabled = false;
        serper_set = false;
        ser_accurate = false;
+       data_in_serdat_delay = 0;
 }
 
 void serial_init(void)