#include
"stdio.h"
#include
"iostream.h"
#include
"dos.h"
main()
{
//AIM :
to detect the drive type using the dos call
union REGS i,o;
struct SREGS s;
unsigned char far *media_id;
int
drive_no,no_of_clust,sect_per_clust,bytes_per_clust;
unsigned long memkb;
cout<<"\nEnter drive number :
";
cin>>drive_no;
i.h.dl=drive_no;
i.h.ah=0x1c; //service no.
intdosx(&i,&o,&s);
media_id=(unsigned char
far*)MK_FP(s.ds,o.x.bx);
no_of_clust=o.x.dx;
sect_per_clust=o.h.al;
bytes_per_clust=o.x.cx;
printf("\n\nMedia descriptor is :
%X",*media_id);
//cout<<"\n\nMedia descriptor
is : "<<*media_id;
cout<<"\nDisk Found : ";
switch(*media_id)
{
case 0xF8 :
cout<<"Hard disk \n";
break;
case 0xf0 :
cout<<"3.5-inch double-sided, 18 sectors";
break;
case 0xf9 :
cout<<"5.25-inch double-sided, 15 sectors";
cout<<"\nor-3.5
inch double-sided, 9 sectors";
break;
case 0xfc :
cout<<"5.25-inch single-sided, 9 sectors";
break;
case 0xfd :
cout<<"5.25-inch double-sided, 9 sectors";
break;
case 0xfe :
cout<<"5.25-inch single-sided, 8 sectors";
break;
case 0xff :
cout<<"5.25-inch double-sided, 8 sectors";
break;
// case dafault :
cout<<"DOES NOT EXIST ON YOUR SYSTEM";
// break;
}
memkb=(long)no_of_clust*sect_per_clust*bytes_per_clust/1024;
cout<<"\nDisk capacity :
"<<memkb<<" Kb";
cout<<"\nNumber of clusters :
"<<no_of_clust;
cout<<"\nNumber of Sectors per
cluster : "<<sect_per_clust;
cout<<"\nNumber of bytes per
cluster : "<<bytes_per_clust;
cout<<endl;
return 0;
}