1
0
Fork 0

Improve disk serial number DOS functions.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4102
This commit is contained in:
ripsaw8080 2018-05-22 15:07:38 +00:00
parent a8633eff6a
commit cd9e7b3c07
2 changed files with 25 additions and 11 deletions

View file

@ -1103,16 +1103,29 @@ static Bitu DOS_21Handler(void) {
break;
case 0x69: /* Get/Set disk serial number */
{
Bit16u old_cx=reg_cx;
switch(reg_al) {
case 0x00: /* Get */
LOG(LOG_DOSMISC,LOG_ERROR)("DOS:Get Disk serial number");
CALLBACK_SCF(true);
LOG(LOG_DOSMISC,LOG_WARN)("DOS:Get Disk serial number");
reg_cl=0x66;// IOCTL function
break;
case 0x01: /* Set */
LOG(LOG_DOSMISC,LOG_WARN)("DOS:Set Disk serial number");
reg_cl=0x46;// IOCTL function
break;
case 0x01:
LOG(LOG_DOSMISC,LOG_ERROR)("DOS:Set Disk serial number");
default:
E_Exit("DOS:Illegal Get Serial Number call %2X",reg_al);
}
reg_ch=0x08; // IOCTL category: disk drive
reg_ax=0x440d; // Generic block device request
if (DOS_IOCTL()) {
reg_ax=0; // AX destroyed
CALLBACK_SCF(false);
} else {
reg_ax=dos.errorcode;
CALLBACK_SCF(true);
}
reg_cx=old_cx;
break;
}
case 0x6c: /* Extended Open/Create */