diff options
-rw-r--r-- | sys/sys/ftape.h | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/sys/sys/ftape.h b/sys/sys/ftape.h deleted file mode 100644 index 6792bdd..0000000 --- a/sys/sys/ftape.h +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (c) 1993 Steve Gerakines - * - * This is freely redistributable software. You may do anything you - * wish with it, so long as the above notice stays intact. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * ftape.h - QIC-40/80 floppy tape driver functions - * 10/30/93 v0.3 - * Set up constant values. Added support to get hardware info. - * - * 08/07/93 v0.2 - * Header file that sits in /sys/sys, first revision. Support for - * ioctl functions added. - */ - -#ifndef _SYS_FTAPE_H_ -#define _SYS_FTAPE_H_ - -#include <sys/ioccom.h> - -/* Miscellaneous constant values */ -#define QCV_BLKSIZE 1024 /* Size of a block */ -#define QCV_SEGSIZE 32768 /* Size of a segment */ -#define QCV_BLKSEG 32 /* Blocks per segment */ -#define QCV_ECCSIZE 3072 /* Bytes ecc eats */ -#define QCV_ECCBLKS 3 /* Blocks ecc eats */ -#define QCV_NFMT 3 /* Number of tape formats */ -#define QCV_NLEN 5 /* Number of tape lengths */ -#define QCV_HDRMAGIC 0xaa55aa55 /* Magic for header segment */ -#define QCV_FSMAGIC 0x33cc33cc /* Magic for fileset */ - -#define UCHAR unsigned char -#define USHORT unsigned short -#define ULONG unsigned long - -/* Segment request structure. */ -typedef struct qic_segment { - ULONG sg_trk; /* Track number */ - ULONG sg_seg; /* Segment number */ - ULONG sg_crcmap; /* Returned bitmap of CRC errors */ - ULONG sg_badmap; /* Map of known bad sectors */ - UCHAR *sg_data; /* Segment w/bad blocks discarded */ -} QIC_Segment; - -/* Tape geometry structure. */ -typedef struct qic_geom { - int g_fmtno; /* Format number */ - int g_lenno; /* Length number */ - char *g_fmtdesc; /* Format text description */ - char *g_lendesc; /* Length text description */ - int g_trktape; /* Number of tracks per tape */ - int g_segtrk; /* Number of segments per track */ - int g_blktrk; /* Number of blocks per track */ - int g_fdtrk; /* Floppy disk tracks */ - int g_fdside; /* Floppy disk sectors/side */ -} QIC_Geom; - -/* Tape hardware info */ -typedef struct qic_hwinfo { - int hw_make; /* 10-bit drive make */ - int hw_model; /* 6-bit model */ - int hw_rombeta; /* TRUE if beta rom */ - int hw_romid; /* 8-bit rom ID */ -} QIC_HWInfo; - -/* Various ioctl() routines. */ -#define QIOREAD _IOWR('q', 1, QIC_Segment) /* Read segment */ -#define QIOWRITE _IOW('q', 2, QIC_Segment) /* Write segment */ -#define QIOREWIND _IO('q', 3) /* Rewind tape */ -#define QIOBOT _IO('q', 4) /* Seek beg of trk */ -#define QIOEOT _IO('q', 5) /* Seek end of trk */ -#define QIOTRACK _IOW('q', 6, int) /* Seek to track */ -#define QIOSEEKLP _IO('q', 7) /* Seek load point */ -#define QIOFORWARD _IO('q', 8) /* Move tape fwd */ -#define QIOSTOP _IO('q', 9) /* Stop tape */ -#define QIOPRIMARY _IO('q', 10) /* Primary mode */ -#define QIOFORMAT _IO('q', 11) /* Format mode */ -#define QIOVERIFY _IO('q', 12) /* Verify mode */ -#define QIOWRREF _IO('q', 13) /* Write ref burst */ -#define QIOSTATUS _IOR('q', 14, int) /* Get drive status */ -#define QIOCONFIG _IOR('q', 15, int) /* Get tape config */ -#define QIOGEOM _IOR('q', 16, QIC_Geom) /* Get geometry */ -#define QIOHWINFO _IOR('q', 17, QIC_HWInfo) /* Get hardware inf */ -#define QIOSENDHDR _IOW('q', 18, QIC_Segment) /* Send header */ -#define QIORECVHDR _IOWR('q', 19, QIC_Segment) /* Receive header */ - -/* QIC drive status bits. */ -#define QS_READY 0x01 /* Drive ready */ -#define QS_ERROR 0x02 /* Error detected */ -#define QS_CART 0x04 /* Tape in drive */ -#define QS_RDONLY 0x08 /* Write protect */ -#define QS_NEWCART 0x10 /* New tape inserted */ -#define QS_FMTOK 0x20 /* Tape is formatted */ -#define QS_BOT 0x40 /* Tape at beginning */ -#define QS_EOT 0x80 /* Tape at end */ - -/* QIC configuration bits. */ -#define QCF_RTMASK 0x18 /* Rate mask */ -#define QCF_RT250 0x00 /* 250K bps */ -#define QCF_RT2 0x01 /* 2M bps */ -#define QCF_RT500 0x02 /* 500K bps */ -#define QCF_RT1 0x03 /* 1M bps */ -#define QCF_EXTRA 0x40 /* Extra length tape */ -#define QCF_QIC80 0x80 /* QIC-80 detected */ - -/* QIC tape status bits. */ -#define QTS_FMMASK 0x0f /* Tape format mask */ -#define QTS_LNMASK 0xf0 /* Tape length mask */ -#define QTS_QIC40 0x01 /* QIC-40 tape */ -#define QTS_QIC80 0x02 /* QIC-80 tape */ -#define QTS_QIC500 0x03 /* QIC-500 tape */ -#define QTS_LEN1 0x10 /* 205 ft/550 Oe */ -#define QTS_LEN2 0x20 /* 307.5 ft/550 Oe */ -#define QTS_LEN3 0x30 /* 295 ft/900 Oe */ -#define QTS_LEN4 0x40 /* 1100 ft/550 Oe */ -#define QTS_LEN5 0x50 /* 1100 ft/900 Oe */ - -/* Tape header segment structure */ -typedef struct qic_header { - ULONG qh_sig; /* Header signature 0x55aa55aa */ - UCHAR qh_fmtc; /* Format code */ - UCHAR qh_unused1; - USHORT qh_hseg; /* Header segment number */ - USHORT qh_dhseg; /* Duplicate header segment number */ - USHORT qh_first; /* First logical area data segment */ - USHORT qh_last; /* Last logical area data segment */ - UCHAR qh_fmtdate[4]; /* Most recent format date */ - UCHAR qh_chgdate[4]; /* Most recent tape change date */ - UCHAR qh_unused2[2]; - USHORT qh_tstrk; /* Tape segments per track */ - UCHAR qh_ttcart; /* Tape tracks per cartridge */ - UCHAR qh_mfside; /* Max floppy sides */ - UCHAR qh_mftrk; /* Max floppy tracks */ - UCHAR qh_mfsect; /* Max floppy sector */ - char qh_tname[44]; /* Tape name (ASCII, space filled) */ - UCHAR qh_namdate[4]; /* Date tape was given a name */ - USHORT qh_cprseg; /* Compression map start segment */ - UCHAR qh_unused3[48]; - UCHAR qh_refmt; /* Re-format flag */ - UCHAR qh_unused4; - UCHAR qh_iocount[4]; /* I/O count for life of tape */ - UCHAR qh_unused5[4]; - UCHAR qh_ffmtdate[4]; /* Date first formatted */ - USHORT qh_fmtcount; /* Number of times formatted */ - USHORT qh_badsect; /* Failed sector count */ - char qh_mfname[44]; /* Manufacturer name if pre-formatted */ - char qh_mflot[44]; /* Manufacturer lot code */ - UCHAR qh_unused6[22]; - ULONG qh_fail[448]; /* Failed sector log */ - ULONG qh_badmap[6912]; /* Bad sector map */ -} QIC_Header; - -/* Volume table of contents entry structure. */ -typedef struct qic_vtbl { - UCHAR vt_sig[4]; /* Signature "VTBL" if entry used */ - USHORT vt_first; /* Starting segment */ - USHORT vt_last; /* Ending segment */ - char vt_vname[44]; /* Set name */ - UCHAR vt_savdate[4]; /* Date saved */ - UCHAR vt_flags; /* Volume flags */ - UCHAR vt_multi; /* Multi cartridge sequence no. */ - UCHAR vt_vext[26]; /* Extension data */ - char vt_passwd[8]; /* Password for volume */ - UCHAR vt_dirsize[4]; /* Directory section size */ - UCHAR vt_dtasize[4]; /* Data section size */ - USHORT vt_osver; /* Operating System version */ - char vt_label[16]; /* Source drive label */ - UCHAR vt_ldev; /* Logical device origin */ - UCHAR vt_pdev; /* Physical device origin */ - UCHAR vt_cprtype; /* Compression type */ - UCHAR vt_ostype; /* Operating System type */ - UCHAR vt_ostype2; /* Always zero ?? */ - UCHAR vt_isocpr; /* ISO compression type */ - UCHAR vt_unused1[4]; -} QIC_VTbl; - -/* Data compression map structure. */ -typedef struct qic_dcmap { - UCHAR dc_sig[4]; /* Signature "DCMS" */ - USHORT dc_mlen; /* Total map length */ - UCHAR dc_unused1[6]; - ULONG dc_offset[7421]; /* Byte offsets to segments */ -} QIC_DCMap; - -/* System specific file set structures - Unix */ -typedef struct qic_unix_set { - UCHAR fsu_perm; /* Permissions */ - UCHAR fsu_attr2; /* More attributes */ - UCHAR fsu_ctime[4]; /* Creation time */ - UCHAR fsu_atime[4]; /* Last access time */ - UCHAR fsu_inode[4]; /* i-node number */ - UCHAR fsu_user[4]; /* User number */ - UCHAR fsu_group[4]; /* Group number */ - UCHAR fsu_major; /* Major device number */ - UCHAR fsu_minor; /* Minor device number */ - UCHAR fsu_nsize; /* Name size */ - UCHAR fsu_name; /* Entry name starts here */ -} QIC_Unix_Set; - -/* File set structure */ -typedef struct qic_fileset { - UCHAR fs_size; /* Size of fixed + system size - 1 */ - UCHAR fs_attr; /* Attributes */ - UCHAR fs_mtime; /* Modification time */ - UCHAR fs_dsize[4]; /* Data size */ -} QIC_FileSet; - -#endif /* !_SYS_FTAPE_H_ */ |