DEC RX01 floppy disc drives

rx01-frontThe RX01 is an 8-inch floppy disc drive device for PDP-8 and PDP-11 computers. It was available in a single-drive or dual-drive configuration. The dual-drive version is shown here. The single-drive version had a blanking plate in place of the right-hand drive. The RX01, or the later RX02, was commonly (but not universally) used on PDP-11 systems. The RX01/RX02 were also used on some PDP-8 and VAX systems.

These drives are very “clunky”. Literally. They have a head-load solenoid that presses the rotating disc against the R/W read. This solenoid is activated/deactivated on each R/W operation. It makes a very noticeable noise and can be heard above the cooling fan noise, even when the RX01 assembly is installed in a DEC rack.

Here are some more pictures of the RX01:

The major assemblies inside the RX01 are:

  • Controller board (large upper PCB – M7726)
  • Read/Write board (large lower PCB – M7727)
  • Power supply (h771-d, for 50Hz systems)
  • One or two belt-driven 8-inch bare drives (no PCBs)
  • Cooling fan assembly (large black shroud with fan attached)

The drive motors are 110VAC, even in RX01 systems that are 230VAC powered (the h771 power supply produces the 110VAC for the drives).

Because the drives are AC-powered, the drive motor speed is dependent upon the AC line frequency. The drives are marked as being for 50Hz or 60Hz systems. Although I’ve not yet verified this, I suspect that 50Hz and 60Hz system both use the same motors, but the pulley diameters are changed to give the correct (360RPM) floppy drive spindle speed.

RX01 versus RX02

The RX02 drive uses double-density sectors, but single-density sector headers. As a result the RX02 can store twice as much data (512KB). The downside of the RX02 is that the disc format is non-standard, so you can’t read or write these discs on other systems.

Be aware also that you need different interface cards (in the computer) to interface to an RX02 drive. This is explained well on Henk Gooijen’s website (see link below).

This page does not discuss the RX02 in any detail.

Media

The RX01 uses standard single-sided single-density IBM 3740 format floppy discs (single-sided, 77 tracks, 26 sectors/track, 128 bytes/sector). The formatted capacity is therefore 256,256 bytes.

One downside of the RX01 is that DEC provides no way to low-level format an RX01 disc. So you need to either use “pre-formatted” (ie IBM 3740) discs, or use a tool on another computer to achieve the low-level format. I use Dave Dunfield’s ImageDisk MSDOS program to do this on a PC.

One good thing about the RX01 is that discs can be read and written on an MSDOS-based PC that has an 8-inch drive attached to it. This makes it simple to transfer disc images (and therefore files) between a simulator (such as SIMH), an actual PDP-8/PDP-11, and disc images found on the web. Again I use ImageDisk on an MSDOS PC for this purpose.

Note that the RX01 is designed for single-sided discs. These are recognisable by the fact that the index hole in the jacket is only slightly offset from the centreline of the disc. There is an optocoupler in the RX01 drive that is physically located to look for the index hole in this location. These days blank discs that you find by random are more likely to be double sided. These have the index hole in the jacket offset a little further from the centreline of the disc, and do not line up with the optocoupler in the RX01’s drives.

A double-sided disc can be used in an RX01 drive, with two limitations:

  • You will only be able to access one side of the disc, as the RX01 physically only has one head (which is positioned on the underside of the disc – Side 0). So always only format and use the disc as a single-sided disc
  • The RX01 controller will never see an index pulse. This doesn’t seem to cause any problems with ordinary operation with OS/8 (on the PDP-8) or RT-11 (on the PDP-11). However your ROM-based bootloader may not like it, and refuse to boot the disc. This is definitely a problem when trying to boot from the interactive menu on the PDP-11/23 KDF11B bootloader, but the PDP-8 RX01 bootloader shown below works fine with double-sided media

Interface cards

To use the RX01 in a PDP-11 or PDP-8 you will also need the correct interface card that for that computer:

  • M7846 (RX11): For a UNIBUS PDP-11 (such as a PDP-11/10)
  • M7946 (RXV11): For a QBUS PDP-11 (such as a PDP/11-23)
  • M8357 (RX8E): For an OMNIBUS PDP-8 (such as a PDP-8/e)

Connecting cable

A 40-way ribbon cable connects the interface card to the RX01 drive. The standard cable supplied by DEC was a BC05L-15, which is 15 feet (4.6m) in length. It is a fairly simple cable (no ground plane).

Each end of the cable is fitted with a 40-pin BERG connector. The cable has a red stripe which should be at the end of the connector that has a very small pin 1 triangle marker on it. This is to be aligned with the “Pin A / Pin B” end of the BERG housing on the drive and interface board. Take care when inserting the cable, as it is not polarised and can easily be inserted the wrong way.

The photo gallery above has a close up picture of the BERG housing on the RX01’s upper PCB (M7726). If you look carefully at this photo you can just see the numbering that is moulded into that housing.

Conventional unshielded ribbon cable and 40-pin IDC connectors would probably work just fine, if you need to make a new cable.

RX01 Diagnostics for the PDP-11

The RL pack of XXDP V2.5 has 2 diagnostics on it for the RX11 and RX21 subsystem:

  • ZRXAF0.BIC 2-DEC-87
  • ZRXBF0.BIC 2-DEC-87
  • ZRXCA0.BIN 2-DEC-87
  • ZRXDC0.BIC 2-DEC-87
  • ZRXEA2.BIC 2-DEC-87
  • ZRXFB0.BIC 2-DEC-87

The one that I have used recently is ZRXAF0.BIC. This is simple to use. Just load a (scratch) disk in each drive (Unit) to be tested, and “R ZRXAF0”. The sign-on banner displayed on screen is “MAINDEC-11-CZRXA-F” along with the test parameters it will use based on the Switch Register (there is a virtual SR for machines, like the 11/34, that don’t have a physical switch register). It will do one pass writing (and read-checking) each cylinder sequentially, and will then do a re-read with random seeks. Any read errors will be reported to the terminal. Otherwise, on successful completion of each pass, it will print a “D” and a bell will sound on the terminal. I found that drives that haven’t been used for a while will initially report read errors (during the random-seek phase) particularly on the higher cylinders (62+) that aren’t accessed very often. But after running the diagnostic through a few passes, the drive can come good by itself.

Another good diagnostic is to boot from one drive (DX0 or DX1), then “COPY/SYS *.* [other drive]”. You can then test that the freshly written disk can be successfully read in each drive by doing a “COPY/SYS *.* NL:” with the freshly written disk in each drive. Then repeat the process in reverse (ie booting and copying from the other drive).

Using the RX01 on a PDP-8/e

You will need an M8357 (RX8E) to do this.

I used an Industrial 8 for this demonstration. The Industrial 8 is essentially a PDP-8/e. But the technique described here should work on any Omnibus-based PDP-8.

The M8357 is fairly simple to configure. There is only one bank of dipswitches and no there are no jumpers. Only the first 6 switches are used. These are the upper 6 switches in the 8-way dipswitch. The other two switches are not used.

rx8e-device-settings

The switches set the “device code” for the board per Table 2-1 in the RX8/RX11 floppy disk system user’s manual (as shown here).

Unfortunately using the “standard” setting marked with an asterisk in the manual (device code 670X) won’t work with OS/8, and may not work with ROM-based bootloaders. See Michael Thompson’s post for more details of this problem.

If you want to use the RX01 with OS/8, set the dipswitch for 675X (device code 75).

Connect the 40-pin cable between the RX8E and the RX01. Pin 1 of the cable (red stripe) goes nearest to the top corner of the M8357 board.

Insert the RX8E in an unused slot in the PDP-8/e.

Now power up your PDP-8 and the RX01 to test the drive.

When you hit the “CLEAR” button on the front panel of the 8/e, you should hear the “clunk” of the head-load solenoids activating and de-activating (even if the drive is empty). There won’t be another clunk when you release the key.

If you are able to boot your PDP-8 into OS/8 from a different device, go ahead and do so, and then try the following with no disks in the RX01:

.DIR RXA0:

You should get the following response:

.DIR RXA0:
ERROR READING INPUT DIRECTORY 

.

Now try and boot or read an RX01-formatted disk, if you have one.

If you don’t have an RX01-formatted floppy disk, here’s a technique for making one (see the links section below for copies of the disk images that are mentioned here):

  • Download os8_rx.rx01 from David Gesswein’s website. In its current format, you can boot this image on a SIMH PDP8 simulator, if you want to check it out
  • Rename the file as os8_rx.dsk, because MSDOS won’t accept 4-character filename suffixes
  • Transfer os8_rx.dsk to an MSDOS machine that has an 8-inch floppy drive attached and a copy of Dave Dunfield’s ImageDisk suite of tools
  • Use ImageDisk’s BIN2IMD.COM utility to convert the BINARY disk image to an IMD disk image as follows: BIN2IMD OS8_RX.DSK OS8_RX.IMD N=77 DM=0 SS=128 SM=1-26 /1 /C
  • Use the main ImageDisk program (IMD.COM) to “write” the IMD disk image to a real 8-inch floppy disc connected to the MSDOS machine
  • Move the floppy disc to the RX01 drive on your PDP-8

If you are able to boot your PDP-8 into OS/8 from a different device, go ahead and do so, and then use the DIR RXA0: command to view the contents of your newly written RX01 floppy disk.

David Gesswein’s Bootstrap

You should also now be able to boot OS/8 from the new RX01 boot disc by placing the disc in RX01 Drive 0 and then toggling in the following bootstrap (copied from here on David Gesswein’s website):

Addrs   Data
00032   7305
00033   6755
00034   5054
00035   1061
00036   6751
00037   5047

Note non sequential address

00047   4053
00050   3002
00051   2050
00052   5047
00053   0000
00054   6753
00055   5033
00056   6752
00057   5453
00060   7004
00061   0000

Load the switches with 0032 then sequentially hit ADDR LOAD, CLEAR and CONT.

If all goes well, OS/8 should load from Drive 0 and you will be greeted with an OS/8 dot prompt on the console.

Pocket Service Guide bootstrap

I’ve had limited success with the above bootloader. Sometimes it just won’t work for me. I’ve had more success with the following bootstrap, which appears at Table 1-8 on Page 13 of the RX01/RX02 Pocket Service Guide (EK-RX012-PS-002):

Addrs   Data
 24     7126
 25     1060
 26     6751
 27     7201
 30     4053
 31     4053
 32     7104
 33     6755  (Start Address)
 34     5054
 35     6754
 36     7450
 37     7610
 40     5046
 41     1060
 42     7041
 43     1061
 44     3060
 45     5024
 46     6751
 47     4053
 50     3002
 51     2050
 52     5047
 53     0000
 54     6753
 55     5033
 56     6752
 57     5453
 60     7024
 61     6030

Directory listing of os8_rx.rx01

The DIR command should give the following results:

.DIR



SYS  VOLUME--   1
SYS:=RX8E
OS/8 SYSTEM   VERSION   3Q

BUILD .SV  33           HELP  .SV   8           BASIC .UF   4
ABSLDR.SV   5           PAL8  .SV  19           BCOMP .SV  17
BITMAP.SV   5           PIP   .SV  11           BLOAD .SV   8
BOOT  .SV   5           PT8E  .BN   1           BRTS  .SV  15
CCL   .SV  18           RESORC.SV  10           EABRTS.BN  24
CREF  .SV  13           RXCOPY.SV   6           RESEQ .BA   6
DIRECT.SV   7           SABR  .SV  24           ECHO  .SV   2
EDIT  .SV  10           TECO  .SV  22           RKLFMT.SV   9
EPIC  .SV  14           BASIC .AF   4           SET   .SV  14
FBOOT .SV   2           BASIC .FF   4           BATCH .SV  10
FOTP  .SV   8           BASIC .SF   4           FUTIL .SV  26
HELP  .HL  55           BASIC .SV   9           IDS   .SV   5

  36 FILES IN  437 BLOCKS -    1 FREE BLOCKS

.

RX8/RX28 Diagnostics

The RX01/RX02 Pocket Service Guide lists (at Section 1.4 on page 9) the following diagnostics:

AIRXA(x) functional test
AIRXB(x) performance exerciser

The diag-games-kermit.rk05 image contains the files DIRXAB.SV, DIRXAC.SV, DIRXBC.DV and DIRXBD.SV.

The diagpack2.rk05 image contains the files AIRXAE.DG and AIRXBF.DG

There’s a useful forum topic here about diagnostics for RX drives on the PDP-8 -> Debugging an RX01/RX02 on an RX8E in a PDP-8/e

Vince’s website has MAINDEC documentation and binary files for DIRXA-B, DIRXA-C, DIRXA-D, DIRXB-C and DIRXB-D -> MAINDEC Software Files

Other RX01 webpages

There are some great webpages out there with information about RX01/RX02 drives.

Here are some that I find to be very helpful:

Links

Here are some links to documents and disk images:

David Gesswein’s library of RX-related documents

RX01/RX02 Pocket Service Guide (EK-RX012-PS-002)

os8_rx.dsk (this is just a renamed copy of David Gesswein’s .rx01 image)

os8_rx.imd (this is in ImageDisk format)

Revision history

31.07.2024: Added the new PDP-11 Diagnostics section.