Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0049/genplt.doc
There is 1 other file named genplt.doc in the archive. Click here to see a list.




GGGGGGGGG  EEEEEEEEE  NNN   NNN  PPPPPPPPP  LLL    TTTTTTTTT
GGG        EEE        NNNN  NNN  PPP   PPP  LLL       TTT
GGG  GGGG  EEEEEE     NNN N NNN  PPPPPPPPP  LLL       TTT
GGG   GGG  EEE        NNN  NNNN  PPP        LLL       TTT
GGGGGGGGG  EEEEEEEEE  NNN   NNN  PPP        LLLLLLLL  TTT


                    IIIIIIIII  IIIIIIIII
                       III        III
                       III        III
                       III        III
                    IIIIIIIII  IIIIIIIII


GENPLT-II is a package of  FORTRAN  non-interactive  graphic
subroutines  which  provide  a  wide  variety  of  automatic
functions such as the plotting of scales  and  grids.   Data
can be represented by plotted points or symbols, by solid or
dashed lines, or as shaded figures.  Draftsman's Gothic  and
Greek lettering are provided.

Further  information  concerning  these  routines  has  been
published  in Volume 3 of "Computer Programs For Chemistry,"
W. A. Benjamin, Inc., 1969 (edited by Delos F. DeTar).
GENPLT-II, a General Plotting Package               Page   2



     Coupling GENPLT-II to a Particular Plotting Device
     -------- --------- -- - ---------- -------- ------


The  GENPLT-II  subroutines  produce  graphic  output  on  a
specific  plotting  device  by  calling  a  set  of routines
provided by the  user  for  that  device.   Several  typical
packages  of  such  coupling  routines  are supplied.  If an
installation has a plotting device, some primitive  routines
will probably be available for its use.  One of the provided
coupling  packages  can  then  be  modified  to  call  these
primitive  routines.   The file PENTST is provided to test a
new or modified set of coupling routines.  If  the  coupling
routines  are operating correctly, this program will produce
3 versions of the Yale University crest.

Each of the coupling packages  contains  5  simple  routines
with a standardized argument list.  These are as follow.

    SUBROUTINE PENBGN(LASTX,LASTY,NEWX,NEWY)
    called by the user to initialize any  parameters  needed
    by the other routines of the coupling package.  The most
    important parameters are FACTOR which is the  number  of
    plotter  grid  units  corresponding  to XWIDTH or YWIDTH
    equal 1.0 (the maximum possible), and OFSETX and  OFSETY
    which  are  the  coordinates  of the plotter grid origin
    stated in plotter grid units.  PENBGN might also produce
    an  identification frame if used with a camera monitored
    CRT, or might advance paper if used with a drum plotter.

    SUBROUTINE PENHLT(LASTX,LASTY,NEWX,NEWY)
    called by the user when a fresh plotting surface must be
    provided.   Would  advance film in CRT camera or advance
    the paper in drum  plotter.   For  a  flat-bed  plotter,
    would  signal  the  operator  to  change  paper.   For a
    storage CRT, would clear screen.

    SUBROUTINE PENEND(LASTX,LASTY,NEWX,NEWY)
    called  by  the  user  after  all  plotting   has   been
    generated.   For  most  devices would merely call PENHLT
    again.  Some systems might require calling an accounting
    routine.

The arguments NEWX and  NEWY  for  the  above  routines  are
dummies  not used by the routines.  LASTX and LASTY are set,
if necessary, by these coupling routines for  use  when  the
user  calls  the higher level GENPLT-II routines and contain
the present pen or CRT beam position coordinates for use  in
interpolation between drawn lines.

Two additional coupling routines are  called  internally  by
the GENPLT-II routines.  These are as follow.
GENPLT-II, a General Plotting Package               Page   3



    SUBROUTINE PENUP(LASTX,LASTY,NEWX,NEWY)
    moves the pen or  CRT  beam  from  the  former  position
    LASTX,  LASTY  to  the  new  position NEWX, NEWY without
    drawing a line.

    SUBROUTINE PENDWN(LASTX,LASTY,NEWX,NEWY)
    draws a line from the former position  LASTX,  LASTY  to
    the new position NEWX, NEWY.

The following packages of coupling subroutines are provided.
The  printer  output  package is written entirely in FORTRAN
and should work under any system.  Printer representation of
plots  is  often useful if normal hardcopy graphic output is
either expensive or slow.  The unit number NTAPE onto  which
printer  plots  are  output  is  set  by PENHLT when this is
initially  called  by  PENBGN  and  should  be  changed   as
necessary.

    File PRTPAC
    contains the routines PENBGN, PENUP, PENDWN  and  PENEND
    for  producing  printer  or  teletype  plots  using  the
    characters X and space.  File PRTPAC must be  used  with
    one of the following versions of PENHLT.

        File PRTHLB
        produces large printer plots 3 pages wide by 4 pages
        high.  Although designed for a printer with at least
        122 characters per line, it is necessary  to  change
        only  1  variable  (ICHAR)  to  split  the plot into
        narrower columns for printing on a teletype.

        File PRTHLC
        produces a very low  resolution  plot  on  a  single
        printer page of 101 character width.

        File XRXHLT
        produces an  output  file  containing  duration  and
        intensity    information   for   driving   a   Xerox
        Telecopier.  Custom built hardware and the  routines
        to drive this hardware are necessary to generate the
        audio tones which control this device.   The  stylus
        of  the  telecopier  spins  inside a rolled sheet of
        carbon paper which in turn is inside a rolled  sheet
        of   normal   paper.   The  other  printer  coupling
        routines can be used  since  both  the  printer  and
        telecopier  are  raster  displays.   The  version of
        PENHLT meant for the Telecopier is unusual  in  that
        it allows both horizontal and vertical resolution to
        be specified by a single variable.

    File CALPAC
    calls the standard Calcomp routine PLOT to produce plots
    on  Calcomp  drum  plotters.   It  may  be  necessary to
GENPLT-II, a General Plotting Package               Page   4



    restore  the  DIMENSION  statement  and  the   call   to
    subroutine  PLOTS  which  appear  as  comment  lines  in
    PENBGN.  The following files are also provided.

        File CALPLT
        simulates  the  standard   Calcomp   routine   PLOT.
        Individual  horizontal, vertical or diagonal motions
        of the stepping motor are  requested  by  calling  a
        routine  named  PLOTP.   The  routine  PLOTP must be
        written for the individual system.

        File CALARD
        simulates the  above  mentioned  routine  PLOTP  for
        monitoring on an ARDS graphic terminal.  Routines in
        the file ARDMAC are called for final output.

    File ARDPAC
    A very simple set of coupling routines  which  call  the
    routines  in file ARDMAC for output on an ARDS (Advanced
    Remote Display Station) storage tube terminal.

        File ARDMAC
        contains Macro routines for  driving  a  dual  scope
        ARDS  terminal  with  write-through  cursor and with
        Sylvania tablet interface.  The entry points  within
        this file are described in the appendix.
GENPLT-II, a General Plotting Package               Page   5



                     Dimension Systems
                     --------- -------

The sizes and locations of items to be plotted are specified
in 3 different dimension systems.

1.  User defined data has its own  dimension  system  (which
    can  differ  in  the horizontal and vertical directions)
    and is windowed into a plot area  which  can  contain  a
    range of data extending in the horizontal direction from
    XFIRST at the left edge to XFINAL at the right edge, and
    in the vertical direction from YFIRST at the bottom edge
    to YFINAL at the top edge.   Similarly,  routine  BARPLT
    requires   the   maximum  sum  of  the  segments  of  an
    individual bar be  input  in  data  coordinates  as  the
    argument TOTAL.

2.  The plot area into which the data are windowed  has  its
    width  XWIDTH, height YWIDTH, horizontal distance XCORNR
    from the  left  edge  of  the  maximum  usable  plotting
    surface and vertical distance YCORNR from the lower edge
    of the maximum  usable  plotting  surface  specified  as
    fractions  of  the width or height of the maximum usable
    plotting surface.  Similarly, the argument HEIGHT  which
    defines the height of captions plotted by routine WRDPLT
    and of numbers plotted by routine NMBPLT is specified as
    a  fraction of the height of the maximum usable plotting
    surface.

3.  The heights of scale captions and of scale  numbers  and
    of  scale  tick marks, the heights of characters used to
    represent data or used as the tips of  arrows,  and  the
    lengths  of the dashes and of the spaces of dashed lines
    used to represent data, are specified in units which are
    1/50th  of  the  height  of  the plot area.  Use of this
    relative unit for the  specification  of  the  arguments
    RELHIT,  RELSPC  and  RELARO  allow the proportions of a
    plot to be independent of changes in its overall size.

For example, if data ranging from  0.001  to  0.002  in  the
horizontal  direction  and  from  1200.0  to  -300.0  in the
vertical direction were to be plotted  in  a  centered  plot
area  having  width  0.6  of  the maximum possible width and
having height 0.5 of the maximum possible height, then 

    XFIRST = 0.001
    XFINAL = 0.002
    YFIRST = 1200.0
    YFINAL = -300.0
    XWIDTH = 0.6
    YWIDTH = 0.5
    XCORNR = 0.3
    YCORNR = 0.25
GENPLT-II, a General Plotting Package               Page   6



The decreasing vertical scale causes difficulty for  neither
the  data  plotting  routines  nor  for  the  scale plotting
routine.

These arguments, and the XPOINT  and  YPOINT  data  actually
being represented are diagramed below.





*******upper*edge*of*maximum*usable*plotting*surface********
*                                                          *
*                                                          *
*                                                          *
*                                                          r
l                                                          i
e           .............. XWIDTH ..............           g
f                                                          h
t                                                          t
*           ******upper*edge*of*plot*area*******    .      *
e           *                                 .r    .      e
d           l                                . i    .      d
g           e                               .  g    .      g
e           f                         XFINAL   h    .      e
*           t                         YFINAL   t    .      *
o           *                                  *    Y      o
f           p                                  p    W      f
*           l                X                 l    I      *
u           o                 .                o    D      u
s           t                  .               t    H      s
a           *                   .              *    T      a
b           e   XFIRST           XPOINT        e    .      b
l           d   YFIRST           YPOINT        d    .      l
e           g  .                               g    .      e
*           e .                                e    .      *
s           *.                                 *    .      s
u..XCORNR...******lower*edge*of*plot*area*******    .      u
r           .                                              r
f           Y                                              f
a           C                                              a
c           O                                              c
e           R                                              e
*           N                                              *
*           R                                              *
*           .                                              *
*******lower*edge*of*maximum*usable*plotting*surface********
GENPLT-II, a General Plotting Package               Page   7



    Selection of Character Strings for Plotting Captions
    --------- -- --------- ------- --- -------- --------

Since the GENPLT-II fonts were originally developed for  use
on  an  IBM  7094  computer,  only the characters in the BCD
character set can be used in input strings.   These  allowed
characters  include  the  upper  case  Roman  alphabet,  the
numerals 0 through 9,  and  the  11  other  characters  left
parenthesis,  right  parenthesis, comma, apostrophe, period,
plus sign, minus sign,  asterisk,  slash,  equals  sign  and
dollar sign (used as a non-plotting control character).  All
other characters will be translated to blanks (spaces) prior
to being plotted.

The basic version of the lettering  routine  (FONT1C)  plots
only  horizontal or vertical upper case Roman block letters.
Plotting of the string is terminated whenever  a  $  (dollar
sign,  not  alt-mode)  is  encountered  as a character to be
plotted.  The caption
      THIS IS A SAMPLE TITLE
could be plotted if the following Hollerith field were to be
included  as  one  of the caption arguments (such as NAMELX,
NAMELY etc. of a CALL SCLPLT statement).
      23HTHIS IS A SAMPLE TITLE$
It will be  noted  that  the  $  must  be  included  in  the
character  count  and  that this character count can be less
than the 72 maximum.  In effect, the terminal $ prevents the
plotting  as random characters of the unspecified portion of
the caption.

The advanced version of the lettering routine  (LTRPLC)  can
plot  lettering  at  any angle, and interprets the character
following a $ in a plotted alphameric string  as  an  option
selector  rather than as a character to be plotted.  A blank
(space character), zero or any other character not used  for
particular  options  following  a  $  causes  termination of
plotting of the string.  The digits 1, 2,  3  and  4  select
Roman  upper  case,  Roman  lower case, Greek upper case and
Greek lower case respectively (in fonts 7 and 8, semi-script
Roman  is  selected  rather than Greek by $3 and $4).  Roman
upper case lettering is  initially  provided,  however  this
alphabet  and case are not automatically reset by succeeding
calls to the lettering program.  The  sample  caption  given
above could be plotted with the first letter in each word in
upper case by using the following string.
      40H$1T$2HIS $1I$2S $1A S$2AMPLE $1T$2ITLE$ 
Greek letters are identified in the character strings by the
Roman letters having the same numerical positions within the
corresponding alphabets.  For example, $3X  would  refer  to
upper case omega, the 24th character in the Greek alphabet.

Italic lettering, size modification, and  sub-superscripting
are  provided  by  the  following  option selector character
GENPLT-II, a General Plotting Package               Page   8



pairs.
    $$  selects italic lettering.
    $*  selects lettering and intercharacter spacing both of
        3/2 normal size.
    $/  selects lettering and intercharacter spacing both of
        2/3 normal size.
    $+  selects superscript lettering.
    $-  selects subscript lettering.
    $)  selects lettering 3/2 normal width.
    $(  selects lettering 2/3 normal width.
    $=  causes return to normal upper case Roman.
These options are cumulative until the entire group is reset
by termination of plotting of the string or by the $= option
selector pair.  If italic superscripting had been  requested
by a $$$+ or $+$$ selector set, italic subscripting could be
simply obtained by use of the $-  selector  pair  (though  a
redundant $$ would cause no harm).  However to obtain normal
size italic lettering under the same initial conditions,  it
would  be necessary to use a $=$$ option selector set, since
the $= option selector pair would remove the italic slant as
well as cause return to the normal lettering size.

A comma following a dollar sign can be  used  to  backspace.
Such  a  backspace  has  the  same width as have most of the
upper case Roman letters and as  have  all  the  digits  and
punctuation marks and upper and lower case Greek letters.  A
period following a dollar sign can  be  used  to  shift  the
plotted  output  to  a new line, similar to incrementing the
LINE argument of  routine  WRDPLT.   The  new  line  command
should only be used, however, if the lettering is being left
justified.

One of the following fonts must be loaded if file LTRPLC  is
used.    This   additional   file   contains  the  lettering
coordinates.  FONT6A is recommended for normal use.
    FONT2  primitive upper and lower case  Roman  and  upper
           and lower case Greek.
    FONT3  rounded (but not standard  draftsman)  upper  and
           lower case Roman and upper and lower case Greek.
    FONT4  outline sans-serif upper  and  lower  case  Roman
           (matches single stroke draftsman's Roman).
    FONT5  outline  Caslon  upper  and  lower   case   Roman
           (classic outline serif).
    FONT6A draftsman's upper and lower case Roman and  upper
           and lower case Greek.
    FONT7  draftsman's upper and lower case Roman and  upper
           and lower case fore-hand semi-script.
    FONT8  draftsman's upper and lower case Roman and  upper
           and lower case back-hand semi-script.
    FONT9  draftsman's upper and lower case Roman  (same  as
           in fonts 6, 7 and 8 with no alternate alphabet).
GENPLT-II, a General Plotting Package               Page   9



             Routines in the GENPLT-II Package
             -------- -- --- --------- -------

AROPLT  plots arrows with letters as head and tail.

BARPLT  plots bar charts.

DIMPLT  hatches any irregularly  shaped  closed  figure  for
        which  the  user  has  supplied  X  and Y coordinate
        arrays.  The hatch lines with which  the  figure  is
        shaded  can  be  drawn  at any angle.  Unlike DRKPLT
        described  below,  DIMPLT  results   in   a   slight
        precision loss in the input arrays.  Both DIMPLT and
        DRKPLT window the shaded figure onto the plot area.

DRKPLT  hatches  with  horizontal  and/or  vertical  shading
        lines any irregularly shaped closed figure for which
        the user has supplied X and Y coordinate arrays.

DSHPLT  plots X and Y arrays as  a  dashed  line  with  user
        defined  dash  and  space  lengths.   The lengths of
        dashes and of the spaces between them is independent
        of the distances between consecutive points defining
        the line.  The line is windowed onto the plot area.

GENPLT  plots user defined X  and  Y  arrays  as  a  set  of
        points,   a  continuous  line,  centered  alphameric
        characters,  centered  symbols  (diamonds,  hexagons
        etc.)  or  as a set of lines connecting blank arreas
        centered at the specified  coordinates  (to  connect
        points   independently   plotted   as   symbols   or
        characters).

GRDPLT  plots grids which match the scales drawn by SCLPLT.

LINPLT  plots a line from the point previously specified  by
        either PNTPLT or LINPLT.

NMBPLT  plots a left justified, baseline centered  or  right
        justified  number  at  any  angle and either with or
        without decimal point.

PNTPLT  plots individual points or the start of new lines.

SCLPLT  plots a set of linear scales, either at the  borders
        of  the  rectangular  plot  area, or intersecting at
        user chosen coordinates (not  necessarily  zero,zero
        on   the   scale)  to  divide  the  plot  area  into
        quadrants.  the user has control over which  borders
        will bear tick marks, scale numbers and legends.

WRDPLT  plots a left justified, baseline centered, or  right
        justified caption at any angle.
GENPLT-II, a General Plotting Package               Page  10



SUBROUTINE AROPLT(X1    ,Y1    ,X2    ,Y2    ,XFIRST,YFIRST,
    XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR,ITAIL ,IHEAD ,
    RELHIT,RELSPC,RELARO,LASTX ,LASTY )

Routine to plot possibly dashed arrow  with  tail  at  point
X1,Y1 and with head at point X2,Y2.

The routines DSHPLT and WRDPLT are  called.   The  lettering
routine capable of lettering at angles must be used.

The arrow can have one or more letters centered at head  and
tail.   These  are specified as the strings IHEAD and ITAIL.
V's at both ends would give a  double  headed  arrow.   Each
string  must  be  terminated  by a dollar sign followed by a
blank (space character) or by some other dollar sign command
which would specify the end of the string to be plotted.  If
no termination command  is  present  within  the  string,  a
maximum of 72 letters will be plotted.

A bar can be plotted at ends of arrow as a  subscript  minus
sign.   It  must be remembered that the width of a character
is usually 2/3rds of its height.  To  get  bars  with  width
equal to height of other letters, the string '$)$--$ ' would
be used.  The $* command character pair should not  here  be
used  instead  of  the  $) character pair since the $* would
also give an larger gap after the minus  sign  and  lead  to
slightly incorrect centering.

    X1 = horizontal data coordinate of tail of arrow
    Y1 = vertical data coordinate of tail of arrow
    X2 = horizontal data coordinate of head of arrow
    Y2 = vertical data coordinate of head of arrow
XFIRST = horizontal data coordinate to  be  placed  at  left
         border of plot area.
YFIRST = vertical data coordinate  to  be  placed  at  lower
         border of plot area.
XFINAL = horizontal data coordinate to be  placed  at  right
         border of plot area.
YFINAL = vertical data coordinate  to  be  placed  at  upper
         border of plot area.
XWIDTH = horizontal width of plot area.
YWIDTH = vertical height of plot area.
XCORNR = horizontal distance from plotting table  origin  to
         left plot edge.
YCORNR = vertical distance from  plotting  table  origin  to
         lower plot edge.
 ITAIL = array containing letter or letters to be plotted at
         arrow tail.
 IHEAD = array containing letter or letters to be plotted at
         arrow head.
RELHIT = length of dashes along stem of arrow  in  units  of
         magnitude 0.02*YWIDTH.
RELSPC = length of spaces along stem of arrow  in  units  of
GENPLT-II, a General Plotting Package               Page  11



         magnitude 0.02*YWIDTH.
RELARO = height of letter  at  end  of  arrow  in  units  of
         magnitude 0.02*YWIDTH.
 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.





SUBROUTINE BARPLT(INDIC ,KNDBGN,KNDEND,KNTBAR,MSTBAR,RATIO ,
    TOTAL ,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,NAME  ,LASTX ,
    LASTY )

Routine to plot bar charts.

 INDIC = 1 plots horizontal bar.
 INDIC = 2 plots vertical bar.
 INDIC = 3 plots hatching identification blocks.
KNDBGN = number of first component to plot, not larger  than
         KNDEND.
KNDEND = number of final component to plot, maximum is 7.
KNTBAR = number of this bar in plotting sequence, first  bar
         is 1.
MSTBAR = total number of bars to be plotted.
 RATIO = array of segment lengths in data units.
 TOTAL = data units corresponding to  total  width  of  plot
         area.
XWIDTH = horizontal width of plot area.
YWIDTH = vertical height of plot area.
XCORNR = X distance from plotting table origin to left  plot
         edge.
YCORNR = Y distance from plotting table origin to lower plot
         edge.
RELHIT = height of plotted alphanumeric characters in  units
         of 0.02*YWIDTH.
  NAME = 10 letter bar title or sequence of 10 letter  block
         titles
 LASTX = horizontal  (X)  grid  coordinate  of  last   point
         plotted.
 LASTY = vertical (Y) grid coordinate of last point plotted.
GENPLT-II, a General Plotting Package               Page  12



SUBROUTINE DIMPLT(KONTRL,XPOINT,YPOINT,  NEXT,KRDBGN,KRDEND,
    XFIRST,YFIRST,XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR,
    RELHIT,RELSPC,LASTX ,LASTY )

Routine to darken or hatch  an  irregularly  shaped  figure.
The  plotted  output is windowed onto the plot area.  Unlike
output from DRKPLT, hatch lines can be at any angle.  DIMPLT
rotates   the  input  XPOINT  and  YPOINT  arrays  prior  to
processing.  These arrays are  returned  to  their  original
values before returning to the calling program, but the user
should be aware that there can have been a slight  precision
loss.   DRKPLT  does  not  alter  the  contents of the input
XPOINT and YPOINT arrays.

KONTRL = selects perimeter or angle of hatching
KONTRL = negative gives perimeter
KONTRL = 0 or greater, hatching angle in degrees
       = 0 gives horizontal hatch lines
       = 90 gives vertical hatch lines
XPOINT = array  of  X  coordinates  defining  perimeter   of
         figure.
YPOINT = array  of  Y  coordinates  defining  perimeter   of
         figure.
  NEXT = fixed or  floating  point  array  used  as  working
         space.    NEXT   is   redefined  during  processing
         destroying   former   contents.    NEXT   must   be
         dimensioned  same or larger than XPOINT and YPOINT.
         Portion of NEXT which is used is parallel  to  used
         portions of XPOINT and YPOINT arrays.
KRDBGN = subscript of first point to be plotted.
KRDEND = subscript of final point to be plotted.
XFIRST = X coordinate (in system  used  for  XPOINT)  to  be
         placed at left border of plot area.
YFIRST = Y coordinate (in system  used  for  YPOINT)  to  be
         placed at lower border of plot area.
XFINAL = X coordinate (in system  used  for  XPOINT)  to  be
         placed at right border of plot area.
YFINAL = Y coordinate (in system  used  for  YPOINT)  to  be
         placed at upper border of plot area.
XWIDTH = horizontal width (as fraction of maximum)  of  plot
         area.
YWIDTH = vertical height (as fraction of  maximum)  of  plot
         area.
XCORNR = X distance (as fraction of maximum dimension)  from
         plotting table origin to left plot edge.
YCORNR = Y distance (as fraction of maximum dimension)  from
         plotting table origin to lower plot edge.
RELHIT = distance between alternate pairs of hatch lines  in
         units  of  0.02*YWIDTH.  RELHIT and RELSPC both set
         at  1.0   would   give   50   lines   in   distance
         corresponding to height of the plot area.
RELSPC = distance between alternate pairs of hatch lines  in
         units of 0.02*YWIDTH.
GENPLT-II, a General Plotting Package               Page  13



 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.





SUBROUTINE DRKPLT(KONTRL,XPOINT,YPOINT,  NEXT,KRDBGN,KRDEND,
    XFIRST,YFIRST,XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR,
    RELHIT, LASTX, LASTY)

Routine to darken or hatch  an  irregularly  shaped  figure.
Only  horizontal  and/or  vertical hatch lines are provided.
The routine DIMPLT should be used  for  other  angles.   The
plotted output is windowed onto the plot area.

KONTRL = option control which selects type of hatching to be
         used.
KONTRL = 1 gives  hatching  formed  of  parallel  horizontal
         lines.
KONTRL = 2  gives  crosshatch  of  horizontal  and  vertical
         lines.
KONTRL = 3 gives hatching formed of parallel vertical lines.
KONTRL = 4 plots perimeter of figure.
XPOINT = array  of  X  coordinates  defining  perimeter   of
         figure.
YPOINT = array  of  Y  coordinates  defining  perimeter   of
         figure.
  NEXT = fixed or  floating  point  array  used  as  working
         space.
  NEXT = is redefined  by  DRKPLT  so  former  contents  are
         destroyed.
  NEXT = must have same dimensions as XPOINT or YPOINT.
KRDBGN = subscript of first point to be plotted.
KRDEND = subscript of final point to be plotted.
XFIRST = X coordinate to be placed at left  border  of  plot
         area.
YFIRST = Y coordinate to be placed at lower border  of  plot
         area.
XFINAL = X coordinate to be placed at right border  of  plot
         area.
YFINAL = Y coordinate to be placed at upper border  of  plot
         area.
XWIDTH = horizontal width of plot area.
YWIDTH = vertical height of plot area.
XCORNR = X distance from plotting table origin to left  plot
         edge.
YCORNR = Y distance from plotting table origin to lower plot
         edge.
RELHIT = distace   between   hatch   lines   in   units   of
         0.02*YWIDTH.
 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.
GENPLT-II, a General Plotting Package               Page  14



SUBROUTINE DSHPLT(XPOINT,YPOINT,KRDBGN,KRDEND,XFIRST,YFIRST,
    XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,RELSPC,
    LASTX ,LASTY )

Routine to plot dashed  lines.   The  length  of  individual
dashes  and  spaces  is  independent of the distance between
point coordinates which define the line.  The  line  plotted
is windowed onto the plot area.

XPOINT = array of X coordinates of points to be plotted.
YPOINT = array of Y coordinates of points to be plotted.
KRDBGN = subscript of first point to be plotted.
KRDEND = subscript of final point to be plotted.
XFIRST = X coordinate to be placed at left  border  of  plot
         area.
YFIRST = Y coordinate to be placed at lower border  of  plot
         area.
XFINAL = X coordinate to be placed at right border  of  plot
         area.
YFINAL = Y coordinate to be placed at upper border  of  plot
         area.
XWIDTH = horizontal width of plot area.
YWIDTH = vertical height of plot area.
XCORNR = X distance from plotting table origin to left  plot
         edge.
YCORNR = Y distance from plotting table origin to lower plot
         edge.
RELHIT = length of dashes in units of magnitude 0.02*YWIDTH.
RELSPC = length of spaces in units of magnitude 0.02*YWIDTH.
 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.





SUBROUTINE GENPLT(MODE1 ,MODE2 ,MODE3 ,XPOINT,YPOINT,KRDBGN,
    KRDEND,XFIRST,YFIRST,XFINAL,YFINAL,FIRSTX,FIRSTY,FINALX,
    FINALY,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,LETTER,LASTX ,
    LASTY )

Routine to plot data X and Y coordinate arrays as points, as
symbols,  as  characters,  as  connected  lines, or as lines
connecting square  blank  areas  (which  are  not  outlined)
centered at the input coordinates.  The plotting of a point,
or of a line segment to a point can  be  suppressed  if  the
point  is outside the plot area.  It must be noted that this
does not provide true windowing of  a  line  connecting  the
specified  points.   Routine  DSHPLT should instead be used,
either with very long dashes  or  with  zero  length  spaces
between  dashes,  to plot lines which require true windowing
onto the plot area.
GENPLT-II, a General Plotting Package               Page  15



 MODE1 = 1 does not check if points are  in  requested  plot
         area.
 MODE1 = 2 sets scales to fit coordinates of plotted points.
 MODE1 = 3 does not plot point coordinates exceeding limits.

 MODE2 = 1 requires both input X and Y coordinate arrays.
 MODE2 = 2  simulates  X  array  left  to  right  at   equal
         intervals.

 MODE3 = 1 gives plot  with  lines  connecting  blank  areas
         around points.
 MODE3 = 2 gives plot with line connecting points.
 MODE3 = 3 gives plot with dot at each point.
 MODE3 = 4 gives plot with alphanumeric  character  at  each
         point.
 MODE3 = 5 gives plot with special symbol at each point.

XPOINT = array of X coordinates of points to be plotted.
YPOINT = array of Y coordinates of points to be plotted.

KRDBGN = subscript of first point to be plotted.
KRDEND = subscript of final point to be plotted.

XFIRST = X coordinate to be placed at left  border  of  plot
         area.
YFIRST = Y coordinate to be placed at lower border  of  plot
         area.
XFINAL = X coordinate to be placed at right border  of  plot
         area.
YFINAL = Y coordinate to be placed at upper border  of  plot
         area.

         Scales may either increase or decrease if MODE1 = 1
         or 3.  Scales are selected to increase toward right
         and top if MODE1 = 2.  Input limits XFIRST, YFIRST,
         XFINAL and YFINAL are ignored if MODE1 = 2.

FIRSTX = X coordinate placed at left border of plot area.
FIRSTY = Y coordinate placed at lower border of plot area.
FINALX = X coordinate placed at right border of plot area.
FINALY = Y coordinate placed at upper border of  plot  area.
         FIRSTX,   FIRSTY,  FINALX  and  FINALY  are  output
         arguments.  These variables may be used  to  define
         the  ends of the scales to be drawn by SCLPLT.  The
         value of these output arguments will vary from  the
         input arguments only if MODE1 = 2.

XWIDTH = horizontal width of plot area.
YWIDTH = vertical height of plot area.
XCORNR = X distance from plotting table origin to left  plot
         edge.
YCORNR = Y distance from plotting table origin to lower plot
         edge.
GENPLT-II, a General Plotting Package               Page  16



RELHIT = height in units  of  0.02*YWIDTH  of  the  letters,
         symbols,  or blank areas centered at each point for
         MODE3=1, 4 or 5
RELHIT = 1.0 gives letters YWIDTH/50 high.

LETTER = alphanumeric character centered at points if  MODE3
         = 4.  This is first letter specified by a Hollerith
         field (either within enclosing apostrophes or after
         a  character  count and the letter H) or read using
         an alphameric A field within  a  FORMAT  statement.
         The  character  will  be  plotted  in  the case and
         alphabet (either Roman or Greek) selected prior  to
         the  call  to GENPLT.  A dummy call to WRDPLT could
         be used to select case and alphabet.
LETTER = integer selecting special  symbol  if  MODE3  =  5.
         symbols are specified by letter values
              1, 2=triangle
              3, 4=square
              5, 6=pentagon
              7, 8=hexagon
              9,10=octagon
             11,12=cross
         Two  orientations  of  each  symbol  are  provided.
         These symbols are independent of the font loaded.

 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.





SUBROUTINE GRDPLT(LINESX,LINESY,XFIRST,YFIRST,XFINAL,YFINAL,
    XWIDTH,YWIDTH,XCORNR,YCORNR,LASTX ,LASTY )

Routine to plot grids having line spacing matching  that  of
the scale markings drawn by SCLPLT.

LINESX = number of grid  divisions  along  horizontal  scale
         between   consecutive   horizontal   scale  numbers
         plotted by SCLPLT.
LINESY = number  of  grid  divisions  along  vertical  scale
         between  consecutive vertical scale numbers plotted
         by SCLPLT.  Border is plotted if both  LINESX  =  0
         and LINESY = 0.
XFIRST = left limiting coordinate of horizontal (X) scale.
YFIRST = lower limiting coordinate of vertical (Y) scale.
XFINAL = right limiting coordinate of horizontal (X) scale.
YFINAL = upper limiting coordinate of vertical (Y) scale.
XWIDTH = horizontal plot width.
YWIDTH = vertical plot width.
XCORNR = distance from plotting table origin  to  left  plot
         edge.
GENPLT-II, a General Plotting Package               Page  17



YCORNR = distance from plotting table origin to  lower  plot
         edge.
 LASTX = horizontal  (X)  grid  coordinate  of  last   point
         plotted.
 LASTY = vertical (Y) grid coordinate of last point plotted.





SUBROUTINE LINPLT(XCOORD,YCOORD,XFIRST,YFIRST,XFINAL,YFINAL,
    XWIDTH,YWIDTH,XCORNR,YCORNR,LASTX ,LASTY )

Routine to continue previous line to new coordinates.

XCOORD = X or horizontal coordinate to which line is  to  be
         plotted
YCOORD = Y or vertical coordinate to which  line  is  to  be
         plotted
XFIRST = X coordinate cooresponding to  left  edge  of  plot
         area.
YFIRST = Y coordinate cooresponding to lower  edge  of  plot
         area.
XFINAL = X coordinate cooresponding to right  edge  of  plot
         area.
YFINAL = Y coordinate cooresponding to upper  edge  of  plot
         area.
XWIDTH = horizontal width of plot area.
YWIDTH = vertical height of plot area.
XCORNR = X distance from plotting table origin to left  plot
         edge.
YCORNR = Y distance from plotting table origin to lower plot
         edge.
 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.





SUBROUTINE NMBPLT(INDIC ,INDEX ,LINE  ,FIGURE,KDECML,HEIGHT,
    XCORNR,YCORNR,LASTX ,LASTY )

Routine to plot floating point numbers either as integers or
with decimal point.

 INDIC = angle  of  baseline  of  number  in  degrees   from
         horizontal.  INDIC can only have values 0 and 90 if
         FONT1C is used.
 INDEX = 0 plots left end of baseline of number at the point
         having the coorinates XCORNR and YCORNR.
 INDEX = 1 centers baseline of number at  the  point  having
         the coorinates XCORNR and YCORNR.
GENPLT-II, a General Plotting Package               Page  18



 INDEX = 2 plots right end of  baseline  of  number  at  the
         point having the coorinates XCORNR and YCORNR.
  LINE = line upon which number  is  to  be  plotted.   Line
         starting  at  input  values of XCORNR and YCORNR is
         line = 1.  Higher valued lines  are  offset  to  be
         plotted below line number 1.  Spacing between lines
         is 1.5 height of numbers plotted.
FIGURE = floating point number to be plotted.
KDECML = number of decimal places (numerals right of decimal
         point) to be plotted.
KDECML = 0 gives figure plotted as integer.
HEIGHT = height of numbers to be plotted.
XCORNR = horizontal coordinate of lettering  baseline.   see
         INDEX.
YCORNR = vertical coordinate  of  lettering  baseline.   see
         INDEX.
 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.





SUBROUTINE PNTPLT(XCOORD,YCOORD,XFIRST,YFIRST,XFINAL,YFINAL,
    XWIDTH,YWIDTH,XCORNR,YCORNR,LASTX ,LASTY )

Routine to plot a single point or the start of a new line.

XCOORD = X or horizontal coordinate of point to be plotted.
YCOORD = Y or vertical coordinate of point to be plotted.
XFIRST = X coordinate cooresponding to  left  edge  of  plot
         area.
YFIRST = Y coordinate cooresponding to lower  edge  of  plot
         area.
XFINAL = X coordinate cooresponding to right  edge  of  plot
         area.
YFINAL = Y coordinate cooresponding to upper  edge  of  plot
         area.
XWIDTH = horizontal width of plot area.
YWIDTH = vertical height of plot area.
XCORNR = X distance from plotting table origin to left  plot
         edge.
YCORNR = Y distance from plotting table origin to lower plot
         edge.
 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.
GENPLT-II, a General Plotting Package               Page  19



SUBROUTINE SCLPLT(INDEX0,INDEX1,INDEX2,INDEX3,INDEX4,INDEX5,
    INDEX6,INDEX7,INDEX8,INDEX9,XFIRST,YFIRST,XFINAL,YFINAL,
    XCROSS,YCROSS,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,NAMELX,
    NAMELY,NAMEUX,NAMERY,NAME  ,LASTX ,LASTY )

Routine to plot captions and  linear  scales  consisting  of
border  lines,  tick  marks  and  scale  numbers.  The scale
numbers are selected  to  be  as  logical  as  is  possible.
However, extremely large numbers at either or both ends of a
scale, or extremely small differences between the numbers at
the  ends  of the scale should be avoided to prevent overlap
of the plotted numerals.

INDEX0 = 1 gives immediate return from SCLPLT subroutine.
INDEX0 = 2-4 defines format of scales to be plotted.
INDEX0 = 2-3 does  not  cause  any  actual  plotting  to  be
         undertaken.
INDEX0 = 2 defines format for external (rectangular) scales.
INDEX0 = 3 defines format  for  internal  (crossed)  scales.
         Internal  scales  divide the plot area in quadrants
         of possibly unequal size.
INDEX0 = 4 causes actual plotting of plotting area corners.
INDEX0 = 4  marks  corners  of  plotting  area  with   large
         crosses.
INDEX0 = 4 voids all other options except caption options.
INDEX0 = 4 might be used for paper alignment or trimming  of
         plots.

INDEX1 = 1 gives no horizontal (X) scale lines.
INDEX1 = 2-4 plots horizontal (X) scale lines.
INDEX1 = 2 plots only lower horizontal (X) scale line.
INDEX1 = 3 plots both upper and lower horizontal  (X)  scale
         lines.
INDEX1 = 4 plots only upper horizontal (X) scale line.

INDEX2 = 1 gives no vertical (Y) scale lines.
INDEX2 = 2-4 plots vertical (Y) scale lines.
INDEX2 = 2 plots only left vertical (Y) scale line.
INDEX2 = 3 plots both left  and  right  vertical  (Y)  scale
         lines.
INDEX2 = 4 plots only right vertical (Y) scale line.

INDEX3 = 1 gives no tick marks along horizontal (X) scales.
INDEX3 = 2-4 plots tick marks along horizontal (X) scales.
INDEX3 = 2 plots only lower horizontal (X) scale tick marks.
INDEX3 = 3 plots upper and lower horizontal (X)  scale  tick
         marks.
INDEX3 = 4 plots only upper horizontal (X) scale tick marks.

INDEX4 = 1 gives no tick marks along vertical (Y) scales.
INDEX4 = 2-4 plots tick marks along vertical (Y) scales.
INDEX4 = 2 plots only left vertical (Y) scale tick marks.
INDEX4 = 3 plots left and  right  vertical  (Y)  scale  tick
GENPLT-II, a General Plotting Package               Page  20



         marks.
INDEX4 = 4 plots only right vertical (Y) scale tick marks.

INDEX5 = 1 gives  no  scale  numbers  along  horizontal  (X)
         scales.
INDEX5 = 2-4 plots scale numbers along horizontal (X) scales
         (providing   these  same  scales  have  tick  marks
         selected by INDEX3).
INDEX5 = 2 plots only lower horizontal (X) scale numbers.
INDEX5 = 3  plots  upper  and  lower  horizontal  (X)  scale
         numbers.
INDEX5 = 4 plots only upper horizontal (X) scale numbers.

INDEX6 = 1 gives no scale numbers along vertical (Y) scales.
INDEX6 = 2-4 plots scale numbers along vertical  (Y)  scales
         (providing   these  same  scales  have  tick  marks
         selected by INDEX4).
INDEX6 = 2 plots only left vertical (Y) scales numbers.
INDEX6 = 3 plots left and right vertical (Y) scale numbers.
INDEX6 = 4 plots only right vertical (Y) scale numbers.

INDEX7 = 1 gives no horizontal (X) scale captions.
INDEX7 = 2-4 plots captions along horizontal (X) scales.
INDEX7 = 2 plots only lower horizontal (X) scale caption.
INDEX7 = 3  plots  upper  and  lower  horizontal  (X)  scale
         captions.
INDEX7 = 4 plots only upper horizontal (X) scale caption.

INDEX8 = 0,1 gives no vertical (Y) scale captions.
INDEX8 = 2-4 plots captions along vertical (Y) scales.
INDEX8 = 2 plots only left vertical (Y) scale caption.
INDEX8 = 3 plots left and right vertical (Y) scale captions.
INDEX8 = 4 plots only right vertical (Y) scale caption.
INDEX8 = also controls direction of  INDEX6  selected  scale
         numbers.
INDEX8 = 0 plots horizontally any scale numbers on  vertical
         scale.
INDEX8 = 0 prevents overlap of scale  numbers  on  X  and  Y
         scales.
INDEX8 = 1-4 plots vertically any scale numbers on Y scale.
INDEX8 = 1-4  prevents  overlap  of  Y  scale  captions  and
         numbers.

INDEX9 = 1 gives no main caption.
INDEX9 = 2-4 plots main caption.
INDEX9 = 2 plots main caption  below  lower  horizontal  (X)
         scale.   The location of this main caption would be
         below the caption of  the  lower  horizontal  scale
         NAMELX possibly selected by INDEX7.
INDEX9 = 3 plots main caption  above  lower  horizontal  (X)
         scale.   The location of this main caption would be
         above the tick marks on the lower horizontal  scale
         possibly selected by INDEX3.
GENPLT-II, a General Plotting Package               Page  21



INDEX9 = 4 plots main caption  below  upper  horizontal  (X)
         scale.   The location of this main caption would be
         below the tick marks on the upper horizontal  scale
         possibly selected by INDEX3.

XFIRST = left limiting coordinate of horizontal (X) scale.
YFIRST = lower limiting coordinate of vertical (Y) scale.
XFINAL = right limiting coordinate of horizontal (X) scale.
YFINAL = upper limiting coordinate of vertical (Y) scale.

XCROSS = horizontal  coordinate  (in  the  system  used  for
         XFIRST  and XFINAL) of the point of intersection of
         crossed scales.
XCROSS = is ignored unless INDEX0 = 3.
YCROSS = vertical coordinate (in the system used for  YFIRST
         and YFINAL) of the point of intersection of crossed
         scales.
YCROSS = is ignored unless INDEX0 = 3.

XWIDTH = horizontal plot width.
YWIDTH = vertical plot width.
XCORNR = distance from plotting table origin  to  left  plot
         edge.
YCORNR = distance from plotting table origin to  lower  plot
         edge.

RELHIT = height of scale numbers in units of 0.02*YWIDTH.
RELHIT = proportions height  of  tick  marks,  numbers,  and
         captions.
RELHIT = 1.0 gives numbers YWIDTH/50 high, and is  best  for
         large plots.
RELHIT = 2.0 gives numbers YWIDTH/25 high, and is  best  for
         small plots.

NAMELX = lower horizontal  scale  caption,  same  height  as
         numbers.
NAMELX = 72 characters  (or  terminated  by  a  dollar  sign
         followed  by  a  blank (space character) within the
         string if fewer than 72) read by 14A5,1A2 format or
         specified by alphameric string in DATA statement or
         in CALL statement.
NAMELY = left  vertical  scale  caption,  same   height   as
         numbers.
NAMELY = 72 characters  (or  terminated  by  a  dollar  sign
         followed  by  a  blank (space character) within the
         string if fewer than 72) read by 14A5,1A2 format or
         specified by alphameric string in DATA statement or
         in CALL statement.
NAMEUX = upper horizontal  scale  caption,  same  height  as
         numbers.
NAMEUX = 72 characters  (or  terminated  by  a  dollar  sign
         followed  by  a  blank (space character) within the
         string if fewer than 72) read by 14A5,1A2 format or
GENPLT-II, a General Plotting Package               Page  22



         specified by alphameric string in DATA statement or
         in CALL statement.
NAMERY = right  vertical  scale  caption,  same  height   as
         numbers.
NAMERY = 72 characters  (or  terminated  by  a  dollar  sign
         followed  by  a  blank (space character) within the
         string if fewer than 72) read by 14A5,1A2 format or
         specified by alphameric string in DATA statement or
         in CALL statement.
  NAME = main caption, height is 1.5  times  that  of  scale
         numbers.
  NAME = 72 characters  (or  terminated  by  a  dollar  sign
         followed  by  a  blank (space character) within the
         string if fewer than 72) read by 14A5,1A2 format or
         specified by alphameric string in DATA statement or
         in CALL statement.

 LASTX = horizontal  (X)  grid  coordinate  of  last   point
         plotted.
 LASTY = vertical (Y) grid coordinate of last point plotted.





SUBROUTINE WRDPLT(INDIC ,INDEX ,LINE  ,LWORD ,LTRBGN,LTREND,
    HEIGHT,XCORNR,YCORNR,LASTX ,LASTY )

Routine to  plot  captions  at  positions  not  provided  as
standard by SCLPLT.

 INDIC = angle  of  lettering  baseline  in   degrees   from
         horizontal.  INDIC can only have values 0 and 90 if
         FONT1C is used.
 INDEX = 0 plots left end of lettering baseline at the point
         with the coordinates XCORNR and YCORNR.
 INDEX = 1 centers lettering baseline at the point with  the
         coordinates XCORNR and YCORNR.
 INDEX = 2 plots right end  of  lettering  baseline  at  the
         point with the coordinates XCORNR and YCORNR.
  LINE = line upon which alphameric string LWORD  is  to  be
         plotted.   Line  starting at input values of XCORNR
         and YCORNR is line = 1.  Higher  valued  lines  are
         offset  to be plotted below line number 1.  Spacing
         between lines is 1.5 height of words plotted.
 LWORD = word array to be  plotted.   This  must  either  be
         specified  as a string in the CALL WRDPLT statement
         (either with a leading character count followed  by
         letter    H,   or   with   leading   and   trailing
         apostrophes), or be an array  with  each  character
         byte  being  defined  within  each array element (4
         letters per word for IBM 360  or  IBM  370,  5  for
         PDP-10,   6  for  IBM  7094,  10  for  CDC  60  bit
GENPLT-II, a General Plotting Package               Page  23



         computers).  This means the  array  can  have  been
         read  by  some  multiple  of  an  A5  format on the
         PDP-10.
LTRBGN = number of first letter in word array to be plotted.
         This  would  have  the  value  1 if lettering is to
         include first character in word array.
LTREND = number of final letter in word array to be plotted.
         This  prevents  plotting  of  garbage if the dollar
         sign and blank (space)  combination  has  not  been
         used  within  the character string to terminate its
         own plotting.
HEIGHT = height of letters to be plotted.
XCORNR = horizontal coordinate of lettering  baseline.   see
         INDEX.
YCORNR = vertical coordinate  of  lettering  baseline.   see
         INDEX.
 LASTX = last X grid coordinate plotted.
 LASTY = last Y grid coordinate plotted.
GENPLT-II, a General Plotting Package               Page  24



        Calling Hierarchy of the GENPLT-II Routines
        ------- --------- -- --- --------- --------

            AROPLT    DSHPLT              PENDWN
                                          PENUP
                      WRDPLT    LTRPLT    IBCD
                                          PENDWN
                                          PENUP
            BARPLT    HCHPLT    PENDWN
                                PENUP
                      LTRPLT    IBCD
                                PENDWN
                                PENUP
                      PENDWN
                      PENUP

            DIMPLT    PENDWN
                      PENUP

            DRKPLT    PENDWN
                      PENUP

            DSHPLT    PENDWN
                      PENUP

            GENPLT    LTRPLT    IBCD
                                PENDWN
                                PENUP
                      PENDWN
                      PENUP

            GRDPLT    PENDWN
                      PENUP

            LINPLT    PENDWN

            NMBPLT    LTRPLT    IBCD
                                PENDWN
                                PENUP
            PNTPLT    PENUP

            SCLPLT    LTRPLT    IBCD
                                PENDWN
                                PENUP
                      PENDWN
                      PENUP

            WRDPLT    LTRPLT    IBCD
                                PENDWN
                                PENUP

The routine LTRPLT consists either of file FONT1C or of file
LTRPLC and one of the files FONT2 through FONT9.
GENPLT-II, a General Plotting Package               Page  25
Appendix


          Appendix:  Interactive Graphics Routines
          ---------  ----------- -------- --------
        (some of which call entries in file ARDMAC)





FUNCTION IPLDST(IX,IY,JX,JY,IPENX,IPENY)

Function to return  distance  from  line  having  endpoints.
Calculations  are  performed in integer mode and can have 10
percent error.

IPLDST = returned with distance
    IX = horizontal coordinate of start of line
    IY = vertical coordinate of start of line
    JX = horizontal coordinate of end of line
    JY = vertical coordinate of end of line
 IPENX = horizontal coordinate of reference point
 IPENY = vertical coordinate of reference point





FUNCTION IPLHIT(KONTRL,IWIDE,IHIGH,IX,IY,JX,JY,IPENX,IPENY)

Function to test if tablet stylus points to point  or  line.
The routines CRTOFF and CRTON are called.

IPLHIT = 0 returned if stylus doesn't point to line
       = 1 returned if stylus points to line
KONTRL = 0, does not outline active area
       = 1, outlines active area if test successful
 IWIDE = half-width of active area around point or line
 IHIGH = -1, test if stylus points  to  line  (acitive  area
         extends beyond ends of line)
       = 0, test if stylus points to middle of line  (active
         area extends only to ends of line)
       = positive, half-height of active area  around  point
         (JX and JY are not used)
    IX = horizontal coordinate of point or of end 1 of line
    IY = vertical coordinate of point or of end 1 of line
    JX = horizontal coordinate of end 2 of line
    JY = vertical coordinate of end 2 of line
 IPENX = horizontal position of stylus
 IPENY = vertical position of stylus
GENPLT-II, a General Plotting Package               Page  26
Appendix


SUBROUTINE PLTBOX(KONTRL,IWIDE,IHIGH,IX,IY,JX,JY)

Routine to outline point or line with box or  diamond.   The
routines CRTOFF and CRTON are called.

KONTRL = 0, plot as box (edges at 0 and 90 degrees)
       = 1, plot as diamond (edges at diagonal)
 IWIDE = half-width of box around point or line
 IHIGH = -1, box extends beyond ends of line
       = 0, box touches ends of line
       = positive, half-height of box around point  (JX  and
         JY are not used)
    IX = horizontal coordinate of point or of end 1 of line
    IY = vertical coordinate of point or of end 1 of line
    JX = horizontal coordinate of end 2 of line
    JY = vertical coordinate of end 2 of line





SUBROUTINE PLTCUT(IPLCUT,IX,IY,JX,JY,MINX,MINY,MAXX,MAXY)

Routine to window line.  This routine is based on  GENPLT-II
plotter  coupling routines published in volume 3 of Computer
Programs For Chemistry.

IPLCUT = returned as 0 if line does not pass thru window.
       = returned as 1 if line passes thru window
    IX = horizontal coordinate of start of line
    IY = vertical coordinate of start of line
    JX = horizontal coordinate of end of line
    JY = vertical coordinate of end of line
  MINX = horizontal  coordinate  of  lower  left  corner  of
         window
  MINY = vertical coordinate of lower left corner of window
  MAXX = horizontal coordinate  of  upper  right  corner  of
         window
  MAXY = vertical coordinate of upper right corner of window

PLTCUT  routine  returns  JX,  JY,  IX  and  IY  changed  if
windowing is necessary.
GENPLT-II, a General Plotting Package               Page  27
Appendix


SUBROUTINE PLTLIN(MULT,IDASH,IWEDGE,IHIGH,JHIGH,IDSPLY,IX,
IY,JDSPLY,JX,JY)

Routine to plot parallel lines between blank  rectangles  of
different widths.  The routines CRTOFF and CRTON are called.

  MULT = number of parallel lines to be drawn
       = 1  or  greater,  this  number  of  lines  is  drawn
         centered between point IX IY and point JX JY.
 IDASH = 0, continuous line is drawn
       = 1 or greater, dashed line is drawn
IWEDGE = -1 or less, each line is wedge pointing from  point
         IX, IY to point JX, JY.
       = 0, normal (non-wedge) line representation.
       = 1 or greater, each  line  is  wedge  pointing  from
         point JX, JY to point IX, IY.
 IHIGH = separation between lines if MULT is  not  1  and/or
         between  dashes  if  IDASH  is  not zero.  IHIGH is
         similarly the minimum dash length and  the  minimum
         width   of   the   broadest  wedge  end  which  are
         proportional to IDASH and  the  absolute  value  of
         IWEDGE respectively.
 JHIGH = half of height of rectangles 1 and 2.
IDSPLY = 0, line is drawn to coordinates IX and IY
       = 1 or greater, is width of blank rectangle 1
    IX = horizontal coordinate of rectangle 1
    IY = vertical coordinate of rectangle 1
JDSPLY = 0, line is drawn to coordinates JX and JY
       = 1 or greater, is width of blank rectangle 2
    JX = horizontal coordinate of rectangle 2
    JY = vertical coordinate of rectangle 2





SUBROUTINE PLTTOP(IWIDE,IX,IY,JX,JY,NEWX,NEWY)

Routine to calculate position above line midpoint.

 IWIDE = distance to be from line
    IX = horizontal coordinate of start of line
    IY = vertical coordinate of start of line
    JX = horizontal coordinate of end of line
    JY = vertical coordinate of end of line
  NEWX = returned with calculated X coordinate
  NEWY = returned with calculated Y coordinate
GENPLT-II, a General Plotting Package               Page  28
Appendix


           Appendix:  Entry Points in File ARDMAC
           ---------  ----- ------ -- ---- ------

SUBROUTINE CRTLTR(STRING,IFIRST,IFINAL,NEWX,NEWY)
uses hardware character generation  to  plot  an  alphameric
string containing 67 or fewer characters.
    STRING = 7 bit ASCII string (you  can't  get  any  other
             kind from DEC PDP-10 FORTRAN).
    IFIRST = serial number of first character.
    IFINAL = serial number of  final  character.   (to  plot
             from  3rd  through  20th  character  in string,
             IFIRST=3 and IFINAL=20)
      NEWX = horizontal coordinate of lower, left corner  of
             first letter to be plotted.
      NEWY = vertical coordinate of lower,  left  corner  of
             first letter to be plotted.

SUBROUTINE CRTOFF(NEWX,NEWY)
positions CRT beam without writing at point NEWX, NEWY.
      NEWX = horizontal coordinate from 0 to 1023.
      NEWY = vertical coordinate from 0 to 1023.

SUBROUTINE CRTON (NEWX,NEWY)
draws line from previous beam position to the new point with
coordinates NEWX and NEWY.
      NEWX = horizontal coordinate from 0 to 1023.
      NEWY = vertical coordinate from 0 to 1023.

SUBROUTINE CRTSCP(KONTRL) selects  which  screen  will  show
letters and drawn lines.
    KONTRL = bit coded mask selecting screen.
           = 1, lines will appear on screen 1.
           = 2, lines will appear on screen 2.
           = 3, lines will appear on both screens 1 and 2.

SUBROUTINE CRTSTR(KONTRL)
selects whether letters and drawn lines are  stored  on  the
CRT screen or merely momentarily visible (the latter mode is
known as "write-through").
    KONTRL = 0, lines are momentarily visible.
           = 1, lines are stored.

SUBROUTINE CRTWIP(NO ARGUMENT)
clears the currently selected screen, empties  input  buffer
and returns ARDS terminal to teletype mode.

SUBROUTINE CRTXYZ(NEWX,NEWY,NEWZ)
queries the terminal  about  the  current  location  of  the
tablet  stylus  and returns stylus position in the locations
supplied as arguments (original contents are destroyed).
      NEWX = horizontal coordinate from 0 to 1023.
      NEWY = vertical coordinate from 0 to 1023.
      NEWZ = 0, stylus is pressed against tablet.
GENPLT-II, a General Plotting Package               Page  29
Appendix


           = 4 or 6, stylus is within about 3/8 inch of  the
             tablet surface.
           = -1,  stylus  is  beyond  3/8  inch  of   tablet
             surface.



                            author:  Donald E. Barth
                                     Department of Chemistry
                                     Harvard University
                           updated:  September 1972