#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;

}