summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShao Miller <shao.miller@yrdsb.edu.on.ca>2010-06-11 04:15:19 (GMT)
committerShao Miller <sha0@terminus.zytor.com>2010-06-11 05:35:23 (GMT)
commit7078b91c088d66654ecad3a5e2d73e317fc6035d (patch)
tree97aa604891367f8a3f8fd62267559c77e0d49f2a
parent08b3602db548775ca819780de77686a186156ec7 (diff)
downloadsyslinux-7078b91c088d66654ecad3a5e2d73e317fc6035d.zip
syslinux-7078b91c088d66654ecad3a5e2d73e317fc6035d.tar.gz
syslinux-7078b91c088d66654ecad3a5e2d73e317fc6035d.tar.bz2
syslinux-7078b91c088d66654ecad3a5e2d73e317fc6035d.tar.xz
eltorito: Scan upwards instead of downwardseltorito_scanup
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. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
-rw-r--r--dosutil/eltorito.asm8
-rw-r--r--dosutil/eltorito.sysbin0 -> 1554 bytes
2 files 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
diff --git a/dosutil/eltorito.sys b/dosutil/eltorito.sys
new file mode 100644
index 0000000..5b50ca1
--- /dev/null
+++ b/dosutil/eltorito.sys
Binary files differ