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 <shao.miller@yrdsb.edu.on.ca>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
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
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