home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 202.img / SCO386N2.TD0 / usr / include / sys / ft.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-01-05  |  4.7 KB  |  165 lines

  1. /*
  2.  *    @(#) ft.h 1.3 88/12/15 
  3.  *
  4.  *    Copyright (C) The Santa Cruz Operation, 1988.
  5.  *    This Module contains Proprietary Information of
  6.  *    The Santa Cruz Operation and should be treated as Confidential.
  7.  *
  8.  */
  9.  
  10. /*
  11.  *    XENIX QIC-40 tape driver include file.
  12.  */
  13.  
  14. /* Minor device bit definitions */
  15.  
  16. #define FT_OVERRIDE 0x80    /* control device */
  17. #define FT_APPEND   0x08    /* norewind device */
  18. #define FT_QIC117   0x04    /* 1 = New style drive */
  19.  
  20. typedef unsigned char        UCHAR;
  21. typedef unsigned long        ULONG;
  22. #ifdef M_I286
  23. typedef int            WORD;
  24. typedef unsigned int        UWORD;
  25. typedef unsigned char far *    FPCHR;
  26. typedef unsigned long far *    FPLNG;
  27. typedef unsigned short far *    FPWRD;
  28. #else
  29. typedef short            WORD;
  30. typedef unsigned short        UWORD;
  31. typedef unsigned char *        FPCHR;
  32. typedef unsigned long *        FPLNG;
  33. typedef unsigned short *    FPWRD;
  34. #endif
  35.  
  36. union ft_status {
  37.     struct {
  38.         unsigned short ready   : 1;    /* drive ready */
  39.         unsigned short error   : 1;    /* error detected */
  40.         unsigned short cpres   : 1;    /* cart. present */
  41.         unsigned short wprot   : 1;    /* write protected */
  42.         unsigned short newcart : 1;    /* new cart. inserted */
  43.         unsigned short cref    : 1;    /* cart. referenced */
  44.         unsigned short bot     : 1;    /* phys beg. of tape */
  45.         unsigned short eot     : 1;    /* phys end of tape */
  46.  
  47.         unsigned short errnum : 8;    /* error number */
  48.         unsigned short errcmd : 8;    /* error assoc. with cmd */
  49.  
  50.         unsigned short sfterr;        /* soft errors */
  51.         unsigned short hrderr;        /* hard errors */
  52.         unsigned short undrun;        /* underruns */
  53.     } status;
  54.     unsigned char stat[9];
  55. };
  56.  
  57.  
  58. /* cartridge tape ioctl commands */
  59.  
  60. #define    MTIOC        ('m'<<8)    /* ioctl code for tape commands */
  61. #define    MT_STATUS    (MTIOC | 0)    /* read tape status */
  62. #define    MT_RESET    (MTIOC | 1)    /* reset tape hardware */
  63. #define    MT_RETEN    (MTIOC | 2)    /* retention tape */
  64. #define    MT_REWIND    (MTIOC | 3)    /* rewind tape */
  65. #define    MT_ERASE    (MTIOC | 4)    /* erase tape */
  66. #define    MT_AMOUNT    (MTIOC | 5)    /* report on amount of data xfered */
  67. #define    MT_RFM        (MTIOC | 6)    /* find next filemark */
  68. #define    MT_WFM        (MTIOC | 7)    /* write filemark */
  69. #define MT_FORMAT    (MTIOC | 8)    /* format a pair of tracks */
  70. #define MT_GETHDR    (MTIOC | 9)    /* get the tape header */
  71. #define MT_PUTHDR    (MTIOC | 10)    /* write a new tape header */
  72. #define MT_GETNEWBB    (MTIOC | 11)    /* get new bad block list */
  73. #define MT_PUTNEWBB    (MTIOC | 12)    /* update bad block table */
  74. #define MT_GETVTBL    (MTIOC | 13)    /* get volume table */
  75. #define MT_PUTVTBL    (MTIOC | 14)    /* write volume table */
  76. #define MT_REPORT    (MTIOC | 64)    /* report device type */
  77.  
  78. /* device types returned by MT_REPORT */
  79. #define MT_UNKNOWN_TYPE     0
  80. #define MT_CT_TYPE        1
  81. #define MT_FT_TYPE        2
  82.  
  83.  
  84. /* number of entries in the new bad segment table */
  85. #define FT_NBB    64
  86.  
  87. struct ft_nbbent {            /* new bad block entry */
  88.     UWORD seg;        /* segment number */
  89.     ULONG map;        /* segment map */
  90. };
  91.  
  92. struct ft_newbbt {            /* new bad segment table */
  93.     int    cnt;        /* # entries */
  94.     struct ft_nbbent bbt[FT_NBB];    /* array of entries */
  95. };
  96.  
  97. #define FT_SCTRSIZ 1024
  98.  
  99. struct ft_header_fmt_record {
  100.     UCHAR signature[4];     /* always 55 AA 55 AA */
  101.     UCHAR fmt_code;     /* always 02 */
  102.     UCHAR unused;
  103.     UWORD segment;         /* segment number of header segment */
  104.     UWORD dupsegment;     /* seg num of duplicate header */
  105.     UWORD first;        /* first data segment number */
  106.     UWORD last;        /* last data segment number */
  107.     UCHAR last_fmt_date[4];    /* date of last format */
  108.     UCHAR last_write_date[4];    /* date of last write or format */
  109.     UCHAR unused2[106];
  110.     UCHAR fmt_error;    /* FF if remaining fields lost */
  111.     UCHAR unused3;
  112.     UCHAR lifetime[4];    /* +1 for every read,write,format */
  113.     UCHAR unused4[4];
  114.     UCHAR first_fmt_date[4];/* date of first format */
  115.     UWORD fmt_count;    /* times tape has been formatted */
  116.     UWORD failed_count;    /* number of entries in failed log */
  117.     UCHAR mfr_code[44];    /* zero for non-pre-formatted */
  118.     UCHAR mfr_lot[44];    /* zero for non-pre-formatted */
  119.     UCHAR unused5[22];
  120.     UWORD fail_log[384];    /* log of sectors failed to verify */
  121. };
  122.  
  123. union ft_header_segment {
  124.     struct {
  125.         struct ft_header_fmt_record format;
  126.         UCHAR fail_log2[FT_SCTRSIZ];    /* cont. failed sector log */
  127.         ULONG bad_map[FT_SCTRSIZ * 14 / 4]; /* each long is a seg. */
  128.         /* entire map not used; only up to 16K */
  129.     } s;
  130.     UCHAR raw[FT_SCTRSIZ * 16];
  131. };
  132.  
  133. typedef union ft_header_segment ft_header;
  134. #ifdef M_I286
  135. typedef ft_header far *Pft_header;
  136. #else
  137. typedef ft_header *Pft_header;
  138. #endif
  139.  
  140. struct ft_volume_table {
  141.     UCHAR signature[4];
  142.     UWORD start;
  143.     UWORD end;
  144.     UCHAR descr[44];
  145.     ULONG date;
  146.     UCHAR flags;
  147.     UCHAR sequence;
  148.     UCHAR vendor[26];
  149.     UCHAR passwd[8];
  150.     ULONG dirsize;
  151.     ULONG datasize;
  152.     UCHAR OSvers[2];
  153.     UCHAR label[16];
  154.     UCHAR logdrv;
  155.     UCHAR physdrv;
  156.     UCHAR reserved[6];
  157.     UWORD bytes_in_last_segment;
  158. };
  159. typedef struct ft_volume_table ft_volume;
  160. #ifdef M_I286
  161. typedef ft_volume far *Pft_volume;
  162. #else
  163. typedef ft_volume *Pft_volume;
  164. #endif
  165.