delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2002/06/11/21:00:15

From: "Frank Troy Cook Jr." <fcook1 AT carolina DOT rr DOT com>
Newsgroups: comp.os.msdos.djgpp
References: <eGkN8.90451$6v2 DOT 3674113 AT twister DOT southeast DOT rr DOT com> <OE62WSGmHP7DBdmkTXd00012964 AT hotmail DOT com>
Subject: Re: bit and bytes ... help [ biosdisk ]
Lines: 68
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2919.6700
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700
Message-ID: <uZwN8.91726$6v2.3769476@twister.southeast.rr.com>
Date: Wed, 12 Jun 2002 00:54:50 GMT
NNTP-Posting-Host: 24.88.156.103
X-Complaints-To: abuse AT rr DOT com
X-Trace: twister.southeast.rr.com 1023843290 24.88.156.103 (Tue, 11 Jun 2002 20:54:50 EDT)
NNTP-Posting-Date: Tue, 11 Jun 2002 20:54:50 EDT
Organization: RoadRunner - Carolina
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

wonderful help guys. thx

now tell me one more thing, where can i find 9on the web, a tutorial or
article on such a subject

"J. L." <jlsgarrido AT hotmail DOT com> wrote in message
news:OE62WSGmHP7DBdmkTXd00012964 AT hotmail 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