mirror of https://github.com/FDOS/kernel.git
Correct int21/ax=4401: returned AL = old value, should set CY and DE_INVLDDATA
if DH!=0 (RBIL is a little confusing here). git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@878 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
parent
fed4d61e90
commit
74970d953b
|
@ -106,10 +106,17 @@ COUNT DosDevIOctl(lregs * r)
|
|||
/* can't set the status of a file. */
|
||||
if (!(flags & SFT_FDEVICE))
|
||||
return DE_INVLDFUNC;
|
||||
/* RBIL says this is only for DOS < 6, but MSDOS 7.10 */
|
||||
/* returns this as well... and some buggy program relies*/
|
||||
/* on it :( */
|
||||
if (r->DH != 0)
|
||||
return DE_INVLDDATA;
|
||||
|
||||
/* Undocumented: AL should get the old value */
|
||||
r->AL = s->sft_flags_lo;
|
||||
/* Set it to what we got in the DL register from the */
|
||||
/* user. */
|
||||
r->AL = s->sft_flags_lo = SFT_FDEVICE | r->DL;
|
||||
s->sft_flags_lo = SFT_FDEVICE | r->DL;
|
||||
break;
|
||||
|
||||
case 0x02:
|
||||
|
|
Loading…
Reference in New Issue