home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / c / c_tutor / h / driver_h < prev    next >
Encoding:
Text File  |  1992-11-14  |  3.6 KB  |  153 lines

  1. /*
  2.  *      driver.h ->     Device Driver Header File
  3.  */
  4.  
  5.  
  6. /*
  7.  *      Status Word Bits
  8.  */
  9.  
  10. #define Error   0x8000
  11. #define Busy    0x0100
  12. #define Done    0x0080
  13.  
  14.  
  15. /*
  16.  *      Media Descriptor Byte Bits
  17.  */
  18.  
  19. #define TwoSided        1
  20. #define EightSector     2
  21. #define Removable       4
  22.  
  23.  
  24. /*
  25.  *      Error Return Codes
  26.  */
  27.  
  28. #define WriteProtect    0
  29. #define UnknownUnit     1
  30. #define DeviceNotReady  2
  31. #define UnknownCommand  3
  32. #define crcError        4
  33. #define BadLength       5
  34. #define SeekError       6
  35. #define UnknownMedia    7
  36. #define SectorNotFound  8
  37. #define NoPaper         9
  38. #define WriteFault      10
  39. #define ReadFault       11
  40. #define GeneralFailure  12
  41.  
  42.  
  43. /*
  44.  *      structures
  45.  */
  46.  
  47. typedef struct
  48.         {
  49.         char    Length;         /*  Request Header length       */
  50.         char    Unit;           /*  Unit Code                   */
  51.         char    Command;        /*  Command Code                */
  52.         int     Status;         /*  Status                      */
  53.         char    reserved[8];    /*  DOS Reserved Area           */
  54.         }
  55.         Request;
  56.  
  57. typedef struct
  58.         {
  59.         Request InitReq;        /*  Request Header              */
  60.         char    nUnits;         /*  number of units             */
  61.         long    EndAddr;        /*  Ending Address              */
  62.         long    BPBarray;       /*  ptr to BPB array            */
  63.         }
  64.         InitParms;
  65.  
  66. typedef struct
  67.         {
  68.         Request MediaReq;       /*  Request Header              */
  69.         char    MediaDesc;      /*  Media Descriptor            */
  70.         char    ReturnCode;     /*  Return Code                 */
  71.         }
  72.         MediaParms;
  73.  
  74. typedef struct
  75.         {
  76.         Request BPBReq;         /*  Request Header              */
  77.         char    MediaDesc;      /*  Media Descriptor            */
  78.         long    Transfer;       /*  Transfer Address            */
  79.         long    BPBTable;       /*  ptr to BPB table            */
  80.         }
  81.         BPBParms;
  82.  
  83. typedef struct
  84.         {
  85.         Request InOutReq;       /*  Request Header              */
  86.         char    MediaDesc;      /*  Media Descriptor            */
  87.         long    Transfer;       /*  Transfer Address            */
  88.         int     Count;          /*  Byte/Sector Count           */
  89.         int     Start;          /*  Starting Sector Number      */
  90.         }
  91.         InOutParms;
  92.  
  93. typedef struct
  94.         {
  95.         Request ndInputReq;     /*  Request Header              */
  96.         char    Byte;           /*  Byte Read From Device       */
  97.         }
  98.         ndInputParms;
  99.  
  100. typedef struct
  101.         {
  102.         Request StatusReq;      /*  Request Header              */
  103.         }
  104.         StatusParms;
  105.  
  106. typedef struct
  107.         {
  108.         Request FlushReq;       /*  Request Header              */
  109.         }
  110.         FlushParms;
  111.  
  112. typedef struct
  113.         {
  114.         int     BytesPerSector;
  115.         char    SecsPerAllocUnit;
  116.         int     ReservedSectors;
  117.         char    FATCount;
  118.         int     RootDirEntries;
  119.         int     SectorsPerLogical;
  120.         char    MediaDesc;
  121.         int     SecsPerFAT;
  122.         }
  123.         BPB;
  124.  
  125. typedef struct
  126.         {
  127.         char    BootJump[3];
  128.         char    Name[8];
  129.         BPB     BootBPB;
  130.         int     SecsPerTrack;
  131.         int     HeadCount;
  132.         int     HiddenCount;
  133.         }
  134.         BootSector;
  135.  
  136.  
  137. /*
  138.  *      externals
  139.  */
  140.  
  141. extern Request  ReqHdr;         /*  current Request Header      */
  142.  
  143. extern char     FarPeek();      /*  return value from long ptr  */
  144. extern int      FarPoke();      /*  store value at long ptr     */
  145.  
  146. extern long     EndAddr();      /*  returns Ending Address      */
  147. extern long     Dword();        /*  converts ptr to DWORD       */
  148.  
  149.  
  150. /*
  151.  *      END of driver.h
  152.  */
  153.