# 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 TU55 and TU56 controllers use the same [IOT device codes](/wiki?name=IOT+Device+Assignments) but have incompatible command schemes. Consequently, the only sensible choice when you `BUILD` OS/8 is to select at most one such controller type.


# Tradeoffs

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 one...word...at...a...time.


# Your Choice

If all you ever want to do is play with virtual DECtape images under SIMH, [configure the PiDP-8/I software in the default way, which now uses the TC08 device since release 201902xx. 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 kinds of TD8E Briefly, there's the version for PDP-8/e machines with at least 12 kWords of core and the version for an 8 kWord machine, and they work differently.

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