[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

   /*
    * Get_Disk_Unit_ID.c
    *
    * Example of getting the UnitID of a disk
    *
    * Compile with SAS C 5.10  lc -b1 -cfistq -v -y -L
    *
    * Run from CLI only
    */

   #include <exec/types.h>
   #include <exec/memory.h>
   #include <dos/dos.h>
   #include <resources/disk.h>

   #include <clib/exec_protos.h>

   #include <stdio.h>

   #ifdef LATTICE
   int CXBRK(void) { return(0); }  /* Disable SAS CTRL/C handling */
   int chkabort(void) { return(0); }  /* really */

   /* There is no amiga.lib stub for this function so a pragma is required
    * This is a pragma for SAS C
    * Your compiler may require a different format
    */
   #pragma libcall DiskBase GetUnitID 1e 1
   #endif

   struct Library *DiskBase = NULL;

   LONG GetUnitID(long);

   void main(int argc, char **argv)
   {
   LONG ids= 0;
   LONG type;

   if (!(DiskBase= (struct Library *)OpenResource(DISKNAME)))
       printf("Cannot open %s\n,DISKNAME");
   else
      {
       printf("Defined drive types are:\n");
       printf("  AMIGA  $00000000\n");
       printf("  5.25'' $55555555\n");
       printf("  AMIGA  $00000000 (high density)\n");
       printf("  None   $FFFFFFFF\n\n");

       /* What are the UnitIDs? */
        for (ids = 0; ids < 4; ids++)
           {
            type = GetUnitID(ids);
            printf("The UnitID for unit %d is $%08lx\n",ids,type);
           }
      }
   }