]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[int13] Catch INT 13,4b when no explicit drive number is present
authorMichael Brown <mcb30@ipxe.org>
Thu, 28 Apr 2011 12:05:40 +0000 (13:05 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 28 Apr 2011 12:07:32 +0000 (13:07 +0100)
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 <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/interface/pcbios/int13.c

index 93d01088fae289d250e6202418e383245a17afb2..b099958c6e1de40b6b7abcd78827332f5d1dbf9e 100644 (file)
@@ -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: