[comp.sources.unix] v10i048: CRC Plotting Package, Part04/06

rs@uunet.UUCP (07/09/87)

Submitted-by: "Wombat" <rsk@j.cc.purdue.edu>
Posting-Number: Volume 10, Issue 48
Archive-name: crc_plot/Part04



#	This is a shell archive.
#	Remove everything above and including the cut line.
#	Then run the rest of the file through sh.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar:	Shell Archiver
#	Run the following text with /bin/sh to create:
#	doc [other files... don't panic --r$]
mkdir doc
chdir doc
cat << \SHAR_EOF > HowtoInstall
.NP
.EQ
delim $$
.EN
.ce
Notes on how to install
.br
.sp
.ce
"The CRC Graphics Package"
.br
.sp
.ce 4
Carl Crawford
School of Electrical Engineering
Purdue University
West Lafayette, IN  47901
.sp
.ce
Tel:~~317-494-3456
.sp
.ce 3
UUCP Address:~~VCBVAX!PUR-EE!CRC
~~~~~~~~~~~~~~~IHNP4!PUR-EE!CRC
~~~~~~~~~~~~~~~DECVAX!PUR-EE!CRC
.sp 2
.br
.ul
Introduction
.PP
This set of notes is to help new sites install
"the CRC graphics package"
on their systems.
The document first presents descriptions of the sources that are needed
to build the package.
Then how to compile and build the
package.
Finally,
how to configure the defaults to fit the system.
.sp
.ul
.ne 6
Sources
.PP
Create a source directory for the
graphics.
Currently the distribution tape
assumes that
.sp
.ce
/u/crc/graphics
.sp
is the root of the graphics system.
For the purpose of this paper,
.sp
.ce
$"~"~crc$
.sp
will indicate the root of the graphics source.
.PP
Within this directory,
these are the following sub-directories:
.sp
$"~"$crc/lib~~~~~~~~~~library subroutines
.br
$"~"$crc/src~~~~~~~~~~runtime programs
.br
$"~"$crc/charfont~~~~~character' font information
.br
$"~"$crc/doc~~~~~~~~~~nroff sources for documentation
.br
$"~"$crc/tmp~~~~~~~~~~junk directory.  (Ignore if present).
.sp
.PP
The library routines are subroutines
callable from either F77 or C.
Actual device control is done through pipes to programs in 
$"~"$crc/src.
The current drivers are:
.sp
$"~"$crc/src/gp.c~~~~~~Versatec electrostatic printer
.br
$"~"$crc/src/gp/p.c~~~~Printronix lineprinter
.br
$"~"$crc/src/hpd.c~~~~~HP Flatbed plotter
.br
$"~"$crc/src/gd.c~~~~~~Control/Grinnel image displays
.sp
The path names to the respective drivers are within 
the code.
Change them to reflect the configuration of your system.
'GPLP' pipes its output to 'OPR'.
If you don't have 'OPR',
just write directly to the printronix.
.sp 2
.ul
.ne 8
Installation First Time
.sp
.ul
.ti +5
Library Subroutines
.in +10
CD $"~"$crc/lib
.br
CC -c *.c
.br
AR CA /usr/lib/libG.a 'lorder*.c ltsort' (used to set up proper order
for a one-pass load.)
.sp
.in -10
.ne 8
Runtime
.br
.in +5
.br
CD~~$"~"$crc/src
.br
CC~~gplot.c~-i~-1G~-1m~-0\
.br
.ti +8
/u/bin/gplot
.br
.ti +12
*(note /u is the same as /usr)
.br
CC~~gp.c -0 /u/bin/gp
.br
CC~~gp/p.c -0 /u/bin/gp/p
.br
CC~~strip7.c -0 /u/bin/strip7
.br
mkdir~~/u/lib/graphics
.br
CC~~hpd.c -0 /u/lib/graphics/hpd
.br
CC~~gd.c -0 /u/lib(graphics)gd
.sp
.in -5
.ne 8
Charfont
.in +5
CD~~$"~"$crc/charfont
.br
CC~~genfont.c -0 genfont
.br
genfont /u/lib/graphics/font.5x7 \ < ifont.5x7
.br
(I just noticed that genfont.c is not up to date.
Just copy font.5x7 from the distribution tape).
.in -5
.sp
.PP
I realize that this is all very terse.
But if you look at the distribution tape,
and then at the 'makefiles',
it will be easy to figure out what I mean.
A note on the 'makefiles'.
At Purdue,
we run a network of machines.
The source for the network is on the 'A' machine
and all the other machines are updated from this
particular machine.
.PP
The first couple of lines in each section in each makefile is used
to update the local machine 
(A machine at Purdue).
The rest of each section gets the information
to other machines.
.sp 2
.ul
.ne 8
Documentation
.sp
.in +5
CD~~~~~$"~"$crc/doc
.br
mkdir~~/src/man/graphics/crc
.br
E~=~/src/man/graphics/crc
.br
for i in *.r
.br
DO
.br
~~~~~~~nroff S|i~>S|E/'basename~S|i'
.br
DONE
.in -5
.sp 2
.ul
.ne 8
Configuration
.PP
In /u/lib/graphics, there should
be four files:
.sp
.nf
                                     FORMAT
                      hpd.site       <machine name>
                      gd.site        <machine name>
                      gp.site        <machine name><size>
                      gplp.site      <-xx>
.fi
.sp
These files tell the respective programs where to send
the graphics output by default.
On the Purdue Network the
<machine name>
is one of the following:
.sp
.nf
.ne 8
                          local      $rarrow$ send output to local device
                          ve         Dual CPU VAX
                          vm         VAX
                          A          11/70
                          B          11/45
                          P          11/70
                          ARPA       11/45
.fi
.sp
If the <machine name> isn't local,
then the program 'ns'
is used to bring up a 'shell' on the
remote machine.
Set the <machine name> to the default machine.
If you do not have a network,
they should all be set to 'local'.
.PP
For gp/p.site the '-xx' specifies the default
network lineprinter.
.PP
For gp.site the <size> field is either 100 or 132.
This number is the size in 'words'
or 'bytes'
(I forget which one)
of the line length.
Most new  Versatecs are 100.
.sp 2
.ul
.ne 8
Update
.PP
All the 'makefiles'
are set up so that all the files are automatically
updated after changes are made.
This is useful on machines where
a network is used.
The program 'cs'
is just another version of the 'ns' routine,
but brings up a long shell.
.sp 2
.ul
.ne 8
Addition of New Network
.PP
This section is useful if you have
a set of machines that use the graphics package and a new one is added.
.PP
Get the following files from an existing machine.
.sp
.nf
.ne 6
                      /u/bin/gplot           
                            /gp              executable
                            /gplp
                            /strip7
.fi
.sp
.nf
.ne 6
           /u/lib/libG.a
                 /graphics/font.5x7
                          /gd
                          /hpd       executable
                          /gplp.site
                          /gp.site
                          /hpd.site
                          /gd.site
.fi
.sp
Then edit the *.site files to reflect the new machine.
.sp 2
.ul
Closing Remarks
.PP
If all the documentation/sources look confusing,
then I apologize.
The graphics package was originally written for my own use and
then released for general use.
I never expected the wide acceptance of the package.
Only in the past few months,
have changes been made to make it easy to 
use at other institutions.
This explains this handwritten document.
.PP
Please do not hesitate to call if you have problems.
.sp 4
.in +35
Carl Crawford
1 Oct.,  1981
.in -35
.sp 2
P.S.  Good luck and enjoy it once you get it working!
.bp
.BK 12
.ls 2
.nf
Computer File Information:
.in +10
Name of Paper:             "The CRC Graphics Package"
Author(s):                 Carl Crawford
Computer File Name:        CRCgraphic
Account Number:
Charges for this version:  2.0 hours
Done by:                   Jenny Owen
Date:                      Oct. 13, 1981
.in -10
.fi

SHAR_EOF
cat << \SHAR_EOF > introduction.0g
.TH INTRODUCTION 0g "CRC Graphics Package"
.SH NAME
Introduction to the CRC Graphics Package
.SH DESCRIPTION
The CRC Plotting Package is a device independent graphics
system. 
Subroutines for generating graphics exist for 
programs written in
FORTRAN or C.
A program called Qplot exists to plot binary vectors
generated as the output of any program.
.PP
The following list indicates the devices currently supported
by this package:
.sp 1
.nf
.ta 1.5i 3i 4.5i
DEVICE	MACHINE(S)	RESOLUTION	DISPLAY SIZE
		(bits)	(in plot units)
Plot(5)		32768 x 32768	Device Dependent
Comtal	ARPA	512 x 512	10 x 10
Grinnel	ARPA	512 x 512	10 x 10
Printronix	P, EC, PP, MA	512 x 512	10 x 10
Retro-Graphic		512 x 256	10 x 10
HP 7221A	EG	10240 x 7800	13.1 x 10
Tektronix 4014	EG	1024 x 780	13.1 x 10
Tektronix 4010	ARPA	1024 x 780	13.1 x 10
.fi
.PP
The MACHINE field indicates which 
network computers currently have
one of the specified devices.
The DISPLAY SIZE is the x by y size of the plotting
area for each device. 
The units are arbitrary and vary from device to
device.
All distances are measured in plot units.
.PP
The CRC Graphics package is currently in a state of transition.
The original package contained all the support for each device and this
accounted for a large number of lines in the package.
With the addition of a number of new graphics devices to
the network this approach has become unworkable so
now the package supports 
.I plot(5)
mode as the preferred output format.
The 
.I plot(1)
program is used to translate plot format into the actual
commands needed to drive each graphics device.
.PP
In addition to the 
.I plot
format, the CRC package supports two types of output formats.
It is anticipated that support for these two formats
will end sometime in the future and users will use the 
.I plot(1g)
program to obtain all output.
The CRC package can talk directly to 
Tektronix 4010 (or 4014) displays
and HP 7221A flat-bed plotters.
The Retro-Graphic works the same way as a Tektronix terminal.
Finally, a number of devices can display graphics on
a 512 by 512 bit plane. 
This bit map can then be copied to one of the
following devices: Comtal graphics overlay, Comtal image display,
Grinnell graphics overlay, Grinnell image display,
or a Printronix line printer. 
.PP
The bit plane can also be written out to a file.
The programs
Gplp (1) can be used to obtain overlayed outputs on
the Printronix.
.sp
The rest of this document is subdivided into four sections. They are:
.sp
.nf
1) Documentation of Qplot, Strip7, Gplp, Hpd, and Gd.
2) Documentation of user callable subroutines.
3) Character font information.
4) Examples. 
.fi
.PP
Online, all of this information is available with:
.sp
.nf
	$help graphics/crc

.fi
SHAR_EOF
cat << \SHAR_EOF > plot3d.1g
.TH PLOT3D 1 "CRC Graphics Package"
.SH NAME
plot3d - Plot 3 dimensional surfaces
.SH SYNOPSIS
plot3d [arguments...]
.SH DESCRIPTION
.B Plot3d 
prints a view of a three dimensional surface.
By using 
.B plot3d
with no arguments, a graph
will be generated on the 
default Printronix line printer as defined 
in 
.B gplp(1).
If ARPA is the host machine, the output will appear
on the Comtal graphics overlay bit-plane zero.
.PP
A matrix of binary floating point numbers will
be read from a file called `z' and used as the z value at each point.
This vector will be displayed against a program generated x-y matrix
containing integers from zero to the number of points in each
direction.
The points in the file are assumed
to be rows of values along lines of constant y.
See the appendix of the 
.I qplot(1g)
manual page for more information about the data formats.
.PP
The input for 
.B plot3d
can be either a binary or an ASCII file.
In a binary file the data is coded in the machine's
internal format.
The file can be generated using the 
.B write
statement
in C or an unformatted write in Fortran or Pascal.
This is the most efficient form since it saves on
both file space and machine time.
.PP
For simple applications it is also possible to give
.B plot3d
an ASCII file with the numbers in a readable format.
The user must be careful to edit out any titles or other 
non-numeric information before 
.B plot3d
is called.
The numbers are read from the file ``free format.''
In other words, spaces, tabs and newlines can all be
used to separate the numbers.
.B Plot3d
will read as many lines as necessary to get enough
data for the plot as specified by the count, skip and
begin parameters.
The numbers that are read from the file must not contain any
spaces.  
.PP
.B Plot3d
supports as many of the 
.B qplot 
options as possible and 
in most cases the variables/flags are known by the same
name.
The most significant difference is that the data file
is indicated by the `z' parameter instead of the `y'
parameter (for obvious reasons).
.PP
The input data for 
.B plot3d
is a matrix of binary numbers.
The type and location of the data is specified
with the 
.I z=
parameter.
The matrix is considered to be size 64 x 64 unless
one of the size parameters is used (
.I size,
.I xsize 
and 
.I ysize
).
.PP
Data is read from the file along lines of
constant y
(x variable varies fastest).
The first value in the file, file(0),
is z(x=0, y=0), the second is z(x=1, y=0)
and so on.
The second line (y=1) starts at 
number `xsize' in the file
(file(xsize) --> z(x=0, y=1)).
It is very important that the variable 
.I xsize
be
set properly so that 
.B plot3d
can index into the matrix properly.
.PP
With 
the `x' and `y' parameters
an arbitrary mapping can be made between points in 
the matrix (z) and the x and y axis.
Normally each line of the data is assumed
to be equally spaced in x and y.
With the x and y parameters any arbitrary mapping is
possible.
The results are guaranteed to be meaningful 
only for monotonically
increasing mappings.
.PP
With the begin, skip and count parameters
it is possible to specify that part of the
input data be ignored.
If the begin parameters are used,
the first 
.I xbegin
data points
of the z and x files
are ignored.
A similar effect is seen if the 
.I ybegin
parameter is specified.
The default values are 0.
If the skip variables 
.I (skip, xskip 
and
.I yskip)
are set
then lines in the input matrix are skipped between
each point that is plotted.
The count parameter is used to set the number of data 
lines to plot.
Normally the count parameters default to the largest number
possible, given the size, begin and skip variables.
.PP
Superimposing plots is done differently depending on the type of
output format.  
For the HP plotter it is sufficient to use the same piece of
paper for a number of graphs.
For other devices it is necessary to use the
.I -b
option to turn off blanking.
If the output is going to be sent to a bit mapped device (the 
Printtronix printers, image processing devices or the Versatec on ARPA) 
then it is
necessary to use several 
.I plot3d 
commands and to put the output in a file with the
.I g=graph
option.
The resulting bit plane will be a logical-or of each picture and
can be sent to the output device using either the
.I gplp(1g), gd(1g)
or 
.I gp(1g)
commands.
When using 
.I plot(5)
output format it is necessary to use the 
.I -P
option and then redirect the output of 
.I plot3d 
into a file.
Superimposing several graphs is accomplished with a string of commands
like
.nf
	plot3d z=file1,f -P > graph.output
	plot3d z=file2,f -b -P >> graph.output
	plot -Tver graph.output
.fi
.PP
The following options are available to modify the graph:
.sp 
.ne 8
**** FILE SPECIFICATION OPTIONS ****
.TP 14
z=file,?
The z matrix will be read from 'file' instead of 'z'. 
The letter ? is the data type declaration field and
can be one of the following:
.sp
.RS 14
.TP 5
c
Single bytes, unsigned, fixed precision data.
.TP
cs
Single bytes, signed, fixed precision data.
.TP
s
Two bytes, signed, fixed precision data.
.TP
i
Two bytes (PDP 11's), signed, fixed precision data.
.TP
i
Four bytes (Vax's), signed, fixed precision data.
.TP
l
Four bytes, signed, fixed precision data.
.TP
f
Four bytes, floating point data.
.TP
d
Eight bytes, floating point data.
.TP
a
ASCII data, free format numbers, data is readable,
spaces, tabs and newlines are used to seperate input points.
.sp
.RE
.RS 14
If n isn't specified, a comma is not needed after the file name.
The default for n is `f'.
.RE
.TP 14
z=,n
The z vector is read from the default file `z' but the 
byte declaration field is set to n.
.TP 14
-x
Read the x vector from the file `x'.
The data in the file is assumed to be binary integer quantities.
.TP 14
x=file,?
The x vector will be read from the file `file' instead of `x'.
The data in the file is assumed to be binary integer quantities
unless a `,?' is added.  
The `?' can be any of the suffixes shown above with the `z=' option.
If the file is binary integer data then it is not necessary to 
use the `,i' option.
.TP 14
-y
Read the y vector from the file `y'.
The data in the file is assumed to be binary integer quantities.
.TP 14
y=file,?
The y vector will be read from the file `file' instead of `y'.
The data in the file is assumed to be binary integer quantities
unless a `,?' is added.  
The `?' can be any of the suffixes shown above with the `z=' option.
If the file is binary integer data then it is not necessary to 
use the `,i' option.
.TP 14
xsize=n
The matrix has `n' elements in the x-direction.  
The default value is 64.
It is necessary to specify this variable if the
array is not 64 x 64.
.B Plot3d
interprets the `z' file as an xsize x ysize matrix of values.
.TP 14
ysize=n
The matrix has `n' elements in the y-direction.  
The default value is 64.
.B Plot3d
interprets the `z' file as an xsize x ysize matrix of values.
.TP 14
size=n
Set both `xsize' and `ysize' equal to `n'.
.TP 14
n=n
This sets xsize, and ysize variables
equal to n.
This is equivalent to using the 
.I size=
parameter.
.HP 0
.sp
.ne 8
**** DATA SELECTION OPTIONS ****
.TP 14
xbegin=n
The first `n' lines of the input in the `z' file
and `n' values in the `x' file are skipped.
This is used to place the origin of the plot
at an arbitrary position in the matrix.
The default value is 0.
.TP 14
ybegin=n
The first `n' lines of the input in the `z' file
and `n' values in the `y' file are skipped.
This is used to place the origin of the plot
at an arbitrary position in the matrix.
The default value is 0.
.TP 14
begin=n
Set the parameters `xbegin' and `ybegin' equal to n.
.TP 14
xskip=n
Skip `n' lines in the `z' file and `n' values in the `x'
file between plotted data points.
The default value is 0.
.TP 14
yskip=n
Skip `n' lines in the `z' file and `n' values in the `y'
file between plotted data points.
The default value is 0.
.TP 14
skip=n
Set the parameters `xskip' and `yskip' equal to n.
.TP 14
xcount=n
Only plot `n' of the lines in the matrix.
Show n values in the matrix for each line 
of constant y.
The default value is the largest number of points
that can be plotted for the given 
.I xsize, xbegin
and 
.I xskip.
.TP 14
ycount=n
Only plot `n' of the lines in the matrix.
Show n values in the matrix for each line 
of constant x.
The default value is the largest number of points
that can be plotted for the given 
.I ysize, ybegin
and 
.I yskip.
.TP 14
count=n
Set the parameters `xcount' and `ycount' equal to n.
.TP 14
zmin=r
All points in the matrix below the level `r'
are set to `r'.
This is useful for seeing details in the
surface.
See also the 
.I zmax 
parameter.
The default value is negative infinity.
.TP 14
zmax=r
All points in the matrix above the level `r'
are set to `r'.
This is useful for seeing details in the
surface.
See also the 
.I zmin 
parameter.
The default value is positive infinity.
.HP 0
.sp
.ne 8
**** PLOT POSITIONING AND REDUCING OPTIONS ****
.sp
.TP 14
xp=r
The x starting coordinate of the axes is moved to
position r on the plot plane.
The default value of r is 0.
The plot is 10 units wide.
.TP 14
yp=r
Same as the `xp=r' flag but the y origin is moved to r on the plot plane.
The plot is 10 units high.
.TP 14
scfac=r
The graph is expanded or reduced in size by r.
The default value is 1.0.
.TP 14
phi1=theta
The surface is rotated around the z-axis by an angle
of theta before plotting.
The zero angle corresponds to looking down
the y axis.
The default value
is 40 degrees.
.TP 14
phi2=theta
The observation plane is tilted by theta degrees
from the horizontal.
Zero degrees corresponds to looking at the surface
from the x-y plane; 
90 degrees is looking at the object from directly
above.
Neither of the two views at the extremes
provide much information.
The default value is 30 degrees.
.TP 14
-r
Reverse the direction of the `z' axis.
This effectively multiplies each data point by -1.
The default is for this option to be off.
.TP 14
-R
Do not reverse the direction of the `z' axis.
This flag turns off the `-r' flag above.
.sp
.HP 0
.ne 8
**** DEVICE SELECTION OPTIONS ****
.TP 14
-P
Output the graph to standard output in 
.I plot (5)
format.
This is a device independent format that can be piped through
the 
.I plot(1) 
program.
.TP 14
plot=xx
Output the graph in plot format (See section 5 of the UNIX manual)
piping all plotting commands to the plot program.
The 
.I xx 
argument is used as a type argument to the plot command.
Thus the use of
.I plot3d plot=4014
is equivalent to the command string
.I plot3d -P | plot -T4014.
For example the following are other valid devices:
adm (to send to a terminal), ver (to send to the versatec), 
4014 (to send to a Tek 4014 terminal).  
See the
.I plot(1) 
manual for additional devices.
.TP 14
-p
The plot is sent to the Printronix line printer through
.B gplp
(1).
This is the default output option for all
host machines except for ARPA.
See 
.B gplp
(1) to
determine to which network line printer the output
will be sent.
.TP 14
site=XX
The output is sent to the network line printer
specified by XX.
See 
.B opr 
(1) for more information
about the allowable printer names.
This option invokes
the `-p' option.
.TP 14
-t
Display the plot on a Tektronix 4010 or 4014 display.
Standard output must end up on the specified terminal.
.TP 14
-T
Display the plot on a Retro-Graphics RG-512  in
conjunction with an ADM-3A terminal.
.TP 14
-h
Display the plot on an HP plotter.
.TP 14
pen=n
When using the HP plotter, the pen in bin 
.I n
is used to
plot the graph.
The default bin is 1.
This invokes the 
.I -h
flag.
.TP 14
speed=n
The HP plotter's pen movement velocity will be changed
to `n' cm/sec.
The valid range for n is [1,36].
The
default value is 36.
This option will invoke the `-h'
flag.
.TP 14
-v
The plot is sent to the Versatec printer/plotter through a
pipe to gp (1).
NOTE: This option is obsolete on all machines except for the DIPL machine.
Users should use the 
.I plot=ver
option to obtain versatec output elsewhere on the network.
.TP 14
-o
The graph is written out to standard output.
.TP 14
g=file
The graph is written out to a file named `file'.
This
file can be sent to the ARPA Versatec or Printronix with 
.B gp
(1) and 
.B gplp
(1), respectively.
.TP 14
op=str
The string is an appended to the call to 
.B gplp, gp, hpd, 
and 
.B gd.
This provides a method to change any of
the options to the driver programs.
.TP 14
-b
The display device is not blanked before plotting.
This
option has no effect when used with the `h', `v', `V',
and `p' flags.
If the `g=file' option is used 
and `file' exists in the local directory before plotting
begins, then the new graphics will overlay the graphics
contained in `file'.
.TP 14
-B
Turn off the -b flag.
This option is set by default.
.TP 14
-c
The plot is displayed on the Comtal.
The default action is to display the plot on graphics
overlay 0 unless the -0, -1, -2, -3 or -i flags are used.
The Comtal is the default device if ARPA is the host machine,
or the 
.I -i, -g, -0, -1, -2
and 
.I -3
flags are used.
The Comtal is connected to the ARPA machine.
.TP 14
-G
Display the plot on the Grinnel connected to the ARPA
machine.
The default action is to display the plot on graphics
overlay 0 unless the -0, -1, -2, -3 or -i flags are used.
A Grinnell is connected to the ARPA and the PB machines.
.TP 14
-i
Display the plot on an image plane instead of a graphics overlay.
This flag is the opposite of the 
.I -g
flag.
If this flag is used then the Comtal (
.I -c
) is the default device.
.TP 14
-g
Display the plot on a graphic overlay instead of an image plane.
This flag
is set by default if ARPA is the host machine.
This flag is the opposite of the 
.I -i
flag.
If this flag is used then the Comtal (
.I -c
) is the default device.
.TP 14
-n
The plot is displayed on the graphic overlay 
or image plane 
.I n.
The number 
.I n 
can be either 0,1, 2, 3.
If this flag is used then the Comtal (
.I -c
) is the default device.

.RS 0
.ne 8
**** AXIS OPTIONS ****
.TP 14
-a
No axes will be plotted.
.TP 14
axis=[xyz]
An axis will be plotted only for axis listed after the equals sign.
The default action is 
.I axis=xyz
which labels all three axis of the plot.
The option
.I axis=
is equivalent to the
.I -a
option.
.TP 14
-f
A border will be drawn around the plot.
.TP 14
-F
Do not draw a border around the plot.  This is the default.
.TP 14
zaxis=r
The x-y axis of the plot is drawn at 
.I z=r.
The default value is -.05.
.TP 14
len=r
Set the length of all axes to 
.I r.
The default value is 8.
.TP 14
xlen=r
The length of the x axis is changed from 
eight plot units to 
.I r
units.
This parameter is relative to the default value of 8. 
The actual length of the x axis in the 2-d plot coordinate system
is a function of the angle of view and the 
.I scfac.
.TP 14
ylen=r
The length of the y axis 
is changed from eight plot units to 
.I r
units.
This parameter is relative to the default value of 8. 
The actual length of the y axis in the 2-d plot coordinate system
is a function of the angle of view and the 
.I scfac.
.TP 14
zlen=r
The length of the z axis 
is changed from eight plot units to r units.
This parameter is relative to the default value of 8. 
The actual length of the y axis in the 2-d plot coordinate system
is a function of the angle of view and the 
.I scfac.
.TP 14
raxis=xyz
Floating point (real) numbers will be used to label the axis.
If just `x' is specified then only the x-axis will be forced to floating
point notation.
If just `y' is specified then only the y-axis will be forced to floating
point notation.
If just `z' is specified then only the z-axis will be forced to floating
point notation.
If `xyz' is used then all axis will be forced to floating
point notation.
If none of the axis are listed then all axis will be labelled with
integers.
Any combination of `xyz' can be specified.
The default notation is determined by the type of data used as input
to the program.
If integer data is used as input then the axis will be labelled with
integers.  Otherwise floating point notation is used.
.TP 14
dig=n
The number of significant digits used in the annotation
of the axes will be set to 'n'.
The default value is
six significant digits.
.TP 14
xdig=n
Set the number of significant digits in the x axis to
n.
.TP 14
ydig=n
Set the number of significant digits in the y axis to
n.
.TP 14
zdig=n
Set the number of significant digits in the z axis to
n.
.TP 14
tic=r
The distance between tic marks for both the x, y and z
axes will be changed to r.
The default value of r is
one.
.TP 14
xtic=r
Set only the x tic mark distance.
.TP 14
ytic=r
Set only the y tic mark distance.
.TP 14
ztic=r
Set only the z tic mark distance.
.HP 0
.sp
.ne 8
**** LABEL OPTIONS ****
.TP 14
tl=str
The string will be used as a label at the top of the graph.
.TP 14
bl=str
The string will be used as a label at the bottom of the graph.
.TP 14
xl=str
The character string is used as a label along the x
axis.
.TP 14
yl=str
The character string is used as a label along the y
axis.
.TP 14
zl=str
The character string is used as a label next the z
axis.
.TP 14
-l
The user will be prompted for labels not entered with
the `xl', `yl' and `zl' options.
.TP 14
-L
Don't prompt for labels.
This option is the default.
.HP 0
.sp
.ne 8
**** GRAPH OPTIONS ****
.TP 14
direction=[xy]
Plot lines along the axis (or axes) specified by this parameter.
The default is to plot the lines along the y axes 
only or 
.I direction=y.
The options 
.I direct= 
and 
.I dir=
are synonyms for this parameter.
Use of the 
.I direction=x
or 
.I direction=y
parameters is encouraged since half the 
CPU time is used to produce the plot.
In addition if a large number of lines are to be drawn,
the graph will often appear simpler if lines are only drawn
in one direction.
.TP 14
resolution=x
This parameter controls the resolution of the ``hide'' subroutine.
The default value is 1.0 and larger values can be used to produce
a more accurate estimate of the line intersections at the expense
of more computer time.
Values larger than one are generally needed only for publication
quality plots of functions with large number of discontinuities.
Conversely a value smaller than one will save computer time at
the expense of small errors in the intersections.

.HP 0
.PP
The parse routines internal to 
.B plot3d
allow for
two default mechanisms
to specify options.
The first method is to create a file `.plot3drc'
in
your HOME directory (see environ(5)). 
In it, one can place
options and flags that 
.B plot3d
will use before it parses your
command line. The syntax is one command or flag string per line.
.PP
As an example, consider the case where the user wishes to always
obtain output on the Versatec and the plot be framed. Also the
length of the axes are desired to be 6 units.
The correct format for
the file `.plot3drc'
would be:
.RS 14
.nf

-vf
len=6
.fi
.RE
.PP
The second method to set default
options is to set the environment variable `PLOT3DARGS'.
The format of `PLOT3DARGS'
is the same as the input command line.
.PP
The options set in the previous example can be set using 
the following
procedure: 
.RS 14
.nf

For /bin/sh:
	$ PLOT3DARGS='-vf len=6'
	$ export PLOT3DARGS

For /bin/csh
	$ setenv PLOT3DARGS '-vf len=6'

.fi
.RE
If you need to set up labels with
the `bl=', or `tl='
options, surround the respective
option with double quotes. An example:
.RS 14
.nf

$PLOT3DARGS='-vf "tl=this is the title"'

.fi
.RE
There is no way to get a double quote into the label field.
.PP
.B Plot3d
will parse the file `.plot3drc'
first if it exists. Then it
will parse `PLOT3DARGS'
if it exists. 
Finally, 
.B plot3d
will parse
the command line.
.SH FILES
.TP 14
/etc/cpu
Contains name of host
.SH SEE ALSO
graphics/crc and 
.B qplot(1)
documentation
.SH AUTHOR
Mani Azimi assembled the 
.B plot3d 
program from software written by a couple of people.
Carl Crawford did some of the work when he wrote
.B qplot.
The Fortran program that actually does the plotting was
rewritten by Mani Azimi based on code that was available 
in the EE department for several years.
.SH DIAGNOSTICS
Bad command line requests are flagged.
Occasionally an `out of bounds' warning will result
from looking at a surface from too high an angle.
.SH BUGS
Array size is limited on the PDP 11's, especially when using the 
bit mapped devices (Grinnel, Comtal, Versatec, Printronix.)
.PP
No check is made to insure 
that the number of points to read
from the input file for each line (count*(skip+1)+begin)
is consistent with the `size' parameters.
.PP
The resolution parameter really shouldn't be necessary.
.SH FUTURE
Eventually all devices except for plot format will be phased out.
It is not practical for 
.I plot3d 
to know about every possible output device.
Instead it is better that 
.I plot3d
output a generic format with infinite resolution and 
let each device filter produce the best plot possible.
.SH SUPPORT
Funding for the development of this software was provided by
Prof. A.C.Kak of Electrical Engineering.
Bug fixes and enhancements will be made on a time available
basis by the author.
SHAR_EOF
cat << \SHAR_EOF > qplot.1g
.TH QPLOT 1 "CRC Graphics"
.SH NAME
Qplot - Quick Plot
.SH SYNOPSIS
qplot [arguments]
.SH DESCRIPTION
.B Qplot
is used to display one vector versus another on various
graphic devices.
By using 
.B Qplot
with no arguments, a graph will
be generated on the default Printronix line printer as defined in
.B gplp 
(1).
If ARPA is the host machine, the output will appear on
the Comtal graphics overlay bit-plane zero.
.PP
A set of 
numbers will be read from a file called 'y' and used as the
y vector.
This vector will be displayed against a program
generated x vector containing integers from zero to the number of
points in the y vector minus one.
.PP
The input for 
.B qplot
can be either a binary or an ASCII file.
In a binary file the data is coded in the machine's
internal format.
The file can be generated using the 
.B write 
statement
in C or an unformatted 
.B write
in Fortran or Pascal.
This is the most efficient form since it saves on
both file space and machine time.
.PP
For simple applications it is also possible to give
qplot an ASCII file with the numbers in a readable format.
The user must be careful to edit out any titles or other 
non-numeric information before 
.B qplot
is called.
The numbers are read from the file ``free format.''
In other words, spaces, tabs and newlines can all be
used to separate the numbers.
.B Qplot
will read as many lines as necessary to get enough
data for the plot as specified by the count, skip and
begin parameters.
The numbers that are read from the file must not contain any
spaces.  
.PP
Superimposing plots is done differently depending on the type of
output format.  
For the HP plotter it is sufficient to use the same piece of
paper for a number of graphs.
For other devices it is necessary to use the
.I -b
option to turn off blanking.
If the output is going to be sent to a bit mapped device (the 
Printronix printers, image processing devices or the Versatec on ARPA) 
then it is
necessary to use several 
.I plot3d 
commands and to put the output in a file with the
.I g=graph
option.
The resulting bit plane will be a logical-or of each picture and
can be sent to the output device using either the
.I gplp(1g), gd(1g)
or 
.I gp(1g)
commands.
When using 
.I plot(5)
output format it is necessary to use the 
.I -P
option and then redirect the output of 
.I plot3d 
into a file.
Superimposing several graphs is accomplished with a string of commands
like
.nf
	qplot y=file1,f -P > graph.output
	qplot y=file2,f -b -P >> graph.output
	plot -Tver graph.output
.fi
.PP
The following options are
available to modify the graph:

.RS 0
**** FILE SPECIFICATION OPTIONS ****
.TP 14
y=file,n 
The y vector will be read from 'file' instead of 'y'.
The number n is the byte declaration field and can be
one of the following:
.RS 10
.TP 4
c
Single byte, unsigned, fixed precision data.
.TP 4
cs
Single byte, signed, fixed precision data.
.TP 4
s
Two bytes, signed, fixed precision data.
.TP 4
i
Two bytes (PDP 11's), signed, fixed precision data.
.TP 4
i
Four bytes (Vax's), signed, fixed precision data.
.TP 4
l
Four bytes, signed, fixed precision data.
.TP 4
f
Four bytes, floating point data.
.TP 4
d
Eight bytes, floating point data.
.TP 4
a
ASCII numbers, free format data, file is readable, 
spaces, tabs and newlines are used
to separate input points.
.RE
.RS 10
If 
.I n
isn't specified, a comma is not needed after the
file name.
The default for n is `f'.
.RE
.TP 14
y=,n
The y vector is read from the default file `y' but the
byte declaration field is set to 
.I n.
.TP 14
-x
The x vector will be read from a file called `x'
instead of having 
.B qplot
generating it for you.
The
default file type is `i'.
.TP 14
-X
Turn off the -x flag.
This option is set by default.
.TP 14
x=file,n
The x vector is read from `file' instead of `x'.
The
byte declaration for this vector is set to n.
The
default type is `i'.
This option invokes the -x flag.
.TP 14
x=,n
The x vector is read from the default input file `x'
but the byte declaration is set to n.
.TP 14
count=n
Up to n points will be read from the input file.
N can
have a maximum value of 512.
The default value of n is
512.
.TP 14
begin=n
The first n points in the x and y files will be
ignored.
If `begin' is negative, then the value
actually used will be given by the product of `count'
and the absolute value of `begin'.
The starting point
on the program generated x vector will be 
set to `begin'.
The default value of n is zero.
.TP 14
skip=n
Only every (n+1)'th point will be read from the
input file.
The program generated x vector incremental
value is set to `n' + 1.
The default value of n is
zero.

.RS 0
**** SCALING OPTIONS ****
.TP 14
s=file
.B Qplot
generates the scale values for the x and y
vectors by finding the minimum and maximum values of
each vector.
If `file' exists  in  the  current
directory, the minimum and maximum values used by the
scaling routines will be read from it.
The format of
the file is four numbers on a single line in the
following format: `xmin xmax ymin ymax'.
The default
name for `file' is `xybnd'.
.TP 14
ymin=r
The ymin value read from the scale file or obtained
from the y vector is replaced by r.
.TP 14
ymax=r
The ymax value read from the scale file or obtained
from the y vector is replaced by r.
.TP 14
xmin=r
Works the same as the `ymin=' option when the 
.I -x
flag
is used.
Otherwise the program will create the x
vector with a starting value of 
.I r.
.TP 14
xmax=r
Works the same as the `ymax=' option when the -x flag
is used.
If the program generates the x vector 
and the `xmin=r1' 
and `xmax=r2' options are
also used, then the x vector will
be a set of equally spaced point integers
between r1 and r2.
.TP 14
-s
The xmin, xmax, ymin, ymax values used to make the
graph  are written out to the 
file specified by `s=file'.
This is useful in plotting multiple graphs
with the same scale.
The file has the same format as
the input scale file.
.TP 14
-S
Turn off the -s flag.
This option is set by default.

.ne 8
.RS 0
**** POSITIONING AND REDUCING OPTIONS ****
.TP 14
xp=r
The x starting coordinate of the graph is moved to
position `r'.
The default value of r is zero.
.TP 14
yp=r
Same as the `xp=r' flag but the y origin is moved to `r'.
.TP 14
scfac=r
The graph is expanded or reduced in size by `r'.
The
default value is 1.0.

.RS 0
**** DEVICE SELECTION OPTIONS ****
.TP 14
-P
Output the graph to standard output in 
.I plot (5)
format.
This is a device independent format that can be piped through
the 
.I plot(1) 
program.
.TP 14
plot=xx
Output the graph in plot format (See section 5 of the UNIX manual)
piping all plotting commands to the plot program.
The 
.I xx 
argument is used as a type argument to the plot command.
Thus the use of
.I qplot plot=4014
is equivalent to the command string
.I qplot -P | plot -T4014.
For example the following are other valid devices:
adm (to send to a terminal), ver (to send to the versatec), 
4014 (to send to a Tek 4014 terminal).  
See the
.I plot(1) 
manual for additional devices.
.TP 14
-p
The plot is sent to the Printronix line printer through
.B gplp
(1).
This is the default output option for all
host machines except for ARPA.
See 
.B gplp
(1) to
determine to which network line printer the output
will be sent.
.TP 14
site=XX
The output is sent to the network line printer
specified by XX.
See 
.B opr 
(1) for more information
about the allowable printer names.
This option invokes
the `-p' 
.TP 14
-t
Display the plot on a Tektronix 4010 or 4014 display.
Standard output must end up on the specified terminal.
.TP 14
-T
Display the plot on a Retro-Graphics RG-512  in
conjunction with an ADM-3A terminal.
.TP 14
-h
Display the plot on an HP plotter.
.TP 14
pen=n
When using the HP plotter, the pen in bin n is used to
plot the graph.
The default bin is 1.
This invokes the `-h' flag.
.TP 14
speed=n
The HP plotter's pen movement velocity will be changed
to `n' cm/sec.
The valid range for n is [1,36].
The
default value is 36.
This option will invoke the `-h'
flag.
flag.
.TP 14
-v
The plot is sent to the Versatec printer/plotter through a
pipe to gp (1).
NOTE: This option is obsolete on all machines except for the DIPL machine.
Users should use the 
.I plot=ver
option to obtain versatec output elsewhere on the network.
.TP 14
-o
The graph is written out to standard output.
.TP 14
g=file
The graph is written out to a file named `file'.
This
file can be sent to the Versatec or Printronix with 
.B gp
(1) and 
.B gplp
(1), respectively.
.TP 14
op=str
The string is appended to the call to 
.B gplp, gp, hpd, 
and 
.B gd.
This provides a method to change any of
the options to the driver programs.
.TP 14
-b
The display device is not blanked before plotting.
This
option has no effect when used with the `h', `v', `V',
and `p' flags.
If the `g=file' option is used 
and `file' exists in the local directory before plotting
begins, then the new graphics will overlay the graphics
contained in `file'.
.TP 14
-B
Turn off the -b flag.
This option is set by default.
.TP 14
-c
The plot is displayed on the Comtal.
The default action is to display the plot on graphics
overlay 0 unless the -0, -1, -2, -3 or -i flags are used.
The Comtal is the default device if ARPA is the host machine,
or the 
.I -i, -g, -0, -1, -2
and 
.I -3
flags are used.
The Comtal is connected to the ARPA machine.
.TP 14
-G
Display the plot on the Grinnel connected to the ARPA
machine.
The default action is to display the plot on graphics
overlay 0 unless the -0, -1, -2, -3 or -i flags are used.
A Grinnell is connected to the ARPA and the PB machines.
.TP 14
-i
Display the plot on an image plane instead of a graphics overlay.
This flag is the opposite of the 
.I -g
flag.
If this flag is used then the Comtal (
.I -c
) is the default device.
.TP 14
-g
Display the plot on a graphic overlay instead of an image plane.
This flag
is set by default if ARPA is the host machine.
This flag is the opposite of the 
.I -i
flag.
If this flag is used then the Comtal (
.I -c
) is the default device.
.TP 14
-n
The plot is displayed on the graphic overlay 
or image plane 
.I n.
The number 
.I n 
can be either 0,1, 2, 3.
If this flag is used then the Comtal (
.I -c
) is the default device.

.RS 0
.ne 8
**** AXIS OPTIONS ****
.TP 14
-a
No axes will be plotted.
.TP 14
-A
Plot axes.
This option is set by default.
.TP 14
xlen=r
The length of the x axis will be changed from eight
plot units to r units.
.TP 14
ylen=r
The length of the y axis will be changed from eight
plot units to r units.
.TP 14
len=r
Set the length of both axes to r.
.TP 14
logx=n
The `x' axis will be logarithmic instead of linear.
Valid values for n are -3, -2, -1, 1, 2, and 3.
The
logarithm base ten of the `x' vector will be taken if n
is negative.
No tic marks will be plotted if n is -1
or 1.
A few tic marks will be plotted if n is -2 or 2.
All possible tic marks will be plotted if n is -3 or 3.
.TP 14
logy=n
Same as the `logx=' option except 
that it works for the `y' axis.
.TP 14
raxis=xy
Floating point (real) numbers will be used to label the axis.
If just `x' is specified then only the x-axis will be forced to floating
point notation.
If just `y' is specified then only the y-axis will be forced to floating
point notation.
If `xy' is used then both the x and the y-axis will be forced to floating
point notation.
The default notation is determined by the type of data used as input
to the program.
If integer data is used as input then the axis will be labelled with
integers.  Otherwise floating point notation is used.
.TP 14
dig=n
The number of significant digits used in the annotation
of the axes will be set to 'n'.
The default value is
six significant digits.
.TP 14
xdig=n
Set the number of significant digits in the x axis to
n.
.TP 14
ydig=n
Set the number of significant digits in the y axis to
n.
.TP 14
tic=r
The distance between tic marks for both the x and the y
axes will be changed to r.
The default value of r is
one.
.TP 14
xtic=r
Set only the x tic mark distance.
.TP 14
ytic=r
Set only the y tic mark distance.
.TP 14
-f
A border will be drawn around the plot.
.TP 14
-F
Don't frame the plot.
This option is set by default.

.RS 0
**** LABEL OPTIONS ****
.TP 14
el=str
The string will be plotted just to the right of the
last point in the line.
.TP 14
tl=str
The string will be used as a label at the top of the
graph.
.TP 14
bl=str
The string will be used as a label at the bottom of the
graph.
.TP 14
xl=str
The character string is used as a label below the x
axis.
.TP 14
yl=str
The character string is used as a label next to the y
axis.
.TP 14
-l
The user will be prompted for labels not entered with
the `xl' and `yl' options.
.TP 14
-L
Don't prompt for labels.
This option is the default.

.RS 0
**** LINE OPTIONS ****
.TP 14
-m
Mark every point in the line with an on-center symbol.
.TP 14
-M
Don't mark the line.
This option is set by default.
.TP 14
j=n
Only every |j|'th point will have an on-center symbol
on it.
If j is negative, then the line connecting
points will not be drawn.
This option invokes the -m
flag.
.TP 14
sym=n
One of 13 different on-center symbols can be selected.
This option invokes the -m flag.
The following on-center symbols can be used.
.ta 1i 2i
.nf
	\fIsym	on-center symbol\fR

	 0	no on-center symbol
	 i	$'i-1'	i=1,2,...,10
	11	       $*
	12	       $+
	13	       $,
.fi
.TP 14
-d
A dashed line is used instead of a solid line when
drawing the graph.
.TP 14
-D
Don't draw dashed line.
This option is set by default.
.TP 14
dash=r
The length of the visible portion of the dashed line is
set to `r'.
The default value is 0.1.
This option
invokes the `-d' flag.
.TP 14
gap=r
Same as the `dash=' option but affects the invisible
portion of the dashed line.
.TP 14
-z
A bar graph is made instead of connecting vector
elements with a solid line.
.TP 14
-Z
Don't draw bar graph.
This option is set by default.
.PP
The parse routines internal to 
.B qplot
allow for two default
mechanisms to specify options.
The first method is to create a
file `.qplotrc' in your HOME directory (see environ (5)).
In it,
one can place options and flags that 
.B qplot
will use before it
parses your command line.
The syntax is one command or flag
string per line.
.PP
As an example, consider the case where the user wishes to
always obtain output on the Versatec and the plot be framed.
Also
the length of the axes are desired to be 6 units and the number
of digits in the axes annotation set to 4.
The correct format for
the file `.qplotrc' would be:
.RS 1i
 -vf
 len=6
 dig=4
.RE
.PP
The second method to set default options is to set the
environment variable `QPLOTARGS'. The format of `QPLOTARGS' is the
same as the input command line.
.PP
The options set in the previous example can be set using the
following procedure:
.PP
For /bin/sh:
    $QPLOTARGS='-vf len=6 dig=4'
    $export QPLOTARGS
.PP
For /bin/csh
    $setenv QPLOTARGS '-vf len=6 dig=4'
.PP
If you need to set up labels with the `xl=', `yl=', `bl=', `tl=',
or `el=' options, surround the respective option with double
quotes. An example:

	$QPLOTARGS='-vf "xl=this is the x axis label"'

There is no way to get a double quote into the label field.
.PP
.B Qplot
will parse the file `.qplotrc' first, if it exists.
Then
it will parse `QPLOTARGS', if it exists. 
Finally, 
.B qplot
will parse
the command line.
.SH SEE ALSO:
graphics/crc
.SH FUTURE
Eventually all devices except for plot format will be phased out.
It is not practical for 
.I qplot 
to know about every possible output device.
Instead it is better that 
.I qplot
output a generic format with infinite resolution and 
let each device filter produce the best plot possible.
.SH AUTHOR
Carl Crawford
.SH FILES
.TP 14
/etc/cpu
Contains name of host
.SH APPENDIX: Input file conventions
.PP
.B Qplot
users should write the data for the `x' and `y' files
in binary format to make the most efficient use of the machine.
This format will be explained in detail in this appendix for the
benefit of users who have had little or no experience with binary
files.
.PP
The normal output mode from programs is what will be called an
ASCII or displayable format. This type of output can be directed
to the terminal for inspection by the user. The output is
generated with a 
.B formatted
write.
This type of data can be read by 
.B qplot
using the ',a' modifier to the file name.
.PP
Internally a program assigns a certain number of bytes to each
variable used. When a formatted 
.B write
is initiated, the number is
converted from the internal binary representation to a string
containing displayable ASCII characters.
When sending data
between programs, it is a waste of time to convert data from
binary to ASCII and then from ASCII back into binary.
This is the
reason why 
.B qplot
encourages binary data as input.
.PP
Each programming language's internal variable types map into a
.B qplot
byte declaration field.
The following list gives the
correspondence between the internal variable types and the 
.B qplot
byte declaration for some of the commonly used languages on the
UNIX operating system.
.nf
.ta 0.3i 1.5i 3.4i 4.6i

	C: (11's)		C: (Vax)
	
	TYPE	DECLARATION	TYPE	DECLARATION
	short	i or s	short	s
	int	i or s	int	i or l
	long	l	long	i or l
	float	f	float	f
	char	c or cs	char	c or cs
	double	d	double	d
	
	
.ne 8
	FORTRAN:(F77)		FORTRAN: (F4P)
	
	TYPE	DECLARATION	TYPE	DECLARATION
	integer	l	byte	c or cs
	integer*2	s	real	f
	real	f	double	d
	double	d	integer	s or i
	character*1	c or cs	integer*4	l
	
	
	APL: (APL)		APL: (APL2)

	TYPE	DECLARATION	TYPE	DECLARATION
	numeric	d	numeric	f
	character	c or cs	character	c or cs



 	PASCAL (11's)		PASCAL (Vax)

	TYPE	DECLARATION	TYPE	DECLARATION
	integer	s or i	integer	l or i
	real	f	real	f

.fi
.PP
Unformatted writes in C can be obtained using the 
.B fwrite
subroutine. See stdio(3) for more information.
.PP
In FORTRAN using the F77 compiler there are two ways to obtain
unformated writes.
The first is to use the 
.B ucreat 
and 
.B uwrite
subroutines.
They are the analog to C's 
.B write
and 
.B creat
subroutines.
See the documentation for the C versions for more
information on the syntax.
When compiling your program 
add `-lU77' to the end of the command line.
.PP
The easiest way to get unformated writes from FORTRAN is to
just write the data without a `format' statement.
An example
would be:
.nf
	real x(100),y(100)

	write(2)x
	write(3)y

.fi
In this example two files would be generated 
named `fort.2' and `fort.3'. 
The F77 compiler also generates code to produce record
counts in its binary files.
The program strip7(1) will remove
the record counts from  binary files generated with F77.
The
output file names can be changed using the 
FORTRAN subroutine 
.B open. 
See the compiler manual for more information.
SHAR_EOF
chdir ..
#	End of shell archive
exit 0

-- 

Rich $alz			"Anger is an energy"
Cronus Project, BBN Labs	rsalz@bbn.com
Moderator, comp.sources.unix	sources@uunet.uu.net