summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhpa <hpa>2001-08-04 06:10:08 +0000
committerhpa <hpa>2001-08-04 06:10:08 +0000
commit94a570128008f206d7688aeecf3ef96dfbc77fa9 (patch)
tree08969930d65e4d9ea1db51bf19292b2d759e0c76
parentbd25633152b1a9887b418851eb10ca9b204b86a6 (diff)
downloadsyslinux-94a570128008f206d7688aeecf3ef96dfbc77fa9.tar.gz
Bug workaround for Award BIOSes.
-rw-r--r--NEWS1
-rw-r--r--isolinux.asm15
2 files changed, 12 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 85fa7291..7686ae19 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 663b0d13..7fa64c64 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=<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...'