PiDP-8/I Software

TD8E vs TC08
Log In

The Problem

The os8.tu56 file shipped with early releases of the PiDP-8/I software was an image created from a DECtape found running on someone's PDP-8 system. That system had a TD8E "Simple DECtape" controller that required the CPU to monitor the tape as it sped past the heads, and transferred data through the AC, not by using Direct Memory Access.

Most surviving PDP-8/e hardware has that same simple single-card DECtape controller. However, there is another DECtape controller available for the PDP-8, the TC08, which offloads to hardware more of the tape motion and uses DMA to transfer data. Before the advent of the PDP-8 OMNIBUS, the TC08 was the only controller option available, but it was expensive.

The problem we face is that both types of DECtape TC08 and TD8E controllers use the same IOT device codes but have incompatible command schemes. Consequently, the only sensible choice when you BUILD OS/8 is to select at most one such controller type.


Here's where the interesting tradeoff comes in: emulating a DMA device in SIMH is quick and easy. Your driver gets the pointer to the blocks and it copies them. The TC08 emulator for SIMH is simple and runs as fast as the host can copy bytes.

Emulating the TD8E is harder. SIMH has to listen for the commands to start the tape moving, then for the desired block number. SIMH must then wait for each 12 bit word to go into that block to come in through the emulation of a programmed I/O instruction that put that word in the PDP-8 AC. And it has to do all of this

Your Choice

If all you ever want to do is play with virtual DECtape images under SIMH, configure the PiDP-8/I software distribution in the default way, which now uses the TC08 device since version 2019.04.25. The TC08 simulation is a LOT faster and has lower CPU overhead.

However, if you are using SIMH and the PiDP-8/I to create bootable OS/8 TU56 images for use on real hardware, you may want to configure it to use the TD8E, because it's the more commonly found DECtape controller:

 $ ./configure --boot-tape-config=td12k

If you configure OS/8 on that tape image with the wrong driver, it won't boot on the real hardware.

TD8E vs. TD12K

You might be wondering why the above command uses the name "td12k" instead of "td8e". It's because there are actually two different setups for using TD8E controller as a system device. Briefly, one setup requires at least 12 kWords of core and the the other setup requires a ROM board containing code that would run in the top page of Field 2. With the ROM board, you can have a working system with only 8 kWords of core, or you don't have to worry about not writing into the top page of Field 2.

If we ever decide to support that other tape controller type in os8-run, we'll probably use the option value "tdrom".