OK, I have built a new version of eltorito.sys. Hopefully there would be no problems any more.
Unzip the attachment, you will get the binary driver eltorito.sys and the source code eltorito.asm.
And here is the patch to syslinux-5.00, for anyone who want to check:
--- eltorito.asm~ 2012-12-06 18:47:31.000000000 +0800 +++ eltorito.asm 2012-12-22 01:30:42.356535569 +0800 @@ -1029,8 +1029,8 @@ ScanDrives: push ax ; at df3 in 1.4 push si - mov dl, 7fh ;Start at Drive 0x80 -NextDrv: inc dl + mov dl, 0h ;Start at Drive 0xFF +NextDrv: dec dl clc mov ax,4B01h ;Get Bootable CD-ROM Status mov BYTE [SpecPkt],0 ;Clear 1st byte of SpecPkt @@ -1044,16 +1044,16 @@ jb FindFail cmp BYTE [SpecPkt], 20h ja FindFail ; in 1.4 at e16 - jmp short SendFound ; in 1.4 at e26 + cmp dl, [SpecPkt+2] + je SendFound ; success with CF=0 -FindFail: cmp dl, 0ffh - je SendFail ; Check from 80h..ffh - jmp short NextDrv ;Next drive +FindFail: cmp dl, 80h ; Check from 80h..ffh + jne NextDrv ; Next drive SendFail: xor dl,dl stc - jmp short ThingDone -SendFound: mov dl, [SpecPkt+2] - clc + ;jmp short ThingDone ; yes, this jmp can be omitted. +SendFound: ;mov dl, [SpecPkt+2] ; already equal on success + ;clc ; already cleared CF on success ThingDone: pop si pop ax retn
Note: With Grub4dos, you should use the 0xFF drive number for the emulated cdrom drive. Or else the eltorito.sys might fail.
eltorito.zip 9.41KB
471 downloads
grub4dos_test.zip 302.91KB 428 downloads
grub4dos_r312.diff.zip 1.17KB 400 downloads