home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_03_03 / 3n03024a < prev    next >
Text File  |  1992-02-08  |  1KB  |  49 lines

  1. #include <dos.h>
  2. #include <stdio.h>
  3. #include <malloc.h>
  4.  
  5. #pragma pack(1)
  6.  
  7. typedef struct {     // format of device list entries
  8.                 unsigned char unit;
  9.                 unsigned short dev_header_offset;
  10.                 unsigned short dev_header_segment;
  11.                }  dev_list;
  12.  
  13. main()
  14. {
  15. union REGS r;
  16. struct SREGS sr;
  17. dev_list *dl;
  18.  
  19.       // ask MSCDEX for # of CD drives
  20. r.x.ax = 0x1500;
  21. r.x.bx = 0;
  22. int86(0x2f, &r, &r);
  23. if (!r.x.bx)
  24.    {
  25.    printf("MSCDEX not installed or no CD drives\n");
  26.    exit(1);
  27.    }
  28.  
  29.       // allocate memory for device list
  30. if (dl = (dev_list *) malloc(r.x.bx * sizeof (dev_list)))
  31.    {     // fill allocated memory with device list
  32.    segread(&sr);
  33.    sr.es = sr.ds;
  34.    r.x.bx = (unsigned int) dl; // list addr to es:bx
  35.    r.x.ax = 0x1501;
  36.    int86x(0x2f, &r, &r, &sr);  // ask MSCDEX for driver lst
  37.    if (!r.x.cflag)
  38.       printf("Address of 1st CD-ROM header:%04X:%04X\n",
  39.         dl->dev_header_segment, dl->dev_header_offset);
  40.    else
  41.       printf("Error from MSCDEX!\n");
  42.    }
  43. else
  44.    printf("Unable to allocate memory!\n");
  45. }
  46.  
  47. /* End of File */ 
  48.  
  49.