xref: /csrg-svn/sys/vax/vax/rx50reg.h (revision 44541)
135046Skarels /*
235046Skarels  * Copyright (c) 1988 Regents of the University of California.
335046Skarels  * All rights reserved.
435046Skarels  *
535046Skarels  * This code is derived from software contributed to Berkeley by
635046Skarels  * Chris Torek.
735046Skarels  *
8*44541Sbostic  * %sccs.include.redist.c%
935046Skarels  *
10*44541Sbostic  *	@(#)rx50reg.h	7.2 (Berkeley) 06/28/90
1135046Skarels  */
1235046Skarels 
1335046Skarels /*
1435046Skarels  * RX50 registers.
1535046Skarels  */
1635046Skarels 
1735046Skarels /*
1835046Skarels  * The names below do not quite match the DEC documentation simply because
1935046Skarels  * the names in the documentation are so bad.
2035046Skarels  */
2135046Skarels struct rx50device {
2235046Skarels 	u_short	rxid;		/* identification */
2335046Skarels 	u_short	reserved;
2435046Skarels 	u_short	rxcmd;		/* command function reg */
2535046Skarels 	u_short	rxtrk;		/* track */
2635046Skarels 	u_short	rxsec;		/* sector */
2735046Skarels 	u_short	rxcsc;		/* current sector */
2835046Skarels 	u_short	rxict;		/* incorrect track (???) */
2935046Skarels 	u_short	rxext;		/* extend command register */
3035046Skarels 	u_short	rxedb;		/* empty data buffer (read) */
3135046Skarels 	u_short	rxrda;		/* reset data address */
3235046Skarels 	u_short	rxgo;		/* read to start current cmd */
3335046Skarels 	u_short	rxfdb;		/* fill data buffer (write) */
3435046Skarels };
3535046Skarels 
3635046Skarels #define	RX50SEC		10	/* sectors per track */
3735046Skarels #define	RX50MAXSEC	800	/* 10 sectors times 80 tracks */
3835046Skarels 
3935046Skarels /*
4035046Skarels  * Do the sector skew given the sector and track
4135046Skarels  * number (it depends on both!).
4235046Skarels  */
4335046Skarels /*			(((((s) / 5) + 2 * ((s) + (t))) % 10) + 1) */
4435046Skarels #define	RX50SKEW(s, t)	(((s) / 5) + "\1\3\5\7\11\1\3\5\7"[((s) + (t)) % 5])
4535046Skarels 
4635046Skarels /*
4735046Skarels  * Values in the command function register.
4835046Skarels  */
4935046Skarels #define	RXCMD_ERROR	0x80	/* error bit (composite?) */
5035046Skarels #define	RXCMD_READ	0x40	/* read command */
5135046Skarels #define	RXCMD_WRITE	0x70	/* write command */
5235046Skarels #define	RXCMD_RESET	0x20	/* reset command */
5335046Skarels #define	RXCMD_DONE	0x08	/* operation done (status) */
5435046Skarels #define	RXCMD_DRIVE0	0x00	/* select drive 0 (csa1) */
5535046Skarels #define	RXCMD_DRIVE1	0x02	/* select drive 1 (csa2) */
56