xref: /csrg-svn/old/tc/tc.c (revision 3943)
1*3943Sroot static char *sccsid = "@(#)tc.c	4.2 (Berkeley) 07/06/81";
21121Sbill /*
31121Sbill  * Simulate typesetter on 4014
41121Sbill */
51121Sbill 
61121Sbill #include <signal.h>
71121Sbill #include <stdio.h>
81121Sbill 
9*3943Sroot #define	oput(c) if (pgskip==0) putchar(c); else (c);
101121Sbill #define MAXY 3071
111121Sbill #define US 037
121121Sbill #define GS 035
131121Sbill #define ESC 033
141121Sbill #define FF 014
151121Sbill #define DBL 0200
161121Sbill 
171121Sbill int pl = 11*144;
181121Sbill int mpy = 1;
191121Sbill int div = 1;
201121Sbill char *ap;
211121Sbill int ch;
221121Sbill int nonumb;
231121Sbill int psize = 10;
241121Sbill int dfact = 1;
251121Sbill int esc;
261121Sbill int escd;
271121Sbill int verd;
281121Sbill int esct;
291121Sbill int osize = 02;
301121Sbill int size = 02;
311121Sbill int rx;
321121Sbill int xx;
331121Sbill int yy = MAXY+62+48;
341121Sbill int leadtot = -31;
351121Sbill int ohy = -1;
361121Sbill int ohx = -1;
371121Sbill int oxb = -1;
381121Sbill int oly = -1;
391121Sbill int olx = -1;
401121Sbill int tflag;
411121Sbill int railmag;
421121Sbill int lead;
431121Sbill int skip;
441121Sbill int pgskip;
451121Sbill int ksize = ';';
461121Sbill int mcase;
471121Sbill int stab[] = {010,0,01,07,02,03,04,05,0211,06,0212,0213,0214,0215,0216,0217};
481121Sbill int rtab[] = {6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, 36, 18};
491121Sbill int ktab[] = {';',';',';',';',';',';',':',':','9','9','9','9','8','8','8','9'};
501121Sbill int first = 1;
511121Sbill int alpha;
521121Sbill extern char *asctab[128];
531121Sbill extern char *spectab[128];
541121Sbill int erase = 1;
551121Sbill int	(*sigint)();
561121Sbill int	(*sigquit)();
571121Sbill 
581121Sbill main(argc,argv)
591121Sbill int argc;
601121Sbill char **argv;
611121Sbill {
621121Sbill 	register i, j;
631121Sbill 	register char *k;
641121Sbill 	extern ex();
651121Sbill 
661121Sbill 	while((--argc > 0) && ((++argv)[0][0]=='-')){
671121Sbill 		switch(argv[0][1]){
681121Sbill 			case 'p':
691121Sbill 				ap = &argv[0][2];
701121Sbill 				dfact = 72;
711121Sbill 				if(i = atoi())pl = i/3;
721121Sbill 				continue;
731121Sbill 			case 't':
741121Sbill 				tflag++;
751121Sbill 				continue;
761121Sbill 			case 's':
771121Sbill 				ap = &argv[0][2];
781121Sbill 				dfact = 1;
791121Sbill 				pgskip = atoi();
801121Sbill 				continue;
811121Sbill 			default:
821121Sbill 				dfact = 1;
831121Sbill 				ap = &argv[0][1];
841121Sbill 				if(i = atoi())mpy = i;
851121Sbill 				if(i = atoi())div = i;
861121Sbill 				continue;
871121Sbill 		}
881121Sbill 	}
891121Sbill 	if(argc){
901121Sbill 		if (freopen(argv[0], "r", stdin) == NULL) {
911121Sbill 			fprintf(stderr, "tc: cannot open %s\n", argv[0]);
921121Sbill 			exit(1);
931121Sbill 		}
941121Sbill 	}
951121Sbill 	sigint = signal(SIGINT, ex);
961121Sbill 	sigquit = signal(SIGQUIT, SIG_IGN);
971121Sbill 	while((i = getchar()) != EOF){
981121Sbill 		if(!i)continue;
991121Sbill 		if(i & 0200){
1001121Sbill 			esc += (~i) & 0177;
1011121Sbill 			continue;
1021121Sbill 		}
1031121Sbill 		if(esc){
1041121Sbill 			if(escd)esc = -esc;
1051121Sbill 			esct += esc;
1061121Sbill 			xx += (esc*mpy + rx)/div;
1071121Sbill 			rx = (esc*mpy + rx)%div;
1081121Sbill 			sendpt();
1091121Sbill 			esc = 0;
1101121Sbill 		}
1111121Sbill 		switch(i){
1121121Sbill 			case 0100:	/*init*/
1131121Sbill 				escd = verd = mcase = railmag = xx = 0;
1141121Sbill 				yy = MAXY + 48;
1151121Sbill 				leadtot = -31;
1161121Sbill 				ohy = oxb = oly = ohx = olx = -1;
1171121Sbill 				oput(US);
1181121Sbill 				fflush(stdout);
1191121Sbill 				if(!first && !tflag)kwait();
1201121Sbill 				if(first){
1211121Sbill 					first = 0;
1221121Sbill 					yy += 62;
1231121Sbill 				}
1241121Sbill 				init();
1251121Sbill 				continue;
1261121Sbill 			case 0101:	/*lower rail*/
1271121Sbill 				railmag &= ~01;
1281121Sbill 				continue;
1291121Sbill 			case 0102:	/*upper rail*/
1301121Sbill 				railmag |= 01;
1311121Sbill 				continue;
1321121Sbill 			case 0103:	/*upper mag*/
1331121Sbill 				railmag |= 02;
1341121Sbill 				continue;
1351121Sbill 			case 0104:	/*lower mag*/
1361121Sbill 				railmag &= ~02;
1371121Sbill 				continue;
1381121Sbill 			case 0105:	/*lower case*/
1391121Sbill 				mcase = 0;
1401121Sbill 				continue;
1411121Sbill 			case 0106:	/*upper case*/
1421121Sbill 				mcase = 0100;
1431121Sbill 				continue;
1441121Sbill 			case 0107:	/*escape forward*/
1451121Sbill 				escd = 0;
1461121Sbill 				continue;
1471121Sbill 			case 0110:	/*escape backward*/
1481121Sbill 				escd = 1;
1491121Sbill 				continue;
1501121Sbill 			case 0111:	/*stop*/
1511121Sbill 				continue;
1521121Sbill 			case 0112:	/*lead forward*/
1531121Sbill 				verd = 0;
1541121Sbill 				continue;
1551121Sbill 			case 0113:	/*undefined*/
1561121Sbill 				continue;
1571121Sbill 			case 0114:	/*lead backward*/
1581121Sbill 				verd = 1;
1591121Sbill 				continue;
1601121Sbill 			case 0115:	/*undefined*/
1611121Sbill 			case 0116:
1621121Sbill 			case 0117:
1631121Sbill 				continue;
1641121Sbill 		}
1651121Sbill 		if((i & 0340) == 0140){	/*leading*/
1661121Sbill 			lead = (~i) & 037;
1671121Sbill 			if(verd)lead = -lead;
1681121Sbill 			if((leadtot += lead) > pl){
1691121Sbill 				leadtot = lead;
1701121Sbill 				oput(US);
1711121Sbill 				fflush(stdout);
1721121Sbill 				if(!tflag)kwait();
1731121Sbill 				yy = MAXY;
1741121Sbill 				if(pgskip)--pgskip;
1751121Sbill 				init();
1761121Sbill 				continue;
1771121Sbill 			}
1781121Sbill 			if(skip)continue;
1791121Sbill 			if((yy -= (lead<<1)) < 0){
1801121Sbill 				skip++;
1811121Sbill 				yy = 0;
1821121Sbill 			}else sendpt();
1831121Sbill 			continue;
1841121Sbill 		}
1851121Sbill 		if((i & 0360) == 0120){	/*size change*/
1861121Sbill 			i &= 017;
1871121Sbill 			for(j = 0; i != (stab[j] & 017); j++);
1881121Sbill 			osize = size;
1891121Sbill 			size = stab[j];
1901121Sbill 			psize = rtab[j];
1911121Sbill 			ksize = ktab[j];
1921121Sbill 			oput(ESC);
1931121Sbill 			oput(ksize);
1941121Sbill 			i = 0;
1951121Sbill 			if(!(osize & DBL) && (size & DBL))i = -55;
1961121Sbill 			else if((osize & DBL) && !(size & DBL))i = 55;
1971121Sbill 			if(escd)i = -i;
1981121Sbill 			esc += i;
1991121Sbill 			continue;
2001121Sbill 		}
2011121Sbill 		if(i & 0300)continue;
2021121Sbill 		i = (i & 077) | mcase;
2031121Sbill 		if(railmag != 03)k = asctab[i];
2041121Sbill 		else k = spectab[i];
2051121Sbill 		if(alpha)sendpt();
2061121Sbill 		if(*k!='\0'){
2071121Sbill 			oput(US);
2081121Sbill 			while(*k & 0377)oput(*k++);
2091121Sbill 			alpha++;
2101121Sbill 			continue;
2111121Sbill 		}else{
2121121Sbill 			if(railmag != 03){
2131121Sbill 				switch(i){
2141121Sbill 				case 0124: lig("fi"); break;
2151121Sbill 				case 0125: lig("fl"); break;
2161121Sbill 				case 0126: lig("ff"); break;
2171121Sbill 				case 0130: lig("ffl"); break;
2181121Sbill 				case 0131: lig("ffi"); break;
2191121Sbill 				default: continue;
2201121Sbill 				}
2211121Sbill 			}
2221121Sbill 			continue;
2231121Sbill 		}
2241121Sbill 	}
2251121Sbill 	ex();
2261121Sbill }
2271121Sbill lig(x)
2281121Sbill char *x;
2291121Sbill {
2301121Sbill 	register i, j;
2311121Sbill 	register char *k;
2321121Sbill 
2331121Sbill 	j = 0;
2341121Sbill 	k = x;
2351121Sbill 	oput(US);
2361121Sbill 	oput(*k++);
2371121Sbill 	i = psize * 8 * mpy / (div * 6); /* 8/36 em */
2381121Sbill 	while(*k){
2391121Sbill 		xx += i;
2401121Sbill 		j += i;
2411121Sbill 		sendpt();
2421121Sbill 		oput(US);
2431121Sbill 		oput(*k++);
2441121Sbill 	}
2451121Sbill 	xx -= j;
2461121Sbill 	sendpt();
2471121Sbill }
2481121Sbill init(){
2491121Sbill 
2501121Sbill 	fflush(stdout);
2511121Sbill 	if(erase){
2521121Sbill 		oput(ESC);
2531121Sbill 		oput(FF);
2541121Sbill 	}else erase = 1;
2551121Sbill 	oput(ESC);
2561121Sbill 	oput(ksize);
2571121Sbill 	/*delay about a second*/
2581121Sbill /* let the system do it...
2591121Sbill 	for(i = 960; i > 0; i--)oput(GS);
2601121Sbill */
2611121Sbill 	skip = 0;
2621121Sbill 	sendpt();
2631121Sbill }
2641121Sbill ex(){
2651121Sbill 	yy = MAXY;
2661121Sbill 	xx = 0;
2671121Sbill 	sendpt();
2681121Sbill 	oput(ESC);
2691121Sbill 	oput(';');
2701121Sbill 	oput(US);
2711121Sbill 	fflush(stdout);
2721121Sbill 	exit(0);
2731121Sbill }
2741121Sbill kwait(){
2751121Sbill 	char buf[128]; char *bptr; char c;
2761121Sbill 	if(pgskip) return;
2771121Sbill next:
2781121Sbill 	bptr=buf;
2791121Sbill 	while((c=readch())&&(c!='\n')) *bptr++=c;
2801121Sbill 	*bptr=0;
2811121Sbill 	if(bptr!=buf){
2821121Sbill 		bptr = buf;
2831121Sbill 		if(*bptr == '!'){callunix(&buf[1]); fputs("!\n", stderr); goto next;}
2841121Sbill 		else switch(*bptr++){
2851121Sbill 			case 'e':
2861121Sbill 				erase = 0;
2871121Sbill 				goto next;
2881121Sbill 			case 's':
2891121Sbill 				ap = &buf[1];
2901121Sbill 				dfact = 1;
2911121Sbill 				pgskip = atoi() + 1;
2921121Sbill 				goto next;
2931121Sbill 			default:
2941121Sbill 				fputs("?\n", stderr);
2951121Sbill 				goto next;
2961121Sbill 		}
2971121Sbill 	}
2981121Sbill 	else if (c==0) ex();
2991121Sbill 	else	return;
3001121Sbill }
3011121Sbill callunix(line)
3021121Sbill char line[];
3031121Sbill {
3041121Sbill 	int rc, status, unixpid;
3051121Sbill 	if( (unixpid=fork())==0 ) {
3061121Sbill 		signal(SIGINT,sigint); signal(SIGQUIT,sigquit);
3071121Sbill 		close(0); dup(2);
3081121Sbill 		execl("/bin/sh", "-sh", "-c", line, 0);
3091121Sbill 		exit(255);
3101121Sbill 	}
3111121Sbill 	else if(unixpid == -1)
3121121Sbill 		return;
3131121Sbill 	else{	signal(SIGINT, SIG_IGN); signal(SIGQUIT, SIG_IGN);
3141121Sbill 		while( (rc = wait(&status)) != unixpid && rc != -1 ) ;
3151121Sbill 		signal(SIGINT,ex); signal(SIGQUIT,sigquit);
3161121Sbill 	}
3171121Sbill }
3181121Sbill readch(){
3191121Sbill 	char c;
3201121Sbill 	if (read(2,&c,1)<1) c=0;
3211121Sbill 	return(c);
3221121Sbill }
3231121Sbill sendpt(){
3241121Sbill 	int hy,xb,ly,hx,lx;
3251121Sbill 
3261121Sbill 	oput(GS);
3271121Sbill 	hy = ((yy>>7) & 037);
3281121Sbill 	xb = ((xx & 03) + ((yy<<2) & 014) & 017);
3291121Sbill 	ly = ((yy>>2) & 037);
3301121Sbill 	hx = ((xx>>7) & 037);
3311121Sbill 	lx = ((xx>>2) & 037);
3321121Sbill 	if(hy != ohy)oput(hy | 040);
3331121Sbill 	if(xb != oxb)oput(xb | 0140);
3341121Sbill 	if((ly != oly) || (hx != ohx) || (xb != oxb))
3351121Sbill 		oput(ly | 0140);
3361121Sbill 	if(hx != ohx)oput(hx | 040);
3371121Sbill 	oput(lx | 0100);
3381121Sbill 	ohy = hy;
3391121Sbill 	oxb = xb;
3401121Sbill 	oly = ly;
3411121Sbill 	ohx = hx;
3421121Sbill 	olx = lx;
3431121Sbill 	alpha = 0;
3441121Sbill 	return;
3451121Sbill }
3461121Sbill atoi()
3471121Sbill {
3481121Sbill 	register i, j, acc;
3491121Sbill 	int field, digits;
3501121Sbill 	long dd;
3511121Sbill 	long tscale();
3521121Sbill 
3531121Sbill 	field = digits = acc = 0;
3541121Sbill a1:
3551121Sbill 	while(((j = (i = getch()) - '0') >= 0) && (j <= 9)){
3561121Sbill 		field++;
3571121Sbill 		digits++;
3581121Sbill 		acc = 10*acc + j;
3591121Sbill 	}
3601121Sbill 	if(i == '.'){
3611121Sbill 		field++;
3621121Sbill 		digits = 0;
3631121Sbill 		goto a1;
3641121Sbill 	}
3651121Sbill 	if(!(ch = i))ch = 'x';
3661121Sbill 	dd = tscale(acc);
3671121Sbill 	acc = dd;
3681121Sbill 	if((field != digits) && (digits > 0)){
3691121Sbill 		j = 1;
3701121Sbill 		while(digits--)j *= 10;
3711121Sbill 		acc = dd/j;
3721121Sbill 	}
3731121Sbill 	nonumb = !field;
3741121Sbill 	ch = 0;
3751121Sbill 	return(acc);
3761121Sbill }
3771121Sbill long tscale(n)
3781121Sbill int n;
3791121Sbill {
3801121Sbill 	register i, j;
3811121Sbill 
3821121Sbill 	switch(i = getch()){
3831121Sbill 		case 'u':
3841121Sbill 			j = 1;
3851121Sbill 			break;
3861121Sbill 		case 'p':	/*Points*/
3871121Sbill 			j = 6;
3881121Sbill 			break;
3891121Sbill 		case 'i':	/*Inches*/
3901121Sbill 			j = 432;
3911121Sbill 			break;
3921121Sbill 		case 'c':	/*Centimeters; should be 170.0787*/
3931121Sbill 			j = 170;
3941121Sbill 			break;
3951121Sbill 		case 'P':	/*Picas*/
3961121Sbill 			j = 72;
3971121Sbill 			break;
3981121Sbill 		default:
3991121Sbill 			j = dfact;
4001121Sbill 			ch = i;
4011121Sbill 	}
4021121Sbill 	return((long)n*j);
4031121Sbill }
4041121Sbill getch(){
4051121Sbill 	register i;
4061121Sbill 
4071121Sbill 	if(ch){
4081121Sbill 		i = ch;
4091121Sbill 		ch = 0;
4101121Sbill 		return(i);
4111121Sbill 	}
4121121Sbill 	return(*ap++);
4131121Sbill }
4141121Sbill 
4151121Sbill char *asctab[128] = {
4161121Sbill "\0",	/*blank*/
4171121Sbill "h",	/*h*/
4181121Sbill "t",	/*t*/
4191121Sbill "n",	/*n*/
4201121Sbill "m",	/*m*/
4211121Sbill "l",	/*l*/
4221121Sbill "i",	/*i*/
4231121Sbill "z",	/*z*/
4241121Sbill "s",	/*s*/
4251121Sbill "d",	/*d*/
4261121Sbill "b",	/*b*/
4271121Sbill "x",	/*x*/
4281121Sbill "f",	/*f*/
4291121Sbill "j",	/*j*/
4301121Sbill "u",	/*u*/
4311121Sbill "k",	/*k*/
4321121Sbill "\0",	/*blank*/
4331121Sbill "p",	/*p*/
4341121Sbill "-",	/*_ 3/4 em dash*/
4351121Sbill ";",	/*;*/
4361121Sbill "\0",	/*blank*/
4371121Sbill "a",	/*a*/
4381121Sbill "_",	/*rule*/
4391121Sbill "c",	/*c*/
4401121Sbill "`",	/*` open*/
4411121Sbill "e",	/*e*/
4421121Sbill "\'",	/*' close*/
4431121Sbill "o",	/*o*/
4441121Sbill "\0",	/*1/4*/
4451121Sbill "r",	/*r*/
4461121Sbill "\0",	/*1/2*/
4471121Sbill "v",	/*v*/
4481121Sbill "-",	/*- hyphen*/
4491121Sbill "w",	/*w*/
4501121Sbill "q",	/*q*/
4511121Sbill "/",	/*/*/
4521121Sbill ".",	/*.*/
4531121Sbill "g",	/*g*/
4541121Sbill "\0",	/*3/4*/
4551121Sbill ",",	/*,*/
4561121Sbill "&",	/*&*/
4571121Sbill "y",	/*y*/
4581121Sbill "\0",	/*blank*/
4591121Sbill "%",	/*%*/
4601121Sbill "\0",	/*blank*/
4611121Sbill "Q",	/*Q*/
4621121Sbill "T",	/*T*/
4631121Sbill "O",	/*O*/
4641121Sbill "H",	/*H*/
4651121Sbill "N",	/*N*/
4661121Sbill "M",	/*M*/
4671121Sbill "L",	/*L*/
4681121Sbill "R",	/*R*/
4691121Sbill "G",	/*G*/
4701121Sbill "I",	/*I*/
4711121Sbill "P",	/*P*/
4721121Sbill "C",	/*C*/
4731121Sbill "V",	/*V*/
4741121Sbill "E",	/*E*/
4751121Sbill "Z",	/*Z*/
4761121Sbill "D",	/*D*/
4771121Sbill "B",	/*B*/
4781121Sbill "S",	/*S*/
4791121Sbill "Y",	/*Y*/
4801121Sbill "\0",	/*blank*/
4811121Sbill "F",	/*F*/
4821121Sbill "X",	/*X*/
4831121Sbill "A",	/*A*/
4841121Sbill "W",	/*W*/
4851121Sbill "J",	/*J*/
4861121Sbill "U",	/*U*/
4871121Sbill "K",	/*K*/
4881121Sbill "0",	/*0*/
4891121Sbill "1",	/*1*/
4901121Sbill "2",	/*2*/
4911121Sbill "3",	/*3*/
4921121Sbill "4",	/*4*/
4931121Sbill "5",	/*5*/
4941121Sbill "6",	/*6*/
4951121Sbill "7",	/*7*/
4961121Sbill "8",	/*8*/
4971121Sbill "9",	/*9*/
4981121Sbill "*",	/***/
4991121Sbill "-",	/*minus*/
5001121Sbill "",	/*fi*/
5011121Sbill "",	/*fl*/
5021121Sbill "",	/*ff*/
5031121Sbill "\033\016Z\bM\033\017",	/*cent sign*/
5041121Sbill "",	/*ffl*/
5051121Sbill "",	/*ffi*/
5061121Sbill "(",	/*(*/
5071121Sbill ")",	/*)*/
5081121Sbill "[",	/*[*/
5091121Sbill "]",	/*]*/
5101121Sbill "\033\016J\033\017",	/*degree*/
5111121Sbill "\033\016M\b_\033\017",	/*dagger*/
5121121Sbill "=",	/*=*/
5131121Sbill "\033\016O\b&\033\017",	/*registered*/
5141121Sbill ":",	/*:*/
5151121Sbill "+",	/*+*/
5161121Sbill "\0",	/*blank*/
5171121Sbill "!",	/*!*/
5181121Sbill "\033\016O\b~\033\017",	/*bullet*/
5191121Sbill "?",	/*?*/
5201121Sbill "\'",	/*foot mark*/
5211121Sbill "|",	/*|*/
5221121Sbill "\0",	/*blank*/
5231121Sbill "\033\016O\b#\033\017",	/*copyright*/
5241121Sbill "\033\016L\033\017",	/*square*/
5251121Sbill "$" };	/*$*/
5261121Sbill 
5271121Sbill char *spectab[128] = {
5281121Sbill "\0",	/*blank*/
5291121Sbill "\033\016(\bM\033\017",	/*psi*/
5301121Sbill "\033\016o\b_\033\017",	/*theta*/
5311121Sbill "v\b)",	/*nu*/
5321121Sbill "\033\016V\b,\033\017",	/*mu*/
5331121Sbill "\033\016)\b?\033\017",	/*lambda*/
5341121Sbill "\033\016I\033\017",	/*iota*/
5351121Sbill "S\b\033\016Z\033\017",	/*zeta*/
5361121Sbill "o\b\'",	/*sigma*/
5371121Sbill "o\b\033\0165\033\017",	/*delta*/
5381121Sbill "\033\016b\033\017",	/*beta*/
5391121Sbill "\033\016e\bc\033\017",	/*xi*/
5401121Sbill "j\b\033\016C\033\017",	/*eta*/
5411121Sbill "\033\016O\bM\033\017",	/*phi*/
5421121Sbill "\033\016(\033\017",	/*upsilon*/
5431121Sbill "\033\016k\033\017",	/*kappa*/
5441121Sbill "\0",	/*blank*/
5451121Sbill "T\b\033\016S\033\017",	/*pi*/
5461121Sbill "@",	/*at-sign*/
5471121Sbill "\033\016U\033\017",	/*down arrow*/
5481121Sbill "\0",	/*blank*/
5491121Sbill "\033\016A\033\017",	/*alpha*/
5501121Sbill "|",	/*or*/
5511121Sbill "l\b/",	/*chi*/
5521121Sbill "\"",	/*"*/
5531121Sbill "\033\016E\033\017",	/*epsilon*/
5541121Sbill "=",	/*=*/
5551121Sbill "\033\016O\033\017",	/*omicron*/
5561121Sbill "\033\016[\033\017",	/*left arrow*/
5571121Sbill "\033\016R\033\017",	/*rho*/
5581121Sbill "\033\016Y\033\017",	/*up arrow*/
5591121Sbill "\033\016N\033\017",	/*tau*/
5601121Sbill "_",	/*underrule*/
5611121Sbill "\\",	/*\*/
5621121Sbill "I\b\033\016(\033\017",	/*Psi*/
5631121Sbill "\033\016O\bJ\033\017",	/*bell system sign*/
5641121Sbill "\033\016W\bX\033\017",	/*infinity*/
5651121Sbill "`\b/",	/*gamma*/
5661121Sbill "\033\016X\bF\033\017",	/*improper superset*/
5671121Sbill "\033\016A\033\017",	/*proportional to*/
5681121Sbill "\033\016\\\b]\033\017",	/*right hand*/
5691121Sbill "\033\016W\033\017",	/*omega*/
5701121Sbill "\0",	/*blank*/
5711121Sbill "\033\016G\033\017",	/*gradient*/
5721121Sbill "\0",	/*blank*/
5731121Sbill "I\033\016\bO\033\017",	/*Phi*/
5741121Sbill "O\b=",	/*Theta*/
5751121Sbill "O\b_",	/*Omega*/
5761121Sbill "\033\016V\033\017",	/*cup (union)*/
5771121Sbill "\033\016@\033\017",	/*root en*/
5781121Sbill "s",	/*terminal sigma*/
5791121Sbill "\033\016)\bK\033\017",	/*Lambda*/
5801121Sbill "-",	/*minus*/
5811121Sbill "\033\016S\bK\033\017",	/*Gamma*/
5821121Sbill "\033\016i\033\017",	/*integral sign*/
5831121Sbill "\033\016t\b'\033\017",	/*Pi*/
5841121Sbill "\033\016Z\033\017",	/*subset of*/
5851121Sbill "\033\016X\033\017",	/*superset of*/
5861121Sbill "\033\016T\033\017",	/*approximates*/
5871121Sbill "o\b`",	/*partial derivative*/
5881121Sbill "\033\016H\033\017",	/*Delta*/
5891121Sbill "\033\016I\b'\033\017",	/*square root*/
5901121Sbill ">\b\033\016F\b@\033\017",	/*Sigma*/
5911121Sbill "\033\016T\bF\033\017",	/*approx =*/
5921121Sbill "\0",	/*blank*/
5931121Sbill ">",	/*>*/
5941121Sbill "\033\016_\bF\b@\033\017",	/*Xi*/
5951121Sbill "<",	/*<*/
5961121Sbill "/",	/*slash (longer)*/
5971121Sbill "\033\016C\033\017",	/*cap (intersection)*/
5981121Sbill "\033\016y\033\017",	/*Upsilon*/
5991121Sbill "\033\016|\033\017",	/*not*/
6001121Sbill "|",	/*right ceiling (rt of ")*/
6011121Sbill "|",	/*left top (of big curly)*/
6021121Sbill "|",	/*bold vertical*/
6031121Sbill "|",	/*left center of big curly bracket*/
6041121Sbill "|",	/*left bottom*/
6051121Sbill "|",	/*right top*/
6061121Sbill "|",	/*right center of big curly bracket*/
6071121Sbill "|",	/*right bot*/
6081121Sbill "|",	/*right floor (rb of ")*/
6091121Sbill "|",	/*left floor (left bot of big sq bract)*/
6101121Sbill "|",	/*left ceiling (lt of ")*/
6111121Sbill "\033\016=\033\017",	/*multiply*/
6121121Sbill "\033\016+\033\017",	/*divide*/
6131121Sbill "+\b_",	/*plus-minus*/
6141121Sbill "\033\016$\033\017",	/*<=*/
6151121Sbill "\033\016^\033\017",	/*>=*/
6161121Sbill "=\b_",	/*identically equal*/
6171121Sbill "\033\016*\033\017",	/*not equal*/
6181121Sbill "{",	/*{*/
6191121Sbill "}",	/*}*/
6201121Sbill "\'",	/*' acute accent*/
6211121Sbill "`",	/*` grave accent*/
6221121Sbill "^",	/*^*/
6231121Sbill "#",	/*sharp*/
6241121Sbill "\033\016|\b[\033\017",	/*left hand*/
6251121Sbill "\033\016c\b_\033\017",	/*member of*/
6261121Sbill "~",	/*~*/
6271121Sbill "\033\016O\b/\033\017",	/*empty set*/
6281121Sbill "\0",	/*blank*/
6291121Sbill "\033\016%\bM\033\017",	/*dbl dagger*/
6301121Sbill "|",	/*box rule*/
6311121Sbill "*",	/*asterisk*/
6321121Sbill "\033\016Z\bF\033\017",	/*improper subset*/
6331121Sbill "\033\016O\033\017",	/*circle*/
6341121Sbill "\0",	/*blank*/
6351121Sbill "+",	/*eqn plus*/
6361121Sbill "\033\016]\033\017",	/*right arrow*/
6371121Sbill "g\b\033\016C\033\017" };	/*section mark*/
638