From b4bea10c0638a0ccdd31dcdd49247f8a1e1ea2d8 Mon Sep 17 00:00:00 2001 From: TomW Date: Sat, 29 Mar 2014 15:17:23 +0000 Subject: [PATCH] Set transmitter shift register empty bit in serial LSR. Windows 3.1 no longer hangs when DOS mouse driver loaded. --- src/serial.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/serial.c b/src/serial.c index f5088a8..bd9a1e5 100644 --- a/src/serial.c +++ b/src/serial.c @@ -172,7 +172,10 @@ uint8_t serial_read(uint16_t addr, void *p) { case 0: if (serial->lcr & 0x80 && !AMSTRADIO) - return serial->dlab1; + { + temp = serial->dlab1; + break; + } serial->lsr &= ~1; serial->int_status &= ~SERIAL_INT_RECEIVE; @@ -206,6 +209,8 @@ uint8_t serial_read(uint16_t addr, void *p) temp = serial->mctrl; break; case 5: + if (serial->lsr & 0x20) + serial->lsr |= 0x40; serial->lsr |= 0x20; temp = serial->lsr; if (serial->lsr & 0x1f)