From: Shao Miller Date: Fri, 20 Nov 2009 01:20:33 +0000 (-0500) Subject: memdisk: Restore DL for INT 13h, AH=15h, DL=floppy X-Git-Tag: syslinux-3.84-pre4^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a59acfdc096be06d1319ee4010eea8abc7b9824e;p=profile%2Fivi%2Fsyslinux.git memdisk: Restore DL for INT 13h, AH=15h, DL=floppy At least PC-DOS requires this to avoid an infinite loop; the DL we restore is not the same DL that we call the underlying BIOS with, but rather the original one (before the decrement.) PC-DOS loops over all the floppies and relies on the call preserving DL in order to advance the loop. Signed-off-by: H. Peter Anvin --- diff --git a/memdisk/memdisk.inc b/memdisk/memdisk.inc index 98ad52b..a37218b 100644 --- a/memdisk/memdisk.inc +++ b/memdisk/memdisk.inc @@ -174,7 +174,9 @@ Int13Start: cmp byte [cs:SavedAX+1],08h ; Get drive params function? je .norestoredl ; DL = number of drives cmp byte [cs:SavedAX+1],15h ; Get disk type function? - je .norestoredl ; CX:DX = size of device + jne .restoredl + test byte [bp+4],80h ; Hard disk? + jnz .norestoredl ; CX:DX = size of device .restoredl: mov dl,[bp+4] .norestoredl: