diff --git a/src/chipset/opti495.c b/src/chipset/opti495.c index 5d2313ef9..cdde85300 100644 --- a/src/chipset/opti495.c +++ b/src/chipset/opti495.c @@ -152,7 +152,7 @@ opti495_write(uint16_t addr, uint8_t val, void *priv) case 0xe1: case 0xe2: - dev->scratch[addr] = val; + dev->scratch[~addr & 0x01] = val; break; } } @@ -176,7 +176,7 @@ opti495_read(uint16_t addr, void *priv) break; case 0xe1: case 0xe2: - ret = dev->scratch[addr]; + ret = dev->scratch[~addr & 0x01]; break; } diff --git a/src/chipset/opti499.c b/src/chipset/opti499.c index 87bc39c8d..1768908a4 100644 --- a/src/chipset/opti499.c +++ b/src/chipset/opti499.c @@ -162,7 +162,7 @@ opti499_write(uint16_t addr, uint8_t val, void *priv) break; case 0xe1: case 0xe2: - dev->scratch[addr] = val; + dev->scratch[~addr & 0x01] = val; break; } } @@ -189,7 +189,7 @@ opti499_read(uint16_t addr, void *priv) break; case 0xe1: case 0xe2: - ret = dev->scratch[addr]; + ret = dev->scratch[~addr & 0x01]; break; } diff --git a/src/include/86box/vid_pgc.h b/src/include/86box/vid_pgc.h index 1a179a775..ecfc61c2b 100644 --- a/src/include/86box/vid_pgc.h +++ b/src/include/86box/vid_pgc.h @@ -133,6 +133,7 @@ extern void pgc_wake(pgc_t *); extern void pgc_sleep(pgc_t *); extern void pgc_setdisplay(pgc_t *, int cga); extern void pgc_speed_changed(void *priv); +extern void pgc_close_common(void *priv); extern void pgc_close(void *priv); extern void pgc_init(pgc_t *, int maxw, int maxh, int visw, int vish, diff --git a/src/video/vid_im1024.c b/src/video/vid_im1024.c index a1fe6491d..aebc95a5d 100644 --- a/src/video/vid_im1024.c +++ b/src/video/vid_im1024.c @@ -1007,7 +1007,7 @@ im1024_close(void *priv) { im1024_t *dev = (im1024_t *)priv; - pgc_close(&dev->pgc); + pgc_close_common(&dev->pgc); free(dev); } diff --git a/src/video/vid_pgc.c b/src/video/vid_pgc.c index 32e8b31ac..47b4a4541 100644 --- a/src/video/vid_pgc.c +++ b/src/video/vid_pgc.c @@ -2600,7 +2600,7 @@ pgc_speed_changed(void *priv) void -pgc_close(void *priv) +pgc_close_common(void *priv) { pgc_t *dev = (pgc_t *)priv; @@ -2633,6 +2633,15 @@ pgc_close(void *priv) free(dev->cga_vram); if (dev->vram) free(dev->vram); +} + + +void +pgc_close(void *priv) +{ + pgc_t *dev = (pgc_t *)priv; + + pgc_close_common(priv); free(dev); }