|
|
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 and use in source and binary forms are permitted ! 9: * provided that the above copyright notice and this paragraph are ! 10: * duplicated in all such forms and that any documentation, ! 11: * advertising materials, and other materials related to such ! 12: * distribution and use acknowledge that the software was developed ! 13: * by the University of California, Berkeley. The name of the ! 14: * University may not be used to endorse or promote products derived ! 15: * from this software without specific prior written permission. ! 16: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 17: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 18: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 19: * ! 20: * @(#)rx50reg.h 7.1 (Berkeley) 7/9/88 ! 21: */ ! 22: ! 23: /* ! 24: * RX50 registers. ! 25: */ ! 26: ! 27: /* ! 28: * The names below do not quite match the DEC documentation simply because ! 29: * the names in the documentation are so bad. ! 30: */ ! 31: struct rx50device { ! 32: u_short rxid; /* identification */ ! 33: u_short reserved; ! 34: u_short rxcmd; /* command function reg */ ! 35: u_short rxtrk; /* track */ ! 36: u_short rxsec; /* sector */ ! 37: u_short rxcsc; /* current sector */ ! 38: u_short rxict; /* incorrect track (???) */ ! 39: u_short rxext; /* extend command register */ ! 40: u_short rxedb; /* empty data buffer (read) */ ! 41: u_short rxrda; /* reset data address */ ! 42: u_short rxgo; /* read to start current cmd */ ! 43: u_short rxfdb; /* fill data buffer (write) */ ! 44: }; ! 45: ! 46: #define RX50SEC 10 /* sectors per track */ ! 47: #define RX50MAXSEC 800 /* 10 sectors times 80 tracks */ ! 48: ! 49: /* ! 50: * Do the sector skew given the sector and track ! 51: * number (it depends on both!). ! 52: */ ! 53: /* (((((s) / 5) + 2 * ((s) + (t))) % 10) + 1) */ ! 54: #define RX50SKEW(s, t) (((s) / 5) + "\1\3\5\7\11\1\3\5\7"[((s) + (t)) % 5]) ! 55: ! 56: /* ! 57: * Values in the command function register. ! 58: */ ! 59: #define RXCMD_ERROR 0x80 /* error bit (composite?) */ ! 60: #define RXCMD_READ 0x40 /* read command */ ! 61: #define RXCMD_WRITE 0x70 /* write command */ ! 62: #define RXCMD_RESET 0x20 /* reset command */ ! 63: #define RXCMD_DONE 0x08 /* operation done (status) */ ! 64: #define RXCMD_DRIVE0 0x00 /* select drive 0 (csa1) */ ! 65: #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.