GGGGGGGGG EEEEEEEEE NNN NNN PPPPPPPPP LLL TTTTTTTTT GGG EEE NNNN NNN PPP PPP LLL TTT GGG GGGG EEEEEE NNN N NNN PPPPPPPPP LLL TTT GGG GGG EEE NNN NNNN PPP LLL TTT GGGGGGGGG EEEEEEEEE NNN NNN PPP LLLLLLLL TTT IIIIIIIII IIIIIIIII III III III III III III IIIIIIIII IIIIIIIII GENPLT-II is a package of FORTRAN non-interactive graphic subroutines which provide a wide variety of automatic functions such as the plotting of scales and grids. Data can be represented by plotted points or symbols, by solid or dashed lines, or as shaded figures. Draftsman's Gothic and Greek lettering are provided. Further information concerning these routines has been published in Volume 3 of "Computer Programs For Chemistry," W. A. Benjamin, Inc., 1969 (edited by Delos F. DeTar). GENPLT-II, a General Plotting Package Page 2 Coupling GENPLT-II to a Particular Plotting Device -------- --------- -- - ---------- -------- ------ The GENPLT-II subroutines produce graphic output on a specific plotting device by calling a set of routines provided by the user for that device. Several typical packages of such coupling routines are supplied. If an installation has a plotting device, some primitive routines will probably be available for its use. One of the provided coupling packages can then be modified to call these primitive routines. The file PENTST is provided to test a new or modified set of coupling routines. If the coupling routines are operating correctly, this program will produce 3 versions of the Yale University crest. Each of the coupling packages contains 5 simple routines with a standardized argument list. These are as follow. SUBROUTINE PENBGN(LASTX,LASTY,NEWX,NEWY) called by the user to initialize any parameters needed by the other routines of the coupling package. The most important parameters are FACTOR which is the number of plotter grid units corresponding to XWIDTH or YWIDTH equal 1.0 (the maximum possible), and OFSETX and OFSETY which are the coordinates of the plotter grid origin stated in plotter grid units. PENBGN might also produce an identification frame if used with a camera monitored CRT, or might advance paper if used with a drum plotter. SUBROUTINE PENHLT(LASTX,LASTY,NEWX,NEWY) called by the user when a fresh plotting surface must be provided. Would advance film in CRT camera or advance the paper in drum plotter. For a flat-bed plotter, would signal the operator to change paper. For a storage CRT, would clear screen. SUBROUTINE PENEND(LASTX,LASTY,NEWX,NEWY) called by the user after all plotting has been generated. For most devices would merely call PENHLT again. Some systems might require calling an accounting routine. The arguments NEWX and NEWY for the above routines are dummies not used by the routines. LASTX and LASTY are set, if necessary, by these coupling routines for use when the user calls the higher level GENPLT-II routines and contain the present pen or CRT beam position coordinates for use in interpolation between drawn lines. Two additional coupling routines are called internally by the GENPLT-II routines. These are as follow. GENPLT-II, a General Plotting Package Page 3 SUBROUTINE PENUP(LASTX,LASTY,NEWX,NEWY) moves the pen or CRT beam from the former position LASTX, LASTY to the new position NEWX, NEWY without drawing a line. SUBROUTINE PENDWN(LASTX,LASTY,NEWX,NEWY) draws a line from the former position LASTX, LASTY to the new position NEWX, NEWY. The following packages of coupling subroutines are provided. The printer output package is written entirely in FORTRAN and should work under any system. Printer representation of plots is often useful if normal hardcopy graphic output is either expensive or slow. The unit number NTAPE onto which printer plots are output is set by PENHLT when this is initially called by PENBGN and should be changed as necessary. File PRTPAC contains the routines PENBGN, PENUP, PENDWN and PENEND for producing printer or teletype plots using the characters X and space. File PRTPAC must be used with one of the following versions of PENHLT. File PRTHLB produces large printer plots 3 pages wide by 4 pages high. Although designed for a printer with at least 122 characters per line, it is necessary to change only 1 variable (ICHAR) to split the plot into narrower columns for printing on a teletype. File PRTHLC produces a very low resolution plot on a single printer page of 101 character width. File XRXHLT produces an output file containing duration and intensity information for driving a Xerox Telecopier. Custom built hardware and the routines to drive this hardware are necessary to generate the audio tones which control this device. The stylus of the telecopier spins inside a rolled sheet of carbon paper which in turn is inside a rolled sheet of normal paper. The other printer coupling routines can be used since both the printer and telecopier are raster displays. The version of PENHLT meant for the Telecopier is unusual in that it allows both horizontal and vertical resolution to be specified by a single variable. File CALPAC calls the standard Calcomp routine PLOT to produce plots on Calcomp drum plotters. It may be necessary to GENPLT-II, a General Plotting Package Page 4 restore the DIMENSION statement and the call to subroutine PLOTS which appear as comment lines in PENBGN. The following files are also provided. File CALPLT simulates the standard Calcomp routine PLOT. Individual horizontal, vertical or diagonal motions of the stepping motor are requested by calling a routine named PLOTP. The routine PLOTP must be written for the individual system. File CALARD simulates the above mentioned routine PLOTP for monitoring on an ARDS graphic terminal. Routines in the file ARDMAC are called for final output. File ARDPAC A very simple set of coupling routines which call the routines in file ARDMAC for output on an ARDS (Advanced Remote Display Station) storage tube terminal. File ARDMAC contains Macro routines for driving a dual scope ARDS terminal with write-through cursor and with Sylvania tablet interface. The entry points within this file are described in the appendix. GENPLT-II, a General Plotting Package Page 5 Dimension Systems --------- ------- The sizes and locations of items to be plotted are specified in 3 different dimension systems. 1. User defined data has its own dimension system (which can differ in the horizontal and vertical directions) and is windowed into a plot area which can contain a range of data extending in the horizontal direction from XFIRST at the left edge to XFINAL at the right edge, and in the vertical direction from YFIRST at the bottom edge to YFINAL at the top edge. Similarly, routine BARPLT requires the maximum sum of the segments of an individual bar be input in data coordinates as the argument TOTAL. 2. The plot area into which the data are windowed has its width XWIDTH, height YWIDTH, horizontal distance XCORNR from the left edge of the maximum usable plotting surface and vertical distance YCORNR from the lower edge of the maximum usable plotting surface specified as fractions of the width or height of the maximum usable plotting surface. Similarly, the argument HEIGHT which defines the height of captions plotted by routine WRDPLT and of numbers plotted by routine NMBPLT is specified as a fraction of the height of the maximum usable plotting surface. 3. The heights of scale captions and of scale numbers and of scale tick marks, the heights of characters used to represent data or used as the tips of arrows, and the lengths of the dashes and of the spaces of dashed lines used to represent data, are specified in units which are 1/50th of the height of the plot area. Use of this relative unit for the specification of the arguments RELHIT, RELSPC and RELARO allow the proportions of a plot to be independent of changes in its overall size. For example, if data ranging from 0.001 to 0.002 in the horizontal direction and from 1200.0 to -300.0 in the vertical direction were to be plotted in a centered plot area having width 0.6 of the maximum possible width and having height 0.5 of the maximum possible height, then XFIRST = 0.001 XFINAL = 0.002 YFIRST = 1200.0 YFINAL = -300.0 XWIDTH = 0.6 YWIDTH = 0.5 XCORNR = 0.3 YCORNR = 0.25 GENPLT-II, a General Plotting Package Page 6 The decreasing vertical scale causes difficulty for neither the data plotting routines nor for the scale plotting routine. These arguments, and the XPOINT and YPOINT data actually being represented are diagramed below. *******upper*edge*of*maximum*usable*plotting*surface******** * * * * * * * r l i e .............. XWIDTH .............. g f h t t * ******upper*edge*of*plot*area******* . * e * .r . e d l . i . d g e . g . g e f XFINAL h . e * t YFINAL t . * o * * Y o f p p W f * l X l I * u o . o D u s t . t H s a * . * T a b e XFIRST XPOINT e . b l d YFIRST YPOINT d . l e g . g . e * e . e . * s *. * . s u..XCORNR...******lower*edge*of*plot*area******* . u r . r f Y f a C a c O c e R e * N * * R * * . * *******lower*edge*of*maximum*usable*plotting*surface******** GENPLT-II, a General Plotting Package Page 7 Selection of Character Strings for Plotting Captions --------- -- --------- ------- --- -------- -------- Since the GENPLT-II fonts were originally developed for use on an IBM 7094 computer, only the characters in the BCD character set can be used in input strings. These allowed characters include the upper case Roman alphabet, the numerals 0 through 9, and the 11 other characters left parenthesis, right parenthesis, comma, apostrophe, period, plus sign, minus sign, asterisk, slash, equals sign and dollar sign (used as a non-plotting control character). All other characters will be translated to blanks (spaces) prior to being plotted. The basic version of the lettering routine (FONT1C) plots only horizontal or vertical upper case Roman block letters. Plotting of the string is terminated whenever a $ (dollar sign, not alt-mode) is encountered as a character to be plotted. The caption THIS IS A SAMPLE TITLE could be plotted if the following Hollerith field were to be included as one of the caption arguments (such as NAMELX, NAMELY etc. of a CALL SCLPLT statement). 23HTHIS IS A SAMPLE TITLE$ It will be noted that the $ must be included in the character count and that this character count can be less than the 72 maximum. In effect, the terminal $ prevents the plotting as random characters of the unspecified portion of the caption. The advanced version of the lettering routine (LTRPLC) can plot lettering at any angle, and interprets the character following a $ in a plotted alphameric string as an option selector rather than as a character to be plotted. A blank (space character), zero or any other character not used for particular options following a $ causes termination of plotting of the string. The digits 1, 2, 3 and 4 select Roman upper case, Roman lower case, Greek upper case and Greek lower case respectively (in fonts 7 and 8, semi-script Roman is selected rather than Greek by $3 and $4). Roman upper case lettering is initially provided, however this alphabet and case are not automatically reset by succeeding calls to the lettering program. The sample caption given above could be plotted with the first letter in each word in upper case by using the following string. 40H$1T$2HIS $1I$2S $1A S$2AMPLE $1T$2ITLE$ Greek letters are identified in the character strings by the Roman letters having the same numerical positions within the corresponding alphabets. For example, $3X would refer to upper case omega, the 24th character in the Greek alphabet. Italic lettering, size modification, and sub-superscripting are provided by the following option selector character GENPLT-II, a General Plotting Package Page 8 pairs. $$ selects italic lettering. $* selects lettering and intercharacter spacing both of 3/2 normal size. $/ selects lettering and intercharacter spacing both of 2/3 normal size. $+ selects superscript lettering. $- selects subscript lettering. $) selects lettering 3/2 normal width. $( selects lettering 2/3 normal width. $= causes return to normal upper case Roman. These options are cumulative until the entire group is reset by termination of plotting of the string or by the $= option selector pair. If italic superscripting had been requested by a $$$+ or $+$$ selector set, italic subscripting could be simply obtained by use of the $- selector pair (though a redundant $$ would cause no harm). However to obtain normal size italic lettering under the same initial conditions, it would be necessary to use a $=$$ option selector set, since the $= option selector pair would remove the italic slant as well as cause return to the normal lettering size. A comma following a dollar sign can be used to backspace. Such a backspace has the same width as have most of the upper case Roman letters and as have all the digits and punctuation marks and upper and lower case Greek letters. A period following a dollar sign can be used to shift the plotted output to a new line, similar to incrementing the LINE argument of routine WRDPLT. The new line command should only be used, however, if the lettering is being left justified. One of the following fonts must be loaded if file LTRPLC is used. This additional file contains the lettering coordinates. FONT6A is recommended for normal use. FONT2 primitive upper and lower case Roman and upper and lower case Greek. FONT3 rounded (but not standard draftsman) upper and lower case Roman and upper and lower case Greek. FONT4 outline sans-serif upper and lower case Roman (matches single stroke draftsman's Roman). FONT5 outline Caslon upper and lower case Roman (classic outline serif). FONT6A draftsman's upper and lower case Roman and upper and lower case Greek. FONT7 draftsman's upper and lower case Roman and upper and lower case fore-hand semi-script. FONT8 draftsman's upper and lower case Roman and upper and lower case back-hand semi-script. FONT9 draftsman's upper and lower case Roman (same as in fonts 6, 7 and 8 with no alternate alphabet). GENPLT-II, a General Plotting Package Page 9 Routines in the GENPLT-II Package -------- -- --- --------- ------- AROPLT plots arrows with letters as head and tail. BARPLT plots bar charts. DIMPLT hatches any irregularly shaped closed figure for which the user has supplied X and Y coordinate arrays. The hatch lines with which the figure is shaded can be drawn at any angle. Unlike DRKPLT described below, DIMPLT results in a slight precision loss in the input arrays. Both DIMPLT and DRKPLT window the shaded figure onto the plot area. DRKPLT hatches with horizontal and/or vertical shading lines any irregularly shaped closed figure for which the user has supplied X and Y coordinate arrays. DSHPLT plots X and Y arrays as a dashed line with user defined dash and space lengths. The lengths of dashes and of the spaces between them is independent of the distances between consecutive points defining the line. The line is windowed onto the plot area. GENPLT plots user defined X and Y arrays as a set of points, a continuous line, centered alphameric characters, centered symbols (diamonds, hexagons etc.) or as a set of lines connecting blank arreas centered at the specified coordinates (to connect points independently plotted as symbols or characters). GRDPLT plots grids which match the scales drawn by SCLPLT. LINPLT plots a line from the point previously specified by either PNTPLT or LINPLT. NMBPLT plots a left justified, baseline centered or right justified number at any angle and either with or without decimal point. PNTPLT plots individual points or the start of new lines. SCLPLT plots a set of linear scales, either at the borders of the rectangular plot area, or intersecting at user chosen coordinates (not necessarily zero,zero on the scale) to divide the plot area into quadrants. the user has control over which borders will bear tick marks, scale numbers and legends. WRDPLT plots a left justified, baseline centered, or right justified caption at any angle. GENPLT-II, a General Plotting Package Page 10 SUBROUTINE AROPLT(X1 ,Y1 ,X2 ,Y2 ,XFIRST,YFIRST, XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR,ITAIL ,IHEAD , RELHIT,RELSPC,RELARO,LASTX ,LASTY ) Routine to plot possibly dashed arrow with tail at point X1,Y1 and with head at point X2,Y2. The routines DSHPLT and WRDPLT are called. The lettering routine capable of lettering at angles must be used. The arrow can have one or more letters centered at head and tail. These are specified as the strings IHEAD and ITAIL. V's at both ends would give a double headed arrow. Each string must be terminated by a dollar sign followed by a blank (space character) or by some other dollar sign command which would specify the end of the string to be plotted. If no termination command is present within the string, a maximum of 72 letters will be plotted. A bar can be plotted at ends of arrow as a subscript minus sign. It must be remembered that the width of a character is usually 2/3rds of its height. To get bars with width equal to height of other letters, the string '$)$--$ ' would be used. The $* command character pair should not here be used instead of the $) character pair since the $* would also give an larger gap after the minus sign and lead to slightly incorrect centering. X1 = horizontal data coordinate of tail of arrow Y1 = vertical data coordinate of tail of arrow X2 = horizontal data coordinate of head of arrow Y2 = vertical data coordinate of head of arrow XFIRST = horizontal data coordinate to be placed at left border of plot area. YFIRST = vertical data coordinate to be placed at lower border of plot area. XFINAL = horizontal data coordinate to be placed at right border of plot area. YFINAL = vertical data coordinate to be placed at upper border of plot area. XWIDTH = horizontal width of plot area. YWIDTH = vertical height of plot area. XCORNR = horizontal distance from plotting table origin to left plot edge. YCORNR = vertical distance from plotting table origin to lower plot edge. ITAIL = array containing letter or letters to be plotted at arrow tail. IHEAD = array containing letter or letters to be plotted at arrow head. RELHIT = length of dashes along stem of arrow in units of magnitude 0.02*YWIDTH. RELSPC = length of spaces along stem of arrow in units of GENPLT-II, a General Plotting Package Page 11 magnitude 0.02*YWIDTH. RELARO = height of letter at end of arrow in units of magnitude 0.02*YWIDTH. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. SUBROUTINE BARPLT(INDIC ,KNDBGN,KNDEND,KNTBAR,MSTBAR,RATIO , TOTAL ,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,NAME ,LASTX , LASTY ) Routine to plot bar charts. INDIC = 1 plots horizontal bar. INDIC = 2 plots vertical bar. INDIC = 3 plots hatching identification blocks. KNDBGN = number of first component to plot, not larger than KNDEND. KNDEND = number of final component to plot, maximum is 7. KNTBAR = number of this bar in plotting sequence, first bar is 1. MSTBAR = total number of bars to be plotted. RATIO = array of segment lengths in data units. TOTAL = data units corresponding to total width of plot area. XWIDTH = horizontal width of plot area. YWIDTH = vertical height of plot area. XCORNR = X distance from plotting table origin to left plot edge. YCORNR = Y distance from plotting table origin to lower plot edge. RELHIT = height of plotted alphanumeric characters in units of 0.02*YWIDTH. NAME = 10 letter bar title or sequence of 10 letter block titles LASTX = horizontal (X) grid coordinate of last point plotted. LASTY = vertical (Y) grid coordinate of last point plotted. GENPLT-II, a General Plotting Package Page 12 SUBROUTINE DIMPLT(KONTRL,XPOINT,YPOINT, NEXT,KRDBGN,KRDEND, XFIRST,YFIRST,XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR, RELHIT,RELSPC,LASTX ,LASTY ) Routine to darken or hatch an irregularly shaped figure. The plotted output is windowed onto the plot area. Unlike output from DRKPLT, hatch lines can be at any angle. DIMPLT rotates the input XPOINT and YPOINT arrays prior to processing. These arrays are returned to their original values before returning to the calling program, but the user should be aware that there can have been a slight precision loss. DRKPLT does not alter the contents of the input XPOINT and YPOINT arrays. KONTRL = selects perimeter or angle of hatching KONTRL = negative gives perimeter KONTRL = 0 or greater, hatching angle in degrees = 0 gives horizontal hatch lines = 90 gives vertical hatch lines XPOINT = array of X coordinates defining perimeter of figure. YPOINT = array of Y coordinates defining perimeter of figure. NEXT = fixed or floating point array used as working space. NEXT is redefined during processing destroying former contents. NEXT must be dimensioned same or larger than XPOINT and YPOINT. Portion of NEXT which is used is parallel to used portions of XPOINT and YPOINT arrays. KRDBGN = subscript of first point to be plotted. KRDEND = subscript of final point to be plotted. XFIRST = X coordinate (in system used for XPOINT) to be placed at left border of plot area. YFIRST = Y coordinate (in system used for YPOINT) to be placed at lower border of plot area. XFINAL = X coordinate (in system used for XPOINT) to be placed at right border of plot area. YFINAL = Y coordinate (in system used for YPOINT) to be placed at upper border of plot area. XWIDTH = horizontal width (as fraction of maximum) of plot area. YWIDTH = vertical height (as fraction of maximum) of plot area. XCORNR = X distance (as fraction of maximum dimension) from plotting table origin to left plot edge. YCORNR = Y distance (as fraction of maximum dimension) from plotting table origin to lower plot edge. RELHIT = distance between alternate pairs of hatch lines in units of 0.02*YWIDTH. RELHIT and RELSPC both set at 1.0 would give 50 lines in distance corresponding to height of the plot area. RELSPC = distance between alternate pairs of hatch lines in units of 0.02*YWIDTH. GENPLT-II, a General Plotting Package Page 13 LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. SUBROUTINE DRKPLT(KONTRL,XPOINT,YPOINT, NEXT,KRDBGN,KRDEND, XFIRST,YFIRST,XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR, RELHIT, LASTX, LASTY) Routine to darken or hatch an irregularly shaped figure. Only horizontal and/or vertical hatch lines are provided. The routine DIMPLT should be used for other angles. The plotted output is windowed onto the plot area. KONTRL = option control which selects type of hatching to be used. KONTRL = 1 gives hatching formed of parallel horizontal lines. KONTRL = 2 gives crosshatch of horizontal and vertical lines. KONTRL = 3 gives hatching formed of parallel vertical lines. KONTRL = 4 plots perimeter of figure. XPOINT = array of X coordinates defining perimeter of figure. YPOINT = array of Y coordinates defining perimeter of figure. NEXT = fixed or floating point array used as working space. NEXT = is redefined by DRKPLT so former contents are destroyed. NEXT = must have same dimensions as XPOINT or YPOINT. KRDBGN = subscript of first point to be plotted. KRDEND = subscript of final point to be plotted. XFIRST = X coordinate to be placed at left border of plot area. YFIRST = Y coordinate to be placed at lower border of plot area. XFINAL = X coordinate to be placed at right border of plot area. YFINAL = Y coordinate to be placed at upper border of plot area. XWIDTH = horizontal width of plot area. YWIDTH = vertical height of plot area. XCORNR = X distance from plotting table origin to left plot edge. YCORNR = Y distance from plotting table origin to lower plot edge. RELHIT = distace between hatch lines in units of 0.02*YWIDTH. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. GENPLT-II, a General Plotting Package Page 14 SUBROUTINE DSHPLT(XPOINT,YPOINT,KRDBGN,KRDEND,XFIRST,YFIRST, XFINAL,YFINAL,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,RELSPC, LASTX ,LASTY ) Routine to plot dashed lines. The length of individual dashes and spaces is independent of the distance between point coordinates which define the line. The line plotted is windowed onto the plot area. XPOINT = array of X coordinates of points to be plotted. YPOINT = array of Y coordinates of points to be plotted. KRDBGN = subscript of first point to be plotted. KRDEND = subscript of final point to be plotted. XFIRST = X coordinate to be placed at left border of plot area. YFIRST = Y coordinate to be placed at lower border of plot area. XFINAL = X coordinate to be placed at right border of plot area. YFINAL = Y coordinate to be placed at upper border of plot area. XWIDTH = horizontal width of plot area. YWIDTH = vertical height of plot area. XCORNR = X distance from plotting table origin to left plot edge. YCORNR = Y distance from plotting table origin to lower plot edge. RELHIT = length of dashes in units of magnitude 0.02*YWIDTH. RELSPC = length of spaces in units of magnitude 0.02*YWIDTH. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. SUBROUTINE GENPLT(MODE1 ,MODE2 ,MODE3 ,XPOINT,YPOINT,KRDBGN, KRDEND,XFIRST,YFIRST,XFINAL,YFINAL,FIRSTX,FIRSTY,FINALX, FINALY,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,LETTER,LASTX , LASTY ) Routine to plot data X and Y coordinate arrays as points, as symbols, as characters, as connected lines, or as lines connecting square blank areas (which are not outlined) centered at the input coordinates. The plotting of a point, or of a line segment to a point can be suppressed if the point is outside the plot area. It must be noted that this does not provide true windowing of a line connecting the specified points. Routine DSHPLT should instead be used, either with very long dashes or with zero length spaces between dashes, to plot lines which require true windowing onto the plot area. GENPLT-II, a General Plotting Package Page 15 MODE1 = 1 does not check if points are in requested plot area. MODE1 = 2 sets scales to fit coordinates of plotted points. MODE1 = 3 does not plot point coordinates exceeding limits. MODE2 = 1 requires both input X and Y coordinate arrays. MODE2 = 2 simulates X array left to right at equal intervals. MODE3 = 1 gives plot with lines connecting blank areas around points. MODE3 = 2 gives plot with line connecting points. MODE3 = 3 gives plot with dot at each point. MODE3 = 4 gives plot with alphanumeric character at each point. MODE3 = 5 gives plot with special symbol at each point. XPOINT = array of X coordinates of points to be plotted. YPOINT = array of Y coordinates of points to be plotted. KRDBGN = subscript of first point to be plotted. KRDEND = subscript of final point to be plotted. XFIRST = X coordinate to be placed at left border of plot area. YFIRST = Y coordinate to be placed at lower border of plot area. XFINAL = X coordinate to be placed at right border of plot area. YFINAL = Y coordinate to be placed at upper border of plot area. Scales may either increase or decrease if MODE1 = 1 or 3. Scales are selected to increase toward right and top if MODE1 = 2. Input limits XFIRST, YFIRST, XFINAL and YFINAL are ignored if MODE1 = 2. FIRSTX = X coordinate placed at left border of plot area. FIRSTY = Y coordinate placed at lower border of plot area. FINALX = X coordinate placed at right border of plot area. FINALY = Y coordinate placed at upper border of plot area. FIRSTX, FIRSTY, FINALX and FINALY are output arguments. These variables may be used to define the ends of the scales to be drawn by SCLPLT. The value of these output arguments will vary from the input arguments only if MODE1 = 2. XWIDTH = horizontal width of plot area. YWIDTH = vertical height of plot area. XCORNR = X distance from plotting table origin to left plot edge. YCORNR = Y distance from plotting table origin to lower plot edge. GENPLT-II, a General Plotting Package Page 16 RELHIT = height in units of 0.02*YWIDTH of the letters, symbols, or blank areas centered at each point for MODE3=1, 4 or 5 RELHIT = 1.0 gives letters YWIDTH/50 high. LETTER = alphanumeric character centered at points if MODE3 = 4. This is first letter specified by a Hollerith field (either within enclosing apostrophes or after a character count and the letter H) or read using an alphameric A field within a FORMAT statement. The character will be plotted in the case and alphabet (either Roman or Greek) selected prior to the call to GENPLT. A dummy call to WRDPLT could be used to select case and alphabet. LETTER = integer selecting special symbol if MODE3 = 5. symbols are specified by letter values 1, 2=triangle 3, 4=square 5, 6=pentagon 7, 8=hexagon 9,10=octagon 11,12=cross Two orientations of each symbol are provided. These symbols are independent of the font loaded. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. SUBROUTINE GRDPLT(LINESX,LINESY,XFIRST,YFIRST,XFINAL,YFINAL, XWIDTH,YWIDTH,XCORNR,YCORNR,LASTX ,LASTY ) Routine to plot grids having line spacing matching that of the scale markings drawn by SCLPLT. LINESX = number of grid divisions along horizontal scale between consecutive horizontal scale numbers plotted by SCLPLT. LINESY = number of grid divisions along vertical scale between consecutive vertical scale numbers plotted by SCLPLT. Border is plotted if both LINESX = 0 and LINESY = 0. XFIRST = left limiting coordinate of horizontal (X) scale. YFIRST = lower limiting coordinate of vertical (Y) scale. XFINAL = right limiting coordinate of horizontal (X) scale. YFINAL = upper limiting coordinate of vertical (Y) scale. XWIDTH = horizontal plot width. YWIDTH = vertical plot width. XCORNR = distance from plotting table origin to left plot edge. GENPLT-II, a General Plotting Package Page 17 YCORNR = distance from plotting table origin to lower plot edge. LASTX = horizontal (X) grid coordinate of last point plotted. LASTY = vertical (Y) grid coordinate of last point plotted. SUBROUTINE LINPLT(XCOORD,YCOORD,XFIRST,YFIRST,XFINAL,YFINAL, XWIDTH,YWIDTH,XCORNR,YCORNR,LASTX ,LASTY ) Routine to continue previous line to new coordinates. XCOORD = X or horizontal coordinate to which line is to be plotted YCOORD = Y or vertical coordinate to which line is to be plotted XFIRST = X coordinate cooresponding to left edge of plot area. YFIRST = Y coordinate cooresponding to lower edge of plot area. XFINAL = X coordinate cooresponding to right edge of plot area. YFINAL = Y coordinate cooresponding to upper edge of plot area. XWIDTH = horizontal width of plot area. YWIDTH = vertical height of plot area. XCORNR = X distance from plotting table origin to left plot edge. YCORNR = Y distance from plotting table origin to lower plot edge. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. SUBROUTINE NMBPLT(INDIC ,INDEX ,LINE ,FIGURE,KDECML,HEIGHT, XCORNR,YCORNR,LASTX ,LASTY ) Routine to plot floating point numbers either as integers or with decimal point. INDIC = angle of baseline of number in degrees from horizontal. INDIC can only have values 0 and 90 if FONT1C is used. INDEX = 0 plots left end of baseline of number at the point having the coorinates XCORNR and YCORNR. INDEX = 1 centers baseline of number at the point having the coorinates XCORNR and YCORNR. GENPLT-II, a General Plotting Package Page 18 INDEX = 2 plots right end of baseline of number at the point having the coorinates XCORNR and YCORNR. LINE = line upon which number is to be plotted. Line starting at input values of XCORNR and YCORNR is line = 1. Higher valued lines are offset to be plotted below line number 1. Spacing between lines is 1.5 height of numbers plotted. FIGURE = floating point number to be plotted. KDECML = number of decimal places (numerals right of decimal point) to be plotted. KDECML = 0 gives figure plotted as integer. HEIGHT = height of numbers to be plotted. XCORNR = horizontal coordinate of lettering baseline. see INDEX. YCORNR = vertical coordinate of lettering baseline. see INDEX. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. SUBROUTINE PNTPLT(XCOORD,YCOORD,XFIRST,YFIRST,XFINAL,YFINAL, XWIDTH,YWIDTH,XCORNR,YCORNR,LASTX ,LASTY ) Routine to plot a single point or the start of a new line. XCOORD = X or horizontal coordinate of point to be plotted. YCOORD = Y or vertical coordinate of point to be plotted. XFIRST = X coordinate cooresponding to left edge of plot area. YFIRST = Y coordinate cooresponding to lower edge of plot area. XFINAL = X coordinate cooresponding to right edge of plot area. YFINAL = Y coordinate cooresponding to upper edge of plot area. XWIDTH = horizontal width of plot area. YWIDTH = vertical height of plot area. XCORNR = X distance from plotting table origin to left plot edge. YCORNR = Y distance from plotting table origin to lower plot edge. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. GENPLT-II, a General Plotting Package Page 19 SUBROUTINE SCLPLT(INDEX0,INDEX1,INDEX2,INDEX3,INDEX4,INDEX5, INDEX6,INDEX7,INDEX8,INDEX9,XFIRST,YFIRST,XFINAL,YFINAL, XCROSS,YCROSS,XWIDTH,YWIDTH,XCORNR,YCORNR,RELHIT,NAMELX, NAMELY,NAMEUX,NAMERY,NAME ,LASTX ,LASTY ) Routine to plot captions and linear scales consisting of border lines, tick marks and scale numbers. The scale numbers are selected to be as logical as is possible. However, extremely large numbers at either or both ends of a scale, or extremely small differences between the numbers at the ends of the scale should be avoided to prevent overlap of the plotted numerals. INDEX0 = 1 gives immediate return from SCLPLT subroutine. INDEX0 = 2-4 defines format of scales to be plotted. INDEX0 = 2-3 does not cause any actual plotting to be undertaken. INDEX0 = 2 defines format for external (rectangular) scales. INDEX0 = 3 defines format for internal (crossed) scales. Internal scales divide the plot area in quadrants of possibly unequal size. INDEX0 = 4 causes actual plotting of plotting area corners. INDEX0 = 4 marks corners of plotting area with large crosses. INDEX0 = 4 voids all other options except caption options. INDEX0 = 4 might be used for paper alignment or trimming of plots. INDEX1 = 1 gives no horizontal (X) scale lines. INDEX1 = 2-4 plots horizontal (X) scale lines. INDEX1 = 2 plots only lower horizontal (X) scale line. INDEX1 = 3 plots both upper and lower horizontal (X) scale lines. INDEX1 = 4 plots only upper horizontal (X) scale line. INDEX2 = 1 gives no vertical (Y) scale lines. INDEX2 = 2-4 plots vertical (Y) scale lines. INDEX2 = 2 plots only left vertical (Y) scale line. INDEX2 = 3 plots both left and right vertical (Y) scale lines. INDEX2 = 4 plots only right vertical (Y) scale line. INDEX3 = 1 gives no tick marks along horizontal (X) scales. INDEX3 = 2-4 plots tick marks along horizontal (X) scales. INDEX3 = 2 plots only lower horizontal (X) scale tick marks. INDEX3 = 3 plots upper and lower horizontal (X) scale tick marks. INDEX3 = 4 plots only upper horizontal (X) scale tick marks. INDEX4 = 1 gives no tick marks along vertical (Y) scales. INDEX4 = 2-4 plots tick marks along vertical (Y) scales. INDEX4 = 2 plots only left vertical (Y) scale tick marks. INDEX4 = 3 plots left and right vertical (Y) scale tick GENPLT-II, a General Plotting Package Page 20 marks. INDEX4 = 4 plots only right vertical (Y) scale tick marks. INDEX5 = 1 gives no scale numbers along horizontal (X) scales. INDEX5 = 2-4 plots scale numbers along horizontal (X) scales (providing these same scales have tick marks selected by INDEX3). INDEX5 = 2 plots only lower horizontal (X) scale numbers. INDEX5 = 3 plots upper and lower horizontal (X) scale numbers. INDEX5 = 4 plots only upper horizontal (X) scale numbers. INDEX6 = 1 gives no scale numbers along vertical (Y) scales. INDEX6 = 2-4 plots scale numbers along vertical (Y) scales (providing these same scales have tick marks selected by INDEX4). INDEX6 = 2 plots only left vertical (Y) scales numbers. INDEX6 = 3 plots left and right vertical (Y) scale numbers. INDEX6 = 4 plots only right vertical (Y) scale numbers. INDEX7 = 1 gives no horizontal (X) scale captions. INDEX7 = 2-4 plots captions along horizontal (X) scales. INDEX7 = 2 plots only lower horizontal (X) scale caption. INDEX7 = 3 plots upper and lower horizontal (X) scale captions. INDEX7 = 4 plots only upper horizontal (X) scale caption. INDEX8 = 0,1 gives no vertical (Y) scale captions. INDEX8 = 2-4 plots captions along vertical (Y) scales. INDEX8 = 2 plots only left vertical (Y) scale caption. INDEX8 = 3 plots left and right vertical (Y) scale captions. INDEX8 = 4 plots only right vertical (Y) scale caption. INDEX8 = also controls direction of INDEX6 selected scale numbers. INDEX8 = 0 plots horizontally any scale numbers on vertical scale. INDEX8 = 0 prevents overlap of scale numbers on X and Y scales. INDEX8 = 1-4 plots vertically any scale numbers on Y scale. INDEX8 = 1-4 prevents overlap of Y scale captions and numbers. INDEX9 = 1 gives no main caption. INDEX9 = 2-4 plots main caption. INDEX9 = 2 plots main caption below lower horizontal (X) scale. The location of this main caption would be below the caption of the lower horizontal scale NAMELX possibly selected by INDEX7. INDEX9 = 3 plots main caption above lower horizontal (X) scale. The location of this main caption would be above the tick marks on the lower horizontal scale possibly selected by INDEX3. GENPLT-II, a General Plotting Package Page 21 INDEX9 = 4 plots main caption below upper horizontal (X) scale. The location of this main caption would be below the tick marks on the upper horizontal scale possibly selected by INDEX3. XFIRST = left limiting coordinate of horizontal (X) scale. YFIRST = lower limiting coordinate of vertical (Y) scale. XFINAL = right limiting coordinate of horizontal (X) scale. YFINAL = upper limiting coordinate of vertical (Y) scale. XCROSS = horizontal coordinate (in the system used for XFIRST and XFINAL) of the point of intersection of crossed scales. XCROSS = is ignored unless INDEX0 = 3. YCROSS = vertical coordinate (in the system used for YFIRST and YFINAL) of the point of intersection of crossed scales. YCROSS = is ignored unless INDEX0 = 3. XWIDTH = horizontal plot width. YWIDTH = vertical plot width. XCORNR = distance from plotting table origin to left plot edge. YCORNR = distance from plotting table origin to lower plot edge. RELHIT = height of scale numbers in units of 0.02*YWIDTH. RELHIT = proportions height of tick marks, numbers, and captions. RELHIT = 1.0 gives numbers YWIDTH/50 high, and is best for large plots. RELHIT = 2.0 gives numbers YWIDTH/25 high, and is best for small plots. NAMELX = lower horizontal scale caption, same height as numbers. NAMELX = 72 characters (or terminated by a dollar sign followed by a blank (space character) within the string if fewer than 72) read by 14A5,1A2 format or specified by alphameric string in DATA statement or in CALL statement. NAMELY = left vertical scale caption, same height as numbers. NAMELY = 72 characters (or terminated by a dollar sign followed by a blank (space character) within the string if fewer than 72) read by 14A5,1A2 format or specified by alphameric string in DATA statement or in CALL statement. NAMEUX = upper horizontal scale caption, same height as numbers. NAMEUX = 72 characters (or terminated by a dollar sign followed by a blank (space character) within the string if fewer than 72) read by 14A5,1A2 format or GENPLT-II, a General Plotting Package Page 22 specified by alphameric string in DATA statement or in CALL statement. NAMERY = right vertical scale caption, same height as numbers. NAMERY = 72 characters (or terminated by a dollar sign followed by a blank (space character) within the string if fewer than 72) read by 14A5,1A2 format or specified by alphameric string in DATA statement or in CALL statement. NAME = main caption, height is 1.5 times that of scale numbers. NAME = 72 characters (or terminated by a dollar sign followed by a blank (space character) within the string if fewer than 72) read by 14A5,1A2 format or specified by alphameric string in DATA statement or in CALL statement. LASTX = horizontal (X) grid coordinate of last point plotted. LASTY = vertical (Y) grid coordinate of last point plotted. SUBROUTINE WRDPLT(INDIC ,INDEX ,LINE ,LWORD ,LTRBGN,LTREND, HEIGHT,XCORNR,YCORNR,LASTX ,LASTY ) Routine to plot captions at positions not provided as standard by SCLPLT. INDIC = angle of lettering baseline in degrees from horizontal. INDIC can only have values 0 and 90 if FONT1C is used. INDEX = 0 plots left end of lettering baseline at the point with the coordinates XCORNR and YCORNR. INDEX = 1 centers lettering baseline at the point with the coordinates XCORNR and YCORNR. INDEX = 2 plots right end of lettering baseline at the point with the coordinates XCORNR and YCORNR. LINE = line upon which alphameric string LWORD is to be plotted. Line starting at input values of XCORNR and YCORNR is line = 1. Higher valued lines are offset to be plotted below line number 1. Spacing between lines is 1.5 height of words plotted. LWORD = word array to be plotted. This must either be specified as a string in the CALL WRDPLT statement (either with a leading character count followed by letter H, or with leading and trailing apostrophes), or be an array with each character byte being defined within each array element (4 letters per word for IBM 360 or IBM 370, 5 for PDP-10, 6 for IBM 7094, 10 for CDC 60 bit GENPLT-II, a General Plotting Package Page 23 computers). This means the array can have been read by some multiple of an A5 format on the PDP-10. LTRBGN = number of first letter in word array to be plotted. This would have the value 1 if lettering is to include first character in word array. LTREND = number of final letter in word array to be plotted. This prevents plotting of garbage if the dollar sign and blank (space) combination has not been used within the character string to terminate its own plotting. HEIGHT = height of letters to be plotted. XCORNR = horizontal coordinate of lettering baseline. see INDEX. YCORNR = vertical coordinate of lettering baseline. see INDEX. LASTX = last X grid coordinate plotted. LASTY = last Y grid coordinate plotted. GENPLT-II, a General Plotting Package Page 24 Calling Hierarchy of the GENPLT-II Routines ------- --------- -- --- --------- -------- AROPLT DSHPLT PENDWN PENUP WRDPLT LTRPLT IBCD PENDWN PENUP BARPLT HCHPLT PENDWN PENUP LTRPLT IBCD PENDWN PENUP PENDWN PENUP DIMPLT PENDWN PENUP DRKPLT PENDWN PENUP DSHPLT PENDWN PENUP GENPLT LTRPLT IBCD PENDWN PENUP PENDWN PENUP GRDPLT PENDWN PENUP LINPLT PENDWN NMBPLT LTRPLT IBCD PENDWN PENUP PNTPLT PENUP SCLPLT LTRPLT IBCD PENDWN PENUP PENDWN PENUP WRDPLT LTRPLT IBCD PENDWN PENUP The routine LTRPLT consists either of file FONT1C or of file LTRPLC and one of the files FONT2 through FONT9. GENPLT-II, a General Plotting Package Page 25 Appendix Appendix: Interactive Graphics Routines --------- ----------- -------- -------- (some of which call entries in file ARDMAC) FUNCTION IPLDST(IX,IY,JX,JY,IPENX,IPENY) Function to return distance from line having endpoints. Calculations are performed in integer mode and can have 10 percent error. IPLDST = returned with distance IX = horizontal coordinate of start of line IY = vertical coordinate of start of line JX = horizontal coordinate of end of line JY = vertical coordinate of end of line IPENX = horizontal coordinate of reference point IPENY = vertical coordinate of reference point FUNCTION IPLHIT(KONTRL,IWIDE,IHIGH,IX,IY,JX,JY,IPENX,IPENY) Function to test if tablet stylus points to point or line. The routines CRTOFF and CRTON are called. IPLHIT = 0 returned if stylus doesn't point to line = 1 returned if stylus points to line KONTRL = 0, does not outline active area = 1, outlines active area if test successful IWIDE = half-width of active area around point or line IHIGH = -1, test if stylus points to line (acitive area extends beyond ends of line) = 0, test if stylus points to middle of line (active area extends only to ends of line) = positive, half-height of active area around point (JX and JY are not used) IX = horizontal coordinate of point or of end 1 of line IY = vertical coordinate of point or of end 1 of line JX = horizontal coordinate of end 2 of line JY = vertical coordinate of end 2 of line IPENX = horizontal position of stylus IPENY = vertical position of stylus GENPLT-II, a General Plotting Package Page 26 Appendix SUBROUTINE PLTBOX(KONTRL,IWIDE,IHIGH,IX,IY,JX,JY) Routine to outline point or line with box or diamond. The routines CRTOFF and CRTON are called. KONTRL = 0, plot as box (edges at 0 and 90 degrees) = 1, plot as diamond (edges at diagonal) IWIDE = half-width of box around point or line IHIGH = -1, box extends beyond ends of line = 0, box touches ends of line = positive, half-height of box around point (JX and JY are not used) IX = horizontal coordinate of point or of end 1 of line IY = vertical coordinate of point or of end 1 of line JX = horizontal coordinate of end 2 of line JY = vertical coordinate of end 2 of line SUBROUTINE PLTCUT(IPLCUT,IX,IY,JX,JY,MINX,MINY,MAXX,MAXY) Routine to window line. This routine is based on GENPLT-II plotter coupling routines published in volume 3 of Computer Programs For Chemistry. IPLCUT = returned as 0 if line does not pass thru window. = returned as 1 if line passes thru window IX = horizontal coordinate of start of line IY = vertical coordinate of start of line JX = horizontal coordinate of end of line JY = vertical coordinate of end of line MINX = horizontal coordinate of lower left corner of window MINY = vertical coordinate of lower left corner of window MAXX = horizontal coordinate of upper right corner of window MAXY = vertical coordinate of upper right corner of window PLTCUT routine returns JX, JY, IX and IY changed if windowing is necessary. GENPLT-II, a General Plotting Package Page 27 Appendix SUBROUTINE PLTLIN(MULT,IDASH,IWEDGE,IHIGH,JHIGH,IDSPLY,IX, IY,JDSPLY,JX,JY) Routine to plot parallel lines between blank rectangles of different widths. The routines CRTOFF and CRTON are called. MULT = number of parallel lines to be drawn = 1 or greater, this number of lines is drawn centered between point IX IY and point JX JY. IDASH = 0, continuous line is drawn = 1 or greater, dashed line is drawn IWEDGE = -1 or less, each line is wedge pointing from point IX, IY to point JX, JY. = 0, normal (non-wedge) line representation. = 1 or greater, each line is wedge pointing from point JX, JY to point IX, IY. IHIGH = separation between lines if MULT is not 1 and/or between dashes if IDASH is not zero. IHIGH is similarly the minimum dash length and the minimum width of the broadest wedge end which are proportional to IDASH and the absolute value of IWEDGE respectively. JHIGH = half of height of rectangles 1 and 2. IDSPLY = 0, line is drawn to coordinates IX and IY = 1 or greater, is width of blank rectangle 1 IX = horizontal coordinate of rectangle 1 IY = vertical coordinate of rectangle 1 JDSPLY = 0, line is drawn to coordinates JX and JY = 1 or greater, is width of blank rectangle 2 JX = horizontal coordinate of rectangle 2 JY = vertical coordinate of rectangle 2 SUBROUTINE PLTTOP(IWIDE,IX,IY,JX,JY,NEWX,NEWY) Routine to calculate position above line midpoint. IWIDE = distance to be from line IX = horizontal coordinate of start of line IY = vertical coordinate of start of line JX = horizontal coordinate of end of line JY = vertical coordinate of end of line NEWX = returned with calculated X coordinate NEWY = returned with calculated Y coordinate GENPLT-II, a General Plotting Package Page 28 Appendix Appendix: Entry Points in File ARDMAC --------- ----- ------ -- ---- ------ SUBROUTINE CRTLTR(STRING,IFIRST,IFINAL,NEWX,NEWY) uses hardware character generation to plot an alphameric string containing 67 or fewer characters. STRING = 7 bit ASCII string (you can't get any other kind from DEC PDP-10 FORTRAN). IFIRST = serial number of first character. IFINAL = serial number of final character. (to plot from 3rd through 20th character in string, IFIRST=3 and IFINAL=20) NEWX = horizontal coordinate of lower, left corner of first letter to be plotted. NEWY = vertical coordinate of lower, left corner of first letter to be plotted. SUBROUTINE CRTOFF(NEWX,NEWY) positions CRT beam without writing at point NEWX, NEWY. NEWX = horizontal coordinate from 0 to 1023. NEWY = vertical coordinate from 0 to 1023. SUBROUTINE CRTON (NEWX,NEWY) draws line from previous beam position to the new point with coordinates NEWX and NEWY. NEWX = horizontal coordinate from 0 to 1023. NEWY = vertical coordinate from 0 to 1023. SUBROUTINE CRTSCP(KONTRL) selects which screen will show letters and drawn lines. KONTRL = bit coded mask selecting screen. = 1, lines will appear on screen 1. = 2, lines will appear on screen 2. = 3, lines will appear on both screens 1 and 2. SUBROUTINE CRTSTR(KONTRL) selects whether letters and drawn lines are stored on the CRT screen or merely momentarily visible (the latter mode is known as "write-through"). KONTRL = 0, lines are momentarily visible. = 1, lines are stored. SUBROUTINE CRTWIP(NO ARGUMENT) clears the currently selected screen, empties input buffer and returns ARDS terminal to teletype mode. SUBROUTINE CRTXYZ(NEWX,NEWY,NEWZ) queries the terminal about the current location of the tablet stylus and returns stylus position in the locations supplied as arguments (original contents are destroyed). NEWX = horizontal coordinate from 0 to 1023. NEWY = vertical coordinate from 0 to 1023. NEWZ = 0, stylus is pressed against tablet. GENPLT-II, a General Plotting Package Page 29 Appendix = 4 or 6, stylus is within about 3/8 inch of the tablet surface. = -1, stylus is beyond 3/8 inch of tablet surface. author: Donald E. Barth Department of Chemistry Harvard University updated: September 1972