diff options
author | hpa <hpa> | 2001-08-04 06:10:08 +0000 |
---|---|---|
committer | hpa <hpa> | 2001-08-04 06:10:08 +0000 |
commit | 94a570128008f206d7688aeecf3ef96dfbc77fa9 (patch) | |
tree | 08969930d65e4d9ea1db51bf19292b2d759e0c76 /isolinux.asm | |
parent | bd25633152b1a9887b418851eb10ca9b204b86a6 (diff) | |
download | syslinux-94a570128008f206d7688aeecf3ef96dfbc77fa9.tar.gz |
Bug workaround for Award BIOSes.
Diffstat (limited to 'isolinux.asm')
-rw-r--r-- | isolinux.asm | 15 |
1 files changed, 11 insertions, 4 deletions
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...' |