From: "Frank Troy Cook Jr." Newsgroups: comp.os.msdos.djgpp References: 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: 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." wrote in message news:OE62WSGmHP7DBdmkTXd00012964 AT hotmail DOT com... > > ----- Original Message ----- > From: "Frank Troy Cook Jr." > Newsgroups: comp.os.msdos.djgpp > To: > 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 > #include > > 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 > >