From: Michael Brown Date: Thu, 28 Apr 2011 12:05:40 +0000 (+0100) Subject: [int13] Catch INT 13,4b when no explicit drive number is present X-Git-Tag: v1.20.1~2139 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=62c963516612103c965f7b4789faf63753ca77a4;p=thirdparty%2Fipxe.git [int13] Catch INT 13,4b when no explicit drive number is present This allows older versions of ELTORITO.SYS (such as the version found on the FreeDOS installation CD-ROM) to use iPXE's emulated CD-ROM drive. Reported-by: Robin Smidsrød Signed-off-by: Michael Brown --- diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/i386/interface/pcbios/int13.c index 93d01088f..b099958c6 100644 --- a/src/arch/i386/interface/pcbios/int13.c +++ b/src/arch/i386/interface/pcbios/int13.c @@ -1187,12 +1187,17 @@ static __asmcall void int13 ( struct i386_all_regs *ix86 ) { bios_drive, int13->drive ); ix86->regs.dl = int13->drive; return; + } else if ( ( ( bios_drive & 0x7f ) == 0x7f ) && + ( command == INT13_CDROM_STATUS_TERMINATE ) + && int13->is_cdrom ) { + /* Catch non-drive-specific CD-ROM calls */ + } else { + continue; } - continue; } DBGC2 ( int13, "INT13,%02x (%02x): ", - ix86->regs.ah, int13->drive ); + ix86->regs.ah, bios_drive ); switch ( command ) { case INT13_RESET: