Fix one edge case of gpstatus stall.

Which fixes Win3.1's Mach32 2.3 4bpp driver stalling.
This commit is contained in:
TC1995
2025-07-05 11:01:25 +02:00
parent cbeeae048d
commit 2ef029fb05

View File

@@ -270,7 +270,7 @@ mach_log(const char *fmt, ...)
static int
mach_pixel_write(mach_t *mach)
{
if (mach->accel.dp_config & 1)
if (mach->accel.dp_config & 0x01)
return 1;
return 0;
@@ -279,7 +279,7 @@ mach_pixel_write(mach_t *mach)
static int
mach_pixel_read(mach_t *mach)
{
if (mach->accel.dp_config & 1)
if (mach->accel.dp_config & 0x01)
return 0;
return 1;
@@ -4303,6 +4303,10 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in
dev->force_busy = 0;
else if ((mono_src == 2) || (frgd_sel == 2) || (bkgd_sel == 2))
dev->force_busy = 0;
else if (!dev->accel.cmd_back)
dev->force_busy = 0;
mach_log("2Force Busy=%d, frgdsel=%d, bkgdsel=%d, monosrc=%d, read=%d, dpconfig=%04x, back=%d.\n", dev->force_busy, frgd_sel, bkgd_sel, mono_src, mach_pixel_read(mach), mach->accel.dp_config, dev->accel.cmd_back);
break;
case 5:
if (dev->accel.sx >= mach->accel.width)