From 8fe70b0a6e2def8ac650beb55e5213ea23c6c0ef Mon Sep 17 00:00:00 2001 From: Ben Russell Date: Fri, 24 Mar 2023 21:50:06 +0000 Subject: [PATCH] vid_ega: Make the read-write CRTC registers readable This fixes a lockup that happens when returning from QBASIC under many screen modes, including SCREEN 0. --- src/video/vid_ega.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/video/vid_ega.c b/src/video/vid_ega.c index b85863e8d..3da38da35 100644 --- a/src/video/vid_ega.c +++ b/src/video/vid_ega.c @@ -312,8 +312,25 @@ ega_in(uint16_t addr, void *p) break; case 0x3d1: case 0x3d5: - if (ega_type) - ret = ega->crtc[ega->crtcreg]; + switch(ega->crtcreg) { + case 0xc: + case 0xd: + case 0xe: + case 0xf: + ret = ega->crtc[ega->crtcreg]; + break; + + case 0x10: + case 0x11: + // TODO: Return light pen address once implemented + if (ega_type) + ret = ega->crtc[ega->crtcreg]; + break; + + default: + if (ega_type) + ret = ega->crtc[ega->crtcreg]; + } break; case 0x3da: ega->attrff = 0;