From 94a570128008f206d7688aeecf3ef96dfbc77fa9 Mon Sep 17 00:00:00 2001 From: hpa Date: Sat, 4 Aug 2001 06:10:08 +0000 Subject: [PATCH] Bug workaround for Award BIOSes. --- NEWS | 1 + isolinux.asm | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 85fa729..7686ae1 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ Changes in 1.63: * SYSLINUX: Fix stack-smash bug identified by Steffen Winterfeldt. * Hopefully fix return-to-text-mode on some graphics cards. + * ISOLINUX: Bug workaround for Award BIOS 4.51. Changes in 1.62: * PXELINUX: Allow the DHCP server to override the diff --git a/isolinux.asm b/isolinux.asm index 663b0d1..7fa64c6 100644 --- a/isolinux.asm +++ b/isolinux.asm @@ -555,8 +555,8 @@ integrity_ok: %endif jmp all_read ; Jump to main code - ; INT 13h, AX=4B01h, DL=7Fh failed. Try to scan the - ; entire 80h-FFh from the end. + ; INT 13h, AX=4B01h, DL= failed. + ; Try to scan the entire 80h-FFh from the end. spec_query_failed: mov si,spec_err_msg call writemsg @@ -577,7 +577,7 @@ spec_query_failed: call crlf cmp byte [sp_drive],dl - jne .still_broken + jne .maybe_broken ; Okay, good enough... mov si,alright_msg @@ -585,6 +585,13 @@ spec_query_failed: mov [DriveNo],dl jmp found_drive + ; Award BIOS 4.51 apparently passes garbage in sp_drive, + ; but if this was the drive number originally passed in + ; DL then consider it "good enough" +.maybe_broken: + cmp byte [DriveNo],dl + je found_drive + .still_broken: dec dx cmp dl, 80h jnb .test_loop @@ -800,7 +807,7 @@ alright_msg: db 'Looks like it might be right, continuing...', CR, LF, 0 nosecsize_msg: db 'Failed to get sector size, assuming 0800', CR, LF, 0 diskerr_msg: db 'Disk error ', 0 ondrive_str: db ', drive ', 0 -nothing_msg: db 'Failed to access CD-ROM device; boot failed.', CR, LF, 0 +nothing_msg: db 'Failed to locate CD-ROM device; boot failed.', CR, LF, 0 checkerr_msg: db 'Image checksum error, sorry...', CR, LF, 0 err_bootfailed db CR, LF, 'Boot failed: press a key to retry...' -- 2.7.4