home *** CD-ROM | disk | FTP | other *** search
/ Shareware Supreme Volume 6 #1 / swsii.zip / swsii / 167 / BADCLU.ZIP / HDIO.H < prev    next >
C/C++ Source or Header  |  1990-04-25  |  2KB  |  110 lines

  1. /**********************************************************************
  2.  *  
  3.  *  NAME:           hdio.h
  4.  *  
  5.  *  DESCRIPTION:    hard disk i/o (int 13H)
  6.  *  
  7.  *  M O D I F I C A T I O N   H I S T O R Y
  8.  *
  9.  *  when        who                 what
  10.  *  -------------------------------------------------------------------
  11.  *  04/24/90    J. Alan Eldridge    created from badclu.c
  12.  *
  13.  *********************************************************************/
  14.  
  15. #ifndef __HDIO_H__
  16. #define __HDIO_H__
  17.  
  18. #define BOOT_CODE_SIZE  (512-0x01E)
  19.  
  20. #define PRI_DOS_12  1
  21. #define PRI_DOS_16  4
  22. #define EXT_DOS     5
  23. #define BOOT_IND    0x80
  24.  
  25. #define CLUST_BAD          0xFFF7
  26. #define IS_CLUST_FREE(x)   ((x)==0x0000)
  27. #define IS_CLUST_RESV(x)   ((x)<=0xFFF6&&(x)>=0xFFF0)
  28. #define IS_CLUST_BAD(x)    ((x)==CLUST_BAD)
  29. #define IS_CLUST_LAST(x)   ((x)<=0xFFFF&&(x)>=0xFFF8)
  30. #define IS_CLUST_INUSE(x)  \
  31.     (!IS_CLUST_FREE(x)&&!IS_CLUST_RESV(x)&&!IS_CLUST_BAD(x))
  32.  
  33. #define SEC_READ    2
  34. #define SEC_WRITE   3
  35. #define SEC_VERIFY  4
  36.  
  37. typedef unsigned short  UINT;
  38. typedef unsigned char   UCHAR;
  39. typedef unsigned long   ULONG;
  40.  
  41. typedef struct {
  42.     UCHAR   drv;
  43.     UCHAR   hds;
  44.     UINT    cyl;
  45.     UINT    sec;
  46. } DISK_INFO;
  47.  
  48. typedef struct {
  49.     UCHAR   hd;
  50.     UINT    cyl;
  51.     UINT    sec;
  52. } PART_POS;
  53.  
  54. typedef struct {
  55.     UCHAR       boot;
  56.     PART_POS    beg;
  57.     UCHAR       type;
  58.     PART_POS    end;
  59.     ULONG       rel_sec;
  60.     ULONG       num_sec;
  61. } PARTITION;            
  62.  
  63. typedef struct {
  64.     PARTITION   part;
  65.     UINT        dsec;
  66.     UINT        dir0;
  67.     UINT        dat0;
  68.     UINT        nclu;
  69. } DOS_PARTITION;
  70.     
  71. typedef struct {
  72.     UCHAR   hd;
  73.     UCHAR   cyl;
  74.     UCHAR   sec;
  75. } HCS_POS;
  76.  
  77. typedef struct {
  78.     UCHAR       boot;
  79.     HCS_POS     beg;
  80.     UCHAR       type;
  81.     HCS_POS     end;
  82.     ULONG       rel_sec;
  83.     ULONG       num_sec;
  84. } PART_ENT;
  85.  
  86. typedef struct {
  87.     UCHAR       reserved[0x1be];
  88.     PART_ENT    part_ents[4];
  89.     UCHAR       signature[2];
  90. } PART_TBL;
  91.  
  92. typedef struct {
  93.     UCHAR   jmp_instr[3];
  94.     UCHAR   oem[8];
  95.     UINT    bytes_per_sec;
  96.     UCHAR   sec_per_clust;
  97.     UINT    rsv_sec_cnt;
  98.     UCHAR   num_fats;
  99.     UINT    num_root_ent;
  100.     UINT    num_sec;
  101.     UCHAR   media_desc;
  102.     UINT    sec_per_fat;
  103.     UINT    sec_per_trk;
  104.     UINT    num_heads;
  105.     UINT    num_hidden_sec;
  106.     UCHAR   boot_code[BOOT_CODE_SIZE];
  107. } BOOT_SEC;
  108.  
  109. #endif  /* __HDIO_H__ */
  110.