summaryrefslogtreecommitdiff
path: root/dviware/quicspool/man
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/quicspool/man
Initial commit
Diffstat (limited to 'dviware/quicspool/man')
-rw-r--r--dviware/quicspool/man/cat.l226
-rw-r--r--dviware/quicspool/man/cati.l216
-rw-r--r--dviware/quicspool/man/dumpdesc.l_backup30
-rw-r--r--dviware/quicspool/man/getopt.l145
-rw-r--r--dviware/quicspool/man/glob.l180
-rw-r--r--dviware/quicspool/man/makefile46
-rw-r--r--dviware/quicspool/man/makefile.trw48
-rw-r--r--dviware/quicspool/man/pktoch.l_backup47
-rw-r--r--dviware/quicspool/man/profile.l285
-rw-r--r--dviware/quicspool/man/profile5.l237
-rw-r--r--dviware/quicspool/man/qmsquery.l258
-rw-r--r--dviware/quicspool/man/quicspool.l_backup321
-rw-r--r--dviware/quicspool/man/shift.l37
-rw-r--r--dviware/quicspool/man/standard.l266
-rw-r--r--dviware/quicspool/man/tfm2difont.l_backup79
-rw-r--r--dviware/quicspool/man/tfm2ofont.l_backup48
16 files changed, 2469 insertions, 0 deletions
diff --git a/dviware/quicspool/man/cat.l b/dviware/quicspool/man/cat.l
new file mode 100644
index 0000000000..cac7d3a814
--- /dev/null
+++ b/dviware/quicspool/man/cat.l
@@ -0,0 +1,226 @@
+.\" $Header: cat.l,v 1.1 88/01/15 12:58:13 simpson Rel $
+.\" $Log: cat.l,v $
+.\" Revision 1.1 88/01/15 12:58:13 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:49 simpson
+.\" beta test
+.\"
+.TH CAT 5 TRW
+.UC 4
+.SH NAME
+cat \- GSI CAT-4/8 phototypesetter code
+.SH DESCRIPTION
+The Graphic Systems Industries CAT phototypesetter is driven by sending it a
+sequence of one-byte codes
+which specify characters, fonts, sizes, and other control information.
+.PP
+The CAT's basic unit of length is 1/432 of an inch (6 units to a
+typesetter's ``point'').
+The quantum of horizontal motion is one unit.
+The quantum of vertical motion is three units (1/144 of an inch, 1/2 point).
+.PP
+The top two bits of the code classify it as one of three major
+types:
+an
+.I escape
+code (top bit 1),
+a
+.I flash
+code (top bits 00),
+or a control code (top bits 01).
+A code of all zeros is ignored; a code of all ones is illegal.
+.PP
+A flash code specifies flashing one of 63 characters, as given by the
+remaining six bits.
+Since this is not enough to specify all possible characters, or even
+all characters in a single font \- there are 108 per font \-
+various control codes (described later) select a font and either
+the
+.I lower
+or
+.I upper
+half of the font.
+The lower half is the first 63 characters of the font;
+the upper half is the remaining 45.
+A flash code of 46 or higher in the upper half is illegal.
+.PP
+An escape code specifies horizontal motion.
+The size of the motion, in horizontal quanta, is the one's-complement
+of the low seven bits of the code.
+The direction of the motion is set by control codes.
+Hitting the right or left margin limit switch is illegal and will
+cause the machine to stop.
+The machine starts out, after initialization, hard against the left
+margin limit switch; an initial escape of 16 units
+.I must
+be given before starting work, and the position after this motion
+should be the limit of all future leftward motions.
+From this point, the distance to the right margin limit switch
+is about 7.5 inches.
+.PP
+A code with the top three bits 011 is a
+.I lead
+code,
+specifying vertical motion.
+The remaining five bits are the one's-complement of the size of
+the motion, in vertical quanta.
+The direction of motion is set by control codes.
+The amount of vertical motion is, in principle, limited only by
+running off the paper in the upward direction and by the limited
+capacity of the output cartridge in the downward direction.
+.PP
+A code with the top four bits 0101 is a size-change code, which
+specifies movement of the lens turret and the doubler lens to
+change point size.
+These codes are as follows:
+.PP
+.RS
+.nf
+.ta 2c
+Size Code
+
+6 0101\|1000
+7 0101\|0000
+8 0101\|0001
+9 0101\|0111
+10 0101\|0010
+11 0101\|0011
+12 0101\|0100
+14 0101\|0101
+16 0101\|1001
+18 0101\|0110
+20 0101\|1010
+22 0101\|1011
+24 0101\|1100
+28 0101\|1101
+36 0101\|1110
+.DT
+.fi
+.RE
+.PP
+Size changes involving the doubler lens alter the horizontal position.
+Changes from single to double sizes should be followed by a forward
+escape of 55 quanta; changes from double to single sizes should be
+followed by a reverse escape of 55 quanta.
+The single sizes are 6, 7, 8, 9, 10, 11, 12, 14, and 18;
+the double sizes are 16, 20, 22, 24, 28, and 36.
+.PP
+The control codes with the top four bits 0100 specify miscellaneous
+control codes, not all of which have valid meanings.
+They are:
+.PP
+.RS
+.ta 6c
+.nf
+initialize 0100\|0000
+stop 0100\|1001
+upper rail 0100\|0010
+lower rail 0100\|0001
+upper magazine 0100\|0011
+lower magazine 0100\|0100
+tilt up 0100\|1110
+tilt down 0100\|1111
+upper font half 0100\|0110
+lower font half 0100\|0101
+escape forward 0100\|0111
+escape backward 0100\|1000
+lead forward 0100\|1010
+lead backward 0100\|1100
+.fi
+.DT
+.RE
+.PP
+The
+.I initialize
+code causes leftward motion to the left margin limit
+switch,
+and sets the following modes:
+escape forward, lead forward, lower font half,
+lower rail, lower mag, tilt down.
+Note that the left margin limit switch does not define a precise
+position, and hence reinitializing the machine
+will destroy precise left-margin alignment.
+.PP
+The
+.I stop
+code stops the machine, which must be manually
+restarted (normally after changing output cartridges);
+this code should be used only at the end of a run.
+.PP
+Fonts are selected by the combination of
+.IR rail ,
+.IR magazine ,
+and
+.IR tilt .
+The tilt codes do not exist on the 4-font CAT; this is the only user-visible
+difference between the 4-font and 8-font machines.
+The correspondence between rail/magazine/tilt and font number is as follows:
+.PP
+.RS
+.nf
+.ta 2c 5c 7c 9c
+rail magazine tilt 4 font 8 font
+
+lower lower up 1 1
+lower lower down 1 2
+upper lower up 2 3
+upper lower down 2 4
+lower upper up 3 5
+lower upper down 3 6
+upper upper up 4 7
+upper upper down 4 8
+.DT
+.fi
+.RE
+.PP
+Several additional commands were introduced locally to ease
+the simulation of the CAT on a variety of raster plotters.
+Each is several bytes long.
+The first byte is the
+.I extension
+control code 0100\|1011.
+The remaining bytes specify the command and its argument
+(if any, treated as an unsigned integer).
+The commands are:
+.PP
+.RS
+.nf
+.ta 6c
+big lead 0000\|0001
+big escape 0000\|0010
+formfeed 0000\|0011
+.fi
+.DT
+.RE
+.PP
+The
+.I "big lead"
+code specifies vertical motion whose magnitude is
+64 * the following byte.
+The
+.I "big escape"
+code specifies horizontal motion whose magnitude is
+128 * the following byte.
+The
+.I formfeed
+code specifies an advance to the next page resetting the current
+row and column to <0,0>.
+.PP
+A complete CAT file should begin with an
+.I initialize
+code followed
+by an
+.IR escape -16
+code,
+and should end with 14 inches of trailer and a
+.I stop
+code.
+.SH AUTHORS
+Henry Spencer, University of Toronto
+.br
+Michael Gorlick, TRW
+.SH BUGS
+The documentation and the hardware disagree on the initial tilt setting;
+the above describes the hardware.
+
diff --git a/dviware/quicspool/man/cati.l b/dviware/quicspool/man/cati.l
new file mode 100644
index 0000000000..602a55cc4a
--- /dev/null
+++ b/dviware/quicspool/man/cati.l
@@ -0,0 +1,216 @@
+.\" $Header: cati.l,v 1.1 88/01/15 12:58:16 simpson Rel $
+.\" $Log: cati.l,v $
+.\" Revision 1.1 88/01/15 12:58:16 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:50 simpson
+.\" beta test
+.\"
+.TH CATI 1 TRW
+.UC 4
+.SH NAME
+cati \- GSI CAT-4/8 phototypesetter interpreter
+.SH SYNOPSIS
+.B cati
+[
+.B -l
+] [
+.B -v
+] [ file ... ]
+.SH DESCRIPTION
+.I Cati
+writes a commentary on standard output
+interpreting each command as it would act on the phototypesetter.
+The options are:
+.TP
+.B -l
+print a one line summary of the leading and nothing else.
+.TP
+.B -v
+turn on verbose mode where each individual lead or escape command is printed.
+The default is terse mode where only a one line summary
+of an ubroken series of lead or escape commands is printed.
+.PP
+If
+.I file
+is omitted
+.I cati
+reads from standard input.
+.PP
+The output notation is:
+.TP
+.RI > " E F B T"
+> (<) denotes forward (backward) escape.
+.I E
+is the accumulated escape of an unbroken series of escape commands.
+.IR F " (" B )
+is the total forward (backward) escape to date.
+.I T
+is the magnitude of all escape (in either direction) to date.
+All numerical values are in CAT horizontal units.
+.TP
+.RI + " L F B T"
++ (-) denotes forward (backward) leading.
+.I L
+is the accumulated leading of an unbroken series of lead commands.
+.IR F " (" B )
+is the total forward (backward) leading to date.
+.I T
+is the magnitude of all leading (in either direction) to date.
+All numerical values are in CAT vertical units.
+.TP
+Initialize
+an
+.I initialize
+control code.
+.TP
+.RI "Lower rail (font " N )
+a
+.I "lower rail"
+control code.
+.I N
+is the font selected by the mode change.
+.TP
+.RI "Upper rail (font " N )
+an
+.I "upper rail"
+control code.
+.I N
+is the font selected by the mode change.
+.TP
+.RI "Upper magazine (font " N )
+an
+.I "upper magazine"
+control code.
+.I N
+is the font selected by the mode change.
+.TP
+.RI "Lower magazine (font " N )
+a
+.I "lower magazine"
+control code.
+.I N
+is the font selected by the mode change.
+.TP
+Font half lower
+a
+.I "lower font half"
+control code.
+.TP
+Font half upper
+an
+.I "upper font half"
+control code.
+.TP
+.RI "> mode" " F B T"
+an
+.I "escape mode"
+control code.
+> (<) denotes forward (backward) escape mode.
+.IR "F " ( B )
+is the total amount of forward (backward) escape to date.
+.I T
+is the magnitude of all escape to date.
+All numerical values are in CAT horizontal units.
+.TP
+STOP
+a
+.I stop
+control code.
+.TP
+.RI "+ mode" " F B T"
+a
+.I "lead mode"
+control code.
++ (-) denotes forward (backward) lead mode.
+.IR "F " ( B )
+is the total amount of forward (backward) leading to date.
+.I T
+is the magnitude of all leading to date.
+All numerical values are in CAT vertical units.
+.TP
+.RI "Tilt up (font " N )
+a
+.I "tilt up"
+control code.
+.I N
+is the font selected by the mode change.
+.TP
+.RI "Tilt down (font " N )
+a
+.I "tilt down"
+control code.
+.I N
+is the font selected by the mode change.
+.TP
+.RI Size " N"
+a
+.I "point size change control"
+code.
+.I N
+is the selected point size.
+If the size change is a single to double transition the parenthetical
+remark `(double)' will follow
+.IR N .
+If the size change is a double to single transition the parenthetical
+remark `(single)' will follow
+.IR N .
+.TP
+Flash \fIF \fR(font \fIN IH \fRsize \fIS \fR<\fIR\fR,\fIC\fR>)
+a
+.I flash
+code.
+.I F
+is the flashed character.
+.I Cati
+assumes that regular filmstrips are mounted are mounted on font positions
+1-6 and 8 and that the Bell Special Mathematical font is mounted on position
+7.
+These assumptions are compatible with the default mountings
+.IR troff (1)
+assumes for the CAT-4.
+.I N
+is the font position 1-8.
+.I I
+is the filmstrip index of the character and
+.I H
+is the current font half
+where L or U denote the lower and upper font halfs respectively.
+.I S
+is the current point size.
+.I R
+and
+.I C
+are the current row and column expressed in CAT vertical and
+horizontal units respectively.
+.TP
+Formfeed
+a
+.I formfeed
+control code.
+.PP
+In verbose mode each escape or leading command in the code stream
+is printed.
+The output notation is:
+.TP
+.RI "> " E
+> (<) denotes forward (backward) escape.
+.I E
+is the magnitude of the escape in CAT horizontal units.
+.TP
+.RI "+ " L
++ (-) denotes forward (backware) leading.
+.I L
+is the magintude of the leading in CAT vertical units.
+.TP
+.RI ">> " E
+>> (<<) denotes big forward (backward) escape.
+.I E
+is the magnitude of the escape in CAT horizontal units.
+.TP
+.RI "++ " L
+++ (--) denotes big forward (backward) leading.
+.I L
+is the magnitude of the leading in CAT vertical units.
+.SH SEE ALSO
+troff(1), cat(5)
diff --git a/dviware/quicspool/man/dumpdesc.l_backup b/dviware/quicspool/man/dumpdesc.l_backup
new file mode 100644
index 0000000000..10e517ce46
--- /dev/null
+++ b/dviware/quicspool/man/dumpdesc.l_backup
@@ -0,0 +1,30 @@
+.\" $Header: dumpdesc.l.backup,v 1.1 88/01/15 12:58:18 simpson Rel $
+.\" $Log: dumpdesc.l.backup,v $
+.\" Revision 1.1 88/01/15 12:58:18 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:51 simpson
+.\" beta test
+.\"
+.TH DUMPDESC 1 TRW
+.UC
+.SH NAME
+dumpdesc \- symbolically dump out the contents of a ditroff DESC file
+.SH ORIGIN
+TRW
+.SH SYNOPSIS
+dumpDESC
+.I DESCfile
+.SH DESCRIPTION
+.IR Dumpdesc (1)
+symbolically dumps out the contents of a DESC.out file created by
+.I makedev.
+The first argument should be the name of the \fIbinary\fP DESC file (usually
+DESC.out).
+.SH FILES
+.ta \w'--FONTDIR--'
+--FONTDIR-- directory containing DESC.out file
+.SH AUTHOR
+Scott Simpson
+.SH SEE ALSO
+font(5)
diff --git a/dviware/quicspool/man/getopt.l b/dviware/quicspool/man/getopt.l
new file mode 100644
index 0000000000..c1a50de8b0
--- /dev/null
+++ b/dviware/quicspool/man/getopt.l
@@ -0,0 +1,145 @@
+.\" $Header: getopt.l,v 1.1 88/01/15 12:58:20 simpson Rel $
+.\" $Log: getopt.l,v $
+.\" Revision 1.1 88/01/15 12:58:20 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:51 simpson
+.\" beta test
+.\"
+.TH GETOPT 3
+.SH NAME
+getopt \- get option letter from argument vector
+.SH SYNOPSIS
+.B int getopt (argc, argv, optstring)
+.br
+.B int argc;
+.br
+.B char \(**\(**argv;
+.br
+.B char \(**optstring;
+.PP
+.B extern char \(**optarg;
+.br
+.B extern int optind;
+.PP
+cc ... -ltrw
+.SH DESCRIPTION
+.I Getopt\^
+returns the next option letter in
+.I argv\^
+that matches
+a letter in
+.IR optstring .
+.I Optstring\^
+is a string of recognized option letters;
+if a letter is followed by a colon, the option
+is expected to have an argument that may or
+may not be separated from it by white space.
+.I Optarg\^
+is set to point to the start of the option argument
+on return from
+.IR getopt .
+.PP
+.I Getopt\^
+places in
+.I optind\^
+the
+.I argv\^
+index of the next argument to be processed.
+Because
+.I optind\^
+is external, it is normally initialized to zero
+automatically before the first call to
+.IR getopt .
+.PP
+When all options have been processed
+(i.e., up to the first non-option argument),
+.I getopt\^
+returns
+.SM
+.BR EOF .
+The special option
+.B \-\-
+may be used to delimit the end of the options;
+.SM
+.B EOF
+will be returned, and
+.B \-\-
+will be skipped.
+.SH DIAGNOSTICS
+.I Getopt\^
+prints an error message on
+.I stderr\^
+and returns a
+question mark
+.RB ( ? )
+when it encounters an option letter not included in
+.IR optstring .
+.SH WARNING
+The above routine uses \fB<stdio.h>\fP, which causes
+it to increase the size of programs,
+not otherwise using standard I/O, more
+than might be expected.
+.SH EXAMPLE
+The following code fragment shows how one might process the arguments
+for a command that can take the mutually exclusive options
+.B a
+and
+.BR b ,
+and the options
+.B f
+and
+.BR o ,
+both of which require arguments:
+.PP
+.RS
+.nf
+.ss 18
+main (argc, argv)
+int argc;
+char \(**\(**argv;
+{
+ int c;
+ extern int optind;
+ extern char \(**optarg;
+ \&\f3.\fP
+ \&\f3.\fP
+ \&\f3.\fP
+ while ((c = getopt (argc, argv, "abf:o:")) != \s-1EOF\s+1)
+ switch (c) {
+ case \(fma\(fm:
+ if (bflg)
+ errflg++;
+ else
+ aflg++;
+ break;
+ case \(fmb\(fm:
+ if (aflg)
+ errflg++;
+ else
+ bproc( );
+ break;
+ case \(fmf\(fm:
+ ifile = optarg;
+ break;
+ case \(fmo\(fm:
+ ofile = optarg;
+ bufsiza = 512;
+ break;
+ case \(fm?\(fm:
+ errflg++;
+ }
+ if (errflg) {
+ fprintf (stderr, "usage: . . . ");
+ exit (2);
+ }
+ for ( ; optind < argc; optind++) {
+ if (access (argv[optind], 4)) {
+ \&\f3.\fP
+ \&\f3.\fP
+ \&\f3.\fP
+}
+.ss 12
+.fi
+.RE
+.\" @(#)getopt.3c 5.2 of 5/18/82
diff --git a/dviware/quicspool/man/glob.l b/dviware/quicspool/man/glob.l
new file mode 100644
index 0000000000..667ab942cc
--- /dev/null
+++ b/dviware/quicspool/man/glob.l
@@ -0,0 +1,180 @@
+.\" $Header: glob.l,v 1.1 88/01/15 12:58:23 simpson Rel $
+.\" $Log: glob.l,v $
+.\" Revision 1.1 88/01/15 12:58:23 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:52 simpson
+.\" beta test
+.\"
+.TH GLOB 3 TRW
+.UC
+.SH NAME
+glob \- shell style pattern matching
+.SH SYNOPSIS
+.nf
+.B #include <local/glob.h>
+
+.B int glob_compile(pattern, buffer)
+.B char *pattern;
+.B char *buffer;
+
+.B int glob_execute(buffer, s)
+.B char *buffer;
+.B char *s;
+
+.B int glob_match (pattern, s)
+.B char *pattern;
+.B char *s;
+.fi
+
+.B cc
+[ flags ] files
+.B -lglob
+[ libraries ]
+.fi
+.SH DESCRIPTION
+.I Glob
+is a pattern matching facility similar to that of
+.IR sh (1)
+and
+.IR csh (1).
+.PP
+A pattern specifies a set of strings of characters.
+A member of this set of strings is said to be matched by the pattern.
+.TP
+(1)
+Any character except a special character matches itself.
+The special characters are [ * and ?.
+.TP
+(2)
+A ? matches any character.
+.TP
+(3)
+A nonempty string
+.I s
+bracketed
+.RI [ s ]
+matches any character in
+.IR s .
+In
+.I s
+] may only appear as the first letter.
+A substring
+.IR a \- b ,
+with
+.I a
+and
+.I b
+in ascending ASCII order,
+stands for the inclusive range of ASCII characters.
+.TP
+(4)
+A * matches 0 or more characters.
+.PP
+.I Glob_compile
+compiles a
+.I pattern
+into an internal form suitable for matching,
+placing the result in the character array
+.IR buffer .
+.I Buffer
+must be a character array of size
+.BR GLOB_MAX_PATTERN .
+.I Glob_compile
+returns 0 if the
+.I pattern
+was compiled successfully;
+otherwise a negative error code is returned.
+.PP
+.I Glob_execute
+checks the argument string
+.I s
+against the compiled
+.IR pattern .
+.I Glob_execute
+returns 1 if the string
+.I s
+matches the compiled pattern in
+.IR buffer ,
+0 if the string
+.I s
+failed to match the compiled pattern in
+.IR buffer ,
+and a negative error code if the compiled pattern was invalid.
+.PP
+The strings passed to both
+.I glob_compile
+and
+.I glob_execute
+may have trailing or embedded newline characters;
+they are terminated by nulls.
+.PP
+.I Glob_match
+compiles
+.I pattern
+and matches it against the argument string
+.IR s .
+It returns 1 if the string
+.I s
+matches the pattern;
+0 if the string
+.I s
+fails to match the pattern
+and a negative error code if the pattern was invalid.
+.SH AUTHOR
+Michael Gorlick, TRW
+.SH SEE ALSO
+regex(3)
+.SH DIAGNOSTICS
+The following diagnostic codes are provided:
+.TP
+GLOB_OK
+returned by
+.I glob_compile
+indicating the pattern compiled successfully;
+.TP
+GLOB_PATTERN_TOO_BIG
+returned by
+.I glob_compile
+or
+.I glob_match
+indicating the compiled pattern overflowed the buffer;
+.TP
+GLOB_PATTERN_EMPTY
+returned by
+.I glob_compile
+or
+.I glob_match
+indicating the pattern is the empty string;
+.TP
+GLOB_BRACKET_MISSING
+returned by
+.I glob_compile
+or
+.I glob_match
+indicating that a set expression
+.RI [ s ]
+is missing the terminating bracket ];
+.TP
+GLOB_RANGE_INVERTED
+returned by
+.I glob_compile
+or
+.I glob_match
+indicating a range expression in a set
+is inverted, for example [z-a];
+.TP
+GLOB_SET_TOO_BIG
+returned by
+.I glob_compile
+or
+.I glob_match
+indicating a compiled set requires more than 127 bytes
+(a single character consumes 2 bytes and a range consumes 3 bytes);
+.TP
+GLOB_EXECUTION_ERROR
+returned by
+.I glob_execute
+or
+.I glob_match
+indicating an internal error.
diff --git a/dviware/quicspool/man/makefile b/dviware/quicspool/man/makefile
new file mode 100644
index 0000000000..1b3cc4acb0
--- /dev/null
+++ b/dviware/quicspool/man/makefile
@@ -0,0 +1,46 @@
+# $Header: Makefile,v 1.1 88/01/15 12:58:09 simpson Rel $
+# $Log: Makefile,v $
+#Revision 1.1 88/01/15 12:58:09 simpson
+#initial release
+#
+#Revision 0.1 87/12/11 17:56:47 simpson
+#beta test
+#
+WBTEXFONT=/usr/lib/tex/imagenfonts
+WWTEXFONT=/usr/lib/tex/qmsfonts
+DITROFFFONT=/usr/lib/font/devqms
+OTROFFFONT=/usr/lib/font
+FILTER=/usr/local/lib/lpr
+
+all:
+
+configure:
+ sed s:--WBTEX--:$(WBTEXFONT): < quicspool.l.backup | \
+ sed s:--WWTEX--:$(WWTEXFONT): | sed s:--OFONT--:$(OTROFFFONT): | \
+ sed s:--DIFONT--:$(DITROFFFONT): | sed s:--FILTER--:$(FILTER): \
+ > quicspool.l
+ sed s:--FONTDIR--:$(DITROFFFONT): < dumpdesc.l.backup > dumpdesc.l
+ sed s:--WBTEX--:$(WBTEXFONT): < pktoch.l.backup | \
+ sed s:--WWTEX--:$(WWTEXFONT): | sed s:--OFONT--:$(OTROFFFONT): | \
+ sed s:--DIFONT--:$(DITROFFFONT): > pktoch.l
+ sed s:--FONTDIR--:$(OTROFFFONT): < tfm2ofont.l.backup > tfm2ofont.l
+ sed s:--FONTDIR--:$(DITROFFFONT): < tfm2difont.l.backup > tfm2difont.l
+
+clean:
+ -rm dumpdesc.l pktoch.l tfm2ofont.l tfm2difont.l quicspool.l
+
+install:
+ install -c cat.l /usr/man/manl
+ install -c cati.l /usr/man/manl
+ install -c dumpdesc.l /usr/man/manl
+ install -c getopt.l /usr/man/manl
+ install -c glob.l /usr/man/manl
+ install -c pktoch.l /usr/man/manl
+ install -c profile.l /usr/man/manl
+ install -c profile5.l /usr/man/manl
+ install -c qmsquery.l /usr/man/manl
+ install -c quicspool.l /usr/man/manl
+ install -c shift.l /usr/man/manl
+ install -c standard.l /usr/man/manl
+ install -c tfm2ofont.l /usr/man/manl
+ install -c tfm2difont.l /usr/man/manl
diff --git a/dviware/quicspool/man/makefile.trw b/dviware/quicspool/man/makefile.trw
new file mode 100644
index 0000000000..d73250e7c9
--- /dev/null
+++ b/dviware/quicspool/man/makefile.trw
@@ -0,0 +1,48 @@
+# $Header: Makefile.TRW,v 1.1 88/01/15 12:58:12 simpson Rel $
+# $Log: Makefile.TRW,v $
+#Revision 1.1 88/01/15 12:58:12 simpson
+#initial release
+#
+#Revision 0.1 87/12/11 17:56:48 simpson
+#beta test
+#
+WBTEXFONT=/usr/lib/tex/imagenfonts
+WWTEXFONT=/usr/lib/tex/qmsfonts
+DITROFFFONT=/usr/lib/font/devqms
+OTROFFFONT=/usr/lib/font
+FILTER=/usr/local/lib/lpr
+
+all:
+
+configure:
+ sed s:--WBTEX--:$(WBTEXFONT): < quicspool.l.backup | \
+ sed s:--WWTEX--:$(WWTEXFONT): | sed s:--OFONT--:$(OTROFFFONT): | \
+ sed s:--DIFONT--:$(DITROFFFONT): | sed s:--FILTER--:$(FILTER): \
+ > quicspool.l
+ sed s:--FONTDIR--:$(DITROFFFONT): < dumpdesc.l.backup > dumpdesc.l
+ sed s:--WBTEX--:$(WBTEXFONT): < pktoch.l.backup | \
+ sed s:--WWTEX--:$(WWTEXFONT): | sed s:--OFONT--:$(OTROFFFONT): | \
+ sed s:--DIFONT--:$(DITROFFFONT): > pktoch.l
+ sed s:--FONTDIR--:$(OTROFFFONT): < tfm2ofont.l.backup > tfm2ofont.l
+ sed s:--FONTDIR--:$(DITROFFFONT): < tfm2difont.l.backup > tfm2difont.l
+
+clean:
+ -rm dumpdesc.l pktoch.l tfm2ofont.l tfm2difont.l quicspool.l
+
+install:
+ install -c cat.l /usr/man/manl/cat.5
+ install -c cati.l /usr/man/manl/cati.1
+ install -c dumpdesc.l /usr/man/manl/dumpdesc.1
+ install -c getopt.l /usr/man/manl/getopt.3
+ install -c glob.l /usr/man/manl/glob.3
+ install -c pktoch.l /usr/man/manl/pktoch.1
+ install -c profile.l /usr/man/manl/profile.3
+ install -c profile5.l /usr/man/manl/profile.5
+ install -c qmsquery.l /usr/man/manl/qmsquery.3
+ install -c quicspool.l /usr/man/manl/quicspool.7
+ install -c shift.l /usr/man/manl/shift.3
+ install -c standard.l /usr/man/manl/standard.5
+ install -c tfm2ofont.l /usr/man/manl/tfm2ofont.1
+ install -c tfm2difont.l /usr/man/manl/tfm2ofont.1
+ install -c lpr.l /usr/man/man1/lpr.1
+ install -c pac.l /usr/man/man8/pac.8
diff --git a/dviware/quicspool/man/pktoch.l_backup b/dviware/quicspool/man/pktoch.l_backup
new file mode 100644
index 0000000000..b76bec1a18
--- /dev/null
+++ b/dviware/quicspool/man/pktoch.l_backup
@@ -0,0 +1,47 @@
+.\" $Header: pktoch.l.backup,v 1.1 88/01/15 12:58:29 simpson Rel $
+.\" $Log: pktoch.l.backup,v $
+.\" Revision 1.1 88/01/15 12:58:29 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:55 simpson
+.\" beta test
+.\"
+.if t .ds TX T\h'-.1667m'\v'.22m'E\h'-.125m'\v'-.22m'X
+.if n .ds TX TeX
+.if t .ds LX L\v'-.22m'a\v'.22m'T\h'-.1667m'\v'.22m'E\h'-.125m'\v'-.22m'X
+.if n .ds LX LaTeX
+.TH PKTOCH 1 TRW
+.UC
+.SH NAME
+pktoch \- print out the contents of a packed format (pk) pixel file
+.SH ORIGIN
+TRW
+.SH SYNOPSIS
+pktoch pkfile chfile
+.SH DESCRIPTION
+.IR Pktoch (1)
+prints out the bit map of a packed format (pk) format pixel file on the second
+argument.
+The output bit map is a readable ascii file containing a dump of the
+information in the packed font file.
+A dump of each character bit map is given so you can see the bitmap of the
+characters. Ones in the bitmaps are represented by *s and zeros are
+represented by periods.
+Other information, such as the
+.I x
+and
+.I y
+offset are also given.
+The format of a pk file is beyond the scope of this manual page.
+.SH FILES
+.nf
+.ta \w'--WBTEX-- 'u
+--WBTEX-- \*(TX write-black engine font directory
+--WWTEX-- \*(TX write-write engine font directory
+--DIFONT--/w?fonts raster font directories
+.SH AUTHOR
+Scott Simpson
+.SH SEE ALSO
+pxtoch(1), tex(1)
+.SH BUGS
+The opposite conversion program is not yet written.
diff --git a/dviware/quicspool/man/profile.l b/dviware/quicspool/man/profile.l
new file mode 100644
index 0000000000..9b02878686
--- /dev/null
+++ b/dviware/quicspool/man/profile.l
@@ -0,0 +1,285 @@
+.\" $Header: profile.l,v 1.1 88/01/15 12:58:31 simpson Rel $
+.\" $Log: profile.l,v $
+.\" Revision 1.1 88/01/15 12:58:31 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:56 simpson
+.\" beta test
+.\"
+.TH PROFILE 3 TRW
+.UC 4
+.SH NAME
+profile \- read/write configuration files
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.B #include <local/profile.h>
+
+.B PROFILE_STANZA *profile_read_stanza(f)
+.B FILE *f;
+
+.B PROFILE_STANZA *profile_read_profile(f)
+.B FILE *f;
+
+.B profile_write_stanza(f, s)
+.B FILE *f;
+.B PROFILE_STANZA *s;
+
+.B profile_write_profile(f, s)
+.B FILE *f;
+.B PROFILE_STANZA *s;
+
+.B profile_free_stanza(s)
+.B PROFILE_STANZA *s;
+
+.B PROFILE_MARKER *profile_has_marker(s, m)
+.B PROFILE_STANZA *s;
+.B char *m;
+
+.B PROFILE_STANZA *profile_has_stanza(s, marker)
+.B PROFILE_STANZA *s;
+.B char *marker[];
+
+.B PROFILE_BINDING *profile_has_binding(s, b)
+.B PROFILE_STANZA *s;
+.B char *b;
+
+.B PROFILE_STANZA *profile_stanza_space()
+
+.B PROFILE_MARKER *profile_marker_space(n)
+.B int n;
+
+.B PROFILE_BINDING *profile_binding_space(n)
+.B int n;
+
+.B PROFILE_VALUE *profile_value_space(n)
+.B int n;
+.fi
+.SH DESCRIPTION
+.I Profile_read_stanza
+reads a single stanza from a configuration file returning
+a pointer to the stanza if successful and NULL on error or end of file.
+A stanza is defined as:
+.nf
+.ta 1i +\w'typedef 'u
+
+ typedef struct PROFILE_STANZA {
+ PROFILE_MARKER *marker;
+ PROFILE_BINDING *binding;
+ struct PROFILE_STANZA *previous;
+ struct PROFILE_STANZA *next;
+ } PROFILE_STANZA;
+.fi
+.PP
+.I Marker
+and
+.I binding
+point to linked lists of markers and bindings respectively.
+If
+.I marker
+is
+.B NULL
+the stanza has no markers.
+If
+.I binding
+is
+.B NULL
+the stanza has no bindings.
+.I Previous
+and
+.I next
+are ignored and may be used to doubly link successive stanzas together.
+.DT
+.PP
+A marker is defined as:
+.nf
+.ta 1i +\w'typedef 'u
+
+ typedef struct PROFILE_MARKER {
+ char *text;
+ struct PROFILE_MARKER *previous;
+ struct PROFILE_MARKER *next;
+ } PROFILE_MARKER;
+.fi
+.DT
+.PP
+.I Text
+is a string containing the literal text of the marker
+and is always nonempty.
+.IR Previous " (" next )
+is a pointer to the previous (next) marker in the sequence.
+In the first (last) marker
+.IR previous " (" next )
+is
+.BR NULL .
+.PP
+A binding is defined as:
+.nf
+.ta 1i +\w'typedef 'u
+
+ typedef struct PROFILE_BINDING {
+ char *name;
+ PROFILE_VALUE *value;
+ struct PROFILE_BINDING *previous;
+ struct PROFILE_BINDING *next;
+ } PROFILE_BINDING;
+.fi
+.DT
+.PP
+.I Name
+is the literal text of the name of the binding and is always nonempty.
+.I Value
+is a pointer to the list of values associated with the name.
+If
+.I value
+is
+.B NULL
+then the binding consists solely of a name with no associated value.
+.IR Previous " (" next )
+points to the previous (next) binding in the sequence.
+In the first (last) binding
+.IR previous " (" next )
+is
+.BR NULL .
+.PP
+A value is defined as:
+.nf
+.ta 1i +\w'typedef 'u +\w'union { 'u
+
+ typedef struct PROFILE_VALUE {
+ char class;
+ union {
+ long int i;
+ double f;
+ char c;
+ char *s;
+ } value;
+ struct PROFILE_VALUE *previous;
+ struct PROFILE_VALUE *next;
+ } PROFILE_VALUE;
+.fi
+.DT
+.PP
+.I Class
+is always one of:
+.TP
+PROFILE_CHARACTER
+the value is a character constant contained in
+.IR c .
+.TP
+PROFILE_HEX
+the value is a hex constant contained in
+.IR i .
+.TP
+PROFILE_INTEGER
+the value is an integer constant contained in
+.IR i .
+.TP
+PROFILE_FLOAT
+the value is a real constant contained in
+.IR f .
+.TP
+PROFILE_OCTAL
+the value is an octal constant contained in
+.IR i .
+.TP
+PROFILE_STRING
+the value is a string constant contained in
+.IR s .
+.TP
+PROFILE_OTHER
+the value is not recognizably
+character,
+hex,
+integer,
+float,
+octal
+or string.
+The literal text is contained in
+.IR s .
+.PP
+.IR Previous " (" next )
+points to the previous (next) value in the sequence.
+In the first (last) value
+.IR previous " (" next )
+is
+.BR NULL .
+.PP
+.I Profile_read_profile
+reads an entire configuration file and builds a bi-directional,
+circularly linked list of stanzas using the
+.I previous
+and
+.I next
+pointers.
+The value returned is a pointer to the first stanza in the list.
+.PP
+.I Profile_write_stanza
+writes a stanza in a canonical form suitable for input by
+.IR profile_read_stanza .
+Markers are output one to a line.
+Each binding is indented by a single tab.
+Names and values are separated, one from the other,
+by a single blank.
+.PP
+.I Profile_write_profile
+writes all the stanzas in a linked list by applying
+.I profile_write_stanza
+to each stanza in the list.
+The list need not be doubly linked.
+.PP
+.I Profile_free_stanza
+frees all storage associated with a stanza.
+.PP
+.I Profile_has_marker
+searches the marker list of a stanza for a match to the given marker,
+.IR m .
+A pointer to the marker is returned on success and
+.B NULL
+on failure.
+.PP
+.I Profile_has_stanza
+searches a linked list of stanzas for a stanza that has all the
+markers in
+.I marker.
+.I Marker
+must be terminated by a null entry.
+.PP
+.I Profile_has_binding
+searches the binding list of a stanza
+for a binding with a match to the given name.
+A pointer to the binding is returned on success and
+.B NULL
+on failure.
+.PP
+The following routines are useful for constructing stanzas on the fly.
+.I Profile_stanza_space
+allocates storage for a stanza.
+.I Profile_marker_space
+allocates storage for a marker including sufficient space for
+.I n
+characters of text plus a terminating null byte.
+.I Profile_binding_space
+allocates storage for a binding including sufficient space for
+.I n
+characters of name text plus a terminating null byte.
+.I Profile_value_space
+allocates storage for a value.
+If
+.I n
+is positive and non-zero the component
+.IR value . s
+is initialized as a
+.IR n +1
+character array.
+All of the above routines return a pointer on success and
+.B NULL
+on failure.
+All storage is zero filled.
+The routine
+.IR free (3)
+may be safely used to release storage allocated by these routines.
+.SH AUTHOR
+Michael Gorlick, TRW
+.SH SEE ALSO
+malloc(3), profile(5)
diff --git a/dviware/quicspool/man/profile5.l b/dviware/quicspool/man/profile5.l
new file mode 100644
index 0000000000..29657c9cb4
--- /dev/null
+++ b/dviware/quicspool/man/profile5.l
@@ -0,0 +1,237 @@
+.\" $Header: profile5.l,v 1.1 88/01/15 12:58:34 simpson Rel $
+.\" $Log: profile5.l,v $
+.\" Revision 1.1 88/01/15 12:58:34 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:57 simpson
+.\" beta test
+.\"
+.TH PROFILE 5 TRW
+.UC 4
+.SH NAME
+profile \- configuration file format
+.SH SYNOPSIS
+.B #include <local/profile.h>
+.SH DESCRIPTION
+.I Profile
+is a general purpose configuration file facility.
+.PP
+Each profile is an ASCII file containing a sequence of one or more
+.IR stanzas .
+Each stanza in turn consists of a sequence of
+.I markers
+followed by a sequence of
+.IR bindings .
+The characters `{' (left brace) and `}' (right brace)
+delimit the beginning and end respectively of the stanza bindings.
+Each binding consists of a name
+followed by an optional sequence of values.
+.SH MARKERS
+Markers are arbitrary patterns in the style of
+.IR glob (3)
+delimited by white space.
+The list of markers may be empty.
+There is no limit to the number of markers.
+Examples of markers are:
+.nf
+
+ queue
+ /usr/lib
+ 1776
+ a_long_marker
+ file[0-9]*.?
+.fi
+.SH BINDINGS
+Bindings are the association of names with values.
+There is one binding to a line each consisting of a name followed
+by an optional sequence of values.
+Names and values are separated,
+one from the other,
+by blanks or tabs.
+Here a newline preceded by a backslash is equivalent to a blank.
+The list of bindings may be empty.
+There is no limit to the number of bindings.
+By convention each binding is indented by a single tab.
+.SH NAMES
+Names are arbitrary patterns in the style of
+.IR glob (3)
+delimited by white space.
+.SH VALUES
+Values are
+integer,
+real,
+octal,
+hex,
+character,
+or
+string
+constants.
+Arbitrary text,
+not recognizably one of the aforementioned types,
+is classified as
+.I other
+and is a legitimate value.
+.TP
+integer
+A sequence of digits optionally preceded by a minus sign.
+Every integer constant is taken to be long.
+.TP
+floating
+A floating constant consists of an optional minus sign,
+an integer part
+a decimal point,
+a fraction part,
+an
+.B e
+or
+.BR E ,
+and an optionally signed integer exponent.
+The integer and fraction parts both consist of a sequence of digits.
+Either the integer part or the fraction part (not both)
+may be missing;
+either the decimal point or the
+.B e
+and the exponent (not both) may be missing.
+Every floating constant is taken to be double-precision.
+.TP
+hex
+A sequence of hexidecimal digits preceded by
+.B 0x
+or
+.BR 0X .
+The hexidecimal digits are 0-9, a-e and A-F.
+Every hex constant is taken to be long.
+.TP
+octal
+A sequence of octal digits preceded by
+.B 0o
+or
+.B 0O
+(digit zero followed by a letter o).
+The octal digits are 0-7.
+Every octal constant is taken to be long.
+.TP
+character
+A character constant is a character enclosed in single quotes.
+Certain non-graphic characters,
+the single quote ',
+the caret ^ and
+the backslash \\,
+may be represented according to the following table of escape sequences:
+.ta 1i +\w'carriage return 'u
+.nf
+
+ newline \\n
+ horizontal tab \\t
+ backspace \\b
+ carriage return \\r
+ form feed \\f
+ escape \\e
+ backslash \\\\
+ single quote \\'
+ caret \\^
+ control-@ ^@
+ control-A ^A
+ ... ...
+ control-Z ^Z
+ control-[ ^[
+ control-\\ ^\\
+ control-^ ^^
+ control-_ ^_
+ delete ^?
+ bit pattern \\\fIddd\fR
+
+.fi
+.DT
+The escape \\\fIddd\fR
+consists of the backslash followed by 1, 2, or 3 octal digits
+which are taken to specify the value of the desired character.
+If the character following a backslash (caret) is not one of those
+specified, the backslash (caret) is ignored.
+.TP
+string
+A string is a sequence of characters surrounded by double quotes, as in
+\fB"..."\fR.
+In a string,
+the double quote character \fB"\fR must be preceded by a \\;
+in addition,
+the same escapes as described for character constants may be used.
+.PP
+Examples of values are:
+.nf
+
+ 7
+ -1.293e3
+ 0x10a5
+ 0o1273
+ 'x'
+ "a string"
+ an_other_value
+.fi
+.SH COMMENTS
+Comments may appear anywhere within a profile.
+They are introduced by the character `#' and are terminated by
+the succeeding newline.
+.SH EXAMPLES
+The empty stanza.
+.nf
+
+{
+}
+.fi
+.PP
+A stanza in the configuration file of a fictitious network server.
+.nf
+.ta \w'queue 'u +\w'cost_per_packet 'u +\w'0o125 0x1af 'u
+
+queue net*
+{
+ priority 7 # integer
+ expect "who is it" # string
+ send '?' # character
+ flags[0-9] 0o125 0x1af # octal and hex
+ cost_per_packet 0.28 # floating
+ device /dev/net # other
+ homebrew # a name with no associated value
+}
+.fi
+.DT
+.PP
+A password file entry recast as a stanza.
+.nf
+.ta \w'brown 'u +\w'password 'u
+
+brown
+{
+ password /bObOZtyGclMV
+ userid 225
+ groupid 30
+ home /home/brown
+ shell /bin/csh
+}
+.fi
+.DT
+.PP
+A termcap entry recast as a stanza.
+.nf
+.ta \w'adm3a 'u +\w'mm 'u
+
+adm3a
+{
+ fullname "lsi adm3a"
+ am
+ bs
+ cm "\\e=%+ %+ "
+ cl "1^Z"
+ co 80
+ li 24
+ ho '^^'
+ ma "^K^P"
+ nd '^L'
+ up '^K'
+}
+.fi
+.SH AUTHOR
+Michael Gorlick, TRW
+.SH SEE ALSO
+glob(3), profile(3)
diff --git a/dviware/quicspool/man/qmsquery.l b/dviware/quicspool/man/qmsquery.l
new file mode 100644
index 0000000000..e5b833ef72
--- /dev/null
+++ b/dviware/quicspool/man/qmsquery.l
@@ -0,0 +1,258 @@
+.\" $Header: qmsquery.l,v 1.1 88/01/15 12:58:36 simpson Rel $
+.\" $Log: qmsquery.l,v $
+.\" Revision 1.1 88/01/15 12:58:36 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:58 simpson
+.\" beta test
+.\"
+.TH QMSQUERY 3 TRW
+.UC
+.SH NAME
+qmsquery \- routines to query the status of a QMS printer
+.SH SYNOPSIS
+.nf
+#include <local/qms.h>
+.sp
+qmsopen(writefd, readfd)
+int writefd, readfd;
+.sp
+struct qmsmap *qmsmap(north, south, west, east)
+double north, south, west, east;
+.sp
+struct qmspag *qmspag()
+.sp
+struct qmsovl *qmsovl()
+.sp
+struct qmspfp *qmspfp()
+.sp
+struct qmsopc *qmsopc()
+.sp
+struct qmsram *qmsram()
+.sp
+struct qmsfnt *qmsfnt()
+.sp
+struct qmsver *qmsver()
+.sp
+qmsclose()
+.sp
+void qmsmapfree(mapinfo)
+struct qmsmap *mapinfo;
+.sp
+void qmsovlfree(ovlinfo)
+struct qmsovl *ovlinfo;
+.sp
+void qmspfpfree(pfpinfo)
+struct qmspfp *pfpinfo;
+.sp
+void qmsopcfree(opcinfo)
+struct qmsopc *opcinfo;
+.sp
+void qmsfntfree(fntinfo)
+struct qmsfnt *fntinfo;
+.fi
+.SH DESCRIPTION
+These routines query the QMS printer for internal information. The QMS
+printer must be connected through two sets of serial lines.
+The QMS laser printers read data through one serial line (the daughter
+board port)
+and send status
+information through their debugger port on another serial line.
+Qmsopen and qmsclose return 1 on success, 0 on error.
+The *free routines free the space containing the structures returned
+by the rest of the routines.
+NULL is used by qmsmap, qmspag, qmsovl, qmspfp, qmsopc, qmsram, qmsfnt and
+qmsver to designate an empty list or an error.
+All of the
+routines except qmsopen, qmsclose and the *free routines
+will displace the current position in the QMS printer
+so you have to reposition the virtual QMS cursor with the tab and justify
+commands after using these routines.
+All of the coordinates are given in inches and
+the routines will change the
+QMS input syntax to inches if it is not already.
+Since the routines are written in
+.IR lex (1)
+and
+.IR yacc (1),
+the
+.I -ll
+library must be loaded when using the routines.
+A variety of structures stored in the header file
+.I qms.h
+are used to return information.
+.nf
+.sp
+/* Structure returned when requesting MAP info */
+struct qmsmap {
+ int count; /* Byte count */
+ int checksum;
+ char *data; /* "count" bytes of data terminated by NULL */
+ struct qmsmap *next;
+};
+
+/* Structure returned when requesting PAG info */
+struct qmspag {
+ char PO; /* Orientation. 'P' or 'L' */
+ float TM; /* Top margin */
+ float BM; /* Bottom margin */
+ float LM; /* Left margin */
+ float RM; /* Right margin */
+ float LPI; /* Lines per inch */
+ float CPI; /* Characters per inch. 0 == Proportional */
+ short PT; /* Paper Tray. 0 == Top tray. 1 == Bottom Tray */
+ short PS; /* Page Size. 0 == Short. 1 == Long. 2 == European A-4 */
+ char SO; /* Stacker Offset. 'Y' or 'N' */
+ short CC; /* Copy Count */
+};
+
+/* Structure returned when requesting OVL info */
+struct qmsovl {
+ enum { regular, automatic } ovltype;
+ /* The number and size are only valid for regular overlays */
+ int ovlnumber; /* Overlay number */
+ int ovlsize; /* Overlay size in bytes */
+ struct qmsovl *next;
+};
+
+/* Structure returned when requesting PFP info */
+struct qmspfp {
+ char *module; /* Name of installed module */
+ struct qmspfp *next;
+};
+
+/* Structure returned when requesting OPC info */
+struct qmsopc {
+ struct optnode *OC1, *OC2, *OC3, *OC4, *OC5;
+};
+
+struct optnode {
+ short option; /* Number of option */
+ struct optnode *next;
+};
+
+/* Structure returned when requesting RAM info */
+struct qmsram {
+ short TR; /* Total Ram memory in printer */
+ short AR; /* Current Available Ram memory */
+ short FR; /* Font Ram memory used */
+ short OR; /* Overlay Ram memory used */
+};
+
+/* Structure returned when requesting FNTB info */
+struct qmsfnt {
+ struct fontnode *rom; /* List of rom fonts */
+ struct fontnode *ram; /* List of ram fonts */
+};
+
+struct fontnode {
+ char orientation; /* 'P' or 'L' */
+ short number; /* Font number */
+ long bytes; /* Number of bytes in printer */
+ char version;
+ char class; /* '1' or '2' */
+ struct fontnode *next;
+};
+
+/* Structure returned when requesting version information */
+struct qmsver {
+ float version; /* Version of QUIC */
+ float firmware; /* Version of the firmware */
+ struct date { /* Date of the firmware */
+ short month;
+ short day;
+ short year; /* Without the 1900 */
+ } date;
+};
+.sp
+.fi
+Please refer to the above structures for the discussion of the following
+routines.
+.TP
+qmsopen(writefd, readfd)
+This routine does some internal housekeeping before you can use any of
+the other routines.
+It should be called exactly once before all the other
+routines.
+Writefd is an open file descriptor on the line to the QMS printer
+(the daughter board port).
+Readfd is an open file descriptor on the line to the QMS printer debugger
+port. It is used for reading status information from the QMS printer.
+These routines do not fiddle with the tty bits. Do this elsewhere.
+.TP
+qmsmap(north, south, west, east)
+This function returns a hex dump of a portion of the QMS page memory.
+The coordinates of the dump should be given in inches from the top and left
+of the page. The linked list returned is allocated by
+.IR malloc (3)
+and sorted in the order the data comes from the QMS printer.
+That is, the first node of data is the first line of data returned by the
+QMS printer.
+.TP
+qmspag()
+This function returns information about page formatting specifications.
+The value returned is static and overwritten by each call.
+.TP
+qmsovl()
+This function returns information on currently defined overlays.
+The linked list returned is allocated by
+.IR malloc (3).
+If an automatic overlay is loaded then one and only one of the nodes in
+the list will have ovltype automatic.
+The variables ovlnumber and ovlsize are not used for an automatic overlay.
+The return value ovlinfo is NULL if no overlays are loaded.
+.TP
+qmspfp()
+This function returns a linked list of the currently installed PFP modules.
+The linked list is allocated by
+.IR malloc (3).
+If no PFP modules are installed, pfpinfo is NULL.
+.TP
+qmsopc()
+This function returns information on the currently set option classes.
+The return structure contains a set of five linked lists allocated by
+.I malloc (3)
+but the structure qmsopc is static and its values are overwritten after each
+call.
+If no options are set for one of the five option classes then the
+appropriate list is
+NULL.
+.TP
+qmsram()
+This function returns information about ram usage in the printer.
+The value returned is static and overwritten after each call.
+The ram values are given in blocks. QMS ram memory consists of 16 bit words
+in 1024 byte blocks.
+.TP
+qmsfnt()
+This function returns two lists containing the rom and ram fonts loaded.
+The qmsfnt structure is static but the two lists are allocated by
+.IR malloc (3).
+If no rom or ram fonts are loaded the appropriate list is NULL.
+.TP
+qmsver()
+This function returns information about the firmware.
+The version information returned is stored in a static area that is
+overwritten with each call.
+.TP
+qmsclose()
+This function closes the tty lines used by the above routines. It should
+be called when you are done using the routines.
+.PP
+The *free routines return the space allocated by
+.IR malloc (3)
+for further use.
+Free space routines only exist for the routines above which use
+.IR malloc (3)
+to allocate space. Static areas are not freed by the free routines.
+.SH FILES
+.nf
+.ta \w'/dev/tty* 'u
+/dev/tty* Usually the two serial lines to the printer
+.fi
+.SH AUTHOR
+Scott Simpson, TRW
+.SH SEE ALSO
+lex(1), yacc(1), malloc(3)
+.br
+QUIC Programming Manual
diff --git a/dviware/quicspool/man/quicspool.l_backup b/dviware/quicspool/man/quicspool.l_backup
new file mode 100644
index 0000000000..495f42d4c1
--- /dev/null
+++ b/dviware/quicspool/man/quicspool.l_backup
@@ -0,0 +1,321 @@
+.\" $Header: quicspool.l.backup,v 1.2 88/02/03 08:55:18 simpson Exp $
+.\" $Log: quicspool.l.backup,v $
+.\" Revision 1.2 88/02/03 08:55:18 simpson
+.\" added tpic support
+.\"
+.\" Revision 1.1 88/01/15 12:58:40 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:56:59 simpson
+.\" beta test
+.\"
+.de BD
+.nf
+.in +3m
+.sp
+..
+.de ED
+.fi
+.in -3m
+.sp
+..
+.if t .ds TX T\h'-.1667m'\v'.22m'E\h'-.125m'\v'-.22m'X
+.if n .ds TX TeX
+.if t .ds LX L\v'-.22m'a\v'.22m'T\h'-.1667m'\v'.22m'E\h'-.125m'\v'-.22m'X
+.if n .ds LX LaTeX
+.TH QUICSPOOL 7 TRW
+.UC
+.SH NAME
+quicspool \- idiosyncracies of the QMS filters for the Berkeley
+spooling system
+.SH ORIGIN
+TRW
+.SH DESCRIPTION
+.I Quicspool
+is a set of filters for driving QMS or Talaris laser printers under the
+Berkeley spooling system.
+The filters have some features that are not documented in the
+manual pages. These features are described here.
+.PP
+Raw input files should be sent to
+.IR lpr (1)
+with the
+.B -l
+option.
+The raw option turns off translation of line feeds into
+carriage-return/line-feed combinations.
+Since the data sent to the printer is scanned by
+.IR lex (1),
+the ASCII null character should not be sent.
+.PP
+The \*(TX and device-independent troff (ditroff)
+printer filters recognize certain commands that are not part of standard
+\*(TX and ditroff.
+\*(TX recognizes
+the ``\especial'' command when it is
+given the keyword
+``overlay''
+followed by a file in parentheses.
+This file could possibly have
+been generated by a graphics package and should be a sequence of QUIC
+commands to dump out to the printer at that point in the \*(TX
+document.
+For example, the \*(TX command
+.BD
+\especial{overlay(\estring~/quicfile)}
+.ED
+would cause the filter to look for the file
+``quicfile''
+in the user's home directory and output it to the printer at that
+point.
+The ``\estring'' control sequence is necessary or \*(TX expands ~ into
+.BD
+\epenalty \e@M \e
+.ED
+which is not what you want.
+Ditroff also recognizes the ``overlay'' keyword but it has a different syntax.
+If you insert the command
+.BD
+\e!x X overlay(~/quicfile)
+.ED
+in your ditroff document, the contents of
+``quicfile''
+are dumped to the printer at that point.
+.PP
+Tilde escapes are recognized just as in the C shell; that is, names may
+be given after the tilde. Spaces are ignored in the string
+except within the keyword
+``overlay''
+or within the file name where they would serve as delimiters.
+Relative pathnames are not recommended since the filters run in the
+spooling directory of the printer.
+To preserve protections, the filters switch to the uid of the user
+after they begin execution.
+.PP
+The \*(TX driver also provides support for
+.IR tpic ,
+a graphics drawing package for \*(TX that is equivalent to the
+.IR pic (1)
+program for AT&Ts device-independent troff.
+Tpic was written by Tim Morgan at UC Irvine (morgan@ics.uci.edu).
+.PP
+The \*(TX user can use his or her own fonts, possibly created by
+METAFONT, by giving a full pathname to \*(TX's font definition command or
+putting the appropriate fonts in the path of the
+TEXFONTS environment variable. Normally, \*(TX uses this path to
+search for \*(TX Font Metric (tfm) files for font width information.
+This path is also searched by the \*(TX filter for packed font raster files
+(pk format).
+A font file can be converted from the generic font format created by
+METAFONT to the pk format with the program
+.IR gftopk (1).
+Since the filter process is not an ancestor of the user's login
+shell, its execution environment
+is that of root. Consequently, the filter searches the ``.profile'' file
+(if you are using the Bourne or Korn shell) or the ``.cshrc'' and ``.login''
+files (if you are using the C shell) for the TEXFONTS environment
+variable.
+The filter looks for a line of the form
+.BD
+TEXFONTS=...
+.ED
+or
+.BD
+setenv TEXFONTS ...
+.ED
+in the appropriate file and uses the string represented by the
+ellipses as the path for TEXFONTS.
+The filter recognizes continuation lines in the file but the path
+should not be surrounded by quotes since it does not do shell
+interpretation. Tilde escapes and the prefix $HOME are recognized in
+a shell pathname. There should be a single space before and after
+the word ``TEXFONTS'' when you are using the C shell.
+If the user is from a remote host, then obviously the environment
+variable scheme will not work so no files are searched. Also, fonts
+that are not loaded from the system font directory are deleted at the
+completion of every job. This way, users will not accidently use someone
+else's previously loaded font.
+.PP
+There are two queues for each printer\-one for portrait mode and one for
+landscape mode. The landscape queue normally has the same name as the portrait
+queue but the landscape queue's name is suffixed with an `l'.
+Suppose you have a portrait queue called
+``grumpy''
+and a corresponding landscape queue
+``grumpyl''.
+If you queue a file to the grumpy queue and a file is already printing in the
+grumpyl queue, then when you do an
+.IR lpq (1)
+you will get a message
+.BD
+waiting for grumpy to become ready (offline ?)
+.ED
+stating that the grumpy job cannot begin until the grumpyl job is completed.
+You can list the grumpyl queue using the
+.B -P
+flag of lpq.
+.SH \*(TX FONTS
+It is important when using \*(TX to make sure that the size of the PK font
+you are requesting exists.
+If the size does not exist, then the closest size is selected. This
+can cause some strange output when a document is printed if you
+use a font that doesn't exist.
+Fonts normally have a name that looks something like
+.BD
+font\fId\fP.\fIm\fPpk
+.ED
+where ``font\fId\fP'' is the name of the font you give to \*(TX,
+.I d
+is the design size of the font (i.e., the size the font looks best
+at) and
+.I m
+is the magnification.
+Normally fonts are designed with a particular size in mind.
+For example, although cmr10.200pk and cmr5.400pk are both ten points
+high on a 200 dots per inch device, the cmr5 font is a magnified five
+point font that looks crummy at twice its regular size.
+The version designed for ten points has its characters thinned out
+and looks better at the size it was intended for.
+Some fonts look good at any magnification and these fonts normally
+have the
+.I d
+missing from the file name.
+.PP
+The equation 5\fIm\fP/1.5, where
+.I m
+is as above,
+gives the appropriate scale factor if you wish to declare a particular font
+to \*(TX.
+For example, if the
+largest cmr10 font is cmr10.746pk (i.e., \emagstep5), then you
+can declare
+this font in \*(TX by
+.BD
+\efont\ebigfont=cmr10 scaled 2487
+.ED
+If you wish to declare a font using \*(TX's ``at \fIsize\fP'',
+you would use the equation \fIdm\fP/300.
+For example, you could also declare the cmr10 font by
+.BD
+\efont\ebigfont=cmr10 at 24.866pt
+.ED
+.SH GENERIC QUEUEING
+Lpr queues to a specific printer.
+If you wish to queue to any idle printer, you can use the
+.I glpr
+script.
+When your site has multiple printers, this script will look for an idle QMS
+printer if there is one, and queue to it.
+If it cannot find an idle printer, it will attempt to queue to a printer that
+is not stopped or disabled.
+If you wish to queue in landscape mode,
+give the
+.B -L
+option to the script.
+There is also a
+.I glpq
+script that prints out the jobs in each queue.
+.SH TROFF SCRIPTS
+There are two versions of troff on the market: C/A/T troff for the GSI CAT-4
+phototypesetter
+and AT&T's ditroff,
+which supports a variety
+of devices.
+The quicspool software supports the QMS printer for both versions of troff.
+The naming convention for your
+troff varies depending on whether you have purchased
+ditroff or not.
+If you have a stock BSD system and you have not purchased
+ditroff, then the C/A/T troff will be named ``troff\|''. If you have purchased
+ditroff, then the C/A/T troff will be named ``otroff\|''
+and ditroff will be named ``troff\|''.
+The C/A/T troff corresponds to the
+.B -t
+option of lpr and ditroff corresponds to the
+.B -n
+option.
+Unfortunately, you can not simply pipe output from either troff directly
+into lpr and get correct output.
+Instead, use the script
+.I qtroff
+if you wish to use the C/A/T troff and
+.I ditroff
+if you wish to use the device-independent troff.
+You needn't pipe the output from these scripts into lpr.
+The scripts queue the output automatically.
+.PP
+Since both troff and lpr have some conflicting options, the scripts need
+to resolve who to pass the flags to on the command line.
+The flags are passed as follows:
+.sp
+.in +1i
+.ta +1i
+to otroff \fIo\fP,\fIn\fP,\fIm\fP,\fIR\fP,\fIi\fP,\fIq\fP,\fIf\fP,\fIb\fP,\fIa\fP,\fIp\fP,\fIF\fP
+.br
+to ditroff \fIo\fP,\fIn\fP,\fIm\fP,\fIR\fP,\fIi\fP,\fIq\fP,\fIz\fP,\fIa\fP,\fIT\fP
+.br
+to lpr \fIP\fP,\fI#\fP,\fIC\fP,\fIJ\fP,\fI1\fP,\fI2\fP,\fI3\fP,\fI4\fP,\fIw\fP,\fIl\fP,\fIt\fP,\fId\fP,\fIg\fP,\fIv\fP,\fIc\fP,\fIr\fP,\fIM\fP,\fIh\fP,\fIs\fP,\fIL\fP
+.in -1i
+.sp
+Notice that
+.B -m
+option of lpr
+and the
+.B -r
+option of troff
+are not available.
+If you wish to pass these two options on to lpr or troff,
+you can use the capital
+letters
+.B -M
+and
+.BR -R ,
+respectively.
+Since these scripts call
+.I glpr
+you can give the option
+.B -L
+to get landscape mode output.
+.PP
+If you are running
+.IR eqn (1)
+or
+.IR pic (1)
+and you are running ditroff, you will need to give the
+.B -Tqms
+flag to eqn and/or pic.
+.IR Tbl (1)
+does not need such a flag.
+If your system administrator has not installed the appropriate changes to
+your ditroff version of eqn and pic, try using the
+.B -TX9700
+flag instead.
+If you have ditroff and you wish to pipe the output from eqn to
+.I qtroff
+instead of
+.IR ditroff ,
+you will need to give the
+.B -Tcat
+option to eqn to generate output for the C/A/T phototypesetter.
+.PP
+The bell system logo (\e(bs) has been replaced by the TRW logo (\(bs)
+in both versions of troff.
+.SH FILES
+.nf
+.ta \w'--WBTEX-- 'u
+--WBTEX-- \*(TX write-black engine font directory
+--WWTEX-- \*(TX write-white engine font directory
+--OFONT-- old troff font directory
+--DIFONT-- device independent troff font directory
+--FILTER-- filter directory
+.fi
+.SH AUTHOR
+Scott Simpson
+.SH SEE ALSO
+csh(1), eqn(1), gftopk(1),
+ksh(1), lex(1), lpq(1), lpr(1), lprm(1), mf(1), pic(1), sh(1), tbl(1),
+tex(1), troff(1), lpc(8)
+.SH BUGS
+Shading of ellipses in
+.I tpic
+does not work.
diff --git a/dviware/quicspool/man/shift.l b/dviware/quicspool/man/shift.l
new file mode 100644
index 0000000000..0de48b7805
--- /dev/null
+++ b/dviware/quicspool/man/shift.l
@@ -0,0 +1,37 @@
+.\" $Header: shift.l,v 1.1 88/01/15 12:58:43 simpson Rel $
+.\" $Log: shift.l,v $
+.\" Revision 1.1 88/01/15 12:58:43 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:57:00 simpson
+.\" beta test
+.\"
+.TH SHIFT 3 TRW
+.UC
+.SH NAME
+string_downshift, string_upshift \- shift case of strings
+.SH SYNOPSIS
+.nf
+.B char *string_downshift(s)
+.B char *s;
+
+.B char *string_upshift(s)
+.B char *s;
+
+.B cc ... -ltrw
+.fi
+.SH DESCRIPTION
+.I String_downshift
+shifts
+.I s
+in place to lowercase.
+.I String_upshift
+shifts
+.I s
+in place to uppercase.
+Both routines return
+.I s.
+.SH AUTHOR
+Michael Gorlick, TRW
+.SH SEE ALSO
+ctype(3), string(3)
diff --git a/dviware/quicspool/man/standard.l b/dviware/quicspool/man/standard.l
new file mode 100644
index 0000000000..5146c71c44
--- /dev/null
+++ b/dviware/quicspool/man/standard.l
@@ -0,0 +1,266 @@
+.\" $Header: standard.l,v 1.1 88/01/15 12:58:46 simpson Rel $
+.\" $Log: standard.l,v $
+.\" Revision 1.1 88/01/15 12:58:46 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:57:01 simpson
+.\" beta test
+.\"
+.TH STANDARD 5 TRW
+.UC
+.SH NAME
+standard \- standard include file for portability
+.SH ORIGIN
+TRW
+.SH SYNOPSIS
+#include <local/standard.h>
+.SH DESCRIPTION
+.I Standard
+is a set of defines, macro definitions and typedefs that provide
+portable constructs
+and machine specific information
+for different machine architectures and C compilers.
+Basically, the include file is divided up into four sections:
+machine
+environment
+information,
+standard type definitions,
+useful constants and useful macros.
+.PP
+The environment of the computer a program is executing on is described by
+the following defines:
+.TP
+HAS_UNSIGNED_SHORT
+If defined, unsigned shorts are supported.
+.TP
+CHAR_IS_SIGNED
+If defined, chars are signed.
+.TP
+HAS_UNSIGNED_CHAR
+If defined, unsigned chars are supported.
+.TP
+HAS_UNSIGNED_LONG
+If defined, unsigned longs are supported.
+.TP
+HAS_VOID
+If defined, the void function type is supported.
+.TP
+BITS_PER_CHAR
+Defined as the number of bits in a char.
+.TP
+BITS_PER_SHORT
+Defined as the number of bits in a short.
+.TP
+BITS_PER_INT
+Defined as the number of bits in an int.
+.TP
+BITS_PER_LONG
+Defined as the number of bits in a long.
+.TP
+BITS_PER_POINTER
+Defined as the number of bits in a pointer.
+.PP
+There are a set of machine independent type definitions and macros.
+.TP
+Tiny
+A signed character type.
+.TP
+TINY(\fIx\fP)
+An extraction macro for a signed character. The value of the macro is an
+integer that will be sign extended if the most significant bit of the
+character is one.
+.TP
+UnsignedTiny
+An unsigned character type.
+.TP
+UNSIGNED_TINY(\fIx\fP)
+An extraction macro for an unsigned character. The value of the macro is an
+integer that will not be signed extended even if the most significant bit
+of the character is one.
+.TP
+Short
+Simply a short type. All compilers have a short type but this is included
+for lexical consistency.
+.TP
+UnsignedShort
+An unsigned short type.
+.TP
+UNSIGNED_SHORT(\fIx\fP)
+An extraction macro for an unsigned short.
+The value of the macro is an integer that will not be sign extended even if
+the most significant bit of the short is one.
+.TP
+Integer
+The int type. Included for lexical consistency.
+.TP
+UnsignedInteger
+The unsigned integer type.
+.TP
+Long
+The long type.
+.TP
+UnsignedLong
+An unsigned long type.
+.TP
+UNSIGNED_LONG(\fIx\fP)
+An extraction macro for an unsigned long integer.
+Not all compilers support unsigned longs so we may have to simulate them.
+.TP
+TinyBoolean
+A tiny boolean value. Boolean types take on only the values TRUE and FALSE.
+.TP
+Boolean
+A regular boolean value.
+.TP
+Character
+The char type. Included for lexical consistency.
+.TP
+TinyBits
+A type used only for bit set, clear and test operations.
+.TP
+Bits
+The regular size bit type.
+.TP
+LongBits
+The long size bit type.
+.TP
+Void
+The void type. If the void type is not supported then it is defined as
+an int.
+.TP
+Import
+The storage class used when importing variables from separate files.
+It is defined to be the keyword
+.I extern.
+.TP
+Export
+The storage class used when exporting variables from separate files.
+In C, you needn't
+declare that a variable is available to other files if it is declared
+outside a function so this is defined as a no-op.
+.TP
+Local
+The static storage class.
+.PP
+A number of useful constants are also defined.
+.TP
+TRUE and FALSE
+The values 1 and 0 respectively.
+.TP
+SUCCEED and FAIL
+The values 0 and 1 respectively. These are normally used as exit statuses.
+.TP
+ON
+A long with all the bits set.
+.TP
+OFF
+A long with no bits set.
+.TP
+STANDARD_IN
+Defined as 0.
+.TP
+STANDARD_OUT
+Defined as 1.
+.TP
+STANDARD_ERROR
+Defined as 2.
+.TP
+MAX_TINY
+The maximum value a Tiny type can hold.
+.TP
+MIN_TINY
+The minimum value a Tiny type can hold.
+.TP
+MAX_UNSIGNED_TINY
+The maximum value an UnsignedTiny type can hold.
+.TP
+MIN_UNSIGNED_TINY
+The minimum value an UnsignedTiny type can hold.
+.TP
+MAX_SHORT
+The maximum value a Short type can hold.
+.TP
+MIN_SHORT
+The minimum value a Short type can hold.
+.TP
+MAX_UNSIGNED_SHORT
+The maximum value an UnsignedShort type can hold.
+.TP
+MIN_UNSIGNED_SHORT
+The minimum value an UnsignedShort type can hold.
+.TP
+MAX_INTEGER
+The maximum value an Integer type can hold.
+.TP
+MIN_INTEGER
+The minimum value an Integer type can hold.
+.TP
+MAX_UNSIGNED_INTEGER
+The maximum value an UnsignedInteger type can hold.
+.TP
+MIN_UNSIGNED_INTEGER
+The minimum value an UnsignedInteger type can hold.
+.TP
+MAX_LONG
+The maximum value a Long type can hold.
+.TP
+MIN_LONG
+The minimum value a Long type can hold.
+.TP
+MAX_UNSIGNED_LONG
+The maximum value an UnsignedLong type can hold.
+.TP
+MIN_UNSIGNED_LONG
+The minimum value an UnsignedLong type can hold.
+.TP
+BITS_PER_BYTE
+The number of bits in a byte.
+.PP
+A number of useful macro are also defined.
+.TP
+MAX(\fIx\fP, \fIy\fP)
+Returns the maximum value of
+.I x
+and
+.I y.
+.TP
+MIN(\fIx\fP, \fIy\fP)
+Returns the minimum value of
+.I x
+and
+.I y.
+.TP
+ABS(\fIx\fP)
+Returns the absolute value of its parameter. This works for integers and
+reals.
+.TP
+ROUND(\fIx\fP)
+Returns
+its parameter rounded to the nearest integer value.
+.TP
+CEILING(\fIx\fP)
+Returns the ceiling of its parameter.
+.TP
+FLOOR(\fIx\fP)
+Returns the floor of its parameter.
+.TP
+EQ(\fIs\fP, \fIt\fP)
+Returns true if the two strings passed to it as parameters are equal.
+.TP
+EQN(\fIs\fP, \fIt\fP, \fIn\fP)
+Returns true if the two strings passed to it as parameters are equal in
+the first
+.I n
+characters (as in
+.IR strcmp ).
+.SH FILES
+.nf
+.ta \w'/usr/include/local/standenviron.h 'u
+/usr/include/local/standard.h
+/usr/include/local/standenviron.h
+/usr/include/local/standtype.h
+/usr/include/local/standconst.h
+/usr/include/local/standmacro.h
+.fi
+.SH AUTHOR
+Michael Gorlick
diff --git a/dviware/quicspool/man/tfm2difont.l_backup b/dviware/quicspool/man/tfm2difont.l_backup
new file mode 100644
index 0000000000..b4b9a15df3
--- /dev/null
+++ b/dviware/quicspool/man/tfm2difont.l_backup
@@ -0,0 +1,79 @@
+.\" $Header: tfm2difont.l.backup,v 1.1 88/01/15 12:58:48 simpson Rel $
+.\" $Log: tfm2difont.l.backup,v $
+.\" Revision 1.1 88/01/15 12:58:48 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:57:02 simpson
+.\" beta test
+.\"
+.if t .ds TX T\h'-.1667m'\v'.22m'E\h'-.125m'\v'-.22m'X
+.if n .ds TX TeX
+.TH TFM2DIFONT 1 TRW
+.UC
+.SH NAME
+tfm2difont \- convert tfm files to ditroff compatible width tables
+.SH ORIGIN
+TRW
+.SH SYNOPSIS
+tfm2difont
+.B [ -s ]
+.B [ -w
+.I width
+.B ]
+.B [ -l
+.I ligature
+.B ]
+\&...
+file...
+.SH DESCRIPTION
+.IR Tfm2difont (1)
+converts tfm files to ditroff compatible width tables which can subsequently
+be run through
+.I makedev
+and used with ditroff.
+A file is created with the same name as the tfm file with the `.tfm' extension
+removed.
+The `name' and `internalname' are set to the same name as the font.
+.PP
+The
+.B -s
+flag causes the font(s) to be considered special.
+The
+.B -w
+flag allows you to set
+.I spacewidth.
+Normally, a non-special font is assumed to have the ligatures
+.BR ff ,
+.BR fi ,
+.BR fl ,
+.B ffi
+and
+.BR ffl .
+The
+.B -l
+flag causes a named ligature to be removed.
+Any number of
+.B -l
+flags may be given.
+Ligatures are ignored if the font is special since special fonts don't have
+ligatures.
+Because the `a' character is used for kerning information in non-special
+fonts, it must exist in a non-special font.
+.PP
+The created width table contains the size of the characters at 10 points
+.RI ( unitwidth
+in the DESC file).
+.IR Troff (1)
+scales the width of characters depending on the size currently in use.
+So, if a 5 point font is being used, the width is halved.
+Because of this, you cannot create a separate font with reshaped characters
+for five points with
+METAFONT.
+\*(TX allows you to do this though.
+.SH FILES
+.ta \w'--FONTDIR-- '
+--FONTDIR-- device-independent troff font directory
+.SH AUTHOR
+Scott Simpson
+.SH SEE ALSO
+mf(1), tex(1), font(5)
diff --git a/dviware/quicspool/man/tfm2ofont.l_backup b/dviware/quicspool/man/tfm2ofont.l_backup
new file mode 100644
index 0000000000..37b930f742
--- /dev/null
+++ b/dviware/quicspool/man/tfm2ofont.l_backup
@@ -0,0 +1,48 @@
+.\" $Header: tfm2ofont.l.backup,v 1.1 88/01/15 12:58:52 simpson Rel $
+.\" $Log: tfm2ofont.l.backup,v $
+.\" Revision 1.1 88/01/15 12:58:52 simpson
+.\" initial release
+.\"
+.\" Revision 0.1 87/12/11 17:57:03 simpson
+.\" beta test
+.\"
+.if t .ds TX T\h'-.1667m'\v'.22m'E\h'-.125m'\v'-.22m'X
+.if n .ds TX TeX
+.TH TFM2OFONT 1 TRW
+.UC
+.SH NAME
+tfm2ofont \- convert tfm files to old troff compatible width tables
+.SH ORIGIN
+TRW
+.SH SYNOPSIS
+tfm2ofont
+.B [ -s ]
+file...
+.SH DESCRIPTION
+.IR Tfm2ofont (1)
+converts tfm files to old
+troff compatible width tables (C program files) which can subsequently
+be compiled
+and used with troff.
+A file is created with the same name as the tfm file with the `.tfm' extension
+removed, `ft' prepended and `.c' appended.
+.PP
+The
+.B -s
+flag causes the font(s) to be considered special.
+.PP
+.IR Otroff (1)
+scales the width of characters depending on the size currently in use.
+So, if a 5 point font is being used, the width is halved.
+Because of this, you cannot create a separate font with reshaped characters
+for five points with
+METAFONT.
+\*(TX allows you to do this though.
+.SH FILES
+.ta \w'--FONTDIR-- '
+--FONTDIR-- old troff font directory
+.SH AUTHOR
+Scott Simpson
+.SH SEE ALSO
+mf(1), tex(1), troff(1)
+