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