Virtual Paper Tape Reader
with added punch!

see copyright notice. Page created 1-Dec-2020 updated 7-Mar-2022. Use the button groups above to navigate quickly around the site.

[Rolled-up paper tapes]

I'm eternally grateful to Brentwood School, and Mid-Essex Technical College (METC, as was) in Chelmsford, for giving us school-kids access to the latter's NCR-Elliott 4120 computer in the late 1960s and early 70s. For the most part, our input was on 80-column punched cards - we had some hand-operated punches at school, and an obliging student who lived in Chelmsford ferried boxfuls to and from the College, also returning the lineprinter output they generated (mainly listings of program errors, but including the occasional burst of runtime results!).

Paper tape was a much less bulky storage medium, but we were only able to use it occasionally - by visiting a room full of noisy Westrex teletype machines at the College. The computer had its own paper tape punch, with which I created "backup" copies of working punched-card programs. A few of these have survived; in the photo are BRENTRAN (a set of numeric and string I/O procedures written in NEAT assembly language), and PTEDIT (a program to edit paper tapes, written in ALGOL 60). Sitting on top is a calendar generator, which I later wrote (reluctantly) in FORTRAN IV for an IBM computer in Cambridge (it's on ⅞ inch tape, 6 bits + parity, as opposed to the others which are 1 inch, 7 bits + parity). Note, in passing, my METC user number 3052, which predates username JOHNR by many years! Also, the "slashed" letter Os; that was the convention on their system, although it was generally more usual for the 0 (zero) character to be "slashed".

[Virtual tape overlaid on screenshot]

Having "discovered" those tapes in a cupboard, I thought it would be fun to write a program to read them, using a series of photos as input. My experimental Virtual Paper Tape Reader (VPTR) can decode up to about 50 inches of tape from a single photograph, provided it's laid out fairly straight on a dark background. That's 500 characters! I had an interesting time reading the first tape (BRENTRAN), including a grim reminder of the chaos that results when the centre of a rolled-up tape drops out. That used to be surpassed, in the computer room, only when a card-reader jam caused a magnificent spectacle known as a "card fountain". Pity the poor operators who had to crawl around the room picking up cards!

Early in 2022, encouraged by the comments of a visitor to this web page, I added some new features to VPTR and wrote a complementary program, VPTP, to encode text characters into an image resembling a length of paper tape. Both programs run under Microsoft Windows™, and experimental versions can be made available to enthusiasts on request.

[VPTR control panel]

VPTR's control panel is overlaid on a window which displays the text as it's recovered from the image. The Load button launches a standard open file dialogue, then the navigation buttons can be used to nudge the tape start into the viewport. Engage attempts to find and lock onto the nearest sprocket hole; if successful, green cross hairs and a decoded character, in Hexadecimal and Ascii, are displayed. The Right and Left buttons then respectively advance and backspace by one character. Read will attempt to read to the end of the tape, displaying the results in the text window and appending them to a buffer which can be written out to a text file by pressing Save, or exported to the clipboard with Copy. Clear clears the buffer and text window.

The software continually tracks the top and bottom tape edges, adapting to changes in tape dimensions, brightness and contrast. It also monitors the topmost (parity) track, measuring the horizontal offset of every hole from its datum, to calculate a "skew factor" that's used when detecting holes on all tracks. These provisions help in reading lower quality images but, as with physical tape readers, parity checking is useful for detecting errors if the tape format supports it. You can select Ignore Parity, Odd Parity or Even Parity. In the latter two cases, if a parity error is detected then any read in progress stops, the cross hairs turn red, and either the Hex code or the Ascii character can be edited. In the pictured example, the character "J" was subsequently corrected to "K", whereupon the cross hairs turned green and the Read button became available to continue.

[VPTP control panel]

The Virtual Punch, VPTP, has a similar control panel, but in its case the viewport shows the last two characters punched on the virtual tape. Check boxes on the left allow the Enter and Backspace keys to do their usual tricks during keyboard entry, but these can be unchecked if it is required just to punch CR or BS codes onto the tape. Inc File and Paste enable text to be included from a file or the clipboard. The Save button writes out the tape image to a bitmap file.

Future improvements? I'm tempted to extend the skew detection to all tracks, ultimately perhaps making the sprocket holes redundant (being smaller, they've proved to be the biggest problem at low image resolutions). One day I might combine VPTR with VPTP to make a Virtual Paper Tape Station based on a single window, and add options for different tape formats, such as the IBM one mentioned earlier.

For the amusement of fellow geeks, I've put a copy of the recovered BRENTRAN program here. Note that the tab positions were originally based on punched-card fields. Also, the backslash (\) originally rendered as a pound symbol (£), which was used, like the dollar in American software, to prefix system-defined names. In retrospect I should have used the latter in place of the various numeric addresses that appear in BRENTRAN, but, hey, I was only 16! I'll write more about the 4100 architecture, and runtime environment, in due course.

top ▲