home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#) ft.h 1.3 88/12/15
- *
- * Copyright (C) The Santa Cruz Operation, 1988.
- * This Module contains Proprietary Information of
- * The Santa Cruz Operation and should be treated as Confidential.
- *
- */
-
- /*
- * XENIX QIC-40 tape driver include file.
- */
-
- /* Minor device bit definitions */
-
- #define FT_OVERRIDE 0x80 /* control device */
- #define FT_APPEND 0x08 /* norewind device */
- #define FT_QIC117 0x04 /* 1 = New style drive */
-
- typedef unsigned char UCHAR;
- typedef unsigned long ULONG;
- #ifdef M_I286
- typedef int WORD;
- typedef unsigned int UWORD;
- typedef unsigned char far * FPCHR;
- typedef unsigned long far * FPLNG;
- typedef unsigned short far * FPWRD;
- #else
- typedef short WORD;
- typedef unsigned short UWORD;
- typedef unsigned char * FPCHR;
- typedef unsigned long * FPLNG;
- typedef unsigned short * FPWRD;
- #endif
-
- union ft_status {
- struct {
- unsigned short ready : 1; /* drive ready */
- unsigned short error : 1; /* error detected */
- unsigned short cpres : 1; /* cart. present */
- unsigned short wprot : 1; /* write protected */
- unsigned short newcart : 1; /* new cart. inserted */
- unsigned short cref : 1; /* cart. referenced */
- unsigned short bot : 1; /* phys beg. of tape */
- unsigned short eot : 1; /* phys end of tape */
-
- unsigned short errnum : 8; /* error number */
- unsigned short errcmd : 8; /* error assoc. with cmd */
-
- unsigned short sfterr; /* soft errors */
- unsigned short hrderr; /* hard errors */
- unsigned short undrun; /* underruns */
- } status;
- unsigned char stat[9];
- };
-
-
- /* cartridge tape ioctl commands */
-
- #define MTIOC ('m'<<8) /* ioctl code for tape commands */
- #define MT_STATUS (MTIOC | 0) /* read tape status */
- #define MT_RESET (MTIOC | 1) /* reset tape hardware */
- #define MT_RETEN (MTIOC | 2) /* retention tape */
- #define MT_REWIND (MTIOC | 3) /* rewind tape */
- #define MT_ERASE (MTIOC | 4) /* erase tape */
- #define MT_AMOUNT (MTIOC | 5) /* report on amount of data xfered */
- #define MT_RFM (MTIOC | 6) /* find next filemark */
- #define MT_WFM (MTIOC | 7) /* write filemark */
- #define MT_FORMAT (MTIOC | 8) /* format a pair of tracks */
- #define MT_GETHDR (MTIOC | 9) /* get the tape header */
- #define MT_PUTHDR (MTIOC | 10) /* write a new tape header */
- #define MT_GETNEWBB (MTIOC | 11) /* get new bad block list */
- #define MT_PUTNEWBB (MTIOC | 12) /* update bad block table */
- #define MT_GETVTBL (MTIOC | 13) /* get volume table */
- #define MT_PUTVTBL (MTIOC | 14) /* write volume table */
- #define MT_REPORT (MTIOC | 64) /* report device type */
-
- /* device types returned by MT_REPORT */
- #define MT_UNKNOWN_TYPE 0
- #define MT_CT_TYPE 1
- #define MT_FT_TYPE 2
-
-
- /* number of entries in the new bad segment table */
- #define FT_NBB 64
-
- struct ft_nbbent { /* new bad block entry */
- UWORD seg; /* segment number */
- ULONG map; /* segment map */
- };
-
- struct ft_newbbt { /* new bad segment table */
- int cnt; /* # entries */
- struct ft_nbbent bbt[FT_NBB]; /* array of entries */
- };
-
- #define FT_SCTRSIZ 1024
-
- struct ft_header_fmt_record {
- UCHAR signature[4]; /* always 55 AA 55 AA */
- UCHAR fmt_code; /* always 02 */
- UCHAR unused;
- UWORD segment; /* segment number of header segment */
- UWORD dupsegment; /* seg num of duplicate header */
- UWORD first; /* first data segment number */
- UWORD last; /* last data segment number */
- UCHAR last_fmt_date[4]; /* date of last format */
- UCHAR last_write_date[4]; /* date of last write or format */
- UCHAR unused2[106];
- UCHAR fmt_error; /* FF if remaining fields lost */
- UCHAR unused3;
- UCHAR lifetime[4]; /* +1 for every read,write,format */
- UCHAR unused4[4];
- UCHAR first_fmt_date[4];/* date of first format */
- UWORD fmt_count; /* times tape has been formatted */
- UWORD failed_count; /* number of entries in failed log */
- UCHAR mfr_code[44]; /* zero for non-pre-formatted */
- UCHAR mfr_lot[44]; /* zero for non-pre-formatted */
- UCHAR unused5[22];
- UWORD fail_log[384]; /* log of sectors failed to verify */
- };
-
- union ft_header_segment {
- struct {
- struct ft_header_fmt_record format;
- UCHAR fail_log2[FT_SCTRSIZ]; /* cont. failed sector log */
- ULONG bad_map[FT_SCTRSIZ * 14 / 4]; /* each long is a seg. */
- /* entire map not used; only up to 16K */
- } s;
- UCHAR raw[FT_SCTRSIZ * 16];
- };
-
- typedef union ft_header_segment ft_header;
- #ifdef M_I286
- typedef ft_header far *Pft_header;
- #else
- typedef ft_header *Pft_header;
- #endif
-
- struct ft_volume_table {
- UCHAR signature[4];
- UWORD start;
- UWORD end;
- UCHAR descr[44];
- ULONG date;
- UCHAR flags;
- UCHAR sequence;
- UCHAR vendor[26];
- UCHAR passwd[8];
- ULONG dirsize;
- ULONG datasize;
- UCHAR OSvers[2];
- UCHAR label[16];
- UCHAR logdrv;
- UCHAR physdrv;
- UCHAR reserved[6];
- UWORD bytes_in_last_segment;
- };
- typedef struct ft_volume_table ft_volume;
- #ifdef M_I286
- typedef ft_volume far *Pft_volume;
- #else
- typedef ft_volume *Pft_volume;
- #endif
-