Browse Source

[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 <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 13 years ago
parent
commit
62c9635166
1 changed files with 7 additions and 2 deletions
  1. 7
    2
      src/arch/i386/interface/pcbios/int13.c

+ 7
- 2
src/arch/i386/interface/pcbios/int13.c View File

1187
 					bios_drive, int13->drive );
1187
 					bios_drive, int13->drive );
1188
 				ix86->regs.dl = int13->drive;
1188
 				ix86->regs.dl = int13->drive;
1189
 				return;
1189
 				return;
1190
+			} else if ( ( ( bios_drive & 0x7f ) == 0x7f ) &&
1191
+				    ( command == INT13_CDROM_STATUS_TERMINATE )
1192
+				    && int13->is_cdrom ) {
1193
+				/* Catch non-drive-specific CD-ROM calls */
1194
+			} else {
1195
+				continue;
1190
 			}
1196
 			}
1191
-			continue;
1192
 		}
1197
 		}
1193
 		
1198
 		
1194
 		DBGC2 ( int13, "INT13,%02x (%02x): ",
1199
 		DBGC2 ( int13, "INT13,%02x (%02x): ",
1195
-			ix86->regs.ah, int13->drive );
1200
+			ix86->regs.ah, bios_drive );
1196
 
1201
 
1197
 		switch ( command ) {
1202
 		switch ( command ) {
1198
 		case INT13_RESET:
1203
 		case INT13_RESET:

Loading…
Cancel
Save