SRI-NOSC/h/baudot.h

/* Baudot input mapping table -- the value of "FIGS" is OR'd as 6th bit
 * into the 5-bit character value to get a 6-bit index
 * into this table.
 */
#define FIGSCHR 0333
#define LETSCHR 0337
	/* This table uses "Communication" standard FIGS. */
char	bditab[] {
	0177,'e',012,'a',040,'s','i','u',
	015,'d','r','j','n','f','c','k',
	't','z','l','w','h','y','p','q',
	'o','b','g',FIGSCHR,'m','x','v',LETSCHR,
	0177,'3',012,'-',040,007,'8','7',
	015,'$','4',053,',','!',':','(',
	'5','"',')','2','#','6','0','1',
	'9','?','&',FIGSCHR,'.','/',';',LETSCHR,
};

/* Baudot output mapping table -- some simple transforms
 * are done to turn an ASCII char into a 6-bit index into
 * this table.  If the 040 bit is set in the resulting byte,
 * it means FIGS mode must be used to output it.
 * If the 200 bit is set, the byte can be output in either mode.
 * Note that entries for % and / are identical, as a crock.
 */
#define NOCH 0300
char	bdotab[] {
	0204,053,061,064,051,075,072,045,	/*  !"#$%&' */
	057,062,NOCH,NOCH,054,043,074,075,	/* ()*+,-./ */
	066,067,063,041,052,060,065,047,	/* 01234567 */
	046,070,056,076,NOCH,NOCH,NOCH,071,	/* 89:;<=>? */
	NOCH,03,031,016,011,01,015,032,		/* @ABCDEFG */
	024,006,013,017,022,034,014,030,	/* HIJKLMNO */
	026,027,012,005,020,007,036,023,	/* PQRSTUVW */
	035,025,021,NOCH,NOCH,NOCH,NOCH,NOCH,	/* XYZ[\]^_ */
};