2025-06-21 - ITA-2 Telegraph Code ================================= Western Union Bicycle Messengers (1911) (Smithsonian) A friend sent me a link to a video of someone creating art on an old-school mechanical typewriter. Following up, i found typewriter art books on the Internet Archive, one of which is dated 1936. How To Make "Typeys" (1936) Art Typing I sent these links to another friend. I called it an example of ASCII art from 1936. This friend informed me that ASCII didn't exist in 1936. Doing a little research, i found that what existed in 1932 was ITA-2 telegraph code, which is encoded as 5-bit values that can be punched on 5-hole paper tape. A perfect rabbithole to go down on this rainy day. :-) ITA-2 alphabet on 5-hole tape I wrote a small AWK script to convert between ASCII and ITA-2. The first limitation i noticed was that ITA-2 cannot represent every ASCII character. Like my keyboard, ITA-2 lacks lowercase letters. I wrote a small extension to work around this: any ASCII character that doesn't exist in ITA-2 would get encoded as a five character escape sequence. * FIGURES * ALLSPACE_NOTINUSE * Octal digit1 * Octal digit2 * Octal digit3 Why octal? Just for the fun of it. Below is ita2.awk which converts between ASCII and ITA-2. ita2.awk Next i wrote an even smaller script to convert between ITA-2 and simulated paper tape. Slackware's bsd-games package includes a `ppt` command that simulates 8-hole tape. Below is ppt5.awk, which simulates 5-hole tape. ppt5.awk To get a "tape" version of the natural musical tones: $ printf ABCDEFG | mawk -f ita2.awk | mawk -f ppt5.awk >tones.txt $ pr -n -t tones.txt 1 ________ 2 | .oo| 3 |oo . o| 4 | oo.o | 5 | o . o| 6 | . o| 7 | oo. o| 8 |oo .o | 9 -------- For the round trip: $ mawk -f ppt5.awk decode tones.txt | mawk -f ita2.awk decode ABCDEFG In xterm i can see a cat emoji using the following command. $ printf "\360\237\220\261" >cat.txt $ cat cat.txt 🐱 To get a "tape" encoding of that cat: $ mawk -f ita2.awk cat.txt | mawk -f ppt5.awk >tape.txt $ pr -2n -t tape.txt 1 ________ 12 |oo .oo| 2 |oo .oo| 13 | . | 3 | . | 14 |o .oo| 4 | . o| 15 |o .oo| 5 |o o. o| 16 |o o.o | 6 |o o.o | 17 |oo .oo| 7 |oo .oo| 18 | . | 8 | . | 19 |o .oo| 9 |o .oo| 20 |o o. o| 10 | . o| 21 |o o.oo| 11 | o.oo| 22 -------- To send that cat on a round trip: $ mawk -f ppt5.awk decode tape.txt | mawk -f ita2.awk decode 🐱 To be silly, here's the paper tape with corresponding pohl code: 1 ________ 12 |oo .oo| oddy-pod 2 |oo .oo| oddy-pod 13 | . | pohl 3 | . | pohl 14 |o .oo| ahtah-pod 4 | . o| poot 15 |o .oo| ahtah-pod 5 |o o. o| ahtah-tot 16 |o o.o | ahtah-dye 6 |o o.o | ahtah-dye 17 |oo .oo| oddy-pod 7 |oo .oo| oddy-pod 18 | . | pohl 8 | . | pohl 19 |o .oo| ahtah-pod 9 |o .oo| ahtah-pod 20 |o o. o| ahtah-tot 10 | . o| poot 21 |o o.oo| ahtah-tee 11 | o.oo| tee 22 -------- Pohl Code For a sanity check, i found an photo of 5-hole tape for CSIRAC, the first digital computer in Australia. 5-hole tape photo CSIRAC I manually keyed in the first 10 characters visible in the photo. $ pr -n -t 5hole.txt 1 ________ 2 |ooo. o| 3 |ooo.o | 4 | .oo| 5 |o o.oo| 6 | o . | 7 | o. | 8 | o .oo| 9 | .oo| 10 |ooo. | 11 | o . | 12 -------- Now to decode the virtual paper tape. $ mawk -f ppt5.awk decode 5hole.txt |\ mawk -f ita2.awk decode |\ hexdump -C 00000000 58 56 41 51 0d 20 4a 41 4d 0d |XVAQ. JAM.| 0000000a I guess this means it's working? Apparently the lines of text end with CR only and no LF. See also: Computerphile Paper Tape Video DIY Paper Tape Puncher p.s. To run these examples with mawk on DOS, you may need to set an environment variable MAWKBINMODE=1 To run these examples with gawk, you may need to set an environment variable LC_ALL=C p.p.s. The predecessor to ITA-2 was Western Union telegraph code. Western Union telegraph code table The above table came from the following book. Codes of the World See also: 92 Code Brevity Code Morse Code Abbreviations tags: history,retrocomputing,technical Tags ==== history retrocomputing technical