delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2002/06/11/20:08:29

X-Originating-IP: [200.34.143.5]
From: "J. L." <jlsgarrido AT hotmail DOT com>
To: <djgpp AT delorie DOT com>
Cc: <fcook1SPAMBLOCK AT carolina DOT rr DOT com>
References: <eGkN8.90451$6v2 DOT 3674113 AT twister DOT southeast DOT rr DOT com>
Subject: Re: bit and bytes ... help [ biosdisk ]
Date: Tue, 11 Jun 2002 17:55:37 -0500
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4807.1700
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700
Message-ID: <OE62WSGmHP7DBdmkTXd00012964@hotmail.com>
X-OriginalArrivalTime: 11 Jun 2002 22:55:31.0546 (UTC) FILETIME=[1688C3A0:01C2119B]
Reply-To: djgpp AT delorie DOT com

----- Original Message -----
From: "Frank Troy Cook Jr." <fcook1 AT carolina DOT rr DOT com>
Newsgroups: comp.os.msdos.djgpp
To: <djgpp AT delorie DOT com>
Sent: Tuesday, June 11, 2002 5:55 AM
Subject: bit and bytes ... help [ biosdisk ]


> i need to extract drive information returned from a biosdisk call. for
> example:
>
> main()
> {
>         int count;
>         char buffer[512];
>         biosdisk(8, 0x80, 0, 0, 0, 1, buffer);
>         for(count=0; count < 4; count++)
>         {
>                 printf("%u ", buffer[count]);
>         }
>         printf("\n");
> }
>
> i understandfrom the djgpp site that the first 4 bytes return:
> byte 0 = sectors per track (bits 0..5) and top two bits of cylinder (in
bits
> 6..7)
> byte 1 = cyliders (bits 0..7)
> byte 2 = number of drives
> byte 3 = number of heads
> how do i convert this to integer numbers correctly?
>
If I understand the info of libgc... 8)

You must mask, shift and reorder the byte 0 to 3.

#include <stdio.h>
#include <bios.h>

int main(void){
         int dummy;
         int sect_per_trac, cylinders, num_drives, num_heads;
         char buffer[512];

         biosdisk(8, 0x80, 0, 0, 0, 1, buffer);

        sec_per_tracks=buffer[0]&0x3C;
        dummy=(buffer[0]&0xC0 >> 5) << 8;
        cylinders=buffer[1]&0xFF + dummy;
        num_drives=buffer[2]&0xFF;
        num_heads=buffer[3]&0xFF;
        /* anything else ...
        */
        return 0;
}

> please respond to fcook1SPAMBLOCK AT carolina DOT rr DOT com
>

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019