xref: /csrg-svn/sys/vax/mba/hpreg.h (revision 2686)
1*2686Swnj /*	hpreg.h	4.4	81/02/25	*/
22551Swnj 
32635Swnj struct hpdevice
42551Swnj {
52635Swnj 	int	hpcs1;		/* control and status register 1 */
62635Swnj 	int	hpds;		/* drive status */
72635Swnj 	int	hper1;		/* error register 1 */
82635Swnj 	int	hpmr;		/* maintenance */
92635Swnj 	int	hpas;		/* attention summary */
102635Swnj 	int	hpda;		/* desired address register */
112635Swnj 	int	hpdt;		/* drive type */
122635Swnj 	int	hpla;		/* look ahead */
132551Swnj 	int	hpsn;		/* serial number */
142635Swnj 	int	hpof;		/* offset register */
152635Swnj 	int	hpdc;		/* desired cylinder address register */
162635Swnj 	int	hpcc;		/* current cylinder */
172635Swnj 	int	hper2;		/* error register 2 */
182635Swnj 	int	hper3;		/* error register 3 */
192635Swnj 	int	hpec1;		/* burst error bit position */
202635Swnj 	int	hpec2;		/* burst error bit pattern */
212551Swnj };
222551Swnj 
232635Swnj /* hpcs1 */
242635Swnj #define	HP_SC	0100000		/* special condition */
252635Swnj #define	HP_TRE	0040000		/* transfer error */
262635Swnj #define	HP_DVA	0004000		/* drive available */
272635Swnj #define	HP_RDY	0000200		/* controller ready */
282635Swnj #define	HP_IE	0000100		/* interrupt enable */
292635Swnj /* bits 5-1 are the command */
302635Swnj #define	HP_GO	0000001
312551Swnj 
322635Swnj /* commands */
332635Swnj #define	HP_NOP		000		/* no operation */
342635Swnj #define	HP_UNLOAD	002		/* offline drive */
352635Swnj #define	HP_SEEK		004		/* seek */
362635Swnj #define	HP_RECAL	006		/* recalibrate */
372635Swnj #define	HP_DCLR		010		/* drive clear */
382635Swnj #define	HP_RELEASE	012		/* release */
392635Swnj #define	HP_OFFSET	014		/* offset */
402635Swnj #define	HP_RTC		016		/* return to centerline */
412635Swnj #define	HP_PRESET	020		/* read-in preset */
422635Swnj #define	HP_PACK		022		/* pack acknowledge */
432635Swnj #define	HP_SEARCH	030		/* search */
442635Swnj #define	HP_DIAGNOSE	034		/* diagnose drive */
452635Swnj #define	HP_WCDATA	050		/* write check data */
462635Swnj #define	HP_WCHDR	052		/* write check header and data */
472635Swnj #define	HP_WCOM		060		/* write data */
482635Swnj #define	HP_WHDR		062		/* write header */
492635Swnj #define	HP_WTRACKD	064		/* write track descriptor */
502635Swnj #define	HP_RCOM		070		/* read data */
512635Swnj #define	HP_RHDR		072		/* read header and data */
522635Swnj #define	HP_RTRACKD	074		/* read track descriptor */
532635Swnj 
542635Swnj /* hpds */
552635Swnj #define	HP_ATA		0100000		/* attention active */
562635Swnj #define	HP_ERR		0040000		/* composite drive error */
572635Swnj #define	HP_PIP		0020000		/* positioning in progress */
582635Swnj #define	HP_MOL		0010000		/* medium on line */
592635Swnj #define	HP_WRL		0004000		/* write locked */
602635Swnj #define	HP_LST		0002000		/* last sector transferred */
612635Swnj #define	HP_PGM		0001000		/* programmable */
622635Swnj #define	HP_DPR		0000400		/* drive present */
632635Swnj #define	HP_DRY		0000200		/* drive ready */
642635Swnj #define	HP_VV		0000100		/* volume valid */
652635Swnj /* bits 1-5 are spare */
662635Swnj #define	HP_OM		0000001		/* offset mode */
672635Swnj 
68*2686Swnj #define	HP_DREADY	(HP_DPR|HP_DRY|HP_MOL|HP_VV)
69*2686Swnj #define	HPDS_BITS \
70*2686Swnj "\10\20ATA\17ERR\16PIP\15MOL\14WRL\13LST\12PGM\11DPR\10DRY\7VV\1OM"
71*2686Swnj 
722635Swnj /* hper1 */
732635Swnj #define	HP_DCK		0100000		/* data check */
742635Swnj #define	HP_UNS		0040000		/* drive unsafe */
752635Swnj #define	HP_OPI		0020000		/* operation incomplete */
762635Swnj #define	HP_DTE		0010000		/* drive timing error */
772635Swnj #define	HP_WLE		0004000		/* write lock error */
782635Swnj #define	HP_IAE		0002000		/* invalid address error */
792635Swnj #define	HP_AOE		0001000		/* address overflow error */
802635Swnj #define	HP_HCRC		0000400		/* header crc error */
812635Swnj #define	HP_HCE		0000200		/* header compare error */
822635Swnj #define	HP_ECH		0000100		/* ecc hard error */
832635Swnj #define HP_WCF		0000040		/* write clock fail */
842635Swnj #define	HP_FER		0000020		/* format error */
852635Swnj #define	HP_PAR		0000010		/* parity error */
862635Swnj #define	HP_RMR		0000004		/* register modification refused */
872635Swnj #define	HP_ILR		0000002		/* illegal register */
882635Swnj #define	HP_ILF		0000001		/* illegal function */
892635Swnj 
90*2686Swnj #define	HPER1_BITS \
91*2686Swnj "\10\20DCK\17UNS\16OPI\15DTE\14WLE\13IAE\12AOE\11HCRC\10HCE\
92*2686Swnj \7ECH\6WCF\5FER\4PAR\3RMR\2ILR\1ILF"
932635Swnj /* THIS NEEDS TO BE DOUBLE CHECKED... */
942635Swnj #define	HPER1_HARD    (HP_UNS|HP_WLE|HP_IAE|HP_AOE|HP_FER|HP_RMR|HP_ILR|HP_ILF)
952635Swnj 
962635Swnj /* hper2 */
972635Swnj #define	HP_BSE		0100000		/* bad sector error */
982635Swnj #define	HP_SKI		0040000		/* seek incomplete */
992635Swnj #define	HP_OPE		0020000		/* operator plug error */
1002635Swnj #define	HP_IVC		0010000		/* invalid command */
1012635Swnj #define	HP_LSC		0004000		/* loss of system clock */
1022635Swnj #define	HP_LBC		0002000		/* loss of bit check */
1032635Swnj #define	HP_DVC		0000200		/* device check */
1042635Swnj #define	HP_DPE		0000010		/* data parity error */
1052635Swnj 
106*2686Swnj #define	HPER2_BITS \
107*2686Swnj "\10\20BSE\17SKI\16OPE\15IVC\14LSC\13LBC\10DVC\4DPE"
1082635Swnj #define	HPER2_HARD    (HP_BSE|HP_OPE)
1092635Swnj 
1102635Swnj /* hpof */
1112635Swnj #define	HP_CMO		0100000		/* command modifier */
1122635Swnj #define	HP_MTD		0040000		/* move track descriptor */
1132635Swnj #define	HP_FMT22	0010000		/* 16 bit format */
1142635Swnj #define	HP_ECI		0004000		/* ecc inhibit */
1152635Swnj #define	HP_HCI		0002000		/* header compare inhibit */
1162635Swnj #define	HP_SSEI		0001000		/* skip sector inhibit */
1172635Swnj 
1182635Swnj #define	HP_P400		020		/*  +400 uinches */
1192635Swnj #define	HP_M400		0220		/*  -400 uinches */
1202635Swnj #define	HP_P800		040		/*  +800 uinches */
1212635Swnj #define	HP_M800		0240		/*  -800 uinches */
1222635Swnj #define	HP_P1200	060		/* +1200 uinches */
1232635Swnj #define	HP_M1200	0260		/* -1200 uinches */
124