[comp.sources.3b1] v01i033: epson filter and driver table for nroff, Part01/01

tkacik@kyzyl.mi.org (Tom Tkacik) (06/22/91)

Submitted-by: tkacik@kyzyl.mi.org (Tom Tkacik)
Posting-number: Volume 1, Issue 33
Archive-name: epx/part01

I've had requests for this.  I last posted it before there were any
archives.  This is epx, my 5 year old epson filter for nroff. 
This is only for those of you who are still using the 2.0, 3.0,
or 3.5 Utilities.  Nroff changed with 3.51, and now includes most of
what epx does (though I do not think all).

This program will let you make the most of nroff, and eqn using your
Epson printer.  It does italic, bold, and underlining.  It will
print all of the greek and special characters, (assuming that your
printer has downloadable characters).  If all works right, you should
see nroff format equations like you've never seen before.
(Ok, it's not troff, and it's not a laser printer, but the price is right.)

The driver table is a compiled table, and is included.  The C code is
also included so you can see what it looks like.  See the README file
for a note on getting the software to modify it.

Tom Tkacik
tkacik@kyzyl.mi.org
#--------------------------------CUT HERE-------------------------------------
#! /bin/sh
#
# This is a shell archive.  Save this into a file, edit it
# and delete all lines above this comment.  Then give this
# file to sh by executing the command "sh file".  The files
# will be extracted into the current directory owned by
# you with default permissions.
#
# The files contained herein are:
#
# -rw-r--r--  1 tkacik  users      1608 Jun 18 18:51 README
# -rw-r--r--  1 tkacik  users       418 Jun 18 18:58 Makefile
# -rw-r--r--  1 tkacik  users      1615 Jun 18 18:54 epx.1
# -rw-r--r--  1 tkacik  users      9533 Jul 19  1988 epx.c
# -rw-r--r--  1 tkacik  users      4004 Jul 19  1988 draft.c
# -rw-r--r--  1 tkacik  users      8505 Jul 19  1988 nlq.c
# -rw-r--r--  1 tkacik  users      7947 Feb 21  1987 tabepson.c
# -rw-r--r--  1 tkacik  users      2415 Jun 18 18:57 tabepson.uu
# -rw-r--r--  1 tkacik  users      2621 Feb 21  1987 special
#
echo 'x - README'
if test -f README; then echo 'shar: not overwriting README'; else
sed 's/^X//' << '________This_Is_The_END________' > README
XI wrote this back in 1985, to allow me to use the full capabilities
Xof nroff with my printer, (an epson compatible).
X
XThis is an nroff driver table for epson fx-80 compatible dot matrix
Xprinters, and a filter program, called epx.  Epx will use italic, bold,
Xand underlined fonts, and will download all of the special characters
Xavailable to nroff, including all of the greek characters.
X
XThis program and filter are only useful if you are still using the
Xnroff that came with versions 2.0, 3.0 or 3.5 of the Utilities.
XThe new version of nroff has most of what you get using this filter. 
X(I have not upgraded nroff because I think that it would be a step
Xbackward.  I do not think the new nroff has all of the these features,
Xnamely downloadable greek and special characters.)
X
XI have a Canon printer, that claims to be Epson compatible, but you
Xnever know.  There may be a bug lurcking in here somewhere.
XThe special characters may not be an exact match on your printer.
X
XThe driver table is provided in both as C code, and as a compiled versions.
XIt was made using the nroff driver table generator by Bruce Townsend.
XYou can grab the nroff driver table package from the cis-osu archives.
XLook for the file pub/comp.sources.unix/Volume13/nroff-driver.Z.
X
XThe compiled version of the driver table is provided, uuencoded, so
Xyou do not have to build it if you do not wish to.  You should not
Xneed that package to install and use this program.
X
XAs always, any bug reports or praise should be directed to me.
X(But note that it has been a long time since I worked on this code.)
X
XTom Tkacik
Xtkacik@kyzyl.mi.org
________This_Is_The_END________
if test `wc -c < README` -ne 1608; then
	echo 'shar: README was damaged during transit (should have been 1608 bytes)'
fi
fi		; : end of overwriting check
echo 'x - Makefile'
if test -f Makefile; then echo 'shar: not overwriting Makefile'; else
sed 's/^X//' << '________This_Is_The_END________' > Makefile
XCFLAGS = -O
XLDFLAGS = -s
XCC = cc
X
Xall:	epx tabepson
X
Xepx:	epx.o nlq.o draft.o
X	$(CC) $(LDFLAGS) epx.o nlq.o draft.o -o epx
X
Xtabepson: tabepson.uu
X	uudecode tabepson.uu
X
Xinstall: epx tabepson
X	cp tabepson /usr/lib/term
X	cp epx /usr/local/bin/epx
X	cp epx.1 /usr/man/man1
X
X# this is the way epx should typically be used
Xtest:
X	neqn special | nroff -Tepson | col -fx | epx | lp -dEpson_R
X
Xlint:
X	lint epx.c nlq.c draft.c
X
________This_Is_The_END________
if test `wc -c < Makefile` -ne 418; then
	echo 'shar: Makefile was damaged during transit (should have been 418 bytes)'
fi
fi		; : end of overwriting check
echo 'x - epx.1'
if test -f epx.1; then echo 'shar: not overwriting epx.1'; else
sed 's/^X//' << '________This_Is_The_END________' > epx.1
X.TH EPX l
X.SH NAME
Xepx \- nroff postprocessor for epson printers
X.SH SYNOPSIS
X\fBepx\fP [ -\fBi\fP ] [ -\fBn\fP ]
X.SH DESCRIPTION
X.I Epx
Xis a postprocessor for
X.IR nroff (1)
Xwhich generates printer codes for Epson compatible printers.
XUsage is almost always:
X.sp
X.in +0.5i
Xnroff -Tepson files | col -fx | epx | lp -dEpson_R
X.sp
X.in
Xor equivalent.
X.I Epx
Xreads from
X.IR stdin
Xand writes to
X.IR stdout .
XIt supports the built-in bold and italic fonts, half-line spacings
Xfor super, and subscripts, and all of the greek and special characters.
X.sp
XIt has been written to be compatible with
X.IR col (1)
Xusing the
X.RB - x ,
Xand
X.RB - f
Xoptions.
XOutput must be sent to the print spooler in raw mode,
Xusing
X.B lp -dEpson_R.
X.I Epx
Xrequires that the nroff driver table
X.RB /usr/lib/term/ tabepson
Xexist and be used with
X.I nroff.
X.sp
XNormally
X.I epx
Xunderlines words that would be italicized in
X.IR troff (1).
XThe
X.RB - i
Xoption causes the printer to use true
X.IR italics ,
X(if possible).
XIf the printer is not capable of printing in
X.I italics
Xthe text will \fBnot\fP be underlined.
XThe
X.RB - n
Xoption puts the printer in Near Letter Quality mode.
XNo
X.I italics
Xare possible in NLQ mode, so when the
X.RB - n
Xoption is used, italics are turned off, and any italic characters will
Xbe underlined.
X.SH SEE ALSO
Xnroff(1), col(1), lp(1), term(7).
X.SH AUTHOR
XThomas E. Tkacik
X.br
Xtkacik@kyzyl.mi.org
X.SH BUGS
XThe greek and special character sets were designed using a Canon printer.
XThese characters may or may not look right, depending on the actual
Xprinter used.
XPerhaps, italics and NLQ mode should not be mutually exclusive.
________This_Is_The_END________
if test `wc -c < epx.1` -ne 1615; then
	echo 'shar: epx.1 was damaged during transit (should have been 1615 bytes)'
fi
fi		; : end of overwriting check
echo 'x - epx.c'
if test -f epx.c; then echo 'shar: not overwriting epx.c'; else
sed 's/^X//' << '________This_Is_The_END________' > epx.c
X/*  epx - take the output of 'nroff -Tepson | col -xf'	*/
X/*	  and generate output for an epson printer	*/
X/*							*/
X/*	Author: Thomas E. Tkacik  uvaee!tet		*/
X/*							*/
X/*	To be modified or given away freely		*/
X/*							*/
X#include <stdio.h>
X#define	NORMAL	0
X#define	BOLD	1
X#define	UNDER	2	/* underscore - italic */
X#define	ITALIC	4
X#define	SPEC	8	/* special characters - greek */
X#define	NUMSPEC	60	/* number of defined special characters */
X#define	FIRST	'@'	/* first special character is defined as FIRST */
X#define	NO	0
X#define	YES	1
X
Xint	cur;	/* current character */
Xint	ctype;
Xint	italics = NO;	/* use italics instead of underline */
Xint	nlqmode = NO;	/* print in Near Letter Quality mode */
Xint	copy=0;	/* no special characters yet */
Xint	cmark[NUMSPEC];
Xextern	char	special[NUMSPEC][12];	/* character definitions	*/
Xextern	char	nlq[NUMSPEC][48];	/* nlq character definitions	*/
X
Xmain(argc,argv)
Xint	argc;
Xchar	*argv[];
X{
X	int c;
X	int i,x;
X	void putch(),putstr(),inspec(),outspec(),donormal();
X	void tobold(),frbold(),tounder(),frunder(),toitalic(),fritalic();
X	void tonlq(),frnlq(),halfline(),backhalf(),backfull();
X
X	/* cannot use both NLQ and italics at the same time */
X	nlqmode = NO;
X	italics = NO;
X    
X	for(x=0;x<argc;x++)
X		if(argv[x][0] = '-')
X			switch(argv[x][1]) {
X			case 'i': italics = YES;
X			  	break;
X			case 'n': nlqmode = YES;
X			  	tonlq();	/* put printer in NLQ mode */
X			  	break;
X			}
X
X	/* remove this statement if your printer can print italics in NLQ */
X	if(nlqmode==YES) italics = NO;
X    
X    for(i=0;i<NUMSPEC;i++) cmark[i]=0; /* initialize special characters */
X    cur =  0; /* no current character */
X    ctype = NORMAL;  /* normal character */
X    while((c=getchar()) != EOF) {
X      switch (c) {
X      default:          /* normal or special characters being printed */
X          donormal();
X          cur = c;
X          break;
X      case '\016':	/* special character set */
X          inspec();
X          break;
X      case '\017':	/* normal character set */
X          outspec();
X          break;
X      case '\033':	/* escape character */
X	  if(cur)
X	    putch(cur);
X	  cur = 0;
X	  if((c=getchar())==EOF) break; /* reached the end of file */
X	  switch(c) {
X	    case '7':
X		backfull();		/* reverse full line feed */
X		break;
X	    case '8':
X		backhalf();		/* reverse half line feed */
X		break;
X	    case '9':
X		halfline();		/* forward half line feed */
X	        break;
X	    default:
X	        putch('\033');	/* output escape character */
X	        putch(c);
X	        break;
X	  }
X	  break;
X      case '\b':   /* a backspace - see if we must change print mode */
X          while(((c=getchar())=='\016') || (c=='\017'))
X            if(c=='\016')
X              inspec();
X            else
X              outspec();
X          if(c==EOF) break;  /* reached end of the file */
X          if((cur==0) && (c!=0)) {     /* just do the overstrike */
X            (void)putchar('\b');
X	    (void)ungetc(c,stdin);  /* check the character next time around */
X          }
X          else if((cur=='_') && (c!='_')) { /**** ITALIC MODE ****/
X            switch(ctype) {
X              case BOLD:
X              case (BOLD | SPEC):
X		frbold();
X                ctype &= ~BOLD;
X		toitalic();
X                ctype |= ITALIC;
X                break; 
X              case UNDER:
X              case (UNDER | SPEC):
X		frunder();
X                ctype &= ~UNDER;
X		toitalic();
X                ctype |= ITALIC;
X                break;
X              case NORMAL:
X              case SPEC:
X		toitalic();
X                ctype |= ITALIC;
X                break;
X              default:  /* ITALIC or (ITALIC | SPEC) */
X                break;
X            }
X            putch(c);
X            cur = 0; /* have output the current character */
X          }
X          else if((cur!='_') && (c=='_')) { /**** UNDERSCORE MODE ****/
X	    /* do not print in underscore mode */
X	    /* because '_' and underscore are not the same thing */
X            putch(cur);
X	    putch('\b');
X            putch('_');
X            cur = 0; /* have output the current character */
X          }
X          else if(cur==c) {             /**** BOLD MODE ****/
X            switch(ctype) {
X              case UNDER:
X              case (UNDER | SPEC):
X		frunder();
X                ctype &= ~UNDER;
X		tobold();
X                ctype |= BOLD;
X                break;
X              case ITALIC:
X              case (ITALIC | SPEC):
X		fritalic();
X                ctype &= ~ITALIC;
X		tobold();
X                ctype |= BOLD;
X                break;
X              case NORMAL:
X              case SPEC:
X		tobold();
X                ctype |= BOLD;
X                break;
X              default:
X                break;
X            }
X            putch(cur);
X            /* find the beginning of the next character */
X            while((c=getchar())=='\b') {
X              c=getchar();
X              if(cur != c) {
X                putch('\b');  /* a different character - print it */
X                (void)ungetc(c,stdin); /* check  character next time around */
X                cur = 0;
X		break;
X              }
X            }
X	    if(cur) {
X	      (void)ungetc(c,stdin); /* check character next time around */
X	      cur = 0;
X	    }
X          }
X          else { /* simple overstrike - do not change mode */
X            if(cur) putch(cur);
X	    cur = 0;
X            (void)putchar('\b');
X	    (void)ungetc(c,stdin); /* check character next time around */
X          }
X          break;
X      } 
X    }
X    if(cur!=0) putch(cur);    /* print the last character */
X    if(nlqmode==YES) frnlq();
X}
X
X/* put printer into alternate character set - user defined characters */
Xvoid tospec()
X{
X	void putstr();
X	putstr("\033%");
X	(void)putchar(1);
X	(void)putchar(0);
X}
X
X/* the next characters are normal characters */
Xvoid frspec()
X{
X	void putstr();
X	putstr("\033%");
X	(void)putchar(0);
X	(void)putchar(0);
X}
X
X/* print next characters in bold */
Xvoid tobold()
X{
X	void putstr();
X	putstr("\033E");
X}
X
X/* do not print next characters in bold */
Xvoid frbold()
X{
X	void putstr();
X	putstr("\033F");
X}
X
X/* print the next characters in italic */
Xvoid toitalic()
X{
X	void putstr(),tounder();
X	if(italics == YES)
X		putstr("\0334"); /* italicize next chatacters */
X	else
X		tounder();	 /* underline next characters */
X}
X
X/* do not print the next characters in italic */
Xvoid fritalic()
X{
X	void putstr(),frunder();
X	if(italics == YES)
X		putstr("\0335");
X	else
X		frunder();
X}
X
X/* underline the next characters */
Xvoid tounder()
X{
X	void putstr();
X	putstr("\033-1");
X}
X
X/* do not underline the next characters */
Xvoid frunder()
X{
X	void putstr();
X	putstr("\033-0");
X}
X
X/* put the printer in NLQ mode - this command may vary depending on printer */
Xvoid tonlq()
X{
X	void putstr();
X	putstr("\033(");
X}
X
X/* restore printer mode */
Xvoid frnlq()
X{
X	void putstr();
X	putstr("\033@");
X}
X
X/* cause the printer to generate a half linefeed */
Xvoid halfline()
X{
X	void putstr();
X	putstr("\033J\022");
X}
X
X/* cause the printer to back up a half line spacing */
Xvoid backhalf()
X{
X	void putstr();
X	putstr("\033j\022");
X}
X
X/* cause the printer to back up a full line spacing */
Xvoid backfull()
X{
X	void putstr();
X	putstr("\033j\044");
X}
X
X/* download a special character before printing it */
Xvoid download(c)
Xchar c;
X{
X	int i,j;
X	void putstr(),frspec(),tospec();
X	j = c - FIRST;
X	putstr("\033&");
X	(void)putchar(0);
X	(void)putchar(c);
X	(void)putchar(c);
X	if(nlqmode==YES) {
X		for(i=0;i<48;i++)
X			(void)putchar(nlq[j][i]);
X	} else {
X		for(i=0;i<12;i++)
X			(void)putchar(special[j][i]);
X	}
X}
X
Xvoid putstr(s)
Xchar *s;
X{
X    while(*s!=0)
X      (void)putchar(*s++);
X}
X
X/* check if the character to be printed is a special character */
X/*     if it is and it has not been loaded into the printer then do it first */
Xvoid putch(c)
Xchar c;
X{
X	int j;
X	void download();
X	j = c-FIRST;		/* index of special character */
X	/* check if we are in SPEC mode  and the special character is defined */
X	if(((ctype & SPEC) == SPEC) && (j>=0) && (j<NUMSPEC) && (cmark[j]==0)) {
X		if((copy==0)&&(nlqmode==NO)) { /* copy the PGC ROM to RAM */
X			(void)putchar('\033');
X			(void)putchar(':');
X			(void)putchar(0);
X			(void)putchar(0);
X			(void)putchar(0);
X			copy = 1;
X		} 
X
X		download(c);
X		cmark[j] = 1;
X	}
X	if(c!=0) {
X		if((ctype & BOLD)&&(nlqmode==YES)) {
X			(void)putchar(c);
X			(void)putchar('\b');
X			(void)putchar(c);
X		} else
X			(void)putchar(c);
X	}
X}
X
X/* output the current character as a normal character */
X/* 	then change to the special characters */
Xvoid inspec()
X{
X	void tospec();
X	if(cur!=0) putch(cur); /* output the current character first */
X	tospec();
X	ctype |= SPEC;
X	cur = 0;
X}
X
X/* output the current character as a special character */
X/*	then change to normal character output */
Xvoid outspec()
X{
X	void frspec();
X	if(cur!=0) putch(cur); /* output the current character first */
X	frspec();
X	ctype &= ~SPEC;
X	cur = 0;
X}
X
X/* force the printer to print normal characters */
X/*	then output the current character	*/
Xvoid donormal()
X{
X    if(cur!=0) {
X      switch(ctype) { /* if not in normal mode - then enter normal mode */
X        case BOLD:
X        case (BOLD | SPEC):
X	  frbold();
X          ctype &= ~BOLD;
X          break;
X        case UNDER:
X        case (UNDER | SPEC):
X	  frunder();
X          ctype &= ~UNDER;
X          break;
X        case ITALIC:
X        case (ITALIC | SPEC):
X	  fritalic();
X          ctype &= ~ITALIC;
X          break;
X        case SPEC:  /* if special or normal mode, then do not change */
X        case NORMAL:
X        default:
X          break;
X      }
X      putch(cur); /* output the current character */
X    }
X}
________This_Is_The_END________
if test `wc -c < epx.c` -ne 9533; then
	echo 'shar: epx.c was damaged during transit (should have been 9533 bytes)'
fi
fi		; : end of overwriting check
echo 'x - draft.c'
if test -f draft.c; then echo 'shar: not overwriting draft.c'; else
sed 's/^X//' << '________This_Is_The_END________' > draft.c
X/* draft mode special character definitions for epx	*/
X/*							*/
X/*	Author: Thomas E. Tkacik  uvaee!tet		*/
X/*							*/
X/*	To be modified or given away freely		*/
X/*							*/
X#define	NUMSPEC	60	/* number of defined special characters */
X
X/*	first byte - attribute data					     */
X/*	last bytes - character data					     */
Xchar	special[NUMSPEC][12] = {
X	{139,32,28,2,0,4,0,8,0,48,0,0},			/* nu                */
X	{139,28,0,34,0,34,24,4,8,50,0,0},		/* alpha             */
X	{139,1,126,0,148,2,144,2,108,0,0,0},		/* beta              */
X	{139,28,32,2,0,12,0,2,32,28,0,0},		/* omega             */
X	{139,12,66,16,162,0,146,0,76,0,0,0},		/* delta             */
X	{139,6,24,96,128,0,128,96,24,6,0,0},		/* LAMBDA            */
X	{139,16,0,40,130,124,130,40,0,16,0,0},		/* PHI               */
X	{139,254,0,128,0,128,0,128,0,192,0,0},		/* GAMMA             */
X	{139,64,48,8,2,252,2,8,48,64,0,0},		/* PSI               */
X	{139,16,0,32,0,34,28,32,0,32,0,0},		/* tau               */
X	{139,32,0,62,0,32,0,62,0,32,0,0},		/* pi                */
X	{11,1,30,32,0,72,0,72,0,48,0,0},		/* rho               */
X	{139,130,0,68,40,16,8,4,0,2,0,0},		/* lambda            */
X	{139,1,62,0,2,0,2,0,60,2,0,0},			/* mu                */
X	{139,32,30,0,32,0,32,0,30,1,0,0},		/* eta               */
X	{139,56,68,0,146,0,146,0,68,56,0,0},		/* THETA             */
X	{139,128,126,128,0,128,0,128,126,128,0,0},	/* PI                */
X	{139,0,24,165,0,69,0,130,0,0,0,0},		/* zeta              */
X	{139,130,68,170,0,146,0,130,0,130,0,0},		/* SIGMA             */
X	{139,28,0,42,0,42,0,34,0,0,0,0},		/* epsilon - member  */
X	{139,0,56,68,146,0,146,68,56,0,0,0},		/* theta             */
X	{139,8,0,20,1,62,64,20,0,8,0,0},		/* phi               */
X	{11,64,56,4,0,255,0,4,24,96,0,0},		/* psi               */
X	{139,6,24,34,64,130,64,34,24,6,0,0},		/* DELTA             */
X	{139,0,8,181,64,21,64,2,64,0,0,0},		/* xi                */
X	{139,28,0,34,0,34,0,60,0,32,0,0},		/* sigma             */
X	{139,50,72,6,128,0,128,6,72,50,0,0},		/* OMEGA             */
X	{139,32,16,40,4,34,4,40,16,32,0,0},		/* del - gradient    */
X	{11,128,0,65,2,52,8,16,32,64,0,0},		/* gamma             */
X	{139,14,81,0,81,8,33,30,0,0,0,0},		/* partial           */
X	{139,1,0,1,126,128,0,128,0,0,0,0},		/* infinity          */
X	{139,8,0,8,0,8,0,12,0,0,0,0},			/* not               */
X	{139,130,0,146,0,146,0,146,0,130,0,0},		/* XI                */
X	{139,8,0,14,1,2,4,8,16,32,64,128},		/* square root       */
X	{139,128,0,128,0,128,0,128,0,128,0,128},	/* root en           */
X	{139,62,65,8,85,0,85,0,65,62,0,0},		/* copy right        */
X	{139,28,0,34,0,28,0,34,0,28,0,0},		/* infinity          */
X	{139,28,0,62,0,62,0,62,0,28,0,0},		/* bullet            */
X	{139,0,0,64,160,0,160,64,0,0,0,0},		/* degree            */
X	{139,16,0,32,0,127,0,32,0,16,0,0},		/* up arrow          */
X	{139,4,0,2,0,127,0,2,0,4,0,0},			/* down arrow        */
X	{139,0,0,0,0,63,64,128,0,128,0,0},		/* left top          */
X	{139,0,0,0,0,252,2,1,0,1,0,0},			/* left bottom       */
X	{139,128,0,128,64,63,0,0,0,0,0,0},		/* right top         */
X	{139,1,0,1,2,252,0,0,0,0,0,0},			/* right bottom      */
X	{139,0,8,0,20,227,0,0,0,0,0,0},			/* left center       */
X	{139,0,0,0,0,227,20,0,8,0,0,0},			/* right center      */
X	{139,0,0,0,0,255,0,0,0,0,0,0},			/* bold verticle     */
X	{139,0,0,0,0,255,0,1,0,1,0,0},			/* left floor        */
X	{139,1,0,1,0,255,0,0,0,0,0,0},			/* right floor       */
X	{139,0,0,0,0,255,0,128,0,128,0,0},		/* left ceiling      */
X	{139,128,0,128,0,255,0,0,0,0,0,0},		/* right ceiling     */
X	{139,62,0,34,0,34,0,34,0,62,0,0},		/* square            */
X	{139,62,65,0,93,0,81,0,65,62,0,0},		/* registered        */
X	{139,12,18,0,18,0,12,0,18,0,18,0},		/* proportional to   */
X	{139,0,0,9,52,65,22,72,0,0,0,0},		/* section	     */
X	{139,126,0,128,0,128,0,128,0,126,0,0},		/* intersection      */
X	{139,34,0,34,0,34,0,34,0,34,0,28},		/* superset of       */
X	{139,28,0,34,0,34,0,34,0,34,0,34},		/* subset of         */
X	{139,56,0,68,0,68,0,68,0,56,0,0}		/* circle	     */
X};
________This_Is_The_END________
if test `wc -c < draft.c` -ne 4004; then
	echo 'shar: draft.c was damaged during transit (should have been 4004 bytes)'
fi
fi		; : end of overwriting check
echo 'x - nlq.c'
if test -f nlq.c; then echo 'shar: not overwriting nlq.c'; else
sed 's/^X//' << '________This_Is_The_END________' > nlq.c
X/* nlq node special character definitions for epx	*/
X/*							*/
X/*	Author: Thomas E. Tkacik  uvaee!tet		*/
X/*							*/
X/*	To be modified or given away freely		*/
X/*							*/
X#define	NUMSPEC	60	/* number of defined special characters */
X
X/*	first two bytes - attribute data				     */
X/*	last 46 bytes   - character data				     */
Xchar	nlq[NUMSPEC][48] = {
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,4,28,0,224,7,4,0,8,0,0,0,8,0,16,0,0,
X	 0,16,0,32,0,64,7,128,0,0,0,0,0,0,0,0,0,0},	/* nu		     */
X	{128,23,0,0,0,0,0,224,1,16,0,8,2,0,0,8,4,4,0,0,4,4,0,0,4,4,0,8,2,0,
X	 1,136,0,80,0,32,1,208,2,8,4,4,0,0,0,4,0,0},	/* alpha             */
X	{128,23,0,0,0,0,0,0,0,7,0,56,1,192,14,0,16,0,33,8,0,0,33,4,0,0,33,4,0,0,
X	 33,4,0,128,18,8,12,128,0,112,0,0,0,0,0,0,0,0},	/* beta		     */
X	{128,23,0,0,0,0,0,224,1,16,2,8,0,4,4,0,0,4,0,8,0,16,0,224,0,16,0,8,0,4,
X	 4,0,0,4,2,8,1,16,0,224,0,0,0,0,0,0,0,0},	/* omega	     */
X	{128,23,0,0,0,0,0,0,0,0,0,96,0,144,1,8,0,0,26,8,4,4,34,0,4,4,32,0,4,4,
X	 34,8,0,0,18,8,1,16,0,224,0,0,0,0,0,0,0,0},	/* delta	     */
X	{128,23,0,0,0,0,0,4,0,0,0,12,0,48,0,68,1,128,2,0,12,0,16,0,32,0,16,0,
X	 12,0,2,0,1,128,0,68,0,48,0,12,0,0,0,4,0,0,0,0},/* LAMBDA	     */
X	{128,23,0,0,0,0,1,128,2,64,4,32,0,0,4,32,8,16,32,4,8,16,32,4,31,248,
X	 32,4,8,16,32,4,8,16,4,32,0,0,4,32,2,64,1,128,0,0,0,0}, /* PHI	     */
X	{128,23,0,0,0,0,0,0,32,4,0,0,32,4,31,248,32,4,0,0,32,4,0,0,32,0,0,0,
X	 32,0,0,0,32,0,0,0,32,0,0,0,56,0,0,0,0,0,0,0},	/* GAMMA	     */
X	{128,23,0,0,0,0,16,0,0,0,16,0,8,0,7,192,0,32,32,20,0,0,32,20,31,232,
X	 32,20,0,0,32,20,0,32,7,192,8,0,16,0,0,0,16,0,0,0,0,0},/* PSI	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,2,0,4,0,0,0,4,0,0,12,4,112,3,128,4,0,0,0,
X	 4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0},		/* tau		     */
X	{128,23,0,0,0,0,0,0,0,0,2,0,4,0,0,12,4,112,3,128,4,0,0,0,4,0,0,0,4,0,
X	 0,0,4,12,0,112,7,128,0,0,4,0,0,0,0,0,0,0},	/* pi		     */
X	{128,23,0,0,0,0,0,0,0,0,0,7,0,24,0,96,0,128,1,8,0,0,2,4,0,0,2,4,0,0,
X	 2,4,0,0,1,8,0,144,0,96,0,0,0,0,0,0,0,0},	/* rho		     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,32,4,0,0,32,8,16,16,8,32,4,64,2,128,1,0,
X	 0,128,0,64,0,32,0,16,0,8,0,4,0,0,0,4,0,0,0,0},	/* lambda	     */
X	{128,23,0,0,0,0,0,0,0,0,0,1,7,254,0,0,0,8,0,0,0,4,0,0,0,4,0,0,0,4,0,0,
X	 0,8,0,0,7,248,0,4,0,0,0,0,0,0,0,0},		/* mu		     */
X	{128,23,0,0,0,0,0,0,4,0,0,0,4,0,3,252,0,0,1,0,0,0,2,0,0,0,4,0,0,0,4,0,
X	 0,0,4,0,2,0,1,252,0,3,0,0,0,0,0,0},		/* eta		     */
X	{128,23,0,0,0,0,1,128,6,96,8,16,0,0,17,8,0,0,33,4,0,0,33,4,0,0,33,4,0,0,
X	 33,4,0,0,17,8,0,0,8,16,6,96,1,128,0,0,0,0},	/* THETA	     */
X	{128,23,0,0,0,0,32,4,0,0,32,4,31,248,32,4,0,0,32,4,0,0,32,0,0,0,32,0,
X	 0,0,32,4,0,0,32,4,31,248,32,4,0,0,32,4,0,0,0,0},/* PI		     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,16,34,8,20,0,0,5,24,0,0,5,16,0,
X	 0,5,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0},		/* zeta		     */
X	{128,23,0,0,0,0,32,4,0,0,48,12,0,0,40,20,0,0,36,36,0,0,34,68,0,0,33,132,
X	 0,0,32,4,0,0,32,4,0,0,32,4,16,8,8,16,0,0,0,0},	/* SIGMA	     */
X	{128,23,0,0,0,0,0,0,0,0,0,224,1,16,2,72,0,0,2,72,4,4,0,64,4,4,0,64,4,4,
X	 0,64,4,4,0,0,2,8,0,0,0,0,0,0,0,0,0,0},		/* epsilon	     */
X	{128,23,0,0,0,0,0,0,0,0,1,128,6,96,9,16,0,0,17,8,0,0,33,4,0,0,33,4,0,0,
X	 17,8,0,0,9,16,6,96,1,128,0,0,0,0,0,0,0,0},	/* theta	     */
X	{128,23,0,0,0,0,0,0,0,96,0,144,1,8,0,0,1,8,2,4,0,3,2,28,0,224,3,4,12,0,
X	 2,4,1,8,0,0,1,8,0,144,0,96,0,0,0,0,0,0},	/* phi		     */
X	{128,23,0,0,0,0,0,0,2,0,1,240,0,8,0,4,0,3,0,28,0,224,3,4,12,0,0,4,0,8,
X	 0,48,0,192,1,0,0,0,2,0,0,0,0,0,0,0,0,0},	/* psi		     */
X	{128,23,0,0,0,0,0,0,0,4,0,8,0,52,0,64,1,132,2,0,12,4,16,0,32,4,16,0,
X	 12,4,2,0,1,132,0,64,0,48,0,8,0,4,0,0,0,0,0,0},	/* DELTA	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,48,0,72,6,0,9,133,32,0,16,133,0,0,16,133,
X	 0,2,16,128,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0},	/* xi		     */
X	{128,23,0,0,0,0,0,0,0,224,1,16,2,8,0,0,2,8,4,4,0,0,4,4,0,0,4,4,0,0,4,4,
X	 2,8,4,0,2,8,5,16,0,224,4,0,0,0,0,0},		/* sigma	     */
X	{128,23,0,0,0,0,0,0,7,8,8,132,0,64,16,36,0,16,32,12,0,0,32,0,0,0,32,0,
X	 0,0,32,12,0,16,16,36,0,64,8,132,7,8,0,0,0,0,0,0},/* OMEGA	     */
X	{128,23,0,0,0,0,0,0,4,0,2,0,5,0,0,128,4,64,0,32,4,16,0,8,4,4,0,8,
X	 4,16,0,32,4,64,0,128,5,0,2,0,4,0,0,0,0,0,0,0},	/* del - gradient    */
X	{128,23,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,2,1,1,2,0,132,0,104,0,16,0,32,
X	 0,64,0,128,1,0,6,0,0,0,0,0,0,0,0,0,0,0},	/* gamma	     */
X	{128,23,0,0,0,0,0,0,0,0,0,240,1,8,0,0,1,8,18,4,0,0,34,4,0,0,34,4,
X	 17,8,0,0,16,136,8,16,7,224,0,0,0,0,0,0,0,0,0,0},/* partial	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,4,0,2,0,1,56,0,71,1,128,226,0,28,
X	 128,0,64,0,32,0,64,0,0,0,0,0,0,0,0,0,0,0},	/* integral	     */
X	{128,23,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,
X	 1,0,0,0,1,0,0,0,1,224,0,0,0,0,0,0,0,0},	/* not		     */
X	{128,23,0,0,0,0,0,4,0,8,8,16,16,136,33,0,18,8,1,0,16,8,1,0,16,8,1,0,
X	 16,8,1,0,16,136,1,4,18,8,8,16,16,0,32,0,0,0,0,0},/* XI		     */
X	{128,23,1,0,0,0,1,0,0,0,1,128,0,112,0,14,0,1,0,2,0,4,0,8,0,16,0,32,0,64,
X	 0,128,1,0,2,0,4,0,8,0,16,0,32,0,64,0,128,0},	/* square root	     */
X	{128,23,128,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,
X	 128,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,128,0},/* root en */
X	{128,23,0,0,0,0,0,0,1,192,2,32,4,16,0,0,4,144,9,72,2,32,8,8,2,32,8,8,
X	 2,32,8,8,4,16,0,0,4,16,2,32,1,192,0,0,0,0,0,0},/* copyright	     */
X	{128,23,0,0,0,0,1,128,2,64,0,0,4,32,0,0,4,32,0,0,2,64,0,0,1,128,0,0,
X	 2,64,0,0,4,32,0,0,4,32,0,0,2,64,1,128,0,0,0,0},/* infinity	     */
X	{128,23,0,0,0,0,0,0,1,192,2,32,5,208,2,32,5,208,10,40,5,208,10,40,5,208,
X	 10,40,5,208,10,40,5,208,2,32,5,208,2,32,1,192,0,0,0,0,0,0},/* bullet*/
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,136,0,0,0,136,0,0,0,
X	 136,0,0,0,136,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0},/* degree	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,63,252,0,0,
X	 16,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0},	/* up arrow	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,16,0,0,0,8,0,0,63,252,0,0,
X	 0,8,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0},	/* down arrow	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,32,0,64,0,
X	 0,0,128,0,0,0,128,0,0,0,128,0,0,0,0,0,0,0},	/* left top	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,4,0,2,
X	 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0},		/* left bottom	     */
X	{128,23,0,0,0,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,64,0,32,0,31,255,0,0,
X	 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},	/* right top	     */
X	{128,23,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,4,255,248,0,0,
X	 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},	/* right bottom      */
X	{128,23,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,128,4,64,248,63,0,0,
X	 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},	/* left center	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,63,4,64,
X	 2,128,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0},	/* right center	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,
X	 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},	/* bold verticle     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,
X	 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0},	/* left floor	     */
X	{128,23,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,255,255,0,0,
X	 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},	/* right floor       */
X	{128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,128,0,
X	 0,0,128,0,0,0,128,0,0,0,128,0,0,0,0,0,0,0},	/* left ceiling      */
X	{128,23,0,0,0,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,128,0,0,0,255,255,
X	 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},	/* right ceiling     */
X	{128,23,0,0,0,0,0,0,7,252,0,0,4,4,0,0,4,4,0,0,4,4,0,0,4,4,0,0,
X	 4,4,0,0,4,4,0,0,4,4,0,0,7,252,0,0,0,0,0,0},	/* square	     */
X	{128,23,0,0,0,0,0,0,1,192,2,32,4,16,0,0,4,16,10,8,1,224,8,8,2,0,8,8,
X	 2,0,9,8,4,16,0,0,4,16,2,32,1,192,0,0,0,0,0,0},	/* registered	     */
X	{128,23,0,0,0,0,1,128,2,64,0,0,4,32,0,0,4,32,0,0,2,64,0,0,1,128,0,0,
X	 2,64,0,0,4,32,0,0,4,32,0,0,4,32,0,0,0,0,0,0},	/* proportional to   */
X	{128,23,0,0,0,0,0,0,0,0,0,0,35,4,84,2,0,128,136,1,0,64,132,1,0,32,130,1,
X	 0,16,129,1,0,8,64,130,32,20,0,96,0,0,0,0,0,0,0,0},/* section	     */
X	{128,23,0,0,0,0,0,0,0,0,0,0,15,252,16,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,
X	 32,0,0,0,16,0,15,252,0,0,0,0,0,0,0,0,0,0},	/* intersection      */
X	{128,23,0,0,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,
X	 0,0,2,4,0,0,2,4,0,0,2,4,1,8,0,0,1,8,0,240},	/* superset of       */
X	{128,23,0,240,1,8,0,0,1,8,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,
X	 0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,0,0},	/* subset of         */
X	{128,23,0,0,0,0,0,0,1,192,2,32,4,16,0,0,4,16,8,8,0,0,8,8,0,0,8,8,
X	 0,0,8,8,4,16,0,0,4,16,2,32,1,192,0,0,0,0,0,0},	/* circle	     */
X};
________This_Is_The_END________
if test `wc -c < nlq.c` -ne 8505; then
	echo 'shar: nlq.c was damaged during transit (should have been 8505 bytes)'
fi
fi		; : end of overwriting check
echo 'x - tabepson.c'
if test -f tabepson.c; then echo 'shar: not overwriting tabepson.c'; else
sed 's/^X//' << '________This_Is_The_END________' > tabepson.c
X#ifndef	INCH
X#define	INCH	240
X#endif
X
Xstruct t {
X	int bset;
X	int breset;
X	int Hor;
X	int Vert;
X	int Newline;
X	int Char;
X	int Em;
X	int Halfline;
X	int Adj;
X	char *twinit;
X	char *twrest;
X	char *twnl;
X	char *hlr;
X	char *hlf;
X	char *flr;
X	char *bdon;
X	char *bdoff;
X	char *iton;
X	char *itoff;
X	char *ploton;
X	char *plotoff;
X	char *up;
X	char *down;
X	char *right;
X	char *left;
X	char *codetab[256-32];
X	char *zzz;
X	} t = {
X/*bset    */		00,
X/*breset  */		00,
X/*Hor     */		INCH/10,
X/*Vert    */		INCH/12,
X/*Newline */		INCH/6,
X/*Char    */		INCH/10,
X/*Em      */		INCH/10,
X/*Halfline*/		INCH/12,
X/*Adj     */		INCH/10,
X/*twinit  */		"",
X/*twrest  */		"",
X/*twnl    */		"\n",
X/*hlr     */		"\0338",
X/*hlf     */		"\0339",
X/*flr     */		"\0337",
X/*bdon    */		"",
X/*bdoff   */		"",
X/*iton    */		"",
X/*itoff   */		"",
X/*ploton  */		"",
X/*plotoff */		"",
X/*up      */		"",
X/*down    */		"",
X/*right   */		"",
X/*left    */		"",
X/* space  */         	"\001 ",
X/* ! */             	"\001!",
X/* " */             	"\001\"",
X/* # */             	"\001#",
X/* $ */             	"\001$",
X/* % */             	"\001%",
X/* & */             	"\001&",
X/* ' close */       	"\001'",
X/* ( */             	"\001(",
X/* ) */             	"\001)",
X/* * */             	"\001*",
X/* + */             	"\001+",
X/* , */             	"\001,",
X/* - hyphen */      	"\001-",
X/* . */             	"\001.",
X/* / */             	"\001/",
X/* 0 */             	"\2010",
X/* 1 */             	"\2011",
X/* 2 */             	"\2012",
X/* 3 */             	"\2013",
X/* 4 */             	"\2014",
X/* 5 */             	"\2015",
X/* 6 */             	"\2016",
X/* 7 */             	"\2017",
X/* 8 */             	"\2018",
X/* 9 */             	"\2019",
X/* : */             	"\001:",
X/* ; */             	"\001;",
X/* < */             	"\001<",
X/* = */             	"\001=",
X/* > */             	"\001>",
X/* ? */             	"\001?",
X/* @ */             	"\001@",
X/* A */             	"\201A",
X/* B */             	"\201B",
X/* C */             	"\201C",
X/* D */             	"\201D",
X/* E */             	"\201E",
X/* F */             	"\201F",
X/* G */             	"\201G",
X/* H */             	"\201H",
X/* I */             	"\201I",
X/* J */             	"\201J",
X/* K */             	"\201K",
X/* L */             	"\201L",
X/* M */             	"\201M",
X/* N */             	"\201N",
X/* O */             	"\201O",
X/* P */             	"\201P",
X/* Q */             	"\201Q",
X/* R */             	"\201R",
X/* S */             	"\201S",
X/* T */             	"\201T",
X/* U */             	"\201U",
X/* V */             	"\201V",
X/* W */             	"\201W",
X/* X */             	"\201X",
X/* Y */             	"\201Y",
X/* Z */             	"\201Z",
X/* [ */             	"\001[",
X/* \ */             	"\001\\",
X/* ] */             	"\001]",
X/* ^ */             	"\001^",
X/* _ dash */        	"\001_",
X/* ` open */        	"\001`",
X/* a */             	"\201a",
X/* b */             	"\201b",
X/* c */             	"\201c",
X/* d */             	"\201d",
X/* e */             	"\201e",
X/* f */             	"\201f",
X/* g */             	"\201g",
X/* h */             	"\201h",
X/* i */             	"\201i",
X/* j */             	"\201j",
X/* k */             	"\201k",
X/* l */             	"\201l",
X/* m */             	"\201m",
X/* n */             	"\201n",
X/* o */             	"\201o",
X/* p */             	"\201p",
X/* q */             	"\201q",
X/* r */             	"\201r",
X/* s */             	"\201s",
X/* t */             	"\201t",
X/* u */             	"\201u",
X/* v */             	"\201v",
X/* w */             	"\201w",
X/* x */             	"\201x",
X/* y */             	"\201y",
X/* z */             	"\201z",
X/* { */             	"\001{",
X/* | */             	"\001|",
X/* } */             	"\001}",
X/* ~ */             	"\001~",
X/* narrow sp */     	"\000\0",
X/* hyphen */        	"\001-",
X/* bullet */        	"\001\016e\017",
X/* square */        	"\001\016t\017",
X/* 3/4 em */        	"\001-",
X/* rule */          	"\001_",
X/* 1/4 */           	"\0031/4",
X/* 1/2 */           	"\0031/2",
X/* 3/4 */           	"\0033/4",
X/* minus */         	"\001-",
X/* fi */            	"\202fi",
X/* fl */            	"\202fl",
X/* ff */            	"\202ff",
X/* ffi */           	"\203ffi",
X/* ffl */           	"\203ffl",
X/* degree */        	"\001\016f\017",
X/* dagger */        	"\001|\b-",
X/* section */       	"\001\016w\017",
X/* foot mark */     	"\001'",
X/* acute accent */  	"\001'",
X/* grave accent */  	"\001`",
X/* underrule */     	"\001_",
X/* slash (longer) */	"\001/",
X/* half narrow space */	"\000\0",
X/* unpaddable space */	"\001 ",
X/* alpha */         	"\201\016A\017",
X/* beta */          	"\201\016B\017",
X/* gamma */         	"\201\016\\\017",
X/* delta */         	"\201\016D\017",
X/* epsilon */       	"\201\016S\017",
X/* zeta */          	"\201\016Q\017",
X/* eta */           	"\201\016N\017",
X/* theta */         	"\201\016T\017",
X/* iota */          	"\201i",
X/* kappa */         	"\201k",
X/* lambda */        	"\201\016L\017",
X/* mu */            	"\201\016M\017",
X/* nu */            	"\201\016@\017",
X/* xi */            	"\201\016X\017",
X/* omicron */       	"\201o",
X/* pi */            	"\201\016J\017",
X/* rho */           	"\201\016K\017",
X/* sigma */         	"\201\016Y\017",
X/* tau */           	"\201\016I\017",
X/* upsilon */       	"\201v",
X/* phi */           	"\201\016U\017",
X/* chi */           	"\201x",
X/* psi */           	"\201\016V\017",
X/* omega */         	"\201\016C\017",
X/* Gamma */         	"\201\016G\017",
X/* Delta */         	"\201\016W\017",
X/* Theta */         	"\201\016O\017",
X/* Lambda */        	"\201\016E\017",
X/* Xi */            	"\201\016`\017",
X/* Pi */            	"\201\016P\017",
X/* Sigma */         	"\201\016R\017",
X/* Tau */           	"\201T",
X/* Upsilon */       	"\201Y",
X/* Phi */           	"\201\016F\017",
X/* Psi */           	"\201\016H\017",
X/* Omega */         	"\201\016Z\017",
X/* square root */   	"\001\016a\017",
X/* terminal sigma */	"\201\016Y\017",
X/* root en */       	"\001\016b\017",
X/* >= */            	"\001>\b_",
X/* <= */            	"\001<\b_",
X/* identically equal */	"\001=\b_",
X/* equation minus */	"\001-",
X/* approx = */      	"\001=\b~",
X/* approximates */  	"\001~",
X/* not equal */     	"\001=\b/",
X/* right arrow */   	"\002->",
X/* left arrow */    	"\002<-",
X/* up arrow */      	"\001\016g\017",
X/* down arrow */    	"\001\016h\017",
X/* eqn equals */    	"\001=",
X/* multiply */      	"\001x",
X/* divide */        	"\001/",
X/* plus-minus */    	"\001+\b_",
X/* cup-union */   	"\001U",
X/* cap-intersection */	"\001\016x\017",
X/* subset of */     	"\001\016z\017",
X/* superset of */   	"\001\016y\017",
X/* improper subset */	"\001\016z\017\b_",
X/* improper superset */	"\001\016y\017\b_",
X/* infinity */      	"\001\016d\017",
X/* pt deriv */      	"\001\016]\017",
X/* gradient */      	"\001\016[\017",
X/* not */           	"\001\016_\017",
X/* integral */    	"\001\016^\017",
X/* proportional to */	"\001\016v\017",
X/* empty set */     	"\001\016{\017\b/",
X/* member of */     	"\001\016S\017",
X/* equation plus */ 	"\001+",
X/* registered */	"\001\016u\017",
X/* copyright  */  	"\001\016c\017",
X/* box rule */      	"\001\016o\017",
X/* cent sign */     	"\001c\b/",
X/* dbl dagger */    	"\001|\b=",
X/* right hand */    	"\002=>",
X/* left hand */     	"\002<=",
X/* math *  */       	"\001*",
X/* bell system sign */	"\000\0",
X/* or (was star) */ 	"\001|",
X/* circle */        	"\001\016{\017",
X/* left top of big curly */	"\001\016i\017",
X/* left bottom of big curly */	"\001\016j\017",
X/* right top of big curly */	"\001\016k\017",
X/* right bottom of big curly */	"\001\016l\017",
X/* left center of big curly */	"\001\016m\017",
X/* right center of big curly */	"\001\016n\017",
X/* bold vertical rule */	"\001\016o\017",
X/* left bottom of big bracket */	"\001\016p\017",
X/* right bottom of big bracket */	"\001\016q\017",
X/* left top of big bracket */	"\001\016r\017",
X/* right top of big bracket */	"\001\016s\017",
X};
________This_Is_The_END________
if test `wc -c < tabepson.c` -ne 7947; then
	echo 'shar: tabepson.c was damaged during transit (should have been 7947 bytes)'
fi
fi		; : end of overwriting check
echo 'x - tabepson.uu'
if test -f tabepson.uu; then echo 'shar: not overwriting tabepson.uu'; else
sed 's/^X//' << '________This_Is_The_END________' > tabepson.uu
Xbegin 644 tabepson
XM   "V0              &    !0    H    &    !@    4    &     $ 
XM   !          (    %    "     $    !     0    $    !     0  
XM  $    !     0    $   $Y    "P    X    1    %    !<    :   !
XM,    !T    @   "E    G4    C   !^P   "8   (C    *0   "P    O
XM    ,@   #4    X    .P   #X   !!    1    $<   !*    30   AT 
XM  !0    4P   %8   !9    7    %\   !B    90   &@   !K    ;@  
XM '$   !T    =P   'H   !]    @    (,   "&    B0   (P   "/   !
XMR    )(   "5    F    )L   '+    G@   *$   "D    IP   *H   $V
XM   !,P   *T   "P    LP   +8   "Y    O    +\   #"   !9    ,4 
XM  %G    R    ,L   #.   !?@   -$   #4    UP   -H   #=    X   
XM 9    #C   !F    .8   #I    [    I<   #O   " P   M8   '[    
XM\@   /<   '[   !-@   /P   $!   !!@   ?L   $+   !#P   1,   $7
XM   !'    2$   $F   !*P   3    $P   !,P   38   (C   "U@   3D 
XM  $\   !00   48   %+   !4    54   %:   !7P   60   %G   !:@  
XM 6\   %T   !>0   7X   &!   !A@   >(   &+   !D    9,   &8   !
XMFP   :    &E   !J@   :\   &T   !N0   ;X   '#   !R    <L   '.
XM   !TP   =@   '=   !X@   ><   'L   !\0   ?8   '[   !_@   @, 
XM  (&   ""P   @\   (3   "&    AT   (@   "(P   B8   (K   "+@  
XM C,   (X   "/0   D0   )+   "4    E4   ):   "7P   F0   )I   "
XM<    G4   )X   "?0   KT   *"   "AP   HP   *0   "E    M8   *7
XM   "F@   I\   *D   "J0   JX   *S   "N    KT   +"   "QP   LP 
XM  +1   "U@   M8   +6   "U@   M8   +6   "U@   M8   +6   "U@  
XM M8   +6   "U@     * !LX !LY !LW  $A  $B  $C  $D  $E  $F  $H
XM  $I  $L  $N ($P ($Q ($R ($S ($T ($U ($V ($W ($X ($Y  $Z  $[
XM  $\  $^  $_  %  (%! (%" (%# (%$ (%% (%& (%' (%( (%) (%* (%+
XM (%, (%- (%. (%/ (%0 (%1 (%2 (%3 (%5 (%6 (%7 (%8 (%:  %;  %<
XM  %=  %> (%A (%B (%C (%D (%E (%F (%G (%H (%J (%L (%M (%N (%P
XM (%Q (%R (%S (%T (%U (%W (%Y (%Z  %[  %]  $.90\  0YT#P #,2\T
XM  ,Q+S(  S,O- ""9FD @F9L ()F9@"#9F9I (-F9FP  0YF#P !? @M  $.
XM=P\  2<  6   5\  2  @0Y!#P"!#D(/ ($.7 \ @0Y$#P"!#E,/ ($.40\ 
XM@0Y.#P"!#E0/ (%I (%K ($.3 \ @0Y-#P"!#D / ($.6 \ @6\ @0Y*#P"!
XM#DL/ ($.20\ @78 @0Y5#P"!> "!#E8/ ($.0P\ @0Y'#P"!#E</ ($.3P\ 
XM@0Y%#P"!#F / ($.4 \ @0Y2#P"!5 "!60"!#D8/ ($.2 \ @0Y:#P !#F$/
XM ($.60\  0YB#P !/@A?  $\"%\  3T(7P !+0 !/0A^  %^  $]""\  BT^
XM  (\+0 !#F</  $.: \  3T  7@  2\  2L(7P !50 !#G@/  $.>@\  0YY
XM#P !#GH/"%\  0YY#PA?  $.9 \  0Y=#P !#EL/  $.7P\  0Y>#P !#G8/
XM  $.>P\(+P !#E,/  $K  $.=0\  0YC#P !8P@O  %\"#T  CT^  (\/0 !
XM*@ !?  !#GL/  $.:0\  0YJ#P !#FL/  $.; \  0YM#P !#FX/  $.;P\ 
X7 0YP#P !#G$/  $.<@\  0YS#P     /
X 
Xend
________This_Is_The_END________
if test `wc -c < tabepson.uu` -ne 2415; then
	echo 'shar: tabepson.uu was damaged during transit (should have been 2415 bytes)'
fi
fi		; : end of overwriting check
echo 'x - special'
if test -f special; then echo 'shar: not overwriting special'; else
sed 's/^X//' << '________This_Is_The_END________' > special
XThis is a test of the special character set.
X.sp
X.nf
X.ta 2i 4i 6i
XALPHA \(*A	alpha \(*a	BETA \(*B 	beta \(*b
XGAMMA \(*G	gamma \(*g	DELTA \(*D 	delta \(*d
XEPSILON \(*E 	epsilon \(*e	ZETA \(*Z 	zeta \(*z
XETA \(*Y 	eta \(*y	THETA \(*H 	theta \(*h
XIOTA \(*I 	iota \(*i	KAPPA \(*K 	kappa \(*k
XLAMBDA \(*L 	lambda \(*l	MU \(*M 	mu \(*m
XNU \(*N 	nu \(*n	XI \(*C 	xi \(*c
XOMICRON \(*O 	omicron \(*o	PI \(*P 	pi \(*p
XRHO \(*R 	rho \(*r	SIGMA \(*S 	sigma \(*s
XTAU \(*T 	tau \(*t	UPSILON \(*U 	upsilon \(*u
XPHI \(*F 	phi \(*f	CHI \(*X 	chi \(*x
XPSI \(*Q 	psi \(*q	OMEGA \(*W 	omega \(*w
X1/4  \(14	1/2  \(12	3/4  \(34	degree \(de
Xdagger \(dg	double dagger \(dd	footmark \(fm	cent sign \(ct
Xregistered \(rg	copyright \(co	math +  \(pl	math -  \(mi
Xmath =  \(eq	math *  \(**	section  \(sc	underrule \(ul
Xacute accent \(aa	grave accent \(ga	backslash \(sl	square root \(sr
Xroot en extender \(rn	plus minus \(+-	>= \(>=	<= \(<=
Xidentically = \(==	approx. = \(~=	approximates \(ap	not equal \(!=
Xright arrow \(->	left arrow \(<-	up arrow \(ua	down arrow \(da
Xmultiply \(mu	divide \(di	union \(cu	intersection \(ca
Xsubset of \(sb	superset of \(sp	improper subset \(ib	improper superset \(ip
Xinfinity \(if	partial \(pd	gradient \(gr	not \(no
Xintegral \(is	proportional to \(pt	empty set \(es	member of \(mo
Xbox verticle rule \(br	Bell System Logo \(bs	right hand \(rh	left hand \(lh
Xor \(or	circle \(ci	left to curly \(lt	left bottom \(lb
Xright top curly \(rt	right bottom \(rb	left center curly \(lk	right center \(rk
Xleft floor \(lf	right floor \(rf	left ceiling \(lc	right ceiling \(rc
Xbold verticle \(bv	bullet \(bu	square \(sq
X.sp 2
X.ft B
XGreek Characters
X.ft P
X\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
X\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*U\(*F\(*X\(*Q\(*W
X.sp 2
X.in 1i
X.ft B
XA Big Equation - \fIFrom the EQN User's Guide\fP
X.ft R
X.sp
X.EQ
XG(z)~mark =~ e sup { ln ~ G(z) }
X~=~ exp left [
Xsum from k>=1 {S sub k z sup k} over k right ]
X~=~ prod from k>=1 e sup { S sub k z sup k /k}
X.EN
X.sp 2
X.EQ
Xlineup =~ left ( 1 + S sub 1 z +
X{ S sub 1 sup 2 z sup 2 } over 2! + "..." right )
Xleft ( 1 + {S sub 2 z sup 2 } over 2
X+ { S sub 2 sup 2 z sup 4 } over { 2 sup 2 ~ 2! }
X+ "..." right ) "..."
X.EN
X.sp 
X.EQ
Xlineup =~ sum from m>=0 left {
Xsum from
Xpile { k sub 1 ,k sub 2 ",...," k sub m >=0
Xabove
Xk sub 1 +2k sub 2 ",...," +mk sub m = m }
X{S sub 1 sup {k sub 1} } over {1 sup k sub 1 k sub 1 ! } ~
X{S sub 2 sup {k sub 2} } over {2 sup k sub 2 k sub 2 ! } ~
X"..."
X{S sub m sup {k sub m} } over {m sup k sub m k sub m ! } ~
Xright } z sup m
X.EN
X
________This_Is_The_END________
if test `wc -c < special` -ne 2621; then
	echo 'shar: special was damaged during transit (should have been 2621 bytes)'
fi
fi		; : end of overwriting check
exit 0

-- 
Tom Tkacik                |
tkacik@kyzyl.mi.org       |     To rent this space, call 1-800-555-QUIP.
tkacik@hobbes.cs.gmr.com  |
-- 
David H. Brierley
Home: dave@galaxia.newport.ri.us; Work: dhb@quahog.ssd.ray.com
Send comp.sources.3b1 submissions to comp-sources-3b1@galaxia.newport.ri.us
%% Can I be excused, my brain is full. **