xref: /csrg-svn/old/tc/tc.c (revision 1121)
1*1121Sbill static char *sccsid = "@(#)tc.c	4.1 (Berkeley) 10/01/80";
2*1121Sbill /*
3*1121Sbill  * Simulate typesetter on 4014
4*1121Sbill */
5*1121Sbill 
6*1121Sbill #include <signal.h>
7*1121Sbill #include <stdio.h>
8*1121Sbill 
9*1121Sbill #define	oput(c) if (pgskip==0) putchar(c); else;
10*1121Sbill #define MAXY 3071
11*1121Sbill #define US 037
12*1121Sbill #define GS 035
13*1121Sbill #define ESC 033
14*1121Sbill #define FF 014
15*1121Sbill #define DBL 0200
16*1121Sbill 
17*1121Sbill int pl = 11*144;
18*1121Sbill int mpy = 1;
19*1121Sbill int div = 1;
20*1121Sbill char *ap;
21*1121Sbill int ch;
22*1121Sbill int nonumb;
23*1121Sbill int psize = 10;
24*1121Sbill int dfact = 1;
25*1121Sbill int esc;
26*1121Sbill int escd;
27*1121Sbill int verd;
28*1121Sbill int esct;
29*1121Sbill int osize = 02;
30*1121Sbill int size = 02;
31*1121Sbill int rx;
32*1121Sbill int xx;
33*1121Sbill int yy = MAXY+62+48;
34*1121Sbill int leadtot = -31;
35*1121Sbill int ohy = -1;
36*1121Sbill int ohx = -1;
37*1121Sbill int oxb = -1;
38*1121Sbill int oly = -1;
39*1121Sbill int olx = -1;
40*1121Sbill int tflag;
41*1121Sbill int railmag;
42*1121Sbill int lead;
43*1121Sbill int skip;
44*1121Sbill int pgskip;
45*1121Sbill int ksize = ';';
46*1121Sbill int mcase;
47*1121Sbill int stab[] = {010,0,01,07,02,03,04,05,0211,06,0212,0213,0214,0215,0216,0217};
48*1121Sbill int rtab[] = {6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, 36, 18};
49*1121Sbill int ktab[] = {';',';',';',';',';',';',':',':','9','9','9','9','8','8','8','9'};
50*1121Sbill int first = 1;
51*1121Sbill int alpha;
52*1121Sbill extern char *asctab[128];
53*1121Sbill extern char *spectab[128];
54*1121Sbill int erase = 1;
55*1121Sbill int	(*sigint)();
56*1121Sbill int	(*sigquit)();
57*1121Sbill 
58*1121Sbill main(argc,argv)
59*1121Sbill int argc;
60*1121Sbill char **argv;
61*1121Sbill {
62*1121Sbill 	register i, j;
63*1121Sbill 	register char *k;
64*1121Sbill 	extern ex();
65*1121Sbill 
66*1121Sbill 	while((--argc > 0) && ((++argv)[0][0]=='-')){
67*1121Sbill 		switch(argv[0][1]){
68*1121Sbill 			case 'p':
69*1121Sbill 				ap = &argv[0][2];
70*1121Sbill 				dfact = 72;
71*1121Sbill 				if(i = atoi())pl = i/3;
72*1121Sbill 				continue;
73*1121Sbill 			case 't':
74*1121Sbill 				tflag++;
75*1121Sbill 				continue;
76*1121Sbill 			case 's':
77*1121Sbill 				ap = &argv[0][2];
78*1121Sbill 				dfact = 1;
79*1121Sbill 				pgskip = atoi();
80*1121Sbill 				continue;
81*1121Sbill 			default:
82*1121Sbill 				dfact = 1;
83*1121Sbill 				ap = &argv[0][1];
84*1121Sbill 				if(i = atoi())mpy = i;
85*1121Sbill 				if(i = atoi())div = i;
86*1121Sbill 				continue;
87*1121Sbill 		}
88*1121Sbill 	}
89*1121Sbill 	if(argc){
90*1121Sbill 		if (freopen(argv[0], "r", stdin) == NULL) {
91*1121Sbill 			fprintf(stderr, "tc: cannot open %s\n", argv[0]);
92*1121Sbill 			exit(1);
93*1121Sbill 		}
94*1121Sbill 	}
95*1121Sbill 	sigint = signal(SIGINT, ex);
96*1121Sbill 	sigquit = signal(SIGQUIT, SIG_IGN);
97*1121Sbill 	while((i = getchar()) != EOF){
98*1121Sbill 		if(!i)continue;
99*1121Sbill 		if(i & 0200){
100*1121Sbill 			esc += (~i) & 0177;
101*1121Sbill 			continue;
102*1121Sbill 		}
103*1121Sbill 		if(esc){
104*1121Sbill 			if(escd)esc = -esc;
105*1121Sbill 			esct += esc;
106*1121Sbill 			xx += (esc*mpy + rx)/div;
107*1121Sbill 			rx = (esc*mpy + rx)%div;
108*1121Sbill 			sendpt();
109*1121Sbill 			esc = 0;
110*1121Sbill 		}
111*1121Sbill 		switch(i){
112*1121Sbill 			case 0100:	/*init*/
113*1121Sbill 				escd = verd = mcase = railmag = xx = 0;
114*1121Sbill 				yy = MAXY + 48;
115*1121Sbill 				leadtot = -31;
116*1121Sbill 				ohy = oxb = oly = ohx = olx = -1;
117*1121Sbill 				oput(US);
118*1121Sbill 				fflush(stdout);
119*1121Sbill 				if(!first && !tflag)kwait();
120*1121Sbill 				if(first){
121*1121Sbill 					first = 0;
122*1121Sbill 					yy += 62;
123*1121Sbill 				}
124*1121Sbill 				init();
125*1121Sbill 				continue;
126*1121Sbill 			case 0101:	/*lower rail*/
127*1121Sbill 				railmag &= ~01;
128*1121Sbill 				continue;
129*1121Sbill 			case 0102:	/*upper rail*/
130*1121Sbill 				railmag |= 01;
131*1121Sbill 				continue;
132*1121Sbill 			case 0103:	/*upper mag*/
133*1121Sbill 				railmag |= 02;
134*1121Sbill 				continue;
135*1121Sbill 			case 0104:	/*lower mag*/
136*1121Sbill 				railmag &= ~02;
137*1121Sbill 				continue;
138*1121Sbill 			case 0105:	/*lower case*/
139*1121Sbill 				mcase = 0;
140*1121Sbill 				continue;
141*1121Sbill 			case 0106:	/*upper case*/
142*1121Sbill 				mcase = 0100;
143*1121Sbill 				continue;
144*1121Sbill 			case 0107:	/*escape forward*/
145*1121Sbill 				escd = 0;
146*1121Sbill 				continue;
147*1121Sbill 			case 0110:	/*escape backward*/
148*1121Sbill 				escd = 1;
149*1121Sbill 				continue;
150*1121Sbill 			case 0111:	/*stop*/
151*1121Sbill 				continue;
152*1121Sbill 			case 0112:	/*lead forward*/
153*1121Sbill 				verd = 0;
154*1121Sbill 				continue;
155*1121Sbill 			case 0113:	/*undefined*/
156*1121Sbill 				continue;
157*1121Sbill 			case 0114:	/*lead backward*/
158*1121Sbill 				verd = 1;
159*1121Sbill 				continue;
160*1121Sbill 			case 0115:	/*undefined*/
161*1121Sbill 			case 0116:
162*1121Sbill 			case 0117:
163*1121Sbill 				continue;
164*1121Sbill 		}
165*1121Sbill 		if((i & 0340) == 0140){	/*leading*/
166*1121Sbill 			lead = (~i) & 037;
167*1121Sbill 			if(verd)lead = -lead;
168*1121Sbill 			if((leadtot += lead) > pl){
169*1121Sbill 				leadtot = lead;
170*1121Sbill 				oput(US);
171*1121Sbill 				fflush(stdout);
172*1121Sbill 				if(!tflag)kwait();
173*1121Sbill 				yy = MAXY;
174*1121Sbill 				if(pgskip)--pgskip;
175*1121Sbill 				init();
176*1121Sbill 				continue;
177*1121Sbill 			}
178*1121Sbill 			if(skip)continue;
179*1121Sbill 			if((yy -= (lead<<1)) < 0){
180*1121Sbill 				skip++;
181*1121Sbill 				yy = 0;
182*1121Sbill 			}else sendpt();
183*1121Sbill 			continue;
184*1121Sbill 		}
185*1121Sbill 		if((i & 0360) == 0120){	/*size change*/
186*1121Sbill 			i &= 017;
187*1121Sbill 			for(j = 0; i != (stab[j] & 017); j++);
188*1121Sbill 			osize = size;
189*1121Sbill 			size = stab[j];
190*1121Sbill 			psize = rtab[j];
191*1121Sbill 			ksize = ktab[j];
192*1121Sbill 			oput(ESC);
193*1121Sbill 			oput(ksize);
194*1121Sbill 			i = 0;
195*1121Sbill 			if(!(osize & DBL) && (size & DBL))i = -55;
196*1121Sbill 			else if((osize & DBL) && !(size & DBL))i = 55;
197*1121Sbill 			if(escd)i = -i;
198*1121Sbill 			esc += i;
199*1121Sbill 			continue;
200*1121Sbill 		}
201*1121Sbill 		if(i & 0300)continue;
202*1121Sbill 		i = (i & 077) | mcase;
203*1121Sbill 		if(railmag != 03)k = asctab[i];
204*1121Sbill 		else k = spectab[i];
205*1121Sbill 		if(alpha)sendpt();
206*1121Sbill 		if(*k!='\0'){
207*1121Sbill 			oput(US);
208*1121Sbill 			while(*k & 0377)oput(*k++);
209*1121Sbill 			alpha++;
210*1121Sbill 			continue;
211*1121Sbill 		}else{
212*1121Sbill 			if(railmag != 03){
213*1121Sbill 				switch(i){
214*1121Sbill 				case 0124: lig("fi"); break;
215*1121Sbill 				case 0125: lig("fl"); break;
216*1121Sbill 				case 0126: lig("ff"); break;
217*1121Sbill 				case 0130: lig("ffl"); break;
218*1121Sbill 				case 0131: lig("ffi"); break;
219*1121Sbill 				default: continue;
220*1121Sbill 				}
221*1121Sbill 			}
222*1121Sbill 			continue;
223*1121Sbill 		}
224*1121Sbill 	}
225*1121Sbill 	ex();
226*1121Sbill }
227*1121Sbill lig(x)
228*1121Sbill char *x;
229*1121Sbill {
230*1121Sbill 	register i, j;
231*1121Sbill 	register char *k;
232*1121Sbill 
233*1121Sbill 	j = 0;
234*1121Sbill 	k = x;
235*1121Sbill 	oput(US);
236*1121Sbill 	oput(*k++);
237*1121Sbill 	i = psize * 8 * mpy / (div * 6); /* 8/36 em */
238*1121Sbill 	while(*k){
239*1121Sbill 		xx += i;
240*1121Sbill 		j += i;
241*1121Sbill 		sendpt();
242*1121Sbill 		oput(US);
243*1121Sbill 		oput(*k++);
244*1121Sbill 	}
245*1121Sbill 	xx -= j;
246*1121Sbill 	sendpt();
247*1121Sbill }
248*1121Sbill init(){
249*1121Sbill 
250*1121Sbill 	fflush(stdout);
251*1121Sbill 	if(erase){
252*1121Sbill 		oput(ESC);
253*1121Sbill 		oput(FF);
254*1121Sbill 	}else erase = 1;
255*1121Sbill 	oput(ESC);
256*1121Sbill 	oput(ksize);
257*1121Sbill 	/*delay about a second*/
258*1121Sbill /* let the system do it...
259*1121Sbill 	for(i = 960; i > 0; i--)oput(GS);
260*1121Sbill */
261*1121Sbill 	skip = 0;
262*1121Sbill 	sendpt();
263*1121Sbill }
264*1121Sbill ex(){
265*1121Sbill 	yy = MAXY;
266*1121Sbill 	xx = 0;
267*1121Sbill 	sendpt();
268*1121Sbill 	oput(ESC);
269*1121Sbill 	oput(';');
270*1121Sbill 	oput(US);
271*1121Sbill 	fflush(stdout);
272*1121Sbill 	exit(0);
273*1121Sbill }
274*1121Sbill kwait(){
275*1121Sbill 	char buf[128]; char *bptr; char c;
276*1121Sbill 	if(pgskip) return;
277*1121Sbill next:
278*1121Sbill 	bptr=buf;
279*1121Sbill 	while((c=readch())&&(c!='\n')) *bptr++=c;
280*1121Sbill 	*bptr=0;
281*1121Sbill 	if(bptr!=buf){
282*1121Sbill 		bptr = buf;
283*1121Sbill 		if(*bptr == '!'){callunix(&buf[1]); fputs("!\n", stderr); goto next;}
284*1121Sbill 		else switch(*bptr++){
285*1121Sbill 			case 'e':
286*1121Sbill 				erase = 0;
287*1121Sbill 				goto next;
288*1121Sbill 			case 's':
289*1121Sbill 				ap = &buf[1];
290*1121Sbill 				dfact = 1;
291*1121Sbill 				pgskip = atoi() + 1;
292*1121Sbill 				goto next;
293*1121Sbill 			default:
294*1121Sbill 				fputs("?\n", stderr);
295*1121Sbill 				goto next;
296*1121Sbill 		}
297*1121Sbill 	}
298*1121Sbill 	else if (c==0) ex();
299*1121Sbill 	else	return;
300*1121Sbill }
301*1121Sbill callunix(line)
302*1121Sbill char line[];
303*1121Sbill {
304*1121Sbill 	int rc, status, unixpid;
305*1121Sbill 	if( (unixpid=fork())==0 ) {
306*1121Sbill 		signal(SIGINT,sigint); signal(SIGQUIT,sigquit);
307*1121Sbill 		close(0); dup(2);
308*1121Sbill 		execl("/bin/sh", "-sh", "-c", line, 0);
309*1121Sbill 		exit(255);
310*1121Sbill 	}
311*1121Sbill 	else if(unixpid == -1)
312*1121Sbill 		return;
313*1121Sbill 	else{	signal(SIGINT, SIG_IGN); signal(SIGQUIT, SIG_IGN);
314*1121Sbill 		while( (rc = wait(&status)) != unixpid && rc != -1 ) ;
315*1121Sbill 		signal(SIGINT,ex); signal(SIGQUIT,sigquit);
316*1121Sbill 	}
317*1121Sbill }
318*1121Sbill readch(){
319*1121Sbill 	char c;
320*1121Sbill 	if (read(2,&c,1)<1) c=0;
321*1121Sbill 	return(c);
322*1121Sbill }
323*1121Sbill sendpt(){
324*1121Sbill 	int hy,xb,ly,hx,lx;
325*1121Sbill 
326*1121Sbill 	oput(GS);
327*1121Sbill 	hy = ((yy>>7) & 037);
328*1121Sbill 	xb = ((xx & 03) + ((yy<<2) & 014) & 017);
329*1121Sbill 	ly = ((yy>>2) & 037);
330*1121Sbill 	hx = ((xx>>7) & 037);
331*1121Sbill 	lx = ((xx>>2) & 037);
332*1121Sbill 	if(hy != ohy)oput(hy | 040);
333*1121Sbill 	if(xb != oxb)oput(xb | 0140);
334*1121Sbill 	if((ly != oly) || (hx != ohx) || (xb != oxb))
335*1121Sbill 		oput(ly | 0140);
336*1121Sbill 	if(hx != ohx)oput(hx | 040);
337*1121Sbill 	oput(lx | 0100);
338*1121Sbill 	ohy = hy;
339*1121Sbill 	oxb = xb;
340*1121Sbill 	oly = ly;
341*1121Sbill 	ohx = hx;
342*1121Sbill 	olx = lx;
343*1121Sbill 	alpha = 0;
344*1121Sbill 	return;
345*1121Sbill }
346*1121Sbill atoi()
347*1121Sbill {
348*1121Sbill 	register i, j, acc;
349*1121Sbill 	int field, digits;
350*1121Sbill 	long dd;
351*1121Sbill 	long tscale();
352*1121Sbill 
353*1121Sbill 	field = digits = acc = 0;
354*1121Sbill a1:
355*1121Sbill 	while(((j = (i = getch()) - '0') >= 0) && (j <= 9)){
356*1121Sbill 		field++;
357*1121Sbill 		digits++;
358*1121Sbill 		acc = 10*acc + j;
359*1121Sbill 	}
360*1121Sbill 	if(i == '.'){
361*1121Sbill 		field++;
362*1121Sbill 		digits = 0;
363*1121Sbill 		goto a1;
364*1121Sbill 	}
365*1121Sbill 	if(!(ch = i))ch = 'x';
366*1121Sbill 	dd = tscale(acc);
367*1121Sbill 	acc = dd;
368*1121Sbill 	if((field != digits) && (digits > 0)){
369*1121Sbill 		j = 1;
370*1121Sbill 		while(digits--)j *= 10;
371*1121Sbill 		acc = dd/j;
372*1121Sbill 	}
373*1121Sbill 	nonumb = !field;
374*1121Sbill 	ch = 0;
375*1121Sbill 	return(acc);
376*1121Sbill }
377*1121Sbill long tscale(n)
378*1121Sbill int n;
379*1121Sbill {
380*1121Sbill 	register i, j;
381*1121Sbill 
382*1121Sbill 	switch(i = getch()){
383*1121Sbill 		case 'u':
384*1121Sbill 			j = 1;
385*1121Sbill 			break;
386*1121Sbill 		case 'p':	/*Points*/
387*1121Sbill 			j = 6;
388*1121Sbill 			break;
389*1121Sbill 		case 'i':	/*Inches*/
390*1121Sbill 			j = 432;
391*1121Sbill 			break;
392*1121Sbill 		case 'c':	/*Centimeters; should be 170.0787*/
393*1121Sbill 			j = 170;
394*1121Sbill 			break;
395*1121Sbill 		case 'P':	/*Picas*/
396*1121Sbill 			j = 72;
397*1121Sbill 			break;
398*1121Sbill 		default:
399*1121Sbill 			j = dfact;
400*1121Sbill 			ch = i;
401*1121Sbill 	}
402*1121Sbill 	return((long)n*j);
403*1121Sbill }
404*1121Sbill getch(){
405*1121Sbill 	register i;
406*1121Sbill 
407*1121Sbill 	if(ch){
408*1121Sbill 		i = ch;
409*1121Sbill 		ch = 0;
410*1121Sbill 		return(i);
411*1121Sbill 	}
412*1121Sbill 	return(*ap++);
413*1121Sbill }
414*1121Sbill 
415*1121Sbill char *asctab[128] = {
416*1121Sbill "\0",	/*blank*/
417*1121Sbill "h",	/*h*/
418*1121Sbill "t",	/*t*/
419*1121Sbill "n",	/*n*/
420*1121Sbill "m",	/*m*/
421*1121Sbill "l",	/*l*/
422*1121Sbill "i",	/*i*/
423*1121Sbill "z",	/*z*/
424*1121Sbill "s",	/*s*/
425*1121Sbill "d",	/*d*/
426*1121Sbill "b",	/*b*/
427*1121Sbill "x",	/*x*/
428*1121Sbill "f",	/*f*/
429*1121Sbill "j",	/*j*/
430*1121Sbill "u",	/*u*/
431*1121Sbill "k",	/*k*/
432*1121Sbill "\0",	/*blank*/
433*1121Sbill "p",	/*p*/
434*1121Sbill "-",	/*_ 3/4 em dash*/
435*1121Sbill ";",	/*;*/
436*1121Sbill "\0",	/*blank*/
437*1121Sbill "a",	/*a*/
438*1121Sbill "_",	/*rule*/
439*1121Sbill "c",	/*c*/
440*1121Sbill "`",	/*` open*/
441*1121Sbill "e",	/*e*/
442*1121Sbill "\'",	/*' close*/
443*1121Sbill "o",	/*o*/
444*1121Sbill "\0",	/*1/4*/
445*1121Sbill "r",	/*r*/
446*1121Sbill "\0",	/*1/2*/
447*1121Sbill "v",	/*v*/
448*1121Sbill "-",	/*- hyphen*/
449*1121Sbill "w",	/*w*/
450*1121Sbill "q",	/*q*/
451*1121Sbill "/",	/*/*/
452*1121Sbill ".",	/*.*/
453*1121Sbill "g",	/*g*/
454*1121Sbill "\0",	/*3/4*/
455*1121Sbill ",",	/*,*/
456*1121Sbill "&",	/*&*/
457*1121Sbill "y",	/*y*/
458*1121Sbill "\0",	/*blank*/
459*1121Sbill "%",	/*%*/
460*1121Sbill "\0",	/*blank*/
461*1121Sbill "Q",	/*Q*/
462*1121Sbill "T",	/*T*/
463*1121Sbill "O",	/*O*/
464*1121Sbill "H",	/*H*/
465*1121Sbill "N",	/*N*/
466*1121Sbill "M",	/*M*/
467*1121Sbill "L",	/*L*/
468*1121Sbill "R",	/*R*/
469*1121Sbill "G",	/*G*/
470*1121Sbill "I",	/*I*/
471*1121Sbill "P",	/*P*/
472*1121Sbill "C",	/*C*/
473*1121Sbill "V",	/*V*/
474*1121Sbill "E",	/*E*/
475*1121Sbill "Z",	/*Z*/
476*1121Sbill "D",	/*D*/
477*1121Sbill "B",	/*B*/
478*1121Sbill "S",	/*S*/
479*1121Sbill "Y",	/*Y*/
480*1121Sbill "\0",	/*blank*/
481*1121Sbill "F",	/*F*/
482*1121Sbill "X",	/*X*/
483*1121Sbill "A",	/*A*/
484*1121Sbill "W",	/*W*/
485*1121Sbill "J",	/*J*/
486*1121Sbill "U",	/*U*/
487*1121Sbill "K",	/*K*/
488*1121Sbill "0",	/*0*/
489*1121Sbill "1",	/*1*/
490*1121Sbill "2",	/*2*/
491*1121Sbill "3",	/*3*/
492*1121Sbill "4",	/*4*/
493*1121Sbill "5",	/*5*/
494*1121Sbill "6",	/*6*/
495*1121Sbill "7",	/*7*/
496*1121Sbill "8",	/*8*/
497*1121Sbill "9",	/*9*/
498*1121Sbill "*",	/***/
499*1121Sbill "-",	/*minus*/
500*1121Sbill "",	/*fi*/
501*1121Sbill "",	/*fl*/
502*1121Sbill "",	/*ff*/
503*1121Sbill "\033\016Z\bM\033\017",	/*cent sign*/
504*1121Sbill "",	/*ffl*/
505*1121Sbill "",	/*ffi*/
506*1121Sbill "(",	/*(*/
507*1121Sbill ")",	/*)*/
508*1121Sbill "[",	/*[*/
509*1121Sbill "]",	/*]*/
510*1121Sbill "\033\016J\033\017",	/*degree*/
511*1121Sbill "\033\016M\b_\033\017",	/*dagger*/
512*1121Sbill "=",	/*=*/
513*1121Sbill "\033\016O\b&\033\017",	/*registered*/
514*1121Sbill ":",	/*:*/
515*1121Sbill "+",	/*+*/
516*1121Sbill "\0",	/*blank*/
517*1121Sbill "!",	/*!*/
518*1121Sbill "\033\016O\b~\033\017",	/*bullet*/
519*1121Sbill "?",	/*?*/
520*1121Sbill "\'",	/*foot mark*/
521*1121Sbill "|",	/*|*/
522*1121Sbill "\0",	/*blank*/
523*1121Sbill "\033\016O\b#\033\017",	/*copyright*/
524*1121Sbill "\033\016L\033\017",	/*square*/
525*1121Sbill "$" };	/*$*/
526*1121Sbill 
527*1121Sbill char *spectab[128] = {
528*1121Sbill "\0",	/*blank*/
529*1121Sbill "\033\016(\bM\033\017",	/*psi*/
530*1121Sbill "\033\016o\b_\033\017",	/*theta*/
531*1121Sbill "v\b)",	/*nu*/
532*1121Sbill "\033\016V\b,\033\017",	/*mu*/
533*1121Sbill "\033\016)\b?\033\017",	/*lambda*/
534*1121Sbill "\033\016I\033\017",	/*iota*/
535*1121Sbill "S\b\033\016Z\033\017",	/*zeta*/
536*1121Sbill "o\b\'",	/*sigma*/
537*1121Sbill "o\b\033\0165\033\017",	/*delta*/
538*1121Sbill "\033\016b\033\017",	/*beta*/
539*1121Sbill "\033\016e\bc\033\017",	/*xi*/
540*1121Sbill "j\b\033\016C\033\017",	/*eta*/
541*1121Sbill "\033\016O\bM\033\017",	/*phi*/
542*1121Sbill "\033\016(\033\017",	/*upsilon*/
543*1121Sbill "\033\016k\033\017",	/*kappa*/
544*1121Sbill "\0",	/*blank*/
545*1121Sbill "T\b\033\016S\033\017",	/*pi*/
546*1121Sbill "@",	/*at-sign*/
547*1121Sbill "\033\016U\033\017",	/*down arrow*/
548*1121Sbill "\0",	/*blank*/
549*1121Sbill "\033\016A\033\017",	/*alpha*/
550*1121Sbill "|",	/*or*/
551*1121Sbill "l\b/",	/*chi*/
552*1121Sbill "\"",	/*"*/
553*1121Sbill "\033\016E\033\017",	/*epsilon*/
554*1121Sbill "=",	/*=*/
555*1121Sbill "\033\016O\033\017",	/*omicron*/
556*1121Sbill "\033\016[\033\017",	/*left arrow*/
557*1121Sbill "\033\016R\033\017",	/*rho*/
558*1121Sbill "\033\016Y\033\017",	/*up arrow*/
559*1121Sbill "\033\016N\033\017",	/*tau*/
560*1121Sbill "_",	/*underrule*/
561*1121Sbill "\\",	/*\*/
562*1121Sbill "I\b\033\016(\033\017",	/*Psi*/
563*1121Sbill "\033\016O\bJ\033\017",	/*bell system sign*/
564*1121Sbill "\033\016W\bX\033\017",	/*infinity*/
565*1121Sbill "`\b/",	/*gamma*/
566*1121Sbill "\033\016X\bF\033\017",	/*improper superset*/
567*1121Sbill "\033\016A\033\017",	/*proportional to*/
568*1121Sbill "\033\016\\\b]\033\017",	/*right hand*/
569*1121Sbill "\033\016W\033\017",	/*omega*/
570*1121Sbill "\0",	/*blank*/
571*1121Sbill "\033\016G\033\017",	/*gradient*/
572*1121Sbill "\0",	/*blank*/
573*1121Sbill "I\033\016\bO\033\017",	/*Phi*/
574*1121Sbill "O\b=",	/*Theta*/
575*1121Sbill "O\b_",	/*Omega*/
576*1121Sbill "\033\016V\033\017",	/*cup (union)*/
577*1121Sbill "\033\016@\033\017",	/*root en*/
578*1121Sbill "s",	/*terminal sigma*/
579*1121Sbill "\033\016)\bK\033\017",	/*Lambda*/
580*1121Sbill "-",	/*minus*/
581*1121Sbill "\033\016S\bK\033\017",	/*Gamma*/
582*1121Sbill "\033\016i\033\017",	/*integral sign*/
583*1121Sbill "\033\016t\b'\033\017",	/*Pi*/
584*1121Sbill "\033\016Z\033\017",	/*subset of*/
585*1121Sbill "\033\016X\033\017",	/*superset of*/
586*1121Sbill "\033\016T\033\017",	/*approximates*/
587*1121Sbill "o\b`",	/*partial derivative*/
588*1121Sbill "\033\016H\033\017",	/*Delta*/
589*1121Sbill "\033\016I\b'\033\017",	/*square root*/
590*1121Sbill ">\b\033\016F\b@\033\017",	/*Sigma*/
591*1121Sbill "\033\016T\bF\033\017",	/*approx =*/
592*1121Sbill "\0",	/*blank*/
593*1121Sbill ">",	/*>*/
594*1121Sbill "\033\016_\bF\b@\033\017",	/*Xi*/
595*1121Sbill "<",	/*<*/
596*1121Sbill "/",	/*slash (longer)*/
597*1121Sbill "\033\016C\033\017",	/*cap (intersection)*/
598*1121Sbill "\033\016y\033\017",	/*Upsilon*/
599*1121Sbill "\033\016|\033\017",	/*not*/
600*1121Sbill "|",	/*right ceiling (rt of ")*/
601*1121Sbill "|",	/*left top (of big curly)*/
602*1121Sbill "|",	/*bold vertical*/
603*1121Sbill "|",	/*left center of big curly bracket*/
604*1121Sbill "|",	/*left bottom*/
605*1121Sbill "|",	/*right top*/
606*1121Sbill "|",	/*right center of big curly bracket*/
607*1121Sbill "|",	/*right bot*/
608*1121Sbill "|",	/*right floor (rb of ")*/
609*1121Sbill "|",	/*left floor (left bot of big sq bract)*/
610*1121Sbill "|",	/*left ceiling (lt of ")*/
611*1121Sbill "\033\016=\033\017",	/*multiply*/
612*1121Sbill "\033\016+\033\017",	/*divide*/
613*1121Sbill "+\b_",	/*plus-minus*/
614*1121Sbill "\033\016$\033\017",	/*<=*/
615*1121Sbill "\033\016^\033\017",	/*>=*/
616*1121Sbill "=\b_",	/*identically equal*/
617*1121Sbill "\033\016*\033\017",	/*not equal*/
618*1121Sbill "{",	/*{*/
619*1121Sbill "}",	/*}*/
620*1121Sbill "\'",	/*' acute accent*/
621*1121Sbill "`",	/*` grave accent*/
622*1121Sbill "^",	/*^*/
623*1121Sbill "#",	/*sharp*/
624*1121Sbill "\033\016|\b[\033\017",	/*left hand*/
625*1121Sbill "\033\016c\b_\033\017",	/*member of*/
626*1121Sbill "~",	/*~*/
627*1121Sbill "\033\016O\b/\033\017",	/*empty set*/
628*1121Sbill "\0",	/*blank*/
629*1121Sbill "\033\016%\bM\033\017",	/*dbl dagger*/
630*1121Sbill "|",	/*box rule*/
631*1121Sbill "*",	/*asterisk*/
632*1121Sbill "\033\016Z\bF\033\017",	/*improper subset*/
633*1121Sbill "\033\016O\033\017",	/*circle*/
634*1121Sbill "\0",	/*blank*/
635*1121Sbill "+",	/*eqn plus*/
636*1121Sbill "\033\016]\033\017",	/*right arrow*/
637*1121Sbill "g\b\033\016C\033\017" };	/*section mark*/
638