Bug workaround for Award BIOSes.
authorhpa <hpa>
Sat, 4 Aug 2001 06:10:08 +0000 (06:10 +0000)
committerhpa <hpa>
Sat, 4 Aug 2001 06:10:08 +0000 (06:10 +0000)
NEWS
isolinux.asm

diff --git a/NEWS b/NEWS
index 85fa729..7686ae1 100644 (file)
--- 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
index 663b0d1..7fa64c6 100644 (file)
@@ -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=<passed in value> 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...'