CHAPTER 6     PLOT PACKAGE SUBROUTINES





                 This  chapter  describes   the   standard   MIIPS   plotting

            subroutines  available to FORTRAN programmers on OpenVMS VAX.  In

            the subroutine descriptions that follow, the letters "C" and  "R"

            indicate where the argument is to be defined.  "C" means that the

            value is provided in the subroutine call, and "R" means that  the

            value  is  returned  by  the  subroutine.   For  practically  all

            applications, and for both  beginning  and  advanced  programmers

            alike,  the  most  useful subroutine will be XYPLOT.  In order to

            link new programs  that  contain  calls  to  the  MIIPS  plotting

            package  subroutines,  one should use the P1LINK command given in

            Chapter 2 of the this volume.  Additional documentation can  also

            be found in each subroutine located on [MIIPS.PLOT]


                                                                Page 2





            6.1 HIGH LEVEL MODULES



            6.1.1 XYPLOT SUBROUTINE



                 This subroutine is a generalized plotting routine which  can

            plot  several plots and/or histograms on one or more plot devices

            at the same time with a variety of colors, symbols,  vector  line

            styles,  pen widths, and filling styles.  The scaling of the axes

            can be done automatically or controlled by the user  through  the

            calling  program  or  interactivley  by  responding  to  prompts.

            Linear  and  antilog  annotation  of  the   axes   is   possible.

            Additional axis annotation in different units can be added on the

            right and upper sides of the plot.  By turning on the cursor  one

            can read back the physical values from the plot, where the values

            are put into a COMMON block for use by the calling program.   The

            user can replot subsections of the plot defined by the cursor and

            modify  the  values  of  the  data  through   simple   arithmetic

            operations.   Text,  including  Greek  characters,  can  be added

            interactively or through the calling program.

                 In addition to  the  SUBROUTINE  XYPLOT,  there  is  also  a

            command  XYPLOT,  which when entered at the terminal, will prompt

            the user for a data file, and other information to make  a  plot.

            This convenient facility is described in Volume 1, Chapter 15.



            Call:



                  CALL XYPLOT(XARRAY,YARRAY,SIZE,NPLOTS,NPOINTS,LINVECT,INC,

                  LINTYPE,NSYMBOL,INVERT,COLOR,INTERACT,CROSSHAIRS,XLABEL,

                  YLABEL,TITLE,DEVICES,ADDENDA)



            Where:



            NAME      I/O TYPE          DESCRIPTION

            XARRAY     C   R4     is the array holding the  data  for  the  X

                                  postions  of  each  point for each plot.  A

                                  linear scaling of the axes is automatically

                                  done  from the range of values of the first

                                  plot   in   the   array,   provided    that

                                  XARRAY(SIZE-3) equals 0.  If XARRAY(SIZE-3)

                                  equals -1, an antilog scaling of  the  axes

                                  is  automatically done.  The linear scaling

                                  can be manually controlled from the calling

                                  program  by  filling  the  last 4 locations

                                  with the axis length, number of  intervals,

                                  starting   physical   value,  and  physical

                                  increment  per   interval.    The   antilog

                                  scaling can be manually controlled from the

                                  calling  program  by  filling  the  last  4

                                  locations  with  the axis length, number of

                                  decades, starting physical value, and zero.

                                  Note  that  the  fractional  parts  of  the

                                  decades, and starting value  are  antilogs.

                                  Alternately,   the   scaling  can  be  done

                                  interactively if CROSSHAIRS is .TRUE.   and

                                  I  is typed.  It is sometimes convenient to


                                                                Page 3





                                  have points in the array which  should  not

                                  be  plotted.   This  can be done by setting

                                  their value equal to '7FFFFFFF'X.  In order

                                  to draw error bars or residual vectors, the

                                  data for the locations of the ends  of  the

                                  lines  are  arranged  in  pairs,  stored in

                                  array locations which differ by one in  the

                                  second   index   in   XARRAY   and  YARRAY.

                                  Alternately, if  NSYMBOL  contains  a  flag

                                  value,  i.e.,  100  added  to  the previous

                                  value, then instead of pairs  of  end-point

                                  locations,  one  can use a central location

                                  and deviation.  For example, for a vertical

                                  errorbar   located   at  (1.0,2.0)  with  a

                                  deviation   of   0.1    we    could    have

                                  XARRAY(1,1)=1.0,           YARRAY(1,1)=2.0,

                                  XARRAY(1,2)=1.0,   YARRAY(1,2)=0.1.    Note

                                  that  XARRAY(1,2)  can  either  repeat  the

                                  value for XARRAY(1,1) or be  set  equal  to

                                  zero.   The increment mode can only be used

                                  for   drawing   errorbars,   not   residual

                                  vectors.



            YARRAY     C   R4     is like XARRAY but for the Y positions.



            SIZE       C   I4     is one of  the  dimensions  of  XARRAY  and

                                  YARRAY.  It should at present be at least 4

                                  larger than the maximum number of points in

                                  any plot.



            NPLOTS     C   I4     is the number of plots to be simultaneously

                                  produced  and  one the dimensions of XARRAY

                                  and  YARRAY.   If  error  bars  are  to  be

                                  produced,  NPLOTS  must  be increased by 2;

                                  the values for the end points of the  error

                                  bars should be placed in XARRAY and YARRAY.



            NPOINTS    C   I4     is an array containing the number  of  data

                                  points  for  each  pair  of arrays for each

                                  plot.



            LINVECT    C   I4     is an array giving the vector type  (solid,

                                  dashed,  etc.)  for each plot.  The numbers

                                  range from 0 to 4 for  the  VT100  and  the

                                  Visual  550,  0  to  7 for the GraphOn, and

                                  from 0 to  15  for  the  Lasergrafix.   See

                                  [MIIPS.PLOT]VECTMODE.FOR for some examples.

                                  One can optionally control  the  pen  width

                                  (only  on  the  Lasergrafix and Apple Laser

                                  Writer)   by   including   the   width   in

                                  thousandths  of  an inch in the second byte

                                  of LINVECT.  If the pen width number is not

                                  present,  a  default  pen width (equal to 6

                                  pixels (20/1000 inch) on the  Apple  and  7

                                  pixels on the Lasergrafix) is selected.


                                                                Page 4





            INC        C   I4     is an array containing the increment to  be

                                  used  in stepping through XARRAY and YARRAY

                                  when plotting



            LINTYPE    C   I4     is an array controlling the type of line to

                                  be  drawn  through  the  data  points.  The

                                  magnitude of LINTYPE controls the frequency

                                  of   plotted  symbols:   e.g.   if  LINTYPE

                                  equals 4 a special symbol  drawn  at  every

                                  4'th  data  point.   If LINTYPE is zero, no

                                  symbols  are  plotted.    If   LINTYPE   is

                                  positive, a straight line connects the data

                                  points.   If  LINTYPE   is   negative,   no

                                  connecting   lines   are  drawn;  only  the

                                  symbols are plotted.   If  LINTYPE  =  997,

                                  error  bars  are drawn; if LINTYPE = 998, a

                                  histogram is drawn with  the  bars  stacked

                                  vertically  if multiple plots are made; and

                                  if LINTYPE = 999, a histogram is drawn with

                                  the  bars  placed  next  to  each  other if

                                  multiple plots are made.



            NSYMBOL    C   I4     is an array  giving  the  symbol  for  each

                                  plot.  Values from 0 to 13 are allowed.  If

                                  a character is to be plotted instead  of  a

                                  symbol,  the  ASCII  code  of the character

                                  should be placed  in  the  second  byte  of

                                  NSYMBOL.   If  a  histogram is to be drawn,

                                  the value in the first byte gives  the  the

                                  filling  style  (on  the Visual 550 and the

                                  Lasergrafix 1200).  If error bars are to be

                                  drawn,  the  value  in the first byte gives

                                  the style of the end of the error  bar.   A

                                  zero  gives  the  usual  short tick at that

                                  end; a +1 gives nothing at that end;  a  +2

                                  gives  an  arrow-  head  at  that end.  The

                                  value  in  the  third  byte  specifies  the

                                  symbol height in hundredths of an inch.  If

                                  the value is not present, a default of 0.14

                                  inch is chosen.



            INVERT     C   LOG2   is an array  controling  the  inversion  of

                                  data  plotted  in  the  x and y directions,

                                  respectively.



            COLOR      C   I4     is an array containing the color  for  each

                                  plot.    A   value   of  zero  causes  that

                                  particular plot  not  to  be  drawn.   Some

                                  examples of useful colors (24-bit) are:

                                  Azure = 8943581

                                  Blue = 255

                                  Brown = 811840, 10061960

                                  Cyan = 65535


                                                                Page 5





                                  Gray = 1118481, 2236962, 3355443, 4473924

                                  5592405, 6710886, 7829367, 8947848

                                  10066329, 11184810, 12303291, 13421772

                                  14540253, 15658734, 16777215

                                  Green = 65280

                                  Magenta = 16711935

                                  Olive = 4465152, 7820561

                                  Orange = 14518272, 16742144

                                  Raspberry  =  5570560,  6689041,   7798835,

                                  7803153

                                  8912947, 10031377

                                  Red = 16711680

                                  Rust = 11149824

                                  Tan = 10044433

                                  Violet = 1170756, 4456499

                                  Yellow = 16776960



            INTERACT   C   LOG2   is a logical variable  controlling  whether

                                  the user will be forced to provide plotting

                                  parameters.  If .TRUE.  the user  is  asked

                                  for  whether  the  axes are to be inverted,

                                  the lowest physical  value  and  increment,

                                  the  axes'  labels, the title, and the plot

                                  device.  In general this should be  set  to

                                  .FALSE.   and interaction done as described

                                  below.



            CROSSHAIRS C   LOG2   is a logical variable  controlling  whether

                                  the crosshairs can be turned on and used to

                                  read data values from the plot and redo the

                                  plot.   If  .TRUE.,  then  the following is

                                  true:

                                  Typing (not entering) A will  turn  on  the

                                  crosshairs  and  by  pressing  the  <CR> at

                                  chosen X limits, the mean Y value  will  be

                                  calculated for each plot.

                                  Typing  a  allows   the   user   to   enter

                                  annotation   at   the   location   of   the

                                  crosshairs with  the  color  most  recently

                                  selected.   CNTRL  I  toggles  to the Greek

                                  alphabet and special symbols  and  back  to

                                  English,  CNTRL  H  gives  a backspace, and

                                  CNTRL J toggles to subscript,  superscript,

                                  and  back to normal.  Refer to [MIIPS.PLOT]

                                  SYMGENGR.MAR for the locations of the Greek

                                  characters   and  special  symbols  on  the

                                  keyboard.

                                  Typing  B  and  defining  a  box  with  the

                                  crosshairs  will  replot  with user defined

                                  scaling.

                                  Typing C turns on the crosshairs,  pressing

                                  the <CR> prints the values at that location

                                  and puts the  values  in  a  common  block,

                                  typing  -  deletes  the last pair of values

                                  from the common block, and typing  Q  turns


                                                                Page 6





                                  off the crosshairs.

                                  Typing c allows the user to be prompted for

                                  the color.

                                  Typing F  allows  the  user  to  alter  the

                                  scaling   factor   for   the  current  plot

                                  device(s).

                                  Typing f allows the user to change the fill

                                  style for each plot.

                                  Typing I allows the user to be prompted for

                                  several of the plotting parameters before a

                                  replot is done.  This command is  typically

                                  used when preparing a plot for publication.

                                  The following operations are available:

                                  1) Inverting the X axis and/or Y axis

                                  2)  Labeling  the  X  and  Y  axes  in  the

                                  following  ways:   Linear automatic, Linear

                                  manual, Antilog automatic,  Antilog  manual

                                  (antilog   refers  to  the  fact  that  the

                                  labeling is  the  antilog  of  the  plotted

                                  values which are logs)

                                  a)  In  the  Linear  manual  mode  one  can

                                  specify  for  the  X and Y axes, the lowest

                                  labeled  physical   value,   the   physical

                                  value/interval, and the number of intervals

                                  (coded as nn.llrr where nn is  the  integer

                                  part,  .ll  represents the left (or bottom)

                                  fractional part,  and  .rr  represents  the

                                  right   (or  top)  fractional  part  of  an

                                  interval).

                                  b) In  the  Antilog  manual  mode  one  can

                                  specify  for  the  X and Y axes, the lowest

                                  displayed tick mark (coded  as  log.antilog

                                  where  log  is  the  integer  part  of  the

                                  plotted value (which is a log), and antilog

                                  represents the first displayed tick mark of

                                  that decade (which is  an  antilog)).   The

                                  antilog  of the physical value at the first

                                  tick mark may or may not be printed byu the

                                  program.   One  can also specify the number

                                  of displayed decades  (coded  as  n.antilog

                                  where  n  is the integer part of the number

                                  of  decades,  and  antilog  represents  the

                                  rightmost   displayed   tick   mark  of  an

                                  additional decade.   For  example,  if  one

                                  enters  -1.5  for  the lowest value and 3.2

                                  for the number of decades, then  the  first

                                  tick  mark will be at X=0.5 (log = -0.301 =

                                  -1 + 0.699) and the last tick mark will  be

                                  at   X=200   (log   =  2.301).   Note  that

                                  fractional parts of .0 and  .1  behave  the

                                  same way.

                                  Note:  If the  original  plot  was  linear,

                                  then  the  log  of the data should be taken

                                  first (with the L command) for the  antilog

                                  labeling to make sense.


                                                                Page 7





                                  3) Specifying symbol heights

                                  4) Specifying labels for the X and Y axes

                                  5) Specifying a title

                                  6) Specifying one or more print devices

                                  Typing L allows the user to take the log.

                                  Typing  l  allows  the  user  to  take  the

                                  natural log.

                                  Typing M allows the user to  modify  the  X

                                  and  Y  values  by  adding  increments  and

                                  adjusting by scaling factors.

                                  Typing O redoes the original plot.  If keys

                                  X, x, Y, or y were pressed, additional axes

                                  will be plotted.

                                  Typing P allows the user to take powers.

                                  Typing p allows the user to  determine  the

                                  color of each plot.

                                  Typing o redoes the original plot.  If keys

                                  X,   x,   Y,   or   y  were  pressed,  that

                                  information is cancelled.

                                  Typing Q will return.

                                  Typing R will turn on the crosshairs and by

                                  pressing  the  <CR>  at  chosen  X  limits,

                                  replotting with automatic scaling  will  be

                                  done.

                                  Typing S allows the  user  to  specify  the

                                  style of vector

                                  Typing V allows cursor input for drawing  a

                                  solid  vector  of  the color and line style

                                  most recently selected.

                                  Typing v allows the user to be prompted for

                                  the  starting and ending physical values of

                                  a vector.

                                  Typing X or Y  allows  plotting  additional

                                  linearly scaled axes in different units.

                                  Typing x or y  allows  plotting  additional

                                  antilog scaled axes in different units.



            XLABEL     C   CHAR   is the label to be displayed  along  the  x

                                  axis.   Control I toggles between the Greek

                                  and English alphabets;  control  J  toggles

                                  between  sub-  scripts,  superscripts,  and

                                  normal type; and control H  will  insert  a

                                  backspace.



            YLABEL     C   CHAR   is the label to be displayed  along  the  y

                                  axis.



            TITLE      C   CHAR   is the title to be displayed in  the  upper

                                  right of the plot.



            DEVICES    C   CHAR   is the string  of  plotting  devices.   See

                                  subroutine   PLOTDEVICES  for  the  allowed

                                  values.  If it is blank in  the  call,  the

                                  user  is  prompted  for  the  devices.  The

                                  first plot device given is  the  one  which


                                                                Page 8





                                  will   be   used  for  readback  of  cursor

                                  coordinates.



            ADDENDA    C   LOG2   is an optional  argument  which  if  .TRUE.

                                  will  prevent a call to PLOT with IPEN=999,

                                  thus   allowing   further   plotting    and

                                  annotation  by  the  calling  program.  The

                                  calling  program  should  call  PLOT   with

                                  IPEN=999  when  all  additional plotting is

                                  completed.  All coordinates for  annotation

                                  are  measured in inches from the lower left

                                  corner of the plot.





                 Because   XYPLOT   is   recommended   for   most    plotting

            applications,  an  example  program  is  presented  below for the

            programmer's convenience.



                    PROGRAM XYPLOTDEM

            C

            C       This program demonstrates the useage of XYPLOT.FOR for

            C  graphing three curves at the same time.

            C

                    PARAMETER (MAXPLOTSIZE=2000,MAXNPLOTS=5)

                    CHARACTER*10 DEVICES

                    CHARACTER*50 XLABEL,YLABEL,TITLE

                    DIMENSION XARRAY(MAXPLOTSIZE,MAXNPLOTS),

                    1YARRAY(MAXPLOTSIZE,MAXNPLOTS)

                    INTEGER COLOR(MAXNPLOTS)

                    INTEGER SIZE,NPLOTPOINTS(MAXNPLOTS),LINVECT(MAXNPLOTS),

                    1INC(MAXNPLOTS),LINTYPE(MAXNPLOTS),NSYMBOL(MAXNPLOTS)

                    LOGICAL INVERT(2),CROSSHAIRS,INTERACT

            C

                    BYTE BCNTH,BCNTI,BCNTJ  ! Optional control characters for

                                            ! text

                    CHARACTER*1 CNTH,CNTI,CNTJ

                    EQUIVALENCE (BCNTH,CNTH),(BCNTI,CNTI),(BCNTJ,CNTJ)

            C

                    BCNTH='08'X  ! Backspace

                    BCNTI='09'X  ! English, Greek

                    BCNTJ='0A'X  ! Sub- and superscript

            C

                    SIZE=MAXPLOTSIZE

                    NPLOTS=3

                    NPLOTPOINTS(1)=200

                    NPLOTPOINTS(2)=100

                    NPLOTPOINTS(3)=50

                    LINVECT(1)=0

                    LINVECT(2)=1+43*256  ! Controls the pen width

                    LINVECT(3)=0

                    INC(1)=1

                    INC(2)=1

                    INC(3)=1

                    LINTYPE(1)=0

                    LINTYPE(2)=0


                                                                Page 9





                    LINTYPE(3)=-1  ! Symbols with no connecting lines

                    NSYMBOL(1)=0

                    NSYMBOL(2)=0

                    NSYMBOL(3)=3  ! + symbol

                    INVERT(1)=.FALSE.

                    INVERT(2)=.FALSE.

                    COLOR(1)=16776960  ! Yellow

                    COLOR(2)=16711935  ! Magenta

                    COLOR(3)=8943581  ! Tan

                    CROSSHAIRS=.TRUE.

                    INTERACT=.FALSE.

                    XLABEL='ANGLE (degrees)'

                    YLABEL='F'//CNTJ//'1,2,3'//CNTJ//CNTJ//'('//CNTI//'t'

                    1//CNTI//')'

                    TITLE='SAMPLE'

                    DEVICES=' '  ! User will be prompted for the devices.  A

                                 ! simpler method than this is to put ' ' 

                                 ! in the argument list.

                    XARRAY(SIZE-3,1)=0.0  ! Initialization

                    YARRAY(SIZE-3,1)=0.0

                    DO I=1,NPLOTPOINTS(1)

                      XARRAY(I,1)=(I-1)*360.0/NPLOTPOINTS(1)

                      YARRAY(I,1)=SIND(2.0*XARRAY(I,1))

                    END DO

                    DO I=1,NPLOTPOINTS(2)

                      XARRAY(I,2)=(I-1)*360.0/NPLOTPOINTS(2)

                      YARRAY(I,2)=0.5*SIND(XARRAY(I,2))

                    END DO

                    DO I=1,NPLOTPOINTS(3)

                      XARRAY(I,3)=(I-1)*360.0/NPLOTPOINTS(3)

                      YARRAY(I,3)=0.75*COSD(XARRAY(I,3))

                    END DO

                    CALL XYPLOT(XARRAY,YARRAY,SIZE,NPLOTS,NPLOTPOINTS,LINVECT,

                    1INC,LINTYPE,NSYMBOL,INVERT,COLOR,INTERACT,CROSSHAIRS,

                    2XLABEL,YLABEL,TITLE,DEVICES)

                    CALL RESETTEK  ! Erases the screen and returns to transparent

                                   ! mode

                    END


                                                               Page 10





            6.1.2 CONTOURPLOT SUBROUTINE



                 This subroutine produces contour plots of the  array  ARRAY.

            Contour  plots can produced by several different methods; 1) line

            contours of specified intensity levels,  2)  symbol  contours  of

            specified  intensities,  3)  line  contours spaced equidistant in

            intensity, 4) scanning.  Output can be sent to any plot device in

            the  plot  package.   Annotation  can be added as in XYPLOT.  See

            [MIIPS.FOR]ACTPLT.FOR for an example of the use of CONTOURPLOT.



            Call:



                  CALL CONTOURPLOT(ARRAY,NCOLS,NROWS,MAPSCOL,MAPSROW,

                  1KIND,C,XYOFF,XYSCALE,CONTOUR,LINVECT,NSYMBOL,COLOR,

                  2NCONTOURS,DELV,HEIGHT,INTERACT,CROSSHAIRS,DEVICES,ADDENDA)



            Where:



            NAME      I/O TYPE          DESCRIPTION

            ARRAY      C   R4     is  the  array   holding   the   z   values

                                  corresponding  to each x,y pair.  The x and

                                  y values are assumed to start at 1,1 in the

                                  lower left corner and increment by 1.first



            NCOLS      C   I4     is the x dimension of ARRAY.



            NROWS      C   I4     is the y dimension of ARRAY.



            MAPSCOL    C   I4     is the starting column in the full array of

                                  which  ARRAY is a subset.  This is used for

                                  readback of coordinates.



            MAPSROW    C   I4     is the starting row in the full array.



            KIND       C   I4     is the kind of contour  plot:   1)  contour

                                  follower, 2) symbol plotter, 3) equidistant

                                  contours, 4) line scanner



            LEVELS     C   R4     is an array containing the intensity levles

                                  for the contours.



            XYOFF      C   I4     is an array for the x  and  y  offsets,  in

                                  inches,  to  the  lower  feft corner of the

                                  plot.



            XYSCALE    C   I4     is an array for the x and y  scale  factors

                                  in units of inches per pixel.



            CONTOUR    C   C1     is a character variable  which  determintes

                                  whether every other contour is dashed, 'D',

                                  or whether the user determines the dashing,

                                  'S'.



            LINVECT    C   I4     is an array giving the vector type  (solid,

                                  dashed,  etc.)  for each plot.  The numbers


                                                               Page 11





                                  range from 0 to 4 for the VT100 and  Visual

                                  550,  from 0 to 7 for the GraphOn, and from

                                  0  to  15   for   the   Lasergrafix.    See

                                  [MIIPS.PLOT]VECTMODE.FOR  for some examples

                                  of  the  vector  line   stles.    One   can

                                  optionally  control  the pen width (only on

                                  the Lasergrafix and Apple Laser Writer)  by

                                  including  the  width  in thousandths of an

                                  inch in the second byte of LINVECT.  If the

                                  pen  width number is not present, a default

                                  pen width (equal to 6 pixels on  the  Apple

                                  and   7   pixels  on  the  Lasergrafix)  is

                                  selected.



            NSYMBOL    C   I4     is the symbol type for KIND=2



            COLOR      C   I4     is an array containing the color  for  each

                                  contour.      See    section    6.1.1    or

                                  [MIIPS.PLOT]COLORMODE.FOR for some examples

                                  of the colors.



            NLEVELS    C   I4     is the dimension of LEVELS.



            DELV       C   R4     is the intensity range  of  a  symbol  when

                                  KIND = 2.



            HEIGHT     C   R4     is the height of a symbol when KIND = 2.



            INTERACT   C   LOG    is a variable which allows the user  to  be

                                  prompted   for   plotting  parameters.   If

                                  .TRUE.   the  user   is   asked   for   the

                                  penwidths, dashing, and colors.



            CROSSHAIRS C   LOG    is a logical  variable  which  when  .TRUE.

                                  allows

                                  Typing  a  allows   the   user   to   enter

                                  annotation   at   the   location   of   the

                                  crosshairs with  the  color  most  recently

                                  selected.   CNTRL  I  toggles  to the Greek

                                  alphabet and special symbols  and  back  to

                                  English,  CNTRL  H  gives  a backspace, and

                                  CNTRL J toggles to subscript,  superscript,

                                  and    back    to    normal.     Refer   to

                                  [MIIPS.PLOT]SYMGENGR.MAR for the  locations

                                  of the Greek characters and special symbols

                                  on the keyboard.

                                  Typing c allows the user to be prompted for

                                  the color.

                                  Typing C reads back a coordinate value.

                                  Typing F  constructs  a  frame  around  the

                                  plot.

                                  Typing P allows the user to  plot  a  point

                                  from the physical coordinates.


                                                               Page 12





                                  Typing Q will return.

                                  Typing V allows cursor input for drawing  a

                                  solid  vector  of  the  color most recently

                                  selected.



            DEVICES    C   CHAR   is the string  of  plotting  devices.   See

                                  subroutine   PLOTDEVICES  for  the  allowed

                                  values.  If it is blank in  the  call,  the

                                  user is prompted for the devices.



            ADDENDA    C   LOG    is an optional  argument  which  if  .TRUE.

                                  will  prevent a call to PLOT with IPEN=999,

                                  thus   allowing   further   plotting    and

                                  annotation  by  the  calling  program.  The

                                  calling  program  should  call  PLOT   with

                                  IPEN=999  when  all  additional plotting is

                                  completed.  All coordinates for  annotation

                                  are  measured in inches from the lower left

                                  corner of the plot.


                                                               Page 13





            6.1.3 MESHPLOT SUBROUTINE



                 This subroutine plots a surface in the form of  a  projected

            mesh plot on any plot device in the plot package.  Annotation can

            be added  as  in  XYPLOT.   See  [MIIPS.FOR]SURFPLOT.FOR  for  an

            example of the use of MESHPLOT.



            Call:



                  CALL MESHPLOT(ARRAY,M,N,REFP,VDIR,SCRD,SCRZ,COLOR,LINVECT,

                 1CROSSHAIRS,DEVICES,ADDENDA)



            Where:



            NAME      I/O TYPE          DESCRIPTION

            ARRAY      C   R4     is  the  array   holding   the   z   values

                                  corresponding  to  each  x,y  pair.   The x

                                  values are also included in the  first  row

                                  between  columns  2  and N and the y values

                                  are included in the  first  column  between

                                  rows 2 and N.  Position 1,1 is not used.



            M          C   I4     is the x dimension of  ARRAY.   This  is  1

                                  larger  than  the  number of x values which

                                  will be plotted.



            N          C   I4     is the y dimension of  ARRAY.   This  is  1

                                  larger  than  the  number of y values which

                                  will be plotted.



            REFP       C   R4     is an array giving the reference point  for

                                  where the viewer is located.



            VDIR       C   R4     is an array giving a vector pointing in the

                                  direction of view.



            SCRD       C   R4     is the perpendicular distance of the screen

                                  from the reference point.



            SCRZ       C   R4     is the screen width.



            COLOR      C   I4     An array giving the color for the  top  and

                                  bottom  of  the  mesh  plot.   A value of 0

                                  causes  that  particular  plot  not  to  be

                                  drawn.      See     section     6.1.1    or

                                  [MIIPS.PLOT]COLORMODE.FOR for some examples

                                  of the colors.



            LINVECT    C   I4     is an array giving the vector type  (solid,

                                  dashed, etc.) for the top and bottom of the

                                  mesh plot.  The numbers range from 0  to  4

                                  for  the VT100 and Vishual 550, from 0 to 7

                                  for the GraphOn, and from 0 to 15  for  the

                                  Lasergrafix.   See [MIIPS.PLOT]VECTMODE for

                                  some examples of the vector  sttyles.   One


                                                               Page 14





                                  can  optionally control the pen width (only

                                  on the Lasergrafix) by including  a  number

                                  from 1 to 31 in the second byte of LINVECT.

                                  If the pen width number is not  present,  a

                                  default pen width (equal to 7) is selected.



            CROSSHAIRS C   LOG    is a logical  variable  which  when  .TRUE.

                                  allows  the  user to modify the plot in the

                                  following way:

                                  Typing  a  allows   the   user   to   enter

                                  annotation   at   the   location   of   the

                                  crosshairs with  the  color  most  recently

                                  selected.   CNTRL  I  toggles  to the Greek

                                  alphabet and special symbols  and  back  to

                                  English,  CNTRL  H  gives  a backspace, and

                                  CNTRL J toggles to subscript,  superscript,

                                  and    back    to    normal.     Refer   to

                                  [MIIPS.PLOT]SYMGENGR.MAR for the  locations

                                  of the Greek characters and special symbols

                                  on the keyboard.

                                  Typing c allows the user to be prompted for

                                  the color.

                                  Typing O redoes the original plot.

                                  Typing Q will return.

                                  Typing V allows cursor input for drawing  a

                                  solid  vector  of  the color and line style

                                  most recently selected.



            DEVICES    C   CHAR   is the string  of  plotting  devices.   See

                                  subroutine   PLOTDEVICES  for  the  allowed

                                  values.  If it is blank in  the  call,  the

                                  user is prompted for the devices.



            ADDENDA    C   LOG    is an optional  argument  which  if  .TRUE.

                                  will  prevent a call to PLOT with IPEN=999,

                                  thus   allowing   further   plotting    and

                                  annotation  by  the  calling  program.  The

                                  calling  program  should  call  PLOT   with

                                  IPEN=999  when  all  additional plotting is

                                  completed.  All coordinates for  annotation

                                  are  measured in inches from the lower left

                                  corner of the plot.


                                                               Page 15





            6.2 LOW LEVEL MODULES



            6.2.1 PLOTDEVICES SUBROUTINE



                 The PLOTDEVICES subroutine selects one or more  plotdevices.

            If  the call is made with the first array element blank, the user

            will be prompted for the plotdevice or plotdevices.  The call  to

            this  subroutine should be followed by a call to PLOTDEVICES2 for

            proper initialization.



            Call:



                  CALL PLOTDEVICES(DEVICES)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

                               3

            DEVICES   C    CHAR3  selects the plot device.  It is an array of

                                  10 elements.



                                  If DEVICES(1:1) equals a blank the user  is

                                  prompted for one or more plot devices.



                                  If DEVICES(I:I)  equals  G  the  plot  will

                                  appear  on  a  VT100 or Visual 550 graphics

                                  terminal.



                                  If DEVICES(I:I) equals  G1  the  plot  will

                                  appear on a GraphOn graphics terminal.



                                  If DEVICES(I:I) equals  G2  the  plot  will

                                  appear on a Codonics graphics terminal.



                                  If DEVICES(I:I) equals  G3  the  plot  will

                                  appear on a MicroTerm graphics terminal.



                                  If DEVICES(I:I) equals F the plot  will  go

                                  to  a  plot  file  (the file can be plotted

                                  later using the $PLOT command;  see  Volume

                                  1, Chapter 15).



                                  If DEVICES(I:I)  equals  R  the  plot  will

                                  appear on a Ramtek.



                                  If DEVICES(I:I)  equals  T  the  plot  will

                                  appear on a Tektronix 4662 Plotter.



                                  If DEVICES(I:I) equals  GR  the  plot  will

                                  appear on a Grinnell.  The screen is erased

                                  after PLOTDEVICES2 is called.



                                  If DEVICES(I:I) equals -GR  the  plot  will

                                  appear  on a Grinnell but the screen is not

                                  erased after the call to PLOTDEVICES2.


                                                               Page 16





                                  If DEVICES(I:I)  equals  H  the  plot  will

                                  appear on a Houston (not yet incorporated).



                                  If DEVICES(I:I)  equals  L  the  plot  will

                                  appear on a Lasergrafix.



                                  If DEVICES(I:I) equals A0, or A1, etc., the

                                  plot  will appear on one of the Apple Laser

                                  Writers.



                                  If DEVICES(I:I) equals  TR  the  plot  will

                                  appear  on  a Trapix.  The screen is erased

                                  after PLOTDEVICES2 is called.



                                  If DEVICES(I:I) equals -TR  the  plot  will

                                  appear  on  a  Trapix but the screen is not

                                  erased after the call to PLOTDEVICES2.




                                                               Page 17





            6.2.2 PLOTDEVICES2 SUBROUTINE



                 The  PLOTDEVICES2  subroutine  initializes   one   or   more

            plotdevices.   The call to this subroutine should be preceeded by

            a call to PLOTDEVICES.



            Call:



                  CALL PLOTDEVICES2(DEVICES)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

                               3

            DEVICES   C    CHAR3  selects the plot device.  It is an array of

                                  10   elements   set   up  in  the  call  to

                                  PLOTDEVICES.


                                                               Page 18





            6.2.3 PLTDEV SUBROUTINE



                 The PLTDEV subroutine is a lower level routine which obtains

            a  channel for a plotting device and initializes it in the vector

            mode.  This is normally called  by  PLOTDEVICES2  and  is  of  no

            concern  to  the user.  However, PLOTDEVICES and PLOTDEVICES2 may

            be bypassed by calling PLTDEV directly; this was the  proper  way

            to  initialize in previous versions of this plotting package.  In

            this case, a plot device is identified  by  a  number  (described

            below).   This subroutine generally allows use of only one device

            at a time (except the case of a  graphics  terminal  and  a  plot

            file).   For  future  development  this  subroutine should not be

            called directly; call PLOTDEVDEVICES followed by PLOTDEVICES2.



            Call:



                  CALL PLTDEV(NDEV)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            NDEV      C    I4     selects the plot device.



                                  If NDEV equals 1 the plot will appear on  a

                                  VT100 or Visual 550 graphics terminal.  The

                                  screen is initially erased.



                                  If NDEV equals 101 the plot will appear  on

                                  a GraphOn graphics terminal.  The screen is

                                  initially erased.



                                  If NDEV equals 201 the plot will appear  on

                                  a  Codonics  graphics terminal.  The screen

                                  is initially erased.



                                  If NDEV equals 301 the plot will appear  on

                                  a  MicroTerm graphics terminal.  The screen

                                  is initially erased.



                                  If NDEV equals 401 the plot will appear  on

                                  a  VersaTerm  graphics  terminal  emulator.

                                  The screen is initially erased.



                                  If NDEV equals 2 the plot will go to a plot

                                  file  (the  file can be plotted later using

                                  the $PLOT command).



                                  If NDEV equals 3 the plot will appear on  a

                                  Ramtek.



                                  If NDEV equals 4 the plot will appear on  a

                                  VT100  or  Visual 550 graphics terminal and

                                  simultaneously will  go  to  a  plot  file.

                                  This is retained only for compatibility.


                                                               Page 19





                                  NDEV equals 5 is currently not used



                                  NDEV equals 6 is currently not used.



                                  If NDEV equals 7 the plot will appear on  a

                                  Tektronix 4662 Plotter.



                                  If NDEV equals 8 the plot will appear on  a

                                  Grinnell.   The screen is initially erased.

                                  If NDEV=-8, the Grinnell  is  assigned  but

                                  the screen is not erased.



                                  If NDEV equals 9 the plot will appear on  a

                                  Houston (not yet incorporated).



                                  If NDEV equals 10 the plot will appear on a

                                  Lasergrafix.



                                  If NDEV equals 11, or 111,  or  211,  etc.,

                                  the  plot  will  appear on one of the Apple

                                  Laser Writers (after the VECT.RPL  file  is

                                  sent).



                                  If NDEV equals 12 the plot will appear on a

                                  Trapix.   The  screen  is initially erased.

                                  If NDEV=-12, the Trapix is assigned but the

                                  screen is not erased.




                                                               Page 20





            6.2.4 PLOT SUBROUTINE



                 The PLOT subroutine is used primarily to move the pen  in  a

            straight line.



            Call:



                  CALL PLOT(X,Y,IPEN)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            X,Y       C    R4     are the X,Y coordinates, in inches from the

                                  current origin, of the terminal position to

                                  which the pen will be moved.  An origin may

                                  be  established  anywhere  on  (or off) the

                                  plotting surface, by specifying a  negative

                                  value of IPEN.



            IPEN      C    I4     is a  signed  integer  which  controls  pen

                                  up/down status and origin definition.



                                  IF IPEN=1, the plot device is placed in the

                                  point plot mode.



                                  If IPEN=2, the pen is down during movement,

                                  drawing  a  visible  line  (or a dot at the

                                  endpoint if in the point plot mode).



                                  If IPEN=3, the pen is up during movement.



                                  If IPEN= -2 or -3, a new origin is  defined

                                  at the terminal position after the movement

                                  is completed as if IPEN were positive.  The

                                  logical  X,Y  coordinates  of  the  new pen

                                  position are set  as  zero,  so  that  that

                                  position  becomes  the  reference point for

                                  subsequent pen movements.  Succeeding calls

                                  with IPEN= -2 or -3 will again define a new

                                  origin, but  the  changes  are  made  in  a

                                  relative  sense,  since the new origin will

                                  equal  the  value  in  the  call  plus  the

                                  previous origin.



                                  If IPEN=4, the plot device is  returned  to

                                  the transparent mode.



                                  If IPEN=5, the value of line style  (solid,

                                  dashed,   etc.)   in   the   COMMON   block

                                  PLOT$VECTOR is sent to the plot device.



                                  If IPEN=6, the value of the  color  in  the

                                  COMMON block PLOT$COLOR is sent to the plot

                                  device.


                                                               Page 21





                                  If IPEN=7, the bell on the plot device  (if

                                  such exists) is rung.



                                  If IPEN=8, the  value  of  the  data  level

                                  (dots  on,  dots  off,  etc.) in the COMMON

                                  block PLOT$DATALEVEL is sent  to  the  plot

                                  device.



                                  If IPEN=9, the plot device is placed in the

                                  rectilinear graphics mode.



                                  If IPEN=10, the plot device  is  placed  in

                                  the alphagraphics mode.



                                  If IPEN=11, the value of the fill style  in

                                  the  COMMON block PLOT$FILLSTYLE is sent to

                                  the plot device.



                                  If IPEN=12, the value of the pen  width  in

                                  the  COMMON  block PLOT$PENWIDTH is sent to

                                  the plot device.



                                  If IPEN=999, the end of the current plot is

                                  signalled.   All  plotting  programs should

                                  conclude with CALL PLOT(X,Y,999).



                                  If IPEN=9999,  the  current  plot  file  is

                                  closed.  (An end-of-file mark is created.)


                                                               Page 22





            6.2.5 FACTOR SUBROUTINE



                 The FACTOR subroutine enables the user to enlarge or  reduce

            the size of the entire plot.



            Call:



                  CALL FACTOR(FACT)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            FACT      C    R4     is the ratio of the new plot  size  to  the

                                  normal   plot   size.    For   example,  if

                                  FACT=2.0, all subsequent pen movements will

                                  be  twice  their normal size.  When FACT is

                                  reset  to  1.0,  all  plotting  returns  to

                                  normal  size.   A  saving  in  computer and

                                  plotter  time  is  made   possible   during

                                  debugging  by  calling  FACTOR with a value

                                  less than 1.0, so the  entire  plot  output

                                  will be reduced in size.


                                                               Page 23





            6.2.6 WHERE SUBROUTINE



                 The WHERE  subroutine  provides  cursor  functions  for  the

            interactive  plot  devices  (currently  a  graphics  terminal,  a

            Ramtek, and a Grinnell).  When WHERE is called the program  waits

            until  the  user  has  positioned  the  crosshairs  (on  graphics

            terminals), or cursor (on Ramtek or Grinnell), and  has  typed  a

            character at the terminal from which the program is being run.



            Call:



                  CALL WHERE(XNOW,YNOW,ICHA)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            XNOW      R    R4     is the  X-coordinate  (in  inches)  of  the

                                  crosshairs  or  cursor  from the lower left

                                  hand corner of the screen,  independent  of

                                  plot origin and scaling.



            YNOW      R    R4     is   similar   to   XNOW,   but   is    the

                                  Y-coordinate.



            ICHA      R    I4     is the ASCII code of  the  character  which

                                  was typed at the keyboard.


                                                               Page 24





            6.2.7 SYMBOL SUBROUTINE



                 The SYMBOL subroutine produces plot annotation at any  angle

            and  in practically any size.  There are two SYMBOL call formats:

            (1) the "standard" call, which can be used to draw text  such  as

            titles,  captions  and legends; and (2) the "special" call, which

            is used to draw special centered symbols such as a box,  octagon,

            triangle etc., for plotting data points.

                 The standard characters that are drawn by SYMBOL include the

            letters  A-Z  (upper and lower case), digits 0-9 and most special

            keyboard characters such as "(".  Both forms of SYMBOL call  have

            six arguments.  The "standard" call is:



                  CALL SYMBOL(X,Y,HEIGHT,TEXT,ANGLE,NCHAR)



            where:



            NAME     I/O  TYPE          DESCRIPTON

            X,Y       C    R4     are the coordinates in inches of the  lower

                                  left    hand   corner   (before   character

                                  rotation) of  the  first  character  to  be

                                  produced.   The  pen  is up while moving to

                                  this point.  Annotation  may  be  continued

                                  from  the  position following that at which

                                  the last  annotation  ended.   Continuation

                                  occurs when X and/or Y equals 999.0.



            HEIGHT    C    R4     is the height, in inches, of the  character

                                  to  be plotted.  Characters are formed with

                                  a width/height ratio of about 0.825.



            TEXT      C    BYTE   is the text to be used as annotation.   The

                                  characters   must   be  left-justified  and

                                  contiguous  in  a  single  variable  or  an

                                  array.  The text must be right-justified in

                                  TEXT if a single character is  desired  and

                                  NCHAR=0.   Control/H  produces  a backspace

                                  (for   overstriking),   Control/I   toggles

                                  between  the  Greek  and Engilsh alphabets,

                                  and Control/J  toggles  between  subscript,

                                  superscript,and normal.



            ANGLE     C    R4     is the angle in degrees from the X-axis  at

                                  which  the annotation is to be plotted.  If

                                  ANGLE=0 the character(s)  will  be  plotted

                                  right side up and parallel to the X-axis.



            NCHAR     C    I4     is the number of characters to  be  plotted

                                  from  TEXT.   If  NCHAR>0  the data must be

                                  left justified in  the  first  location  of

                                  TEXT.   If  NCHAR=0 one symbol is produced,

                                  using a single  character  which  is  right

                                  justified in TEXT.


                                                               Page 25





            The "special" call is:



                  CALL SYMBOL(X,Y,HEIGHT,CHAR,ANGLE,IPEN)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            CHAR      C    I4     is an integer in the range 0-13  specifying

                                  a  special symbol to be plotted.  A plot of

                                  the special  symbols  can  be  obtained  by

                                  running SYMBOLS.EXE.



            IPEN      C    I4     is an integer which determines whether  the

                                  pen is up or down during the move to X,Y.



                                  If IPEN=-1, the pen is up.



                                  If IPEN=-2, the pen is down.



                                  ANGLE should be 0.0.



                 The special symbols may also be  produced  in  the  standard

            call  by  toggling  to  the  Greek  alphabet  and using numbers 0

            through 9 and Shift/0 though 3.


                                                               Page 26





            6.2.8 NUMBER SUBROUTINE



                 The NUMBER subroutine converts a real variable  to  a  fixed

            decimal number and plots the result.



            Call:



                  CALL NUMBER(X,Y,HEIGHT,FPN,ANGLE,NDEC)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            X,Y       C    R4     are the coordinates in inches of the  lower

                                  left    hand   corner   (before   character

                                  rotation) of  the  first  character  to  be

                                  produced.   The  pen  is up while moving to

                                  this point.



            HEIGHT    C    R4     is the height, in inches, of the characters

                                  to  be plotted.  Each number has a width to

                                  height ratio of 0.59 if the  space  between

                                  numbers  is  not included.  If the space is

                                  included, the ratio is 0.836.



            FPN       C    R4     is the floating point number to be plotted.



            ANGLE     C    R4     is the angle in degrees from the x axis  at

                                  which  the  number  is  to  be plotted.  If

                                  ANGLE=0 the number will  be  plotted  right

                                  side up and parallel to the X-axis.



            NDEC      C    I4     controls the precision of the conversion of

                                  the number FPN.



                                  If NDEC is greater than 0, it specifies the

                                  number  of  digits  to  the  right  of  the

                                  decimal point that are to be converted  and

                                  plotted.



                                  If NDEC equals 0, the  integer  portion  of

                                  the number and a decimal point are plotted.



                                  If NDEC equals -1 only the integer  portion

                                  of the number is plotted.



                                  If NDEC is less than -1, ABS(NDEC)-1 digits

                                  are  truncated  from the integer portion of

                                  the number before plotting.


                                                               Page 27





            6.2.9 SCALE SUBROUTINE



                 The SCALE subroutine is used to examine the data  values  in

            an  array  to  determine  a  starting  value,  either  minimum or

            maximum, and a scaling factor, positive or negative,  such  that:

            (1)  the  scale  annotation  drawn by the AXIS subroutine at each

            division will properly represent the range of data values in  the

            array,  and  (2)  the  data  points,  when  plotted  by  the LINE

            subroutine, will fit in a  given  plotting  area.   The  starting

            value  and  the  scaling factor are stored by SCALE at the end of

            the data array.



            Call:



                  CALL SCALE(ARRAY,SIZE,NPTS,NINTRVLS,INC)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            ARRAY     C/R  R4     is the array of data points to be examined.



            SIZE      C    I4     is the dimension of ARRAY.  This should  be

                                  two  larger than the maximum number of data

                                  points because the starting physical  value

                                  and  the  increment  are stored in the last

                                  two elements of the array.



            AXLEN     C    R4     is the length of the axis to which the data

                                  is to be scaled.  Its value must be greater

                                  than one inch.



            NPTS      C    I4     is the number of data points in the  array.

                                  The  FORTRAN  dimension statement for ARRAY

                                  should specify at least two locations  more

                                  than the number of values being scanned, to

                                  allow SCALE to store the computed  starting

                                  value  and scaling factor at the end of the

                                  array.



            NINTRVLS  C    R4     is  the  number  of  tick  mark  intervals.

                                  Fractional values are allowed.



            INC       C    I4     is an integer whose magnitude  is  used  by

                                  scale as the increment with which to select

                                  the data values to be scanned in the array.

                                  Normally  ABS(INC)  equals 1 (ie every data

                                  value is examined).



                                  If INC is positive, the  selected  starting

                                  value approximates a minimum, and the scale

                                  factor is positive.



                                  If INC is negative, the  selected  starting

                                  value   approximates  a  maximum,  and  the

                                  scaling factor is negative.


                                                               Page 28






            6.2.10 AXIS SUBROUTINE



                 Subroutine AXIS is used to produce a scaled axis:  it  draws

            any  length  line  at  any  angle,  divides it into any number of

            segments, (fractional values  allowed)  annotates  the  divisions

            with  appropriate  scale  values,  and  labels  the  axis  with a

            centered title.  When both X and Y axes are needed AXIS is called

            separately for each one.



            Call:



                 CALL AXIS(X,Y,TEXT,AXLENGTH,ANGLE,FIRSTV,DELTAV,NINTRVLS,

                 NINTRVLS__OFF,FLAG,LU)



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            X         C    R4     is the starting  x  position  of  the  axis

                                  measured  in  inches assuming that there is

                                  no inversion of the axis.



            Y         C    R4     Like X but in the y direction



            TEXT      C    BYTE   is an array  containing  the  title,  which

                                  will be centered and placed parallel to the

                                  axis line.



            AXLENGTH  C    R4     is the length of the axis line in inches.



            ANGLE     C    R4     is the angle measured from  the  horizontal

                                  at which the axis is to be drawn.  Normally

                                  this value is 0.0 for the X axis  and  90.0

                                  for the Y axis.



            FIRSTV    C    R4     is the starting value which will appear  at

                                  the  first  tick  mark  on  the axis.  This

                                  value  may  be  computed   by   the   SCALE

                                  subroutine,  or  independently specified by

                                  the user.



            DELTAV    C    R4     is the number of data  units  per  inch  of

                                  axis.   This  value  may be computed by the

                                  SCALE    subroutine,    or    independently

                                  specified by the user.



            NINTRVLS  C    R4     is the number of intervals per axis length.

                                  If  there  is to be one tick mark per inch,

                                  then NINTRVLS=AXLEN.   Note  that  NINTRVLS

                                  can have fractional values.



            NINTRVLS_OFF   C      R4 is the fractional  offset  at  the  axis

                                  start measured in units of intervals.



                                  FLAG(1) C I2 if +1, the tick  marks  appear

                                  on  the counter-clockwise side of the axis;


                                                               Page 29





                                  if -1, they appear on the clockwise side.



            FLAG(2)   C    I2     is like FLAG(1), but for the label.



            FLAG(3)   C    I2     if 0, the numbers by  the  tick  marks  are

                                  parallel  to  the  axis;  if  1,  they  are

                                  perpendicular.



            FLAG(4)   C    I2     if 0, the numbers and label are omitted; if

                                  1, they are displayed.



            FLAG(5)   C    I2     if 0, the axes are displayed  normally;  if

                                  1, they are inverted.



            LU        C    I4     is the logical unit, which if  included  in

                                  the  call  will  be used, but if omitted is

                                  defaulted.


                                                               Page 30





            6.2.11 ALOGAXIS SUBROUTINE



                 Subroutine ALOGAXIS is used to  produce  an  antilog  scaled

            axis:  it draws any length line at any angle, divides it into any

            number of decades, or fractions thereof, annotates the  divisions

            with  appropriate  scale  values,  and  labels  the  axis  with a

            centered title.  When both X and Y axes are needed AXIS is called

            separately for each one.



            Call:



                 CALL ALOGAXIS(X,Y,TEXT,AXLENGTH,ANGLE,FIRSTDECVAL,DECADES,

                 FLAG,LU)



            where:



            NAME       I/O TYPE         DESCRIPTION

            NAME       I/O TYPE         DESCRIPTION

            X           C   R4    is the starting  x  position  of  the  axis

                                  measured  in  inches assuming that there is

                                  no inversion of the axis.



            Y           C   R4    Like X but in the y direction



            TEXT        C   BYTE  is an array  containing  the  title,  which

                                  will be centered and placed parallel to the

                                  axis line.



            AXLENGTH    C   R4    is the length of the axis line in inches.



            ANGLE       C   R4    is the angle measured from  the  horizontal

                                  at which the axis is to be drawn.  Normally

                                  this value is 0.0 for the X axis  and  90.0

                                  for the Y axis.



            FIRSTDECVAL C   R4    is the value corresponding to the beginning

                                  of  the  axis such that its integer part is

                                  the integer  part  of  the  first  physical

                                  value  (a log) and the log of ten times its

                                  fractional part, is the fractional part  of

                                  the  first  physical value.  The antilog of

                                  the first physical value may or may not  be

                                  printed by the program.



            DECADES     C   R4    is the number of  decade  cycles  per  axis

                                  length  starting  at  the  beginning of the

                                  decade corresponding  to  FIRSTDECVAL  such

                                  that  its  integer part is the integer part

                                  of the number of decades and the log of ten

                                  times   its   fractional   part,   is   the

                                  fractional part of the number  of  decades.

                                  For example, if the fractional part is 0.2,

                                  the highest  tick  mark  corresponds  to  2

                                  times the previous decade value.  Note that

                                  fractional parts of .0 and  .1  behave  the

                                  same way.


                                                               Page 31





            FLAG(1)     C   I2    if  +1,  the  tick  marks  appear  on   the

                                  counter-clockwise  side of the axis; if -1,

                                  they appear on the clockwise side.



            FLAG(2)     C   I2    is like FLAG(1), but for the label.



            FLAG(3)     C   I2    if 0, the numbers by  the  tick  marks  are

                                  parallel  to  the  axis;  if  1,  they  are

                                  perpendicular.



            FLAG(4)     C   I2    if 0, the numbers and label are omitted; if

                                  1, they are displayed.



            FLAG(5)     C   I2    if 0, the axes are displayed  normally;  if

                                  1, they are inverted.



            LU          C   I4    is the logical unit, which if  included  in

                                  the  call  will  be used, but if omitted is

                                  defaulted.


                                                               Page 32





            6.2.12 LINE SUBROUTINE



                 The LINE subroutine produces a line plot  of  the  pairs  of

            data  values  in  two  arrays  (X and Y).  LINE computes the page

            coordinates of each plotted point according to the data values in

            each  array  and  the  respective  scaling  parameters.  The data

            points may be represented by centered symbols  and/or  connecting

            lines  between  points.   The  scaling  parameters (see SCALE and

            AXIS) must be at the end of each  array.   These  values  may  be

            computed  by  the SCALE subroutine, or independently specified by

            the user.



            Call:



                  CALL LINE(XARRAY,YARRAY,SIZE,NPOINTS,INC,XOFFSET,YOFFSET,

                  

            XAXIS,YAXIS,X_INTRVLS,Y_INTRVLS,X_INTRVLS_OFF,Y_INTRVLS_OFF,

                  LINTYPE,NSYMBL,SYMBLHT,INVERT,LU)



            where:



            NAME      I.O TYPE          DESCRIPTION

            NAME      I.O TYPE          DESCRIPTION

            XARRAY     C   R4     is the array containing the  X  values  and

                                  scaling parameters.



            YARRAY     C   R4     is the array containing the  Y  values  and

                                  scaling parameters.



            SIZE       C   I4     is the size of each of  the  above  arrays.

                                  This should be at least two larger than the

                                  maximum number of points in the array.



            NPOINTS    C   I4     is the number of data points in XARRAY  and

                                  YARRAY.   The  number  does not include the

                                  extra  two  locations   for   the   scaling

                                  parameters.



            INC        C   I4     is the increment that the  line  subroutine

                                  uses  to  select  data  from the two arrays

                                  (see the description of this parameter  for

                                  the SCALE subroutine).



            XOFFSET    C   R4     is the starting  X  location  of  the  plot

                                  measured in inches.



            YOFFSET    C   R4     is like XOFFSET but for the Y direction.



            XAXIS      C   R4     is the length of the X-axis in inches.



            YAXIS      C   R4     is the length of the Y-axis in inches.



            X_INTRVLS  C   R4     is the number of intervals per axis length.

                                  If  there  is to be one tick mark per inch,

                                  then XINTRVLS=XAXIS.  Note  that  X_INTRVLS

                                  can have fractional values.


                                                               Page 33





            Y_INTRVLS  C   R4     is like XINTRVLS but in the Y-direction.



            X_INTRVLS_OFF  C      R4 is the fractional offset at the  X  axis

                                  start measured in units of intervals.



            Y_INTRVLS_OFF  C      R4 is the fractional offset at the  Y  axis

                                  start



            LINTYP     C   I4     controls the  type  of  line  to  be  drawn

                                  through  the data points.  The magnitude of

                                  LINTYP controls the  frequency  of  plotted

                                  symbols; e.g., if LINTYP equals 4 a special

                                  symbol is drawn at every 4th data point.



                                  If LINTYP is zero, no symbols are  plotted;

                                  only a line is drawn.



                                  If LINTYP  is  positive,  a  straight  line

                                  connects the data points.



                                  If LINTYP is negative, no connecting  lines

                                  are drawn; only the symbols are plotted.



            NSYMB      C   I4     is the number of the plotting symbol to  be

                                  centered  at  each  data  point.   For  the

                                  special symbols, the symbol  number  should

                                  be  placed  in the first byte location; for

                                  any ASCll symbol, the ASCll code should  be

                                  placed   in   the   second  byte  location.

                                  NSYMBOL has meaning only when LINTYP is non

                                  zero.



            SYMBLHT    C   R4     is the height of a symbol in inches.



            INVERT     C   LOG    is  a  two-dimensional  array   controlling

                                  whether  the X and/or Y plotting directions

                                  are inverted.



            LU         C   I4     is the logical unit, which if  included  in

                                  the  call  will  be used, but if omitted is

                                  defaulted.


                                                               Page 34





            6.2.13 HISTOGRAM

            6.2.13 HISTOGRAM



                 This subroutine plots one  or  more  histograms  on  a  plot

            device.  It is a lower level subroutine called by XYPLOT and does

            not  produce  axis  labeling.   Either  vertically   stacked   or

            horizontally displaced bars can be drawn.



            Call:



                  CALL HISTOGRAM(XARRAY,YARRAY,SIZE,NPLOTS,NPOINTS,LINVECT,

                  INC,BARTYPE,NFILL,INVERT,COLOR,XOFFSET,YOFFSET,XAXIS,YAXIS,

                  X__INTERVALS,Y__INTERVALS,X__INTERVALS__OFF,Y__INTERVALS__OFF)



            where:



            NAME      I/O TYPE          DESCRIPTION

            NAME      I/O TYPE          DESCRIPTION

       XARRAY          C   R4     is the array containing the X positions for

                                  the  center of each bar for each histogram.

                                  The X coordinates  for  any  curves  to  be

                                  plotted by XYPLOT are also in this array.



       YARRAY          C   R4     is the array containing the Y positions



       SIZE            C   I4     is the size of each of  the  above  arrays.

                                  This should be at least two larger than the

                                  maximum number of points in the array.



       NPLOTS          C   I4     is  the  number  of  plots  to   be   made,

                                  including curves and histograms, and one of

                                  the dimensions of XARRAY and YARRAY



       ISTART          C   I4     is the starting index in XARRAY and  YARRAY

                                  for data to be plotted.



       NPOINTS         C   I4     is the number of data points in the  arrays

                                  for each plot including points skipped over

                                  if INC>1 and starting at the  index  ISTART

                                  and ending at ISTART+NPOINTS



       LINVECT         C   I4     is an array giving the vector type for each

                                  plot.



       INC             C   I4     is an array containing the increment to  be

                                  used  in stepping through XARRAY and YARRAY

                                  when plotting



       BARTYPE         C   I4     is an array controlling the type of bar  to

                                  be  drawn  for each histogram.  If equal to

                                  998, the bars are stacked  vertically,  and

                                  if  equal  to  999, they are placed next to

                                  each other in the horizontal direction.



       NFILL           C   I4     is the number for  the  filling  style  for

                                  each   plot   (on   a   Visual  550  and  a

                                  LASERGRAFIX)


                                                               Page 35





       INVERT          C   LOG    is  a  two-dimensional  array   determining

                                  whether  the  X and/or Y coordinates are to

                                  be inverted.



       COLOR           C   I2     is an array containing the color  for  each

                                  plot.



       XOFFSET         C   R4     is the starting  X  location  on  the  plot

                                  device measured in inches.



       YOFFSET         C   R4     is the starting  Y  location  on  the  plot

                                  device measured in inches.



       XAXIS           C   R4     is the length of the X axis in inches



       YAXIS           C   R4     is the length of the Y axis in inches



       X_INTERVALS     C   R4     is the number of tick mark intervals  along

                                  the X axis



       Y_INTERVALS     C   R4     is like XINTERVALS but along the Y axis



       X_INTERVALS_OFF C   R4     is the fractional  offset  at  the  X  axis

                                  start measured in units of intervals



       Y_INTERVALS_OFF C   R4     is the fractional  offset  at  the  Y  axis

                                  start


                                                               Page 36





            6.2.14 ERRORBAR

            6.2.14 ERRORBAR



                 This subroutine plots error bars on a plot device.  The data

            is  arranged in pairs of locations for the end points of each bar

            where the two end points are  stored  in  array  locations  which

            differ  by one in the second index.  This subroutine is called by

            XYPLOT.



            Call:

                  CALL ERRORBAR(XARRAY,YARRAY,SIZE,NPOINTS,INC,XOFFSET,YOFFSET,

                  XAXIS,YAXIS,XINTERVALS,NSYMBOL,INVERT)



            where:



            NAME      I/O TYPE          DESCRIPTION

            NAME      I/O TYPE          DESCRIPTION

            XARRAY     C   R4     is the array  containing  the  X  positions

                                  measured  in  physical  value  for  the end

                                  points of the error bars.



            YARRAY     C   R4     is the array containing the Y positions



            SIZE       C   I4     is the size of each of  the  above  arrays.

                                  This should be at least two larger than the

                                  maximum number of points in the array.



            NPOINTS    C   I4     is the number of data points in the  arrays

                                  for each plot including points skipped over

                                  if INC>1



            INC        C   I4     is an array containing the increment to  be

                                  used  in stepping through XARRAY and YARRAY

                                  when plotting



            XOFFSET    C   R4     is the starting  X  location  on  the  plot

                                  device measured in inches.



            YOFFSET    C   R4     is the starting  Y  location  on  the  plot

                                  device measured in inches.



            XAXIS      C   R4     is the length of the x axis in inches



            YAXIS      C   R4     is the length of the y axis in inches



            XINTERVALS C   R4     is the number of tick mark intervals  along

                                  the X axis



            YINTERVALS C   R4     is like XINTERVALS but along the Y axis



            NSYMBOL    C   I4     is an array which in the first  byte  gives

                                  the style for each end of the error bar.  A

                                  zero gives the usual  short  tick  at  that

                                  end;  a  +1 gives nothing at that end; a +2

                                  gives an arrowhead at that end.



            INVERT     C   LOG    is  a  two-dimensional  array   determining


                                                               Page 37





                                  whether  the  X and/or Y coordinates are to

                                  be inverted.


                                                               Page 38





            6.2.15 RASTER AND RASTEXT SUBROUTINES



                 Routines RASTER and RASTEXT are used to generate raster plot

            files    for    printing    on   the   Printronix   or   Versatec

            printer/plotters.  RASTER generates vectors and RASTEXT generates

            text.    They  are  intended  for  special  purpose  raster  plot

            functions only.  The Calcomp compatible library  should  be  used

            for general purpose plotting.

                 Because the printers,  in  particular  the  Printronix,  are

            shared  devices  the  usual  mode of operation is to generate the

            plot on a file on disk which is  later  submitted  to  the  print

            queue with the conventional PRINT command.

                 In addition, because of the  dot  matrix  operation  of  the

            printers  the  plot must be generated in a single direction - the

            direction of the paper feed.  This is done by  generating  a  bit

            map  within  computer memory corresponding to the printer matrix.

            However, it is usually not feasible to store the whole bit map in

            memory,  especially when the length of paper, i.e.  the length of

            the bit map, is not known in advance.  This problem  is  overcome

            by  breaking  the total bit map into small sections each of which

            spans the  width  of  the  paper  but  covers  relatively  little

            distance  (say  a  few  inches)  along  the  paper.  The complete

            sequence of plot operations must be performed for each section in

            turn.



            Hence, the procedure for generating a raster plot is:



                      DO for all sections Initialize raster  array.   In  the

                        case  of  the Printronix set all bytes to 'C0'X.  For

                        the Versatec, zero all bytes.  Make calls  to  RASTER

                        and  RASTEXT necessary to generate plot.  Put special

                        codes in the  raster  array.   In  the  case  of  the

                        Printronix,  '5'X,  'C'X must be inserted in the last

                        two bytes of each row.  Write raster array  with  one

                        row per record.

                      END DO LOOP



                 Both routines ignore any plot data which  lies  outside  the

            section  under consideration.  So it is possible to pass all plot

            functions  through  the  routines  each  time  round  the   loop.

            However, for reasons of efficiency it may be desirable to pretest

            all character strings and vectors to see if, in fact, a  call  to

            RASTER  or  RASTEXT  is  necessary.  To ensure smooth transitions

            between sections, any  vector  or  character  string  which  does

            intersect  the current section should be passed to the generating

            routine in its entirety.  Otherwise rounding errors may occur  at

            the section boundaries.

                 The Printronix line is made up of  132  bytes  of  six  bits

            each.   This  yields  a density of 60 dots per inch as opposed to

            the density of 72 lines per inch along the page.  Note  that  two

            additional bytes per line are required for inserting the '5'X and

            'C'X trailing bytes.  The Versatec line is made up of  256  bytes

            of  eight  bits each.  Dot density on the Versatec is the same in

            both directions and equals 200 dots/lines per inch.


                                                               Page 39





                 Raster    plot    files    should     be     opened     with

            "FORM='UNFORMATTED'".  If "DISPOSE='PRINT'" is used when the file

            is closed, it will be queued directly to the Printronix.



            Call:



                  CALL RASTER(PRNTYPE,ARRAY,NBYTES,NLINES,NB1,NL1,IFUNC,

                  [Function-dependent arguments])



            where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            PRNTYPE   C    CHAR   is either "PRINTRONIX" or "VERSATEC".



            ARRAY     C/R  BYTE   is  the  array  in  which  the  raster   is

                                  generated.



            NBYTES    C    I4     is the number of bytes per line in ARRAY.



            NLINES    C    I4     is the number of lines in ARRAY.



            NB1,NL1   C    I4     are the logical coordinates of the top left

                                  bit of the current section.



            IFUNC     C    I4     is the operation to be carried out:



                                  1.   Draws  grid  lines  -  horizontal   or

                                  vertical, dashed or full.



                                  2.  Plots a set of vectors.




                                                               Page 40





            Function dependent parameters are:



            If IFUNC=1:



            IORIENT   C    I4     is 0  for  horizontal  orientation,  1  for

                                  vertical.



            ICOORD    C    I4     is the raster coordinate of the line.  This

                                  is  either a bit number or a line number as

                                  appropriate.



            NBON      C    I4     is the number of  bytes  written  -  allows

                                  variable dashing of the line when varied in

                                  conjunction with NBOFF.  Must be set  to  1

                                  for  full  line.   Note that in the case of

                                  dashed vertical lines, a dash always starts

                                  on  the  top  line  of the current section.

                                  The number of lines  per  section  must  be

                                  selected  carefully in order to give dashed

                                  vertical  lines  a  regular  appearance  at

                                  section boundaries.



            NBOFF     C    I4     is the  number  of  bytes  blank  (see  the

                                  description of NBON above).  Must be set to

                                  0 for a full line.



            If IFUNC=2:



            VECTORS   C    I4     is a two-dimensional array  containing  the

                                  vector  coordinates.   The  first number in

                                  each pair  is  the  coordinate  across  the

                                  page, the second is the coordinate down the

                                  paper.  All points in VECTORS are joined.



            NVECT     C    I4     is the number of vectors  in  VECTORS  (the

                                  number of points minus one).


                                                               Page 41





            The call for RASTEXT is:



                 CALL RASTEXT(PRNTYPE,ARRAY,NBYTES,NLINES,NB1,NL1,IB1,IL1,

                 1STRING,IORIENT,ISIZE)



            Where:



            PRNTYPE, ARRAY, NBYTES, NLINES, NB1, NL1 are as for RASTER;



            NAME      I/O TYPE          DESCRIPTION

            NAME      I/O TYPE          DESCRIPTION

            IB1,IL1   C    I4     are the coordinates of  the  start  of  the

                                  character string.



            STRING    C    CHAR   is the character string to be plotted.



            IORIENT   C    I4     is the orientation of the string:



                                  0.  Normal print orientation on paper.



                                  1-3.  are rotated 90 degrees  in  clockwise

                                  direction from the previous orientation.



            ISIZE     C    I4     is the character size (in integer multiples

                                  of matrix size).


                                                               Page 42






            6.2.16 TCPLOT SUBROUTINE



                 This subroutine produces a plot on a graphics terminal or on

            one  of  the other on-line devices available in the plot package.

            The data is plotted against the index of  its  array  and  so  is

            spaced  evenly  in  the  X direction.  The data is also scaled to

            fill the entire width and height of the plot boundaries.   For  a

            more   general   plotting   routine   see  Section  6.16,  XYPLOT

            Subroutine.  This subroutine is obsolete and should not  be  used

            for  future  development.  It will eventually be elliminated from

            future versions of MIIPS.



            Call:



                 CALL TCPLOT(Z,NPTS,STX,SCX,STY,SCY,XOR,YOR,CHAN,NDEV,DELTA)



            Where:



            NAME     I/O  TYPE          DESCRIPTION

            NAME     I/O  TYPE          DESCRIPTION

            Z         C    R4     is the array  containing  the  data  to  be

                                  plotted.



            NPTS      C    I4     is the  default  number  of  points  to  be

                                  plotted  from  the  array  if the number is

                                  asked for.



            STX       R    R4     is the starting index of the  array,  i.e.,

                                  ILO.



            SCX       R    R4     is the scale factor  in  the  X  direction;

                                  index per inch.



            STY       R    R4     is the lowest value to be plotted from  the

                                  array, i.e., YLO.



            SCY       R    R4     is the scale factor  in  the  Y  direction;

                                  value per inch.



            XOR       R    R4     is the origin of the plot on the screen  in

                                  the X direction measured in inches.



            YOR       R    R4     same as XOR, but for the Y direction.



            CHAN      C/R  I4     CHAN(1) and CHAN(2) are  the  starting  and

                                  ending  indexes  of  the array Z to be used

                                  for plotting.  If either or both are  equal

                                  to  zero, the indexes are asked for in this

                                  subroutine.  CHAN(1) and  CHAN(2)  are  the

                                  same as ILO and IHI, respectively.



            NDEV      C/R  I4     is the  number  of  the  plot  device  (see

                                  Section  6.3).   If  it  equals zero in the

                                  call, it is asked for in this subroutine.


                                                               Page 43





            DELTA     C    R4     DELTA(1) and DELTA(2) are  the  differences

                                  between  the  index  of  the  array and the

                                  physical value plotted along  the  abscissa

                                  at  the left and right ends.  This argument

                                  is  optional,  but  is  useful   when   the

                                  physical  value  differs from the index and

                                  you wish it to be correctly displayed.


                                                               Page 44





            6.2.17 PRINTRNX SUBROUTINE



                 This subroutine plots an array of data  on  the  Printronix,

            evenly spaced with respect to its index.  No tick marks are drawn

            and the data is scaled so  as  to  cover  as  large  an  area  as

            possible on the Printronix page.



            Call:



                  CALL PRINTRNX(DATA,NPTS,INDEXSTART,INCRMNT,ABSC1,ABSC2,

                  1LABELX,LABELY,PDATA,ISCLDATA,WORK)



            Where:



            NAME      I/O TYPE          DESCRIPTION

            NAME      I/O TYPE          DESCRIPTION

            DATA        C  R4     is the array  containing  the  data  to  be

                                  plotted.



            NPTS        C  I4     is the number of data points in  the  array

                                  DATA.



            INDEXSTART  C  I4     is the starting index  of  the  array  from

                                  where the data is to be taken.



            INCRMNT     C  I4     is the increment to  be  used  in  stepping

                                  through the array.



            ABSC1       C  R4     is the physical value along the abscissa of

                                  the  first point.  This gets printed on the

                                  output.



            ABSC2       C  R4     is the physical value along the abscissa of

                                  the last point.



            LABELX      C  CHAR   is the label associated with the abscissa.



            LABELY      C  CHAR   is the label associated with the ordinate.



            PDATA       R  R4     is a working array used by this subroutine.



            ISCLDATA    R  I4     is  also  a  working  array  used  by  this

                                  subroutine.



            WORK        R  BYTE   is  another  working  array  used  by  this

                                  subroutine.


                                                               Page 45





            6.2.18 ADDITIONAL LOW LEVEL ROUTINES



                 The following is a list of  additional  low  level  modules.

            For  documentation  on  these  routines,  consult  the individual

            program listings.





                    TEK              LASER

                    TEKPLOT          LASERPLOT

                    RASTER           APPLE

                    PRINTPLOT        APPLEPLOT

                    GRIN             VECTMODE

                    GRINPLOT         COLORMODE

                    PLTREAD          PENMODE

                    TEK4662          FILLMODE

                    T4662PLOT        DATALEVEL

                    COP              PLTWRITE

                    RAMPLOT          PLOTPAR

                    CALCOMP          PARSE

                    HOUSTPLOT          


                                                               Page 46





            6.3 PLOT FILE FORMAT

            6.3 PLOT FILE FORMAT



                 What follows is a brief description of  the  format  of  the

            standard  plot  file as generated by calls to the routines in the

            plot library (LBY:PLOT.OLB), on the VAX 11/780 system.

                 The plot file format is an intermediate  language  in  which

            can  be  encoded  completely and concisely all the plot functions

            which can be generated by calls to the  CALCOMP  compatible  plot

            subroutines.

                 Thus, when an application program calls  a  plot  subroutine

            such  as SYMBOL, all the pertinent information, such as character

            position, size, number of characters to  plot  etc.,  is  encoded

            into  this intermediate plot language.  The intermediate language

            is then written to a  file,  or  interpreted  immediately  by  an

            on-line plot utility subroutine.

                 The instructions defined for the intermediate  language  and

            the corresponding symbolic names for the instructions are:



               End plot file                           PLT$OP_ENDFILE



               End plot                                PLT$OP_ENDPLOT



               Plot to a point (X,Y) with the pen down PLT$OP_PLOTDOWN



               Plot to a point (X,Y) with the pen up   PLT$OP_PLOTUP



               Plot a string of characters             PLT$OP_SYMBOL



               Set the scale factor for the plot       PLT$OP_SYMBOL



               Select a new pen or plot colour         PLT$OP_NEWPEN



               Select a new origin at a point(X,Y)     PLT$OP_ORIG



               Plot a line from the current position   PLT$OP_SYMBDOWN

               to a point (X,Y) and draw a special

               symbol there



               Draw a special symbol at a point(X,Y)   PLT$OP_SYMBUP



               Exit the alpha mode on the plot device  PLT$OP_ENDALPHA



               Set the vector line style               PLT$OP_LINESTYLE



               Set the color                           PLT$OP_COLOR



               Set the data level                      PLT$OP_DATALEVEL



               Go to the point plot mode               PLT$OP_POINTPLOT



               Ring the bell                           PLT$OP_BELL



               Go to the alpha graphics mode           PLT$OP_ALPHAGRAPHICS



               Go to the rectilinear graphics mode     PLT$OP_RECTILINEAR


                                                               Page 47







               Set the fill style for the rectilinear  PLT$OP_FILLSTYLE

               graphics



               Select the penwidth                     PLT$OP_PENWIDTH



            (NOTE:  The definitions of the symbolic names PLT$xxxxxxx are  in

            the file [MIIPS.MIIPS]PLOTPAR.FOR)



                 The first byte of each instruction consists of an opcode (in

            the   least  significant  four  bits),  and  special  instruction

            specific information (in the most significant  four  bits).   All

            instructions  then  have  two  sixteen  bit  words  in  which the

            majority of the  instruction  specific  information  is  encoded.

            Symbol  instructions  then have an extra three words (making five

            in all) which are to completely  specify  a  symbol  instruction.

            The   PLT$OP_SYMBOL   instruction  the  has  a  string  of  bytes

            containing the text to be plotted (the length of this  string  is

            specified elsewhere in the instruction).


                                                               Page 48





            The format of each of the  instructions  is  illustrated  in  the

            table below:



                                    0000 0000      00    PLT$OP_ENDFILE

                                    0000 0000      01    PLT$OP_ENDPLOT

                                    YYYY XXXX      02    PLT$OP_PLOTDOWN

                                    YYYY XXXX      03    PLT$OP_PLOTUP

             ...ZZZ YYYY XXXX AAAA  NNNN HHHH      T4    PLT$OP_SYMBOL

                                    FFFF FFFF      05    PLT$OP_FACTOR

                                    0000 0000      06    PLT$OP_NEWPEN

                                    YYYY XXXX      07    PLT$OP_ORIG

                    YYYY XXXX AAAA  SSSS HHHH      T8    PLT$OP_SYMBDOWN

                    YYYY XXXX AAAA  SSSS HHHH      T9    PLT$OP_SYMBUP

                                    0000 0000      0A    PLT$OP_ENDALPHA

                                         BBBB      0B    PLT$OP_LINESTYLE

                                         CCCC      0C    PLT$OP_COLOR 

                                         DDDD      0D    PLT$OP_DATALEVEL

                                    0000 0000      0E    PLT$OP_POINTPLOT

                                    0000 0000      0F    PLT$OP_BELL  

                                    0000 0000      10    PLT$OP_ALPHAGRAPHICS

                                    0000 0000      11    PLT$OP_RECTILINEAR

                                         EEEE      12    PLT$OP_FILLSTYLE

                                         WWWW      13    PLT$OP_PENWIDTH

            KEY TO INSTRUCTION TABLE:





            XXXX      A sixteen-bit signed integer representing an x-position

                      as  a  number  of standard plotter increments (0.1mm or

                      .00394 inches).



            YYYY      As above, but for the y-position.



            HHHH      A sixteen-bit signed integer representing  a  character

                      size as a number of standard plotter increments.



            NNNN      A sixteen-bit signed integer which specifies  how  many

                      characters   are   in  the  text  part  of  the  SYMBOL

                      instruction.



            AAAA      A sixteen-bit signed integer specifying to the  nearest

                      degree  the  angle at which a character or symbol is to

                      be plotted.



            ZZZZ...   A string of characters of length NNNN (see above).



            FFFF FFFF A floating-point number specifying a scale factor.



            SSSS      A sixteen-bit signed integer specifying the number of a

                      special  symbol  (see  the documentation on the CALCOMP

                      plot routines DOC:PLOTDOC.DC2).



            T         A four-bit field  specifying  whether  symbol  plotting

                      will take place at the current pen position (T=1) or at

                      the X,Y position specified elsewhere in the instruction

                      (T=0).


                                                               Page 49





            P         A four-bit field specifying the pen number of the  next

                      pen to be used.



            BBBB      A sixteen-bit signed integer specifying the line  style

                      for the plot devices.



            CCCC      A sixteen-bit signed integer specifying the  color  for

                      the plot devices.



            DDDD      A sixteen-bit signed integer specifying the data  level

                      for the plot devices.



            EEEE      A sixteen-bit signed integer specifying the fill  style

                      for the plot devices.



            WWWW      A sixteen-bit signed integer specifying the  pen  width

                      for the plot devices.