xref: /csrg-svn/sys/vax/mba/htreg.h (revision 49439)
1*49439Sbostic /*-
2*49439Sbostic  * Copyright (c) 1982, 1986 The Regents of the University of California.
3*49439Sbostic  * All rights reserved.
423311Smckusick  *
5*49439Sbostic  * %sccs.include.proprietary.c%
6*49439Sbostic  *
7*49439Sbostic  *	@(#)htreg.h	7.3 (Berkeley) 05/08/91
823311Smckusick  */
93336Swnj 
103336Swnj struct	htdevice
113336Swnj {
123336Swnj 	int	htcs1;		/* control status register */
133336Swnj 	int	htds;		/* drive status register */
143336Swnj 	int	hter;		/* error register */
153336Swnj 	int	htmr;		/* maintenance register */
163336Swnj 	int	htas;		/* attention status register */
173336Swnj 	int	htfc;		/* frame counter */
183336Swnj 	int	htdt;		/* drive type register */
193336Swnj 	int	htck;		/* nrzi check (crc) error character */
203336Swnj 	int	htsn;		/* serial number register */
213336Swnj 	int	httc;		/* tape controll register */
223336Swnj };
233336Swnj 
243336Swnj /* htcs1 */
253336Swnj #define	HT_GO		000001		/* go bit */
263336Swnj #define	HT_SENSE	000000		/* no operations (sense) */
273336Swnj #define	HT_REWOFFL	000002		/* rewind offline */
283336Swnj #define	HT_REW		000006		/* rewind */
293336Swnj #define	HT_DCLR		000010		/* drive clear */
303336Swnj #define	HT_RIP		000020		/* read in preset */
313336Swnj #define	HT_ERASE	000024		/* erase */
323336Swnj #define	HT_WEOF		000026		/* write tape mark */
333336Swnj #define	HT_SFORW	000030		/* space forward */
343336Swnj #define	HT_SREV		000032		/* space reverse */
353336Swnj #define	HT_WCHFWD	000050		/* write check forward */
363336Swnj #define	HT_WCHREV	000056		/* write check reverse */
373336Swnj #define	HT_WCOM		000060		/* write forward */
383336Swnj #define	HT_RCOM		000070		/* read forward */
393336Swnj #define	HT_RREV		000076		/* read reverse */
403336Swnj 
413336Swnj /* htds */
423336Swnj #define	HTDS_ATA	0100000		/* attention active */
433336Swnj #define	HTDS_ERR	0040000		/* composite error */
443336Swnj #define	HTDS_PIP	0020000		/* positioning in progress */
453336Swnj #define	HTDS_MOL	0010000		/* medium on line */
463336Swnj #define	HTDS_WRL	0004000		/* write lock */
473336Swnj #define	HTDS_EOT	0002000		/* end of tape */
483336Swnj /* bit 9 is unused */
493336Swnj #define	HTDS_DPR	0000400		/* drive present (always 1) */
503336Swnj #define	HTDS_DRY	0000200		/* drive ready */
513336Swnj #define	HTDS_SSC	0000100		/* slave status change */
523336Swnj #define	HTDS_PES	0000040		/* phase-encoded status */
533336Swnj #define	HTDS_SDWN	0000020		/* settle down */
543336Swnj #define	HTDS_IDB	0000010		/* identification burst */
553336Swnj #define	HTDS_TM		0000004		/* tape mark */
563336Swnj #define	HTDS_BOT	0000002		/* beginning of tape */
573336Swnj #define	HTDS_SLA	0000001		/* slave attention */
583336Swnj 
593336Swnj #define	HTDS_BITS \
603336Swnj "\10\20ATA\17ERR\16PIP\15MOL\14WRL\13EOT\11DPR\10DRY\
613336Swnj \7SSC\6PES\5SDWN\4IDB\3TM\2BOT\1SLA"
623336Swnj 
633336Swnj /* hter */
643336Swnj #define	HTER_CORCRC	0100000		/* correctible data or ecc */
653336Swnj #define	HTER_UNS	0040000		/* unsafe */
663336Swnj #define	HTER_OPI	0020000		/* operation incomplete */
673336Swnj #define	HTER_DTE	0010000		/* drive timing error */
683336Swnj #define	HTER_NEF	0004000		/* non-executable function */
693336Swnj #define	HTER_CSITM	0002000		/* correctable skew/illegal tape mark */
703336Swnj #define	HTER_FCE	0001000		/* frame count error */
713336Swnj #define	HTER_NSG	0000400		/* non-standard gap */
723336Swnj #define	HTER_PEFLRC	0000200		/* format error or lrc error */
733336Swnj #define	HTER_INCVPE	0000100		/* incorrectable data error or vertical
743336Swnj 					   parity error */
753336Swnj #define	HTER_DPAR	0000040		/* data parity error */
763336Swnj #define	HTER_FMT	0000020		/* format error */
773336Swnj #define	HTER_CPAR	0000010		/* control bus parity error */
783336Swnj #define	HTER_RMR	0000004		/* register modification refused */
793336Swnj #define	HTER_ILR	0000002		/* illegal register */
803336Swnj #define	HTER_ILF	0000001		/* illegal function */
813336Swnj 
823336Swnj #define	HTER_BITS \
833336Swnj "\10\20CORCRC\17UNS\16OPI\15DTE\14NEF\13CSITM\12FCE\11NSG\10PEFLRC\
843336Swnj \7INCVPE\6DPAR\5FMT\4CPAR\3RMR\2ILR\1ILF"
853336Swnj #define	HTER_HARD \
863336Swnj 	(HTER_UNS|HTER_OPI|HTER_NEF|HTER_DPAR|HTER_FMT|HTER_CPAR| \
873336Swnj 	HTER_RMR|HTER_ILR|HTER_ILF)
883336Swnj 
893336Swnj /* htdt */
903336Swnj #define	HTDT_NSA	0100000		/* not sector addressed; always 1 */
913336Swnj #define	HTDT_TAP	0040000		/* tape; always 1 */
923336Swnj #define	HTDT_MOH	0020000		/* moving head; always 0 */
933336Swnj #define	HTDT_7CH	0010000		/* 7 channel; always 0 */
943336Swnj #define	HTDT_DRQ	0004000		/* drive requested; always 0 */
953336Swnj #define	HTDT_SPR	0002000		/* slave present */
963336Swnj /* bit 9 is spare */
973336Swnj /* bits 8-0 are formatter/transport type */
983336Swnj 
993336Swnj /* httc */
1003336Swnj #define	HTTC_ACCL	0100000		/* transport is not reading/writing */
1013336Swnj #define	HTTC_FCS	0040000		/* frame count status */
1023336Swnj #define	HTTC_SAC	0020000		/* slave address change */
1033336Swnj #define	HTTC_EAODTE	0010000		/* enable abort on data xfer errors */
1043336Swnj /* bits 8-10 are density select */
1053336Swnj #define	HTTC_800BPI	0001400		/* in bits 8-10, dens=1600 */
1063336Swnj #define	HTTC_1600BPI	0002000		/* in bits 8-10, dens=800 */
10731094Skarels #define	HTTC_6250BPI	0003400		/* in bits 8-10, dens=6250 */
1083336Swnj /* bits 4-7 are format select */
1093336Swnj #define	HTTC_PDP11	0000300		/* in bits 4-7, pdp11 normal format */
1103336Swnj #define	HTTC_EVEN	0000010		/* select even parity */
1113336Swnj /* bits 0 - 2 are slave select */
1123336Swnj 
1133336Swnj #define	b_repcnt  b_bcount
1143336Swnj #define	b_command b_resid
115