|
|
1.1 root 1: /*
2: * Copyright (c) 1988 Regents of the University of California.
3: * All rights reserved.
4: *
5: * This code is derived from software contributed to Berkeley by
6: * Chris Torek.
7: *
8: * Redistribution is only permitted until one year after the first shipment
9: * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and
10: * binary forms are permitted provided that: (1) source distributions retain
11: * this entire copyright notice and comment, and (2) distributions including
12: * binaries display the following acknowledgement: This product includes
13: * software developed by the University of California, Berkeley and its
14: * contributors'' in the documentation or other materials provided with the
15: * distribution and in all advertising materials mentioning features or use
16: * of this software. Neither the name of the University nor the names of
17: * its contributors may be used to endorse or promote products derived from
18: * this software without specific prior written permission.
19: * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
20: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
21: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22: *
23: * @(#)rx50reg.h 7.2 (Berkeley) 6/28/90
24: */
25:
26: /*
27: * RX50 registers.
28: */
29:
30: /*
31: * The names below do not quite match the DEC documentation simply because
32: * the names in the documentation are so bad.
33: */
34: struct rx50device {
35: u_short rxid; /* identification */
36: u_short reserved;
37: u_short rxcmd; /* command function reg */
38: u_short rxtrk; /* track */
39: u_short rxsec; /* sector */
40: u_short rxcsc; /* current sector */
41: u_short rxict; /* incorrect track (???) */
42: u_short rxext; /* extend command register */
43: u_short rxedb; /* empty data buffer (read) */
44: u_short rxrda; /* reset data address */
45: u_short rxgo; /* read to start current cmd */
46: u_short rxfdb; /* fill data buffer (write) */
47: };
48:
49: #define RX50SEC 10 /* sectors per track */
50: #define RX50MAXSEC 800 /* 10 sectors times 80 tracks */
51:
52: /*
53: * Do the sector skew given the sector and track
54: * number (it depends on both!).
55: */
56: /* (((((s) / 5) + 2 * ((s) + (t))) % 10) + 1) */
57: #define RX50SKEW(s, t) (((s) / 5) + "\1\3\5\7\11\1\3\5\7"[((s) + (t)) % 5])
58:
59: /*
60: * Values in the command function register.
61: */
62: #define RXCMD_ERROR 0x80 /* error bit (composite?) */
63: #define RXCMD_READ 0x40 /* read command */
64: #define RXCMD_WRITE 0x70 /* write command */
65: #define RXCMD_RESET 0x20 /* reset command */
66: #define RXCMD_DONE 0x08 /* operation done (status) */
67: #define RXCMD_DRIVE0 0x00 /* select drive 0 (csa1) */
68: #define RXCMD_DRIVE1 0x02 /* select drive 1 (csa2) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.