The RK11 is the UNIBUS controller for the RK05 moving-head magnetic disk drive.
Physical implementation
Todo.
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)
777416: Data Buffer Register (RKDB)
PDP-11 bootstraps
Disk 0
I know the octal data is correct, but I'm not sure about the mnemonics and the description.
Address |
Data |
Mnemonic |
Description
|
1000 |
012700 |
MOV #177406,R0 |
Move the top of the address of the controller into r0
|
1002 |
177406 |
|
(constant)
|
1004 |
012710 |
MOV #177400,(R0) |
Move 177400 into 177406
|
1006 |
177400 |
|
(constant)
|
1010 |
012740 |
MOV #5,-(r0) |
Move 5 into 177404
|
1012 |
000005 |
|
(constant)
|
1014 |
105710 |
TSTB (R0) |
Test byte at 177404
|
1016 |
100376 |
BPL 1014 |
Jump backward if positive
|
1020 |
005007 |
CLR PC |
Jump to zero
|
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:
Value |
Unit
|
020000 |
Unit 1
|
040000 |
Unit 2
|
060000 |
Unit 3
|
100000 |
Unit 4
|
120000 |
Unit 5
|
140000 |
Unit 6
|
160000 |
Unit 7
|
Address |
Data |
Mnemonic |
Description
|
1000 |
012700 |
MOV #177406, R0 |
Store the address of the Word Count register in r0
|
1002 |
177406 |
(constant) |
(Which is 177406)
|
1004 |
012760 |
MOV xxxxxx, 000004(R0) |
Store the disk ID number in the Disk Address register
|
1006 |
xxxxxx |
(disk ID number) |
The disk number goes here.
|
1010 |
000004 |
(index) |
|
1012 |
012700 |
MOV #177406, R0 |
Store the addresss of the Word Count register in r0
|
1014 |
177406 |
(constant) |
(Which is 177406)
|
1016 |
012710 |
MOV #177400, (R0) |
Store 177400 into the Word Count register,
|
1020 |
177400 |
(constant) |
meaning that octal 400 words are to be read.
|
1022 |
012740 |
MOV #000005, -(R0) |
Store 5 into the Control Status register
|
1024 |
000005 |
(constant) |
selecting the function "read" with 4, and "go" with 1
|
1026 |
105710 |
TSTB (R0) |
Test the Control Status Register (upper) byte
|
1030 |
100376 |
BPL *-1 |
Repeat if it's positive, that is Control Ready is cleared
|
1032 |
005007 |
CLR PC |
If not, clear the Program Counter (essentially, jump to 0)
|
Documentation
RK11-C manual, 1971
RK11-C schematics, February 1971
EK-RK11D-MM-002, RK11-D Maintenance Manual