| View source | |
| # 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 |