From aa1050f66db73be1f61eea0c2df8169430d32d8e Mon Sep 17 00:00:00 2001 From: Shao Miller Date: Fri, 11 Jun 2010 04:15:19 +0000 Subject: [PATCH] eltorito: Scan upwards instead of downwards A developer for GRUB4DOS called tinybit has reported that some BIOSes crash when the DOS ElTorito.Sys driver scans drive number 0xFF. According to the El Torito specification, drive 0x7F means "terminate all," so a plausible explanation suggested by H. Peter Anvin is that the drive 0xFF is a shadow of drive 0x7F, thus contributing to a failure on these BIOSes. Now we scan from 0x80 through 0xFF, instead. [ hpa: dropped checkin of eltorito.sys ] Signed-off-by: Shao Miller Signed-off-by: H. Peter Anvin --- dosutil/eltorito.asm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dosutil/eltorito.asm b/dosutil/eltorito.asm index eabda12..96cfd9b 100644 --- a/dosutil/eltorito.asm +++ b/dosutil/eltorito.asm @@ -1029,7 +1029,7 @@ SpecGo: mov si,SpecPkt ScanDrives: push ax ; at df3 in 1.4 push si - mov dl, 0ffh ;Start at Drive 0xff + mov dl, 80h ;Start at Drive 0x80 NextDrv: mov ax,4B01h ;Get Bootable CD-ROM Status mov BYTE [SpecPkt],0 ;Clear 1st byte of SpecPkt call SpecGo @@ -1044,9 +1044,9 @@ NextDrv: mov ax,4B01h ;Get Bootable CD-ROM Status ja FindFail ; in 1.4 at e16 jmp short SendFound ; in 1.4 at e26 -FindFail: dec dl ;Next drive - cmp dl, 80h - jb SendFail ; Check from ffh..80h +FindFail: inc dl ;Next drive + cmp dl, 0ffh + jb SendFail ; Check from 80h..ffh jmp short NextDrv SendFail: xor dl,dl stc -- 2.7.4