This page lists some of our development projects where old hardware meets modern computer equipment. All projects are selfmade, with partly enormous hardware and software efforts, like routed PCBs, kernel drivers and microcontrollers.
Upcoming projects:


Paper tape processing with contemporary computers

We were often in a situation when some data stored on a punched paper needed to be sent over long distances. Having Internet access and e-mail, that's no matter for todays computers, once you can read in paper tapes. The other way around, punching new or modified data on punched papers is also a frequent need in our daily business.
Therefore we initiated the Paper Tape Project, having the pronounced goal to handle paper tapes with contemporary computers, that is, to read, change and write (punch) them.

We use comparatively new punched paper devices that already feature a Centronics interface at TTL level. Unfortunately the devices (in detail: reader Ghilmetti FER 201, puncher FACIT 4070) didn't yet implement the Centronics common standard from the 1970s (officially standardized as IEEE-1284 not until 1994), therefore simply connecting those devices with a standard parallel port printer cable won't do the job.

Photography of the paper tape reader Ghilmetti FER 201

Ghilmetti FER 201 reader with framework for reading zig-zag tapes

The very first step was to read the manual carefully to assemble a specially wired cable to connect the punch card device with the parallel port of a PC (commonly known as "LPT port", a standard port on PC motherboards just a few years ago). Since the devices don't implement the standarized hand shake, the second step was to implement a suitable driver to emulate the right communication behaviour for the punch card devices.

Development started on the free GNU/Linux Operating System where we used the ppdev framework of the Linux 2.6 kernel series to program a user space driver in the programming language C with a little effort compared to a real kernel space driver.

The parallel port consists of three 8-bit hardware registers: a bidirectional data register, a control register and a signal register. Since paper tapes are made of 8-bit words (octetts), we just connected these eight bits on the data register to save them directly to one byte in the computer. Using the control and signal pins, we could implement a interrupt (device cycle) driven communication, since the status register features one interrupt enabled bit (strobe). Our devices punch at 80 chars/sec and read in 250 chars/sec, so even older PCs can easily run the driver programs.

Photography of the paper tape puncher FACIT 4070

The legendary puncher FACIT 4070

As already told, there's not really the question how to model punched papers on computers, since they use the same word length (8 bit) and computer files are conceptually the same as paper tapes: byte arrays. A 250 byte binary file therefore represents a 250 chars long punched paper. Thus processing punch card files with Unix command line tools or hex editors is very easy. To speed up the workflow, we wrote some simple perl scripts to label paper tapes. Afterwards we wrote a graphical editor, called "Paper Tape Editor", where binary files could be visualized and directly edited as paper tapes on the screen. This program was written in C, using the Gtk+ toolkit. After writing drivers for the Microsoft Windows Operating System, this program was extended to the "Paper Tape Suite" to read, edit, save and punch paper tapes graphically. That way every possible procedures with paper tapes can be performed with ordinary PCs.

You can get further details with a lot of documentation material on the homepage of The Paper Tape Project. The source code was released as open source can be checked out from the technikum29.de subversion repository.