#!/bin/sh

# ascii to baudot

# must turn bel into ~ for awk

tr -d '~' | tr '\007[a-z]' '~[A-Z]' | awk '
BEGIN	{
	baudot["A"] =		"| o o .       |"
	baudot["-"] =		"| o o .       |"
	baudot["B"] =		"| o   .   o o |"
	baudot["?"] =		"| o   .   o o |"
	baudot["C"] =		"|   o . o o   |"
	baudot[":"] =		"|   o . o o   |"
	baudot["D"] =		"| o   .   o   |"
	baudot["$"] =		"| o   .   o   |"
	baudot["E"] =		"| o   .       |"
	baudot["3"] =		"| o   .       |"
	baudot["F"] =		"| o   . o o   |"
	baudot["!"] =		"| o   . o o   |"
	baudot["G"] =		"|   o .   o o |"
	baudot["&"] =		"|   o .   o o |"
	baudot["H"] =		"|     . o   o |"
	baudot["STOP"] =	"|     . o   o |"
	baudot["I"] =		"|   o . o     |"
	baudot["8"] =		"|   o . o     |"
	baudot["J"] =		"| o o .   o   |"
	baudot["'\''"] =	"| o o .   o   |"
	baudot["K"] =		"| o o . o o   |"
	baudot["("] =		"| o o . o o   |"
	baudot["L"] =		"|   o .     o |"
	baudot[")"] =		"|   o .     o |"
	baudot["M"] =		"|     . o o o |"
	baudot["."] =		"|     . o o o |"
	baudot["N"] =		"|     . o o   |"
	baudot[","] =		"|     . o o   |"
	baudot["O"] =		"|     .   o o |"
	baudot["9"] =		"|     .   o o |"
	baudot["P"] =		"|   o . o   o |"
	baudot["0"] =		"|   o . o   o |"
	baudot["Q"] =		"| o o . o   o |"
	baudot["1"] =		"| o o . o   o |"
	baudot["R"] =		"|   o .   o   |"
	baudot["4"] =		"|   o .   o   |"
	baudot["S"] =		"| o   . o     |"
	baudot["BELL"] =	"| o   . o     |"
	baudot["T"] =		"|     .     o |"
	baudot["5"] =		"|     .     o |"
	baudot["U"] =		"| o o . o     |"
	baudot["7"] =		"| o o . o     |"
	baudot["V"] =		"|   o . o o o |"
	baudot[";"] =		"|   o . o o o |"
	baudot["W"] =		"| o o .     o |"
	baudot["2"] =		"| o o .     o |"
	baudot["X"] =		"| o   . o o o |"
	baudot["/"] =		"| o   . o o o |"
	baudot["Y"] =		"| o   . o   o |"
	baudot["6"] =		"| o   . o   o |"
	baudot["Z"] =		"| o   .     o |"
	baudot["\""] =		"| o   .     o |"
	baudot[""] =		"|     .       |"
	baudot[""] =		"|     .       |"
	baudot["\r"] =		"|     .   o   |"
	baudot["\n"] =		"|   o .       |"
	baudot[" "] =		"|     . o     |"
	baudot["LTRS"] =	"| o o . o o o |"
	baudot["FIGS"] =	"| o o .   o o |"
	end =			"|-------------|"

	figchars = "-?:$3!&8'\''().,901457;2/6\"\r\n "
	bell = "~"
	figs = 0
	print end
}

{
	for (i = 1; i <= length($0); i++)
	{
		c = substr($0, i, 1)

		if (c ~ /[A-Z]/)
		{
			if (figs)
			{
				print baudot["LTRS"]
				figs = 0
			}
		}	
		else if (index(figchars, c) > 0 || c == bell)
		{
			if (c == bell)
				c = "BELL";

			if (!figs)
			{
				print baudot["FIGS"]
				figs = 1
			}
		}
		else if (c == "\t")
			c = " "
		else
			continue

		print baudot[c]
	}

	print baudot["\n"]
}

END	{
	print end
}
'

exit

| x x . x x x |

 hole == mark == 1
!hole ==  space == 0
BITS     LTRS    FIGS      HEX
-----    ----    ----      ---			

00011      A      -        03
11001      B      ?        19
01110      C      :        0E
01001      D      $        09
00001      E      3        01
01101      F      !        0D
11010      G      &        1A
10100      H      STOP     14
00110      I      8        06
01011      J      '        0B
01111      K      (        0F
10010      L      )        12
11100      M      .        1C
01100      N      ,        0C
11000      O      9        18
10110      P      0        16
10111      Q      1        17
01010      R      4        0A
00101      S      BELL     05
10000      T      5        10
00111      U      7        07
11110      V      ;        1E
10011      W      2        13
11101      X      /        1D
10101      Y      6        15
10001      Z      "        11
00000      n/a    n/a      00
01000      CR     CR       08
00010      LF     LF       02
00100      SP     SP       04
11111      LTRS   LTRS     1F
11011      FIGS   FIGS     1B


© 1998, Boyd Roberts: boyd@fr.inter.net