1
0
Fork 0

Call int 0xe when resetting a disk. Fixes a keydisk workaround algorithm. (thanks ripsaw)

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3751
This commit is contained in:
Peter Veenstra 2011-09-01 12:19:52 +00:00
parent 81085e036e
commit 6dfe1d9dcf
3 changed files with 16 additions and 3 deletions

View file

@ -333,12 +333,14 @@ static Bitu INT13_DiskHandler(void) {
if ((machine==MCH_CGA) || (machine==MCH_PCJR)) {
/* those bioses call floppy drive reset for invalid drive values */
if (((imageDiskList[0]) && (imageDiskList[0]->active)) || ((imageDiskList[1]) && (imageDiskList[1]->active))) {
if (reg_dl<0x80) reg_ip++;
last_status = 0x00;
CALLBACK_SCF(false);
}
}
return CBRET_NONE;
}
if (reg_dl<0x80) reg_ip++;
last_status = 0x00;
CALLBACK_SCF(false);
}
@ -500,7 +502,7 @@ static Bitu INT13_DiskHandler(void) {
void BIOS_SetupDisks(void) {
/* TODO Start the time correctly */
call_int13=CALLBACK_Allocate();
CALLBACK_Setup(call_int13,&INT13_DiskHandler,CB_IRET,"Int 13 Bios disk");
CALLBACK_Setup(call_int13,&INT13_DiskHandler,CB_INT13,"Int 13 Bios disk");
RealSetVec(0x13,CALLBACK_RealPointer(call_int13));
int i;
for(i=0;i<4;i++) {