Hello, OKUJI!

> > Apprarently, get_diskinfo_standard (INT 13 AH=8h) returns success for
> > every drive (Intel 440ZX, Award BIOS)
> 
>   Can you test this patch?

Your patch doesn't work, but I like your style :-)

Award BIOS returns zero values for the geometry, but it doesn't consider
this as an error.
This means that the carry flag is not set for non-existing disks.

Number of sectors may not be 0 for a valid disk, because sectors are
numbered beginning with 1.
Following patch works for me:

Index: asm.S
===================================================================
RCS file: /gd/gnu/anoncvsroot/grub/stage2/asm.S,v
retrieving revision 1.3
diff -u -r1.3 asm.S
--- asm.S       1999/06/27 08:34:45     1.3
+++ asm.S       1999/07/30 06:32:44
@@ -596,6 +596,14 @@
        .code16
        movb    $0x8, %ah
        int     $0x13           /* do the operation */
+       testb   %ah, %ah
+       jnz     1f
+       /* bogus BIOSes may not return an error number */
+       testb   $0x3f, %cl      /* 0 sectors means no disk */
+       jnz     1f              /* if non-carrier, then succeed */
+       /* XXX 0x60 is one of the unused error numbers */
+       movb    $0x60, %ah
+1:
        movb    %ah, %bl        /* save return value in %bl */
        /* back to protected mode */
        data32
===================================================================

Pavel Roskin

Reply via email to