int 21h/4400h only return low byte of SFT flags if not a device, part of dosemu2/fdpp bug #147 fix - b2b55fc1af

This commit is contained in:
Kenneth J Davis 2021-07-22 22:31:45 -04:00
parent 516a4e7e55
commit c6fafbbb2d

View File

@ -114,10 +114,10 @@ int DosDevIOctl(lregs * r)
{ {
case 0x00: case 0x00:
/* Get the flags from the SFT */ /* Get the flags from the SFT */
r->AX = flags & 0xff;
if (flags & SFT_FDEVICE) if (flags & SFT_FDEVICE)
r->AX = (flags & 0xff) | (s->sft_dev->dh_attr & 0xff00); r->AX |= (s->sft_dev->dh_attr & 0xff00);
else /* else: files/networks return 0 in AH/DH */
r->AX = flags;
/* Undocumented result, Ax = Dx seen using Pcwatch */ /* Undocumented result, Ax = Dx seen using Pcwatch */
r->DX = r->AX; r->DX = r->AX;
return SUCCESS; return SUCCESS;