When assembling a PDP-11, the one thing that stands out is the complete lack of support for modern mass storage devices. Fortunately, the TU58 DECtape drive provides a low barrier of entry for those of us who want to get our PDP-11 up running something useful.
The TU58 was a tape system that used small tape cassettes. Each TU58 came with two drives; Unit 0 and Unit 1. Each cassette held 256 KB of data, organized in 512 blocks of 512 bytes each. The beauty of this system is that it connected to a DLV11-compatible serial port and used a fairly simple communications protocol.
After researching the TU58 on the Internet, I found a few hardware emulators and a couple of software ones. The hardware emulators were kind of cool, but not terribly useful in my case. The best option would be to connect the PDP-11 to the serial port of another computer and have it emulate the drive. I probably could have ported one of the software emulators to my Linux box, but I decided it would be more fun to write one from scratch.
The TU58 technical manual does a good job describing the the serial protocol, and I based my emulator on this. The source code for my emulator can be found at the bottom of this page. The emulator handles reads, writes and the boot command. It checks to see if a tape file filesystem permissions are read-only and responds to write requests with a write protect error, if applicable.
The emulator is low maintenance and runs fine at 38400 bps, when connected to an M7195-FA (MXV11-BF) multifunction module. I have not tried it with other serial modules. The boot ROMs on the M7195 find the emulated unit and attempt to first boot from Unit 0. If no bootable tape is mounted, it then checks Unit 1. The ROM command line will allow booting from either unit by issuing the DD command with either a 0 or 1, for the unit number.
Don North has gone through the effort of creating a number of XXDP diagnostic tapes for the TU58. I prefer the general purpose 11xxdp.dsk XXDP operating system tape, since you can copy and edit files, and create new tapes. The diagnostics include batch files that execute diagnostics in a sane manner, which is really nice.
tu58 -l line [-f logfile] [-s speed] [-x debug] -0 tapefile -1 tapefile
-l | Serial line (e.g. /dev/ttyS0) |
-s | Serial line speed in bits per second (default is 9600) |
-0 | Unit 0 tape file name |
-1 | Unit 1 tape file name |
-x | Debugging level |
-l | Log file for error and debugging information |
The session below is from a cold power-on, with the emulator running at debug level 1.