소스 검색

[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 년 전
부모
커밋
62c9635166
1개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 7
    2
      src/arch/i386/interface/pcbios/int13.c

+ 7
- 2
src/arch/i386/interface/pcbios/int13.c 파일 보기

@@ -1187,12 +1187,17 @@ static __asmcall void int13 ( struct i386_all_regs *ix86 ) {
1187 1187
 					bios_drive, int13->drive );
1188 1188
 				ix86->regs.dl = int13->drive;
1189 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 1199
 		DBGC2 ( int13, "INT13,%02x (%02x): ",
1195
-			ix86->regs.ah, int13->drive );
1200
+			ix86->regs.ah, bios_drive );
1196 1201
 
1197 1202
 		switch ( command ) {
1198 1203
 		case INT13_RESET:

Loading…
취소
저장