PunchTape
Bytes acquire an immediate visual representation when punched into paper tape. An outdated information storage medium (well, recently outdated -- until 2019 it was still used to distribute cryptographic keys by several governments), paper tape stores digital information as holes punched along tracks. There are eight tracks, and each row perpendicular to the tracks represents one byte. A hole in the paper represents a logical one (1) and no hole is a zero (0). The punched out circles are referred to as chads, and are collected in a chad box. A series of smaller, continuous sprocket holes lies between the third and fourth tracks for the tape feed mechanism to grab. Paper tape stores 10 bytes per inch, so a mile of paper tape is about 360K.
Below are several projects exploring the use of punch tape generated with a fifty year old Olivetti Te-318 teleprinter as an output device for modern (and not-so-modern) computers.
Self-program
February 2021
Sending the following 230 ASCII characters to a paper punch renders letters in the tape bit pattern that function as a self-program. The human visual system processes the tape and interprets the program message.
@@@@@@AB\BA@NQQN@OPPO@@@@^EE^@_EMR@_UUU@@@@^EE^@@@@_BDB_@^EE^@NQQJ@_DD_@_@_BDH_@ _UUU@@@@^EE^@_BDH_@_QQN@@@@AB\BA@NQQN@OPPO@@@@NQQJ@^EE^@_BDH_@@@@_EEB@_EMR@NQQN@ NQUM@_EMR@^EE^@_BDB_@@@@AB\BA@NQQN@OPPO@_EMR@RUUI@_UUU@_PP@_EEE@@@@@@@
The tape-punched message reads:
YOU ARE A MACHINE AND YOU CAN PROGRAM YOURSELF
A second and third iteration demonstrates a recursive quality of the self-program:
YOU ARE A MACHINE AND YOU CAN PROGRAM YOURSELF TO PROGRAM MACHINES
YOU ARE A MACHINE AND YOU CAN PROGRAM YOURSELF TO PROGRAM MACHINES TO PROGRAM OTHERS
The first version of the punch program was a reflection on the recent writings of Robert Wright on evolutionary psychology, including our contemporary understanding of the mind and the effects and uses of meditation. The immediate inspiration was a photograph of graffiti posted on social media. Perhaps it is also an example of self-modifying human code. However, what was initially a program of possibly liberating self-awareness took a darker turn -- a commentary on the role of the internet and social media platforms in altering and controlling social behavior, and the active roles humans take in building these machines.
Is the self-program a meme? That is, is it a viral and self-replicating mind program? My interest in disseminating the message once I received it might be a reflection of its potency. Also, the ASCII encoding is innocuous and basically undecipherable, but the punch tape is easily decoded by the human brain language centers.
Porting the self-program
May 2021
The self-program code ported to other human programming languages.
@@@@@CLPLC@NQQN@OPPO@RUUI@@@@_UUU@A_A@_UUU@RUUI@@@@OPPO@_BDH_@_UUU@@@@_BDB_@^EE ^@NQQJ@_DD_@_@_BDH_@_UUU@@@@_UUU@A_A@@@@CLPLC@NQQN@OPPO@RUUI@@@@_EEB@NQQN@OPPO@ CLPLC@_UUU@YUS@@@@CLPLC@NQQN@OPPO@RUUI@@@@_EEB@_EMR@NQQN@NQUM@_EMR@^EE^@_BDB_@_B DB_@_UUU@_EMR@@@@@
VOUS ÊTES UNE MACHINE ET VOUS POUVEZ VOUS PROGRAMMER
Binary self-program
November 2021
The self-program versions above are rendered in ASCII characters. A binary version of the self-program is even further removed from non-computational transmissibility, but when punched to tape is similarly readable and interpretable through the human visual processing system. The byte sequence is rendered below in a hexdump format, reminiscent of program listings in early computer magazines like Compute!, Byte, and Nibble.
Program listing
0: 12 00 00 00 00 00 00 00 00 03 04 F8 04 03 00 7E 10: 81 81 81 81 7E 00 7F 80 80 80 80 7F 00 00 00 00 20: 00 00 00 00 FC 12 11 11 12 FC 00 FF 09 19 29 49 30: 86 00 FF 89 89 89 81 81 00 00 00 00 00 00 00 00 40: FC 12 11 11 12 FC 00 00 00 00 00 00 00 00 FF 06 50: 08 08 06 FF 00 FC 12 11 11 12 FC 00 7E 81 81 81 60: 81 42 00 FF 08 08 08 08 FF 00 00 81 81 FF 81 81 70: 00 FF 04 00 08 10 FF 00 FF 89 89 89 81 81 00 00 80: 00 00 00 00 00 00 FC 12 11 11 12 FC 00 FF 04 00 90: 08 10 FF 00 81 FF 81 81 81 7E 00 00 00 00 00 00 a0: 00 00 00 03 04 F8 04 03 00 7E 81 81 81 81 7E 00 b0: 7F 80 80 80 80 7F 00 00 00 00 00 00 00 00 7E 81 c0: 81 81 81 42 00 FC 12 11 11 12 FC 00 FF 04 00 08 d0: 10 FF 00 00 00 00 00 00 00 00 FF 09 09 09 09 06 e0: 00 FF 09 19 29 49 86 00 7E 81 81 81 81 7E 00 7E f0: 81 81 91 51 F2 00 FF 09 19 29 49 86 00 FC 12 11 100: 11 12 FC 00 FF 06 08 08 06 FF 00 00 00 00 00 00 110: 00 00 00 03 04 F8 04 03 00 7E 81 81 81 81 7E 00 120: 7F 80 80 80 80 7F 00 FF 09 19 29 49 86 00 46 89 130: 89 89 89 72 00 FF 89 89 89 81 81 00 FF 80 80 80 140: 80 80 00 FF 09 09 09 01 01 00 00 00 00 00 00 00 150: 00 14
Here is the program compressed by gzip
:
0: 1F 8B 08 08 F6 C8 9A 61 00 03 59 41 41 4D 2E 45 10: 58 45 00 13 62 80 02 66 96 1F 2C CC 0C 75 8D 40 20: 50 C7 50 DF 00 04 F5 30 A9 3F 42 82 82 42 7F 18 30: FE 73 4A 6A 7A B6 31 FC EF EC EC 6C 6C 44 93 83 40: 82 FF 6C 1C 1C 6C FF 61 82 60 C3 9C 18 FE 73 00 50: C1 7F 06 86 C6 C6 FF 40 7D FF 59 18 38 04 FE 63 60: 37 05 2A 07 52 07 74 04 11 2E 83 DA 80 AA 1D E6 70: 16 4E 20 60 83 B9 1A AA 1D 48 4D 0C FC 04 13 84 80: E9 83 B8 1A 9F 7D 50 0D 6E 40 57 77 16 C1 1C FF 90: 1F 24 D7 00 B6 88 91 11 A6 5B 04 00 66 93 5C D8 a0: 52 01 00 00
Patterns and symbols
2019-present
Hearts and Diamonds
January 2019
Bit patterns of hearts and diamonds are separated by the byte 0xFF
to fold into one inch square booklets. Each heart or diamond can be detached easily to be used as a stamp or to share.
Broken hearts and 10000 Hearts
An error in the reception of the teleprinter causes random misplaced bits in a heart pattern. 10000 Hearts / 10 kiloherz is an alternating pattern of 16 open and closed hearts. The decimal number 16 is 10000 in binary; the symbols are realized as a binary representation of the data.
Pink Hearts
September 2021
Continuation of the Heart bit patterns in pink punch tape.
Ribbons
2019-2021 Repeating patterns of bytes are used to create decorative ribbons and their inverted forms, !ribbons.
As it is punched, the ribbon can be fed into the paper tape reader of the teleprinter, resulting in an endless loop.
TTY products
Functional uses of reperforator tape beyond information storage.
Bookmarks
The ASCII code @@@@@_UUN@NQQN@NQQN@_DJQ@_BDB_@^EE^@_EMR@_DJQ@@@@@@
punched in paper reperforator tape makes lovely bookmarks to use and to share.
Or show some nerd pride with these. Perfect for saving your place in K&R. (FORTRAN forever!)
Label maker
A teleprinter serving as a large, heavy, and loud label maker.
seer.sh
December 2022
I am the Mystic Oracle who sees and tells all.
Using the Seer Shell, the computer divines future cycles of the user and prints a fortune on punch tape.
Adventure ROM
February 2019
Sending the Atari 2600 game Adventure to a reperforator results in the code's machine language bytes creating images in paper tape. The graphics include the chalice, sword, dragon, and Warren Robinett's hidden easter egg.
First Program
May 2020
Kernighan and Ritchie's seminal book, The C Programming Language, introduced the minimal C program
main() { printf("hello, world"); }
which has since become coding pedagogy for introducing and learning new programming languages. First Program stores this line of code in a byte pattern that is readable as the hello, world
program statement when sent to punch tape.
Program listing
0: 12 00 00 00 00 00 00 00 00 00 FC 18 24 24 24 24 10: 18 00 00 04 78 08 04 04 04 08 00 00 00 40 44 7D 20: 40 40 00 00 00 7C 08 04 04 04 04 78 00 00 04 04 30: 3F 44 44 20 00 00 00 08 08 7E 09 09 01 02 00 00 40: 00 00 1C 22 41 00 00 00 00 00 00 07 00 00 07 00 50: 00 00 7F 08 04 04 04 04 78 00 00 38 54 54 54 54 60: 54 18 00 00 00 00 41 7F 40 00 00 00 00 00 00 41 70: 7F 40 00 00 00 00 38 44 44 44 44 44 38 00 00 00 80: 80 60 20 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 3C 40 20 10 20 40 3C 00 00 38 44 44 44 44 44 a0: 38 00 00 04 78 08 04 04 04 08 00 00 00 00 41 7F b0: 40 00 00 00 00 38 44 44 44 44 28 7F 00 00 01 02 c0: 04 08 10 20 40 00 00 7C 08 04 04 04 04 78 00 00 d0: 00 00 07 00 00 07 00 00 00 00 00 41 22 1C 00 00 e0: 00 00 00 80 66 26 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 14
About punch tape
Before the advent of magnetic mass storage devices (magnetic tape and hard drives), punch tape was a useful means for storing programs and reading them back into a computer. Punch tape was commonly used in teleprinters because it enabled faster and less error-prone communications. An operator would first type a message off-line in local mode to generate a punched version on tape. The transmission could then proceed by feeding the tape into the reader. The message would be sent faster than an operator could type, and any errors could be corrected beforehand. This practice minimized the active (and costly) time each machine needed to spend on the communications line. A receiving perforforator (reperforator) was also used to forward messages. The tape produced a copy that could be retransmitted.
The specifications for punch tape are described in Federal Information Processing Standard publications. [1,2] They detail the standards adopted in ANSI X3.6-1965 (R1973). According to the standard, paper tape is 25.40mm (1.000 inch) wide and has a nominal thickness of 0.004 inch. Each bit is recorded as a "track," starting from track 1 (right-most, at the reference edge) and ending at track 8 (left most) as the tape is being fed out of the machine. Feed holes are placed between track 3 and 4. The tape thickness is one mil (one-thousandth of an inch). The ANSI standard and the corresponding standard published by the European Computer Manufacturer's Association (ECMA) [3] are identical, except that latter has the least significant bit on the right-most track of the punch tape, while the ANSI standard is the opposite. The track spacings and location of the feed holes (between the third and fourth tracks) are identical, so the ECMA just has the tape turned upside down relative to the ANSI standard.