From a59acfdc096be06d1319ee4010eea8abc7b9824e Mon Sep 17 00:00:00 2001 From: Shao Miller Date: Thu, 19 Nov 2009 20:20:33 -0500 Subject: [PATCH] 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 --- memdisk/memdisk.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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: -- 2.7.4