Difference between revisions of "RK11 disk controller"
(→RK11-D: Mention larger FIFO buffer in the -D version) |
(Link directly to RK11-'B' panel image) |
||
Line 11: | Line 11: | ||
Although the [[RK11-C disk controller|RK11-C]] (below) is the earliest documented version, there are a few clues which indicate that there was an earlier version (one for which no documentation remains). | Although the [[RK11-C disk controller|RK11-C]] (below) is the earliest documented version, there are a few clues which indicate that there was an earlier version (one for which no documentation remains). | ||
− | First, there is an image of a [[DEC indicator panel]] ( | + | First, there is an image of a [[DEC indicator panel]] (image [http://ana-3.lcs.mit.edu/~jnc/tech/pdp11/jpg/panels/RK11B.jpg here]) which seems to be from a pre-RK11-C; it clearly seems to be an RK11 panel of some sort, but the pinout of the RK11-C indicator panel connector (engineering drawing "RK11-C Indicator Connectors: RK11-C-23") has differences with this one. |
In particular, on the panel in the image, the lower right line of lights on the panel shows 3 bits of Major State; on the RK11-C prints (on connector B32) there are 5 individual bits (Postamble, Checksum, Data, Header, Preamble). To explore this further, on the "Major States" RK11-C drawing (RK11-C-04), in the upper left corner, there is a row of 6 flops, each labeled with one of those states (plus one for 'Idle'), arranged in a chain - the output of each driving an individual light. However, the 3 bits for 'Major State' on the display panel imply it is binary coded - likely implemented with a counter. | In particular, on the panel in the image, the lower right line of lights on the panel shows 3 bits of Major State; on the RK11-C prints (on connector B32) there are 5 individual bits (Postamble, Checksum, Data, Header, Preamble). To explore this further, on the "Major States" RK11-C drawing (RK11-C-04), in the upper left corner, there is a row of 6 flops, each labeled with one of those states (plus one for 'Idle'), arranged in a chain - the output of each driving an individual light. However, the 3 bits for 'Major State' on the display panel imply it is binary coded - likely implemented with a counter. | ||
Line 19: | Line 19: | ||
A reasonable ''guess'', in light of these facts, is that in some previous version, a counter had been used, but had had a problem of some sort, and had therefore been replaced by the string of flops. (The reason is unknown, but perhaps it was a binary counter, not [[Gray code]], and the decoding into states was producing glitches.) | A reasonable ''guess'', in light of these facts, is that in some previous version, a counter had been used, but had had a problem of some sort, and had therefore been replaced by the string of flops. (The reason is unknown, but perhaps it was a binary counter, not [[Gray code]], and the decoding into states was producing glitches.) | ||
− | A plausible scenario is that such an earlier version was produced in very small numbers - perhaps as prototypes, only internal to DEC. (If there had been problems with glitches in the major state counter, they would not have wanted to release it as a product.) Or if it was released as a product, perhaps they were all recalled and replaced with RK11-C's. | + | A plausible scenario is that such an earlier version was produced in very small numbers - perhaps as prototypes, only internal to DEC. (If there had been problems discovered with glitches in the major state counter, they would not have wanted to release it as a product.) Or if it was released as a product, perhaps they were all recalled and replaced with RK11-C's. |
In this regard, it is interesting to note the DEC ''Spare Module Handbook'', lists only the RK11-C and -D, but '''does''' list the [[KT11-B]], a ''rara avis'' indeed. This argues that the predecessor did not exist 'in the wild'. | In this regard, it is interesting to note the DEC ''Spare Module Handbook'', lists only the RK11-C and -D, but '''does''' list the [[KT11-B]], a ''rara avis'' indeed. This argues that the predecessor did not exist 'in the wild'. | ||
Line 31: | Line 31: | ||
==RK11-D== | ==RK11-D== | ||
− | The RK11-D was a re-implementation of the RK11-C on four [[DEC card form factor|quad]] cards (M7254-7), which plugged into a custom-wired quad-wide hex-high [[system unit]] backplane, for a [[BA11 mounting boxes|BA11]] slide-out mounting box. | + | The RK11-D was a re-implementation of the RK11-C on four [[DEC card form factor|quad]] cards (M7254-7), which plugged into a custom-wired quad-wide hex-high [[system unit]] [[backplane]], for a [[BA11 mounting boxes|BA11]] slide-out mounting box. |
It was program-compatible with the RK11-C, except that the RK11-D did not contain the Maintenance Register of the earlier controller. In the RK11-D, the bus location of the MR responds, but according to the engineering drawings, it reads as zero, and written data is ignored. | It was program-compatible with the RK11-C, except that the RK11-D did not contain the Maintenance Register of the earlier controller. In the RK11-D, the bus location of the MR responds, but according to the engineering drawings, it reads as zero, and written data is ignored. | ||
− | The RK11-D also has a 6-word FIFO buffer between the disk and the bus (see sheet 7 of the M7256 engineering drawings). The original RK11-C had only one word of buffering, which was probably not enough, and the reason for the [[RK11-C disk controller#Double Buffered RK11-C|double-buffered RK11-C version]]. | + | The RK11-D also has a 6-word [[First-In First-Out buffer|FIFO buffer]] between the disk and the bus (see sheet 7 of the M7256 engineering drawings). The original RK11-C had only one word of buffering, which was probably not enough, and likely the reason for the [[RK11-C disk controller#Double Buffered RK11-C|double-buffered RK11-C version]]. |
==RK11-E== | ==RK11-E== | ||
Line 206: | Line 206: | ||
==External links== | ==External links== | ||
− | |||
− | |||
* [http://toresbe.dreamhosters.com/redirect.php?res=bitsavers&doc=dec/unibus/EK-RK11D-MM-002.pdf EK-RK11D-MM-002, RK11-D Maintenance Manual] | * [http://toresbe.dreamhosters.com/redirect.php?res=bitsavers&doc=dec/unibus/EK-RK11D-MM-002.pdf EK-RK11D-MM-002, RK11-D Maintenance Manual] |
Revision as of 16:39, 2 December 2017
The RK11 series of controllers for the UNIBUS and QBUS are for the earlier RK moving-head magnetic disk drives (RK02-RK05), all based on the IBM 2315 drive and pack.
(The later RK06 and RK07, and their controller, the RK611, are a different drive and pack.)
There are several models of the RK11, which are basically identical in their programming interface; differences between them are discussed in the sections on the individual models (below).
The UNIBUS RK11's all connect to the RK drive through a BC11A cable, the standard UNIBUS cable.
Contents
- 1 Early RK11 version
- 2 RK11-C
- 3 RK11-D
- 4 RK11-E
- 5 RKV11-D
- 6 Device registers
- 6.1 777400: Drive Status Register (RKDS)
- 6.2 777402: Error Register (RKER)
- 6.3 777404: Control Status Register (RKCS)
- 6.4 777406: Word Count Register (RKWC)
- 6.5 777410: Current Bus Address Register (RKBA)
- 6.6 777412: Disk Address Register (RKDA)
- 6.7 777414: Maintenance Register (RKMR)
- 6.8 777416: Data Buffer Register (RKDB)
- 7 PDP-11 bootstraps
- 8 External links
Early RK11 version
Although the RK11-C (below) is the earliest documented version, there are a few clues which indicate that there was an earlier version (one for which no documentation remains).
First, there is an image of a DEC indicator panel (image here) which seems to be from a pre-RK11-C; it clearly seems to be an RK11 panel of some sort, but the pinout of the RK11-C indicator panel connector (engineering drawing "RK11-C Indicator Connectors: RK11-C-23") has differences with this one.
In particular, on the panel in the image, the lower right line of lights on the panel shows 3 bits of Major State; on the RK11-C prints (on connector B32) there are 5 individual bits (Postamble, Checksum, Data, Header, Preamble). To explore this further, on the "Major States" RK11-C drawing (RK11-C-04), in the upper left corner, there is a row of 6 flops, each labeled with one of those states (plus one for 'Idle'), arranged in a chain - the output of each driving an individual light. However, the 3 bits for 'Major State' on the display panel imply it is binary coded - likely implemented with a counter.
Also, the signal "COUNT MSR" (likely 'Major State Register') is exactly what one would expect to see if the major state had previously been held in a counter, not a string of flops. It makes no sense to expend the effort synthesize that signal (on the next page, RK11-C-05, "MSR Control") when the individual signals which go into it could have been used as is to clock each flop in the chain.
A reasonable guess, in light of these facts, is that in some previous version, a counter had been used, but had had a problem of some sort, and had therefore been replaced by the string of flops. (The reason is unknown, but perhaps it was a binary counter, not Gray code, and the decoding into states was producing glitches.)
A plausible scenario is that such an earlier version was produced in very small numbers - perhaps as prototypes, only internal to DEC. (If there had been problems discovered with glitches in the major state counter, they would not have wanted to release it as a product.) Or if it was released as a product, perhaps they were all recalled and replaced with RK11-C's.
In this regard, it is interesting to note the DEC Spare Module Handbook, lists only the RK11-C and -D, but does list the KT11-B, a rara avis indeed. This argues that the predecessor did not exist 'in the wild'.
RK11-C
Main article: RK11-C disk controller
Like many of the earlier large peripheral controllers for the PDP-11, the RK11-C was a large custom wire-wrapped backplane which bolts into the front of a 19 inch rack, such as an H960; into it were plugged about 40 small M-Series FLIP CHIPs.
RK11-D
The RK11-D was a re-implementation of the RK11-C on four quad cards (M7254-7), which plugged into a custom-wired quad-wide hex-high system unit backplane, for a BA11 slide-out mounting box.
It was program-compatible with the RK11-C, except that the RK11-D did not contain the Maintenance Register of the earlier controller. In the RK11-D, the bus location of the MR responds, but according to the engineering drawings, it reads as zero, and written data is ignored.
The RK11-D also has a 6-word FIFO buffer between the disk and the bus (see sheet 7 of the M7256 engineering drawings). The original RK11-C had only one word of buffering, which was probably not enough, and likely the reason for the double-buffered RK11-C version.
RK11-E
The RK11-E (sometimes called the RK15) was a variant of the RK11-D which supported 18-bit data; it was used with the PDP-15. It used the same cards as the RK11-D, with a jumper selection for 18-bit operation, and a different clock crystal.
It was used with the UC15 Unichannel, which used a PDP-11/05 acting as a slave to the PDP-15 via shared memory; the RK11-E was plugged into the UNIBUS on the PDP-11. It used the two UNIBUS parity lines for the two extra data bits. The two extra bits were not used by the PDP-11 or its memory, but went straight through the MX15-B Memory Multiplexer, directly to the PDP-15's main memory.
RKV11-D
The RKV11-D is a variant of the RK11-D for the QBUS (the others are all UNIBUS).
It uses three of the four cards of the RK11-D (M7254-6), along with a different custom quad-wide quad-high system unit backplane, and a replacement fourth card (M7268) which is connected via ribbon cables to two dual cards, one of which (M7269) plugs into a QBUS backplane slot, and the other (M993-YA) into the first RK05 drive.
It is programming compatible with the RK11-D, except that it only supports Q16 QBUS mode, so the two extended memory bits in the CSR have no effect; they may be read and written, but are not connected to anything.
Device registers
Register | Abbreviation | Address |
---|---|---|
Drive Status Register | RKDS | 777400 |
Error Register | RKER | 777402 |
Control Status Register | RKCS | 777404 |
Word Count Register | RKWC | 777406 |
Current Bus Address Register | RKBA | 777410 |
Disk Address Register | RKDA | 777412 |
Maintenance Register | RKMR | 777414 |
Data Buffer Register | RKDB | 777416 |
777400: Drive Status Register (RKDS)
Drive Ident. | DPL | HDEN | DRU | SIN | SOK | DRY | ARDY | WPS | SC=CA | Sector Counter | |||||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
777402: Error Register (RKER)
DRE | OVR | WLO | SKE | PGE | NXM | DLT | RTE | NXD | NXC | NXS | CSE | WCE | |||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
777404: Control Status Register (RKCS)
ERR | H.E. | SCP | M | IBA | FMT | R/WA | SSE | RDY | IDE | EX. MEM | FUNCTION | GO | |||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
777406: Word Count Register (RKWC)
WC15 <---> WC00 | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
777410: Current Bus Address Register (RKBA)
BA15 <---> BA00 | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
777412: Disk Address Register (RKDA)
DRIVE SELECT | CYLINDER ADDRESS | SUR | SECTOR ADDRESS | ||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
777414: Maintenance Register (RKMR)
M. RCP | M. RDP | M. SPS | M. ADA | M. LAI | M. DRY | M. R/W/S | MAINT. SECTOR COUNTER | ||||||||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
777416: Data Buffer Register (RKDB)
DB15 <---> DB00 | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
PDP-11 bootstraps
Disk 0
Address | Data | Mnemonic | Description |
---|---|---|---|
1000 | 012700 | MOV #177406,R0 | Move the address of the Word Count register into R0 |
1002 | 177406 | (constant) | |
1004 | 012710 | MOV #177400,(R0) | Move block size (negative) into Word Count register |
1006 | 177400 | (constant) | |
1010 | 012740 | MOV #5,-(R0) | Move 'Read Go' command into CSR |
1012 | 000005 | (constant) | |
1014 | 105710 | TSTB (R0) | Test for 'Done' bit in CSR |
1016 | 100376 | BPL 1014 | Jump backward if not set |
1020 | 005007 | CLR PC | Start loaded bootstrap with jump to 0 |
Note that the INIT pulse caused by hitting the 'Start' button will clear the Bus Adddress register, so the loaded block will be placed at location 0.
Disk n
This bootstrap will boot from any disk in a daisy-chained multi-drive configuration. Memory location octal 1006 contains the unit number, as follows:
|
|