Vintage Computing Paper Tape Reader

Using the reader

To use the paper tape reader, simply connect it to a Windows 10, Linux or Mac OS computer via USB. The reader should automatically register as a USB CDC device (communication device class, a virtual serial port).

Start a terminal program of your choice and select the right (virtual) serial port. No need to set the baud rate etc., since no physical serial port is involved. The reader will start sending data as soon as you pull paper tape through.

Before the first operation, or when switching to a new type of paper tape with very different transparency, calibrate the reader as described below.


Two LEDs on the Pro Micro board are used to signal the operating status. They are labelled on the detector PCB:

FEED flashes once for every valid feed hole detected during operation and calibration. CAL indicates that calibration mode is active, or that a calibration is recommended.

CAL indication meaning
Steady ON Calibration mode is active
Flashing, 1 Hz Waiting for user to start calibration (press CAL button), or for 10 s timeout
Flashing, 10 Hz Error during the calibration process
ON in read mode Invalid brightness levels have been read (no clear high or low). Recalibration is recommended.



Three different tape widths can be set via jumpers. Setting them properly is recommended to avoid “CAL” indications from invalid detection levels at the tape edges, and to mask invalid bits from the output bytes.

Tape width Tape/bit placement Jumper settings
8 bit 76543.210 5BIT=open, TST=open
7 bit - 6543.210 5BIT=set, TST=set
5 bit - - 432.10 - 5BIT=set, TST=open

Note that the 7-bit setting is only required for the – rather uncommon – type of paper tape which is physically only seven rows wide. For this narrower tape, the 7-bit setting masks out any invalid readings from the eighth detector (which looks just at the tape edge). The common 1" wide tape can be read in the 8-bit setting, no matter whether seven or eight rows of holes are actually punched on it.

Setting only the TST jumper will activate test mode, where the raw ADC readings from all 9 channels are printed on the output in an endless loop. From left to right, bits 0 to 7 are displayed, followed by the feedhole signal on the far right. A high value, up to 255, indicates high brightness.

The INV jumper will set the reader to use inverted intensity thresholds, i.e. a logical ‘1’ or an active feed track pulse are signaled by a dark light level. This is useful for reading paper tapes which have not been punched, but printed on thin paper – for demonstrations or tests where real paper tape and a punch device are not available. Since the light levels will be lower in this case, it is recommended to replace the resistor array RN1 by a 22 kOhm array.

TX is not a jumper, but a serial output. This can optionally be used to connect legacy equipment. Please see the following section for details.

Serial Output

Normally, the USB port is used to interface the tape reader to a modern computer. If you want to read paper tapes into a vintage computer without a USB port, you can use the TX pin on the jumper row which sends “real” serial data.

Here’s a summary of all pins on the jumper row and their functions:

Pin Function
+5 V Power, e.g. for optional external RS-232 level converter
GND Ground (0 V)
5BIT Jumper to GND: 5 bit or 7 bit tape width
GND Ground (0 V)
INV Jumper to GND: Use printed paper tape with dark ‘holes’
GND Ground (0 V)
TST Jumper to GND: Test mode, transmit raw ADC readings via USB
GND Ground (0 V)
TX Serial output: TTL level, 9600 8N1
GND Ground (0 V)