Introduction
Introduction Statistics Contact Development Disclaimer Help
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
tags: history,retrocomputing,technical
# Tags
history
retrocomputing
technical
You are viewing proxied material from tilde.pink. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.