Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-03 - decus/20-0082/calcom.doc
There is 1 other file named calcom.doc in the archive. Click here to see a list.
              TABLE OF CONTENTS

        1  INTRODUCTION
           1.1  GENERALITIES
           1.2  PROGRAMMING CONVENTIONS
	   1.3  GRAPHING CONVENTIONS
	   1.4  ERROR DETECTION AND RECOVERY
	   1.5  "GLOB" ANALYSIS
	   1.6  DEMONSTRATION PROGRAMS

        2  PLOTTER SUBROUTINES
	   2.1 PLOTS
	   2.2 PLOT
	   2.3 SYMBOL
	   2.4 NUMBER
	   2.5 WHERE
	   2.6 SCALE
 
	3  FRAMING AND PAGE CONTROL
	   3.1	PLT00
	   3.2	PLTFR, PLTBO
	   3.3	PLTEJ
 
	4  MARGIN CONTROL
	   4.1	PLTMS
	   4.2	PLTMC
 
	5* AXES, LABELS, AND MARKS
	   5.1	PLTAX
	   5.2	PLTLA
	   5.3	PLTCI, PLTFM
	   5.5	PLTIR, PLTUR
 
	6* RECTANGULAR GRAPHS
	   6.1	PLTRG
	   6.2	PLTRI
 
	7* COORDINATE CONVERSIONS
	8* CONTOUR PLOTS
	9* HIDDEN LINE SUBROUTINES
 
 
       APPENDIX 1.  INDEX OF THE <PLOT> FILE
       APPENDIX 2.  "GLOB" ANALYSIS OF THE <PLOT> FILE
       APPENDIX 3.  PLOTTER DEMONSTRATION ABSTRACTS
 
 
 
 
 
(*) NOT YET WRITTEN
...
 
 
 
 
 
 
 
 
 
 
     IT IS USUAL TO NOTE THAT COMMON LANGUAGE APPROPRIATES MANY WORDS AS
NOUNS OR ADJECTIVES, WHICH ARE IN REALITY REGISTERED TRADEMARKS. IN THE
PRESENT INSTANCE, THESE INCLUDE AT LEAST THE FOLLOWING:
 
	  NAME	     OWNER
 
	  CALCOMP    CALIFORNIA COMPUTER PRODUCTS CORPORATION
	  TELETYPE   TELETYPE CORPORATION
	  IBM	     INTERNATIONAL BUSINESS MACHINES CORPORATION
	  PDP-10     DIGITAL EQUIPMENT CORPORATION
 
     LIKEWISE, THE PUBLICATION OF A TECHNICAL DESCRIPTION OF THE USE OF
INDUSTRIAL OR CMMMERCIAL EQUIPMENT DOES NOT CONSTITUTE AN ENDORSEMENT OF
THE BRAND; NEITHER DOES AN ENUMERATION OF ITS DEFICIENCIES CONSTITUTE A
CONDEMNATION OF THE PRODUCT.  NOWADAYS THERE IS AN INCREASING TENDENCY
TO TAKE A PROPRIETARY VIEW OF MONITOR SYSTEMS, SUBROUTINE LIBRARIES, AND
PROGRAM COLLECTIONS.  TO THE EXTENT THAT THIS IS TRUE, THE SAME REMARKS
APPLY.
1  INTRODUCTION
 
1.1  GENERALITIES
 
      THE <PLOT> FILE IS A COLLECTION OF SUBROUTINES FOR THE CALCOMP
INCREMENTAL DIGITAL PLOTTER, CONSISTING OF CONTOUR PLOTS, PERSPECTIVE
VIEWS WITH HIDDEN LINE SUPPRESSION, GRAPHS IN VARIED COORDINATE SYSTEMS,
AND SIMILAR MATERIAL.  ALL THE PROGRAMS WHICH THIS FILE CONTAINS ARE
ULTIMATELY BASED ON A SERIES OF PLOTTER SUBROUTINES FURNISHED BY THE
DIGITAL EQUIPMENT CORPORATION, AND WHICH HAVE BEEN INCORPORATED INTO
THE FORTRAN LIBRARY OF THE PDP-10 AT SALAZAR. THEY ARE VERY SIMILAR TO
THOSE USED IN OTHER MACHINES, ALL OF THEM PRESUMABLY ONCE HAVING HAD A
COMMON ORIGIN IN SOFTWARE WRITTEN FOR THE CALCOMP PLOTTER, WHICH IS
THE USUAL OUTPUT DEVICE DRIVEN BY ALL OF THEM.
 
     THESE SYSTEM PLOTTER PROGRAMS INCLUDE
 
	  PLOTS     WHICH INITIALIZES THE PLOTTER
	  PLOT	    WHICH MOVES THE PEN
	  SYMBOL    WHICH WRITES ASCII CHARACTERS
	  NUMBER    WHICH WRITES INTEGER OR FLOATING POINT NUMBERS
	  WHERE     WHICH REVEALS THE CURRENT PEN LOCATION
	  SCALE     WHICH SETS UP SCALE FACTORS
 
     WE SHALL REFER TO MEMBERS OF THIS GROUP OF SUBROUTINES AS "PLOTTER
SUBROUTINES."  EACH OF THEM EMPLOYS THE CALCOMP CONVENTIONS REGARDING
COORDINATES.  FACING THE PLOTTER FROM THE FRONT, "Y" IS THE HORIZONTAL
COORDINATE AND IS POSITIVE TO THE LEFT.  "X" IS THE COORDINATE WHICH
EXTENDS LENGTHWISE OF THE PAPER, AND IS POSITIVE RUNNING UPWARDS OVER
THE DRUM.  THESE CONVENTIONS ARE OBVIOUSLY DERIVED FROM RECORDING A
TIME SERIES OF EVENTS ACCORDING TO WHICH THE PAPER IS UNROLLED FROM
BEHIND THE DRUM, AND RECORDING CONTINUES AS LONG AS THERE IS PAPER LEFT
IN THE	DISPENSING ROLL.  ACCORDING TO THIS VIEW THE PHENOMONON BEING
RECORDED IS SUPPOSED TO HAVE A LIMITED VARIATION BUT IT COULD GO ON
BEING RECORDED FOREVER.
 
     SINCE MOST OF THE PROGRAMS IN THE <PLOT> FILE ARE PLANNED SO AS TO
PRODUCE A SINGLE 8 1/2" X 11" PAGE WHICH WILL BE VIEWED HORIZONTALLY,
A CONVERSION IS LECESSARY BECAUSE THE NATURAL COORDINATE CONVENTION IN
THIS ORIENTATION DIFFERS BY 90 DEGREES FROM THE CALCOMP CONVENTION.  TO
PLOT A POINT WITH COORDINATES (X,Y) ON A HORIZONTAL LETTER SIZED PAGE,
ONE SHOULD CALL ONE OF THE PLOTTER PROGRAMS WITH COORDINATES (Y,-X).
MOST OF THE <PLOT> FILE WILL NEVER NEED THIS TRANSFORMATION, BECAUSE THE
PLOTTER ROUTINES ARE BURIED QUITE DEEPLY IN THE USER SUBROUTINES, AND
ARE THE ONLY ONES WHICH REQUIRE SUCH A SUBSTITUTION.  NEVERTHELESS,
ANYONE WHO WANTS TO USE THE PLOTTER ROUTINES HIMSELF, OR WHO WANTS TO
UNDERSTAND THOSE SUBROUTINES WHICH DO USE THE PLOTTER ROUTINES, MUST
BE AWARE OF THE DIFFERENCE IN CONVENTIONS.  NATURALLY, IN DESCRIBING THE
PLOTTER SUBROUTINES THEMSELVES THE CALCOMP COORDINATE CMNVENTIONS WILL
BE ASSUMED THROUGHOUT.
 
     THE CALLING SEQUENCES OF THE SIX PLOTTER SUBROUTINES ARE EXPLAINED
IN SECTION 2, USING THE SAME FORMAT THAT IS FOUND IN THE LISTING OF THE
<PLOT> FILE.  IN THIS WAY IT IS POSSIBLE TO INCORPORATE THE PLOTTER
SUBROUTINES IN THE INDEX AND THE ABSTRACTS WITH A MINIMUM OF ALTERATION.
THE PLOTTER PROGRAMS THEMSELVES ARE WRITTEN IN PDP-10 MACRO ASSEMBLY
LANGUAGE, AND MAY BE CONSULTED IN THE LISTINGS OF THE FORTRAN LIBRARY
PROGRAMS.
 
 
1.2  PROGRAMMING CONVENTIONS
 
     THE <PLOT> FILE CONTAINS OVER A HUNDRED SUBROUTINES, WHICH IMPOSES
A CONSIDERABLE BURDEN ON THE MEMORY OF THE USER WHO WISHES TO BECOME
FAMILIAR WITH ALL OF THEM.  TO ASSIST IN THE RECOLLECTION OF DETAILS,
INCLUDING THE PURPOSE OF THE SUBROUTINE, OR THE SIGNIFICANCE OF ITS
ARGUMENTS, SEVERAL PROGRAMMING CONVENTIONS HAVE BEEN INSTITUTED, AND AN
EFFORT MADE TO FOLLOW THEM WHILE WRITING THE SUBROUTINES.
 
     THE NAMING OF A SUBROUTINE FOLLOWS THE PATTERN XXXYY, IN WHICH XXX
IS A MNEMONIC DESIGNATING A CATEGORY OF SUBROUTINES, AND YY SIGNIFIES
AN INDIVIDUAL SUBROUTINE WITHIN THIS CATEGORY.	USUALLY XXX WILL BE THE
COMMON PREFIX OF ALL THE SUBROUTINES WITHIN A SINGLE DISK FILE, BUT FOR
A VERY LARGE FILE SUCH AS <PLOT>, THERE MAY BE SEVERAL PREFIXES.  FOR
EXAMPLE, THE PREFIXES TO BE FOUND WITHIN <PLOT> ARE
 
	  KON	CONTOUR PROGRAMS FOR FUNCTIONS STORED IN AN ARRAY
	  PLT	SUBROUTINES SERVICING THE CALCOMP PLOTTER
	  VIS	SUBROUTINES INVOLVING THE SUPPRESSION OF HIDDEN LINES
 
     TO FORM A LABELLED COMMON FOR A SUBROUTINE CATEGORY XXX, PREFERENCE
WILL BE GIVEN TO THE NAME /XXX/.  SO FAR THERE IS NO DEFINITE RULE FOR
LABELLING MORE THAN ONE COMMON WITHIN A PROGRAM CATEGORY.  THE GUIDING
PRINCIPLE IS THAT CONFLICTING COMMON LABELS BETWEEN DIFFERENT PROGRAM
CATEGORIES THAT MIGHT BE LOADED SIMULTANEOUSLY SHOULD BE AVOIDED.
 
     THE MOTIVE FOR RESTRICTILG PROGRAM NAMES TO FIVE LETTERS IS PARTLY
TO ENSURE COMPATIBILITY WITH IBM 1130 FORTRAN, AND PARTLY BECAUSE THE
COMBINATION OF 7-BIT ASCII AND 36-BIT WORD LENGTH IN THE PDP-10 IMPLIES
THE STORAGE OF A FIVE CHARACTER NAME IN A SINGLE FORTRAN VARIABLE.
 
     THE SUFFIX YY IN A SUBPROGRAM NAME CONSISTS OF TWO MOST SIGNIFICANT
LETTERS IN A WORD OR SHORT PHRASE DESCRIBING THAT SUBPROGRAM.  SOMETIMES
A LITTLE INGENUITY IS NEEDED TO AVOID DUPLICATION AND STILL TO GIVE THE
ABBREVIATION A HIGH SIGNIFICANCE VALUE.  WHEN A CATEGORY BECOMES SO VERY
CROWDED THAT ONE'S INGENUITY IS TAXED BEYOND ENDURANCE, IT IS PREFERABLE
TO OPEN UP A NEW CATEGORY AND REARRANGE THE FILE TO TAKE ADVANTAGE OF
THE NEW OPPORTUNITIES.
 
     ALTHOUGH THE STRUCTURE XXXYY SEEMS AT TIMES TO BE STRAINED, OUR
EXPERIENCE REVEALS THAT IT IS PREFERABLE TO THE USE OF POPULAR NAMES OR
ADJECTIVES WHEN A VERY LARGE NUMBER OF PROGRAMS HAVE TO BE NAMED IN A
REASONABLY SYSTEMATIC WAY.  IT IS PARTICULARLY UNDESIRABLE TO USURP FOR
LIBRARY USE THOSE FAMILIAR NAMES, SUCH AS "COPY," WHICH ARE TEMPTING TO
USE BUT BY NO MEANS HAVE A UNIVERSALLY AGREED MEANING.	IT IS EQUALLY
POINTLESS TO MAKE WHOLESALE USE OF THE NAMES OF FLOWERS, HINDU DEITIES,
GIRLS, OR EVEN OBSCENITIES IN A DIVERSITY OF FOREIGN LANGUAGES, IF THE
OBJECTIVE IS AN UNDERSTANDABLE AND ORGANIZED NOMENCLATURE.
 
     THE SYNTAX OF A FORTRAN REPLACEMENT STATEMENT PLACES THE VARIABLE
WHICH IS MODIFIED FIRST IN A LINE OF CODE, TO THE LEFT OF AN EQUAL SIGN.
USING THIS MODEL, ALL ARGUMENTS OF A SUBROUTINE WHICH ARE MODIFIED BY
THAT SUBROUTINE ARE TO BE LISTED FIRST, FOLLOWED BY ANY ADDITIONAL
VARIABLES WHICH ARE NOT MODIFIED.  OF COURSE, IN A FUNCTION SUBPROGRAM,
NO MODIFICATION OF VARIABLES IS PERMITTED, AND ONLY UNMODIFIED VARIABLES
REMAIN.  IF THERE IS SOME LOGICAL ORDER, EITHER THE CHRONLOLOGICAL ORDER
OF THEIR MODIFICATION OR SOME TRADITIONAL ORDER IN WHICH THEY WOULD BE
ENUMERATED, THIS ORDER SHOULD BE FOLLOWED IN LISTING THE ARGUMENTS IN A
SUBROUTINE CALL.
 
     FORTUNATELY THIS CONVENTION IS COMPATIBLE WITH THE ORDER IN WHICH
F40 SAVES AND UNSAVES THE VARIABLES IN A SUBROUTINE CALL, BUT IT IS NOT
COMPATIBLE WITH STRETCH FORTRAN, FOR EXAMPLE.  COMPATIBILITY BECOMES A
SERIOUS ISSUE WHEN THERE ARE REPEATED ARGUMENTS IN A CALL STATEMENT.
IF THERE ARE REPEATED ARGUMENTS, ALD THE SUBROUTINE MODIFIES THEM IN ONE
ORDER BUT THEY ARE RESTORED IN A DIFFERENT ORDER BEFORE RETURNING FROM
THE SUBROUTINE, THE NET EFFECT WILL PROBABLY BE DIFFERENT FROM WHAT THE
PROGRAMMER EXPECTED, AND EXCRUCIATINGLY HARD TO DEBUG.
 
     IT FURTHER SEEMS REASONABLE TO FOLLOW ARRAY NAMES BY ANY VARIABLES
DEFINING RANGES OF THEIR INDICES AND TO GROUP TOGETHER THOSE ARRAY NAMES
HAVING COMMON INDEX RANGES.  LIKEWISE, IF THE ELEMENTS OF THE ARRAY X
LIE BETWEEN THE LIMITS X1 AND X2, THE ORDER OF PRESENTATION X1,X,X2 IS
RELATIVELY EASY TO REMEMBER.
 
     VARIABLE NAMES SHOULD BE CHOSEN WITH THE SAME EMPHASIS ON THEIR
SYSTEMATIC AND MNEMONIC CONTENT AS ARE SUBPROGRAM NAMES.  SINGLE LETTERS
SHOULD BE RESERVED EITHER FOR VARIABLES WITH A UNIVERSAL SIGNIFICANCE,
SUCH AS N FOR AN ARRAY DIMENSION, OR FOR VARIABLES CONFINED TO THAT ONE
SINGLE PROGRAM, SUCH AS I AS THE INDEX VARIABLE IN A DO LOOP.  DEBUGGING
WITH TECO, AND ESPECIALLY REVISIONS AND REARRANGEMENTS, IS FACILITATED
BY NAMES WITH DOUBLE OR TRIPLE LETTERS, SINCE THEY ARE MORE LIKELY TO BE
UNIQUE.  HOWEVER, USING AS MANY AS SIX LETTERS TENDS TO MAKE THE PROGRAM
MORE CONFUSING, ESPECIALLY SINCE THAT MANY LETTERS ARE RARELY NEEDED FOR
CLEAR DISTINCTIONS BETWEEN VARIABLES.
 
     MALY SUBROUTINES HAVE EXTERNAL VARIABLES AS ARGUMENTS.  WHERE SUCH
ARGUMENTS OCCUR, THEY HAVE BEEN PLACED AT THE END OF THE ARGUMENT LIST.
 
     STATEMENT NUMBERS ARE ALWAYS ARRANGED IN INCREASING ORDER, AND ARE
GROUPED INTO RELATED SECTIONS.	WHEN THE SUBROUTINE IS RELATIVELY LONG,
THE STATEMENT NUMBERS ARE INTENDED TO SERVE AS AN INDEX TO SUBSECTIONS
OF THE PROGRAM.  FORMAT STATEMENT NUMBERS CONSIST OF FOUR DIGITS, AND
FOLLOW A MIXTURE OF NUMERICAL SEQUENCE AND REFERENCES TO THE READ OR
WRITE STATEMENTS WHICH INVOKE THEM.
 
     WE HAVE PREFERRED TO HAVE A LARGE NUMBER OF SUBROUTINES, EACH WITH
A SIMPLE AND CLEARLY DEFINED PURPOSE, TO HAVING A SMALLER NUMBER OF MORE
COMPLICATED PROGRAMS.  THIS TECHNIQUE UNDOUBTEDLY SUFFERS FROM A CERTAIN
OVERHEAD BECAUSE OF FORTRAN'S STYLE OF SAVING AND UNSAVING VARIABLES IN
SUBROUTINE CALLS, BUT OFFERS THE COMPENSATION OF MAKING THE PROGRAMMING
HIGHLY MODULAR.
 
     IT WAS DECIDED TO FOLLOW FORTRAN CONVENTIONS TO THE LETTER UNLESS
SOME STILL GREATER INCONVENIENCE RESULTED.  IN PARTICULAR, THE IMPLICIT
CONVENTIONS DISTINGUISHING REAL AND INTEGER VARIABLES HAVE BEEN RIGIDLY
OBSERVED, THE ONLY POSSIBLE EXCEPTION BEING THE SITUATION WHERE THE NAME
OF ITS CATEGORY WOULD CONFLICT WITH THE IMPLICIT TYPE OF A FUNCTION.
ALTHOUGH FORTPAN PERMITS EXPLICIT AND IMPLICIT TYPE DECLARATIONS, OUR
EXPERIENCE IS THAT THE USE OF SUCH OPPORTUNITIES IS TOO VULNERABLE TO
ERRORS ON THE PART OF PROGRAMMERS WHO DO NOT PAY ATTENTION TO THESE
TYPE EXCEPTIONS, WHO SIMPLY FORGET THEM, OR FIND VARIATIONS FROM ONE
SUBROUTINE TO ANOTHER TOO CONFUSING.
 
     MIXED MODE EXPRESSIONS HAVE BEEN SCRUPULOUSLY AVOIDED, AND ALL
TRANSFORMATIONS BETWEEN FIXED AND FLOATING POINT HAVE MADE EXPLICIT USE
OF THE FUNCTIONS IFIX AND FLOAT.
     FOR SIMILAR REASONS, AND TO FACILITATE THE EXCHANGE OF THE <PLOT>
FILE WITH OTHER COMPUTER CENTERS, IT WAS DECIDED TO AVOID SOME OF THE
FANCIER EMBELLISHMENTS OF FORTRAN, SUCH AS NONSTANDARD RANGES OF INDICES
OR ARITHMETIC EXPRESSIONS DEFINING THE LIMITS IN A DO STATEMENT. EVEN SO
SOME INCOMPATIBILITIES HAVE BEEN REPORTED TO US.  SOME FORTRAN COMPILERS
WILL NOT ALLOW QUOTED LITERALS TO APPEAR WITHIN ARITHMETIC EXPRESSIONS,
BUT INSIST THAT THEY BE DEFINED WITHIN A DATA STATEMENT, OR OCCUR ON THE
TOP LEVEL OF THE ARGUMENT LIST OF A SUBROUTINE CALL.  NOT ALL COMPILERS
PERMIT A LOGICAL IF TO TERMINATE A DO LOOP.  SOME PROBLEMS OF DOUBLE
PRECISION HAVE ARISEN FROM MACHINES WITH LESS THAN A 36-BIT WORD LENGTH.
 
     SINCE MOST SUBROUTINES OCCUPY LESS THAN A PAGE OF LISTING, THEY
CONTAIN VERY FEW COMMENTS INTERSPERSED WITH THE FORTRAN CODE. THE SCHEME
OF DOCUMENTATION USUALLY EMPLOYED SIMPLY CONSISTS OF AN INITIAL SERIES
OF COMMENTS, NAMELY THE FOLLOWING:
 
	  [THE MNEMONIC PHRASE GIVING THE SUBROUTINE ITS NAME]
	  AN EXPLANATION OF THE PURPOSE OF THE SUBROUTINE
	  AN EXPLICIT IDENTIFICATION OF EACH ARGUMENT
	  [THE LAST DATE ON WHICH MODIFICATIONS WERE MADE]
 
     THE IDENTIFICATION OF ARGUMENTS SHOULD BE COMPLETE AND EXHAUSTIVE.
IN PARTICULAR, ALL PESTRICTIONS ON RANGES OR TYPE SHOULD BE GIVEN.  IF
THE ARGUMENT DEFINES A SWITCH, THE MEANING OF EACH ALTERNATIVE SHOULD BE
STATED.
 
     THE DATE ASSOCIATED WITH A SUBROUTINE IS THE DATE OF THE LATEST
MODIFICATION, ALTHOUGH CHANGES IN COMMENTS ALONE DO NOT ALWAYS JUSTIFY
A NEW DATE.  THIS IS THE CLOSEST APPROXIMATION TO VERSION NUMBERS AND
UPDATE NUMBERS TO BE FOUND IL OUR DOCUMATION.
 
     THE BRACKETS USED IN THE COMMENTS ARE IMPORTANT, SINCE TECO USES
THEM IN AUTOMATIC INDEXING AND ABSTRACTING.
 
     A NEAT ARRANGEMENT OF THE DECLARATIONS COMPRISING A PROGRAM HAS
CONSIDERABLE MERIT, ALTHOUGH WE HAVE NOT GONE SO FAR AS TO DELINEATE
THE RANGES OF DO LOOPS BY INDENTATION. A PARTICULARLY USEFUL CONVENTION,
FROM THE POINT OF VIEW OF TECO EDITING, HAS BEEN TO WRITE CALL.XXXXX
TOGETHER WITH SUBROUTINE..XXXXX, WHERE . DENOTES A BLANK, AND XXXXX IS
THE SUBROUTINE NAME.  THE PAGE CONTAINING THE SUBROUTINE DEFINITION CAN
BE FOUND QUITE RAPIDLY, BECAUSE THAT IS LIKELY TO BE THE ONLY PLACE
WHERE TWO BLANKS PRECEDE THE SUBROUTINE NAME.
1.3  GRAPHING CONVENTIONS
 
     THE CALCOMP CONVENTIONS REGARDING THE ORIENTATION OF THE COORDINATE
AXES HAVE ALREADY BEEN DESCRIBED.  THE X-COORDINATE LIES UPWARD OVER
THE DRUM,  WHILE THE Y-COORDINATE EXTENDS TO THE LEFT, BOTH SEEN WHILE
STANDING IN FRONT OF THE PLOTTER.  THEY ARE ONLY NEEDED WHEN ONE OF THE
PLOTTER SUBROUTINES IS TO BE CALLED.  ALL OTHER <PLOT> SUBROUTINES USE A
HORIZONTAL PAGE FORMAT, BUT THERE IS STILL A WIDE VARIETY OF SCALES AND
ORIGINS WHICH CAN BE EMPLOYED.
 
     THE SUBROUTINES PLTMC AND PLTMS WHICH ACTUALLY MAKE PEN MOVEMENTS
ASSUME THE PAGE CENTER TO BE THE ORIGIN, AND USE A SCALE OF INCHES.
 
     IT IS TYPICAL OF THE CONTOURING PROGRAMS THAT THE FUNCTION VALUES
ARE PRESENTED IN AN ARRAY, AND THAT THE IMPLIED COORDINATES MAY NOT BE
NECESSARILY CARTESIAN.	AMONG THE COORDINATES AVAILABLE ARE SPHERICAL
POLAR, TRIANGULAR, ELLIPTICAL, AND PLANAR POLAR COORDINATES.  IT IS
NECESSARY TO STANDARDIXE THE RANGES OF ALL THESE VARIABLES, INCLUDING
THE CARTESIAN COORDINATES, TO MAKE ALL THE PROGRAMS WHICH PROCESS THEM
INTERCHANGEABLE.  A REASONABLE CHOICE SEEMS TO BE THE UNIT INTERVAL,
(0.0 .LE. X .LE. 1.0).	HOWEVER, THIS IMPLIES CIRCULAR MEASURE AND NOT
RADIAN MEASURE FOR ANGLES, BESIDES BEING SLIGHTLY INCOMPATIBLE WITH THE
RECTANGULAR FORM OF THE PLOTTER PAGE EVEN FOR CARTESIAN COORDINATES.
STILL, IT IS THE CONVENTION ASSUMED BY THE MAJORITY OF PROGRAMS NOT
DIRECTLY INVOLVED WITH PEN MOVEMELT; SPECIFICALLY, IT IS ASSUMED BY THE
CONTOURING AND HIDDEN LINE PROGRAMS.
 
     FURTHER TRANSFORMATIONS OF ORIGIN AND SCALE ARISE WHEN SEVERAL
DRAWINGS ARE TO BE PLACED ON THE SAME PAGE; FOR EXAMPLE A CONTOUR PLOT
IS TO BE PLACED AT THE BOTTOM OF THE PAGE AND A PERSPECTIVE DRAWING AT
THE TOP, OR TWO HALVES OF A STEREOPAIR ARE TO BE PLACED SIDE BY SIDE.
1.4  ERROR DETECTION AND RECOVERY
 
     AS TIME GOES ON AND MORE USER EXPERIENCE ACCUMULATES WE WILL MOST
LIKELY INCREASE THE AMOUNT OF TESTING FOR POSSIBLE ERROR SITUATIONS. AT
PRESENT MOST RELIANCE HAS BEEN PLACED UPON WRITING STRAIGHTFORWARD CODE
WITH THE EXPECTATION THAT IT WOULD BE LESS ERPOR PRONE.  ALTHOUGH THE
PROTECTION AFFORDED BY THIS STRATEGY IS RELATIVELY MODEST, IT IS BY NO
MEANS NEGLIGIBLE.
 
     DIMENSIONS OF ARRAYS ARE REGULARLY CHECKED, PARTICULARLY THOSE USED
IN HIDDEN LINE SUBROUTINES, TO AVOID EXCEEDING THEIR LIMITS.  NO OVERT
MESSAGES ARE WRITTEN, BUT AUTOMATIC INCREMENTING OF INDICES TERMINATES.
WHEN THAT HAPPENS IT PRODUCES SOME CHARACTERISTIC ABERRATIONS IN THE
DRAWINGS, CERTAIN BLANK AREAS, WHICH ONE SOON LEARNS TO RECOGNIZE. THREE
YEARS OF OPERATING EXPERIENCE, WITH DATA ARRAYS OF A MAXIMUM DIMENSION
OF 100 X 100, HAS APPARENTLY LEAD TO AN ADEQUATE BALANCE BETWEEN DATA
ARRAYS AND WORKING ARRAYS.  A DIMENSION OF 700 FOR THE LATTER SEEMS TO
SUFFICE.  FOR A DIFFERENT ARRANGEMENT OF ARRAY SIZES SOME ADJUSTMENT
WOULD PROBABLY HAVE TO BE MADE.
 
     MOST GRAPHING SUBROUTINES CHECK FOR THE NUMBER OF POINTS WHICH THE
GRAPH WILL CONTAIN, EXITING IMMEDIATELY IF THE NUMBER IS NEGATIVE, ZERO,
OR ONE.
 
     THE HIDDEN LINE SUBROUTINES PRESENT NUMEROUS OPPORTUNITIEQ FOR
FLOATING DIVIDE CHECKS, PARTICULARLY SUBROUTINES WHICH USE COORDINATES
WHICH CAN PRODUCE VERTICAL LINE SEGMENTS, OF WHICH POLAR, ELLIPTICAL AND
SPHERICAL ARE TYPICAL. THE SUBROUTINE MOST VULNERABLE TO SUCH ERRORS WAS
VISLI, AND FOR A LONG TIME A TEST FOR ZERO DENOMINATOR WAS PROGRAMMED
INTO IT.  SUCH A TEST INCREASED THE RUNNING TIME OF THE HIDDEN LINE
SUBROUTINES APPRECIABLY, BUT HARDLY EVER ENCOUNTERED A ZERO DENOMINATOR.
FINALLY IT WAS ABANDONED.  SOME OCCASIONAL SPURIOUS LINES APPEAR AS A
RESULT, AS WELL AS SOME CLOSURE IRREGULARITIES IN THE CRITICAL REGIONS.
SUBROUTINES WHICH CALL VISLI ARE OBLIGATED TO AVOID INTERVALS OF ZERO
LENGTH, EITHER THROUGH THE PROGRAM LOGIC OR BY EXPLICIT TESTING.
 
     SOME BALANCING IS AFFECTED BY THE WORD LENGTH OF THE COMPUTER.  IT
IS IMPORTANT THAT THE EPSILON USED IN VISSL IS LESS THAN THE SQUARE OF
THE EPSILON USED IN VISBO, WHICH IN TURN IS DETERMINED BY THE RESOLUTION
OF THE PLOTTER.  A 36 BIT WORD LENGTH COINCIDES VERY NICELY WITH AN
INCREMENT OF 0.01" OUT OF A TOTAL OF 11".  32 BIT COMPUTERS REQUIRE SOME
VERY CAREFUL JUGGLING.
 
   A CONSIDERABLE AMOUNT OF MARGIN CHECKING IS DONE.  BESIDES BEING THE
ENTIRE REASON FOR THE EXISTENCE OF THE SUBROUTINES PLTMS AND PLTMC, IT
IS INCORPORATED INTO THE CONTOUR PLOTTING SUBROUTINES AS PART OF THEIR
SEARCH STRATEGIES.
1.5  "GLOB" ANALYSIS
 
     THE INTERRELATIONSHIPS BETWEEN THE PROGRAMS OF THE <PLOT> FILE IS
USEFUL TO KNOW, AND FORTUNATELY IS AVAILABLE THROUGH THE USE OF A PDP-10
MONITOR PROGRAM KNOWN AS "GLOB," GLOBAL ANALYSIS.  WHEN APPLIED TO ANY
RELOCATABLE BINARY PROGRAM, IT PRODUCES A LISTING OF THE GLOBAL SYMBOLS
TOGETHER WITH THEIR RELOCATABLE ADDRESS, SUBROUTINES IN WHICH THEY ARE
DEFINED, AND ALL THE SUBROUTINES WHICH MAKE REFERENCE TO THEM. AMONG THE
GLOBAL SYMBOLS ARE THE SUBROUTINE NAMES, FORTRAN LIBRARY FUNCTIONS OR
SUBROUTINES WHICH ARE CALLED, AND COMMON LABELS.  THE GLOB LISTING ALSO
MARKS THE STATUS, SUCH AS UNUSED, UNDEFINED, OR MULTIPLY DEFINED, FOR
EACH SYMBOL.
 
     IN APPENDIX 2 IS REPRODUCED AN EXTRACT OF THE GLOB LISTING FOR THE
<PLOT> FILE, CONSISTING OF THREE COLUMNS CONTAINING THE GLOBAL SYMBOLS,
THEIR SITE OF DEFINITION, AND THE PLACES IN WHICH THEY ARE REFERENCED.
APPENDIX 2 CAN THEREFORE BE USED AS AN INDEX OF THE SUBROUTINES PRESENT,
AS WELL AS TO DETERMINE WHICH SUBROUTINES ARE CALLED BY OTHERS.  THOSE
SYMBOLS WHOSE "DEFINED" COLUMN IS BLANK ARE MOSTLY FOUND IN THE FORTRAN
LIBRARY, ALTHOUGH THE PLOTTER SUBROUTINES ALSO HAVE THIS CHARACTERISTIC.
 
     IT SHOULD BE NOTED THAT PLOT.HLP IS NOT ALWAYS REVISED AT THE SAME
TIME THAT MODIFICATIONS ARE MADE TO THE <PLOT> FILE, SO THAT THE GLOB
LISTING IN THE APPENDIX MAY BE SLIGHTLY OUT OF DATE.  IT IS MARKED WITH
THE DATE ON WHICH IT WAS LAST REVISED, FOR PURPOSES OF COMPARISON WITH
DATES OF SUBROUTINES IN THE <PLOT> FILE.  OF COURSE, USERS OF THE PDP-10
AT SALAZAR MAY GENERATE THEIR OWN GLOB LISTINGS FROM PLOT.REL WHENEVER
THEY WISH.
 
1.6  DEMONSTRATIONS
 
     OVER THIRTY DEMONSTRATION PROGRAMS ARE AVAILABLE, ALTHOUGH THEY ARE
NOT INCLUDED IN THE <PLOT> FILE ITSELF.  MOST OF THEM ORIGINATED IN THE
DEVELOPMENTAL PHASE OF VARIOUS SUBROUTINES, FOR DEBUGGING AND CHECKING
SPECIFICATIONS.  HOWEVER, THEY COVER A VARIETY OF TYPICAL APPLICATIONS,
AND MAY BE STUDIED TO GAIN FAMILIARITY WITH THEIR ARGUMENTS, OR HOW TO
GENERATE SUITABLE DATA FOR THEM.
 
     SINCE THEY ARE NOT PART OF THE NORMAL CONTENTS OF <PLOT> THEY ARE
ABSTRACTED IN APPENDIX 3. IT SHOULD BE NOTED THAT THESE ABSTRACTS MAY
NOT ALWAYS BE UP TO DATE, SINCE CONTINUAL MODIFICATIONS ARE ALSO BEING
MADE IN THE DEMONSTRATION PROGRAMS.  THE DEMOLSTRATION PROGRAMS FOLLOW
THE SAME DOCUMENTATION STANDARDS AS THE <PLOT> SUBROUTINES, SO THAT
DISCREPANCIES CAN READILY BE DETECTED BY COMPARING DATES.
 
2  PLOTTER SUBROUTINES

     HERE WE OFFER A RESUME OF THE PLOTTER SUBROUTINES, IN OPDER TO HAVE
CLEARLY DEFINED THEIR CALLING SEQUENCES AND THE MEANING OF EACH OF THEIR
ARGUMENTS.
 
      SUBROUTINE  PLOTS (I)
 
C     [INITIALIZE PLOTTER]
C     I   STATUS OF PLOTTER
C	    I= 0 (.FALSE.)  PLOTTER READY
C	    I=-1 (.TRUE.)   PLOTTER UNAVAILABLE
C     MOST USERS WILL FIND THAT THEIR PLOTTER OUTPUT IS BEING SPOOLED
C     AND THEREFORE THAT A CALL TO PLOTS WILL NEVER FAIL.  HOWEVER,
C     THIS CALL MUST NOT BE OVERLOOKED AS AN INITIALIZING STEP BECAUSE
C     IT CLEARS THE ORIGIN, SETS UP THE OUTPUT BUFFERS, MAKES SURE
C     THAT THE PEN GETS RAISED, ALL OF WHICH ARE REQUIRED TO SET THINGS
C     GOING.
C     [00-XXX-00]
 
 
      SUBROUTINE  PLOT (X,Y,L)
 
C     [MOVE PEN]
C     (X,Y)  DESTINATION OF PEN, IN INCHES
C     L      RAISE OR LOWER PEN
C		L=1  NO CHANGE IN PEN STATUS
C		L=2  LOWER PEN BEFORE MOVEMENT
C		L=3  RAISE PEN BEFORE MOVEMENT
C	     L NEGATIVE HAS SAME EFFECT AS IABS(L), WITH THE EXCEPTION
C	     THAT THE DESTINATION BECOMES A NEW ORIGIN.  THE OUTPUT
C	     BUFFER IS ALSO FLUSHED, BUT THE PLOTTER IS NOT RELEASED.
C     TO GIVE THE COORDINATES OF THE DESTINATION ONE HAS TO KNOW THE
C     SIZE OF PLOTTER WHICH IS TO BE USED, WHICH CAN BE EITHER 11" FOR
C     THE SMALL PLOTTER, MODEL 565, OR 29.5" FOR THE LARGE PLOTTER,
C     MODEL 563.  THE SMALLEST VIABLE INCREMENT ALSO VARIES WITH
C     PLOTTER MODEL, BEING 0.01" FOR THE SMALL PLOTTER, AND 0.005"
C     FOR THE LARGE PLOTTER, THESE BEING THE MACHINES AVAILABLE AT
C     SALAZAR AND THEIR RESPECTIVE INCREMENTS.	ALSO NOTE THAT (X,Y)
C     FOLLOW THE CALCOMP COORDINATE CONVENTIONS, X PMSITIVE UPWARDS
C     ALONG THE DRUM PERIPHERY AND Y POSITIVE TO THE LEFT ALONG THE DRUM
C     AXIS.
C     [00-XXX-00]
 
 
      SUBROUTINE  SYMBOL (X,Y,H,SYM,TH,N)
 
C     [DRAW ASCII TEXT]
C     (X,Y)  COORDINATE IN INCHES OF LOWER LEFT HAND CORNER OF AN
C	     IMAGINARY RECTANGULAR BOX CONTAINING THE TEXT
C     H      HEIGHT, IN INCHES, OF THE BOX CONTAINING THE TEXT
C     SYM    ALPHANUMERIC VARIABLE CONTAINING THE ASCII TEXT
C     TH     ORIENTATION OF THE BOX CONTAINING THE TEXT, IN DEGREES,
C	     MEASURED COUNTERCLOCKWISE FROM THE X-AXIS.
C     N      NUMBER OF CHARACTERS COMPRISING THE TEXT
C     [00-XXX-00]
 
 
      SUBROUTINE  NUMBER (X,Y,H,FNUM,TH,ND)
 
C     [DRAW NUMBER]
C     (X,Y)   CARTESIAN COORDINATES, IN INCHES, OF THE LOWER LEFT HAND
C	      CORNER OF AN IMAGINARY RECTANGULAR BOX IN WHICH THE DIGITS
C	      OF THE NUMBER WILL BE DRAWN, LEFT JUSTIFIED.
C     H       HEIGHT OF THE BOX IN WHICH THE NUMBER WILL BE DRAWN
C     FNUM    THE NUMBER WHOSE VALUE IS TO BE DRAWN
C     TH      INCLINATION, IN DEGREES, COUNTERCLOCKWISE FROM HORIZONTAL,
C	      OF THE BOX IN WHICH THE NUMBER IS TO BE DRAWN
C     ND      NUMBER OF DECIMALS TO THE RIGHT OF THE POINT TO BE DRAWN.
C	      IF ND IS NEGATIVE, THE DECIMAL POINT AND FRACTIONAL DIGITS
C	      ARE ALL SUPPRESSED
C     TO DRAW AN INTEGER, IT SHOULD BE FLOATED, AND THEN NUMBER CALLED
C     WITH ND NEGATIVE.
C     [00-XXX-00]
 
 
      SUBROUTINE  WHERE (X,Y)
 
C     [CURRENT PEN LOCATION]
C     (X,Y)   CARTESIAN COORDINATES OF THE CURRENT PEN LOCATION
C     PRESUMABLY A SUBROUTINE TO BE USED BY PEOPLE WHO HAVE CALLED
C     A SUBROUTINE WHICH INITIATES MANY PEN MOVEMENTS, AND THEN WISH
C     TO KNOW WHERE THE PEN FINALLY ENDED UP.
C     [00-XXX-00]
 
 
      SUBROUTINE  SCALE (X,N,S,XM,DX)
 
C     [SELECT SCALE FOR AXIS SUBROUTINE]
C     X(N)   ARRAY OF VALUES TO BE SCALED
C     S      NUMBER OF INCHES ALLOCATED TO THE GRAPH
C     XM     ROUNDED MINUMUM IN THE ARRAY, SET BY SCALE
C     DX     DATA INCREMENT PER INCH, CALCULATED BY SCALE
C     [00-XXX-00]
 
 
     THE PDP-10 FORTRAN LIBRARY ORIGINALLY CONTAINED ANOTHER SUBROUTINE,
CALLED AXIS, WRITTEN IN FORTRAN, WHICH WAS DESIGNED TO DRAW AXES, AND
LABEL THEM WITH TIC MARKS, NUMERICAL VALUES AND CAPTIONS. IT IS NOT
MENTIONED HERE BECAUSE IT HAS BEEN REVISED SOMEWHAT AND INCORPORATED IN
THE <PLOT> FILE UNDER THE NAME PLTAX.
 
 
     THE PLOTTER SUBROUTINES HAVE TO BE ACCEPTED AS A STARTING POINT TO
ENSURE COMPATIBILITY WITH OTHER PDP-10 INSTALLATIONS.  VIOLATION OF THIS
PRECEPT WOULD PROBABLY NOT PRODUCE VERY SEVERE REPERCUSSIONS, BECAUSE
THE PLOTTER SUBROUTINE CONVENTIONS ESTABLISHED BY OTHER MANUFACTURERS DO
NOT COINCIDE VERY WELL WITH THE PDP-10 NORMS, NOR DO THE PDP-10 NORMS
SEEM TO HAVE BEEN PARTICULARLY WELL THOUGHT OUT.  THUS CHANGES WOULD
INVOLVE LITTLE MORE THAN PROVIDING MACHINE LANGUAGE ALTERNATIVES FOR
THE VITAL SUBROUTINES PLOT AND PLOTS, AND A MEANS OF READING TABLES OF
THE PEN STROKES DEFINING THE SYMBOLS TO BE USED BY SYMBOL AND NUMBER.
ADAPTATION OF THE <PLOT> FILE FOR A COMPLETELY DIFFERENT COMPUTER WILL
USUALLY REQUIRE A COMPLETE REDEFINITION OF THE PLOTTER SUBROUTINES IN
TERMS OF THEIR EQUIVALENTS IN THE OTHER COMPUTER.  A SIMILAR PROBLEM
ARISES CHANGING TO ANOTHER BRAND OF PLOTTER, TO A VISUAL DISPLAY DEVICE,
OR TO ANOTHER STYLE OF PLOTTER,
 
 
     IT IS PROBABLY WORTH LISTING THE PRINCIPAL COMPLAINTS AGAINST
THE PDP-10 PLOTTER SUBROUTINES, BECAUSE THEY WILL SERVE AS A WARNING
AGAINST SOME PROGRAMMING SITUATIONS WHICH MIGHT BECOME RATHER AWKWARD.
 
     IT IS ONLY POSSIBLE TO DEFINE THE ORIGIN BY MOVING THE PEN TO THE
ACTUAL SITE.  IN PRACTICE, ORIGINS ARE DEFINED FOR THEIR PROGRAMMING
CONVENIENCE, NOT BECAUSE THE PEN HAPPENS TO BE LOCATED IN THE VICINITY.
NOTHING JUSTIFIES INTERPOSING ADDITIONAL BOOKKEEPING BETWEEN THE USER'S
PROGRAM AND PLOT, HENCE THE ORIGIN SHOULD BE DEFINABLE WITHOUT REQUIRING
ANY PEN MOVEMENT.  AS IT IS, WASTED PEN MOVEMENT OFTEN RESULTS FROM A
FREQUENT SHIFTING OF ORIGIN.  A DESIRED ORIGIN MAY EVEN LIE BEYOND THE
MARGIN OF THE PLOTTER, AND SO BE UNATTAINABLE.	JUST THINK: ONE DOES NOT
HAVE TO TRAVEL TO LONDON IN ORDER TO USE THE GREENWICH MERIDIAN.
 
     SIMILARLY, PLOT SHOULD BE ABLE TO CHANGE SCALE, TRANSLATE, OR MAYBE
EVEN ROTATE THE COORDINATES WHICH IT RECEIVES.	STILL MORE COMPLICATED
TRANSFORMATIONS MIGHT NOT BE UNREASONABLE, BUT ONE WANTS TO KEEP PLOT
AS QIMPLE AS POSSIBLE.	HOWEVER, OUR CONFRONTATION WITH THE EXISTENCE OF
TWO PLOTTERS, EACH WITH ITS OWN PAPER SIZE AND ITS OWN INCREMENTAL STEP,
HAS EMPHASIZED THE DESIRABILITY OF EASILY PROGRAMMABLE RELOCATIONS AND
SCALE CHANGES.
 
     THE ROUNDING ALGORITHM WHICH CALCULATES THE DISCRETE PEN INCREMENTS
IS NOT SYMMETRICAL; CONSEQUENTLY TRACING THE SAME LINE IN TWO DIRECTIONS
DOES NOT RETRACE THE SAME PATH, QUITE ASIDE FROM ANY ASSYMETRIES IN THE
JITTER OF THE CALCOMP DRUM.  THE PROBABLE REMEDY IS TO TAKE A FIXED
ORDERING OF THE ENDPOINTS, RATHER THAN THE ORDER OF THEIR PRESENTATION.
THE ASYMMETRICAL ALGORITHM PERMITS THE TRACING OF HEAVIER LINES BY
GOING OVER THEM IN BOTH DIRECTIONS, BUT THE EFFECT IS DEPENDENT ON THE
SLOPE OF THE LINE.  ECONOMIZING PEN MOTION BY USING STROKES IN BOTH
DIRECTIONS RESULTS IN AN UNEVEN APPEARANCE IN THE SPACING OF PARALLEL
LINES, WHICH IS VERY DISTRACTING WHEN THE LINES ARE CLOSE.
     THE SUBROUTINE NUMBER LEFT PACKS THE DIGITS WHICH IT DRAWS, WHICH
INDICATES THAT A MINIMAL PROGRAMMING EFFORT WAS MADE IN ITS CREATION,
WITH THE PRACTICAL CONSEQUENCE THAT THE DECIMAL POINT IN A COLUMN OF
FIGURES IS NOT ALIGNED FOR NUMBERS OF VARYING LENGTHS.	THEREFORE THE
BURDEN OF CALCULATING INITIAL COORDINATES IS MADE ETEN HEAVIER FOR THE
PROGRAMMER; UNFORTUNATELY HE MAY NOT EVEN KNOW THE EXPECTED NUMBER OF
DIGITS AT THE TIME OF WRITING A PROGRAM.  IT IS ACCEPTED ENGINEERING
PRACTICE TO WRITE A ZERO IN FRONT OF AN OTHERWISE NAKED DECIMAL POINT,
BUT NUMBER ALSO OMITS THIS DETAIL.
 
     THE SUBROUTINE WHERE, WHICH REPORTS THE PEN POSITION, DOES NOT
REPORT WHETHER THE PEN IS RAISED OR LOWERED, NOR IS THIS INFORMATION
AVAILABLE FROM ONE OF THE OTHER SUBROUTINES.  HOWEVER, THE OCCASION TO
USE WHERE HAS NEVER PRESENTED ITSELF.  IT MUST BE SAID IN FAVOR OF THE
PLOTTER SUBROUTINES THAT PLOT ALWAYS CHECKS THE PEN POSITION AND NEVER
ISSUES A SUPERFLUOUS RAISING OR LOWERING INSTRUCTION.  SUCH INSTRUCTIONS
ARE VERY TIME CONSUMING AND MUST BE AVOIDED IF POSSIBLE.
 
SOME ANNOYING CHARACTERISTICS OF THE SPOOLER PROGRAMS IN THE TIMESHARING
MONITOR.  ONE OF THEM IS THE FACT THAT IT IS IMPOSSIBLE TO EJECT ZERO
NUMBER OF RECORDS BETWEEN JOBS, SO THAT THE BEST WE HAVE BEEN ABLE TO DO
IS RESTRICT THE PEN CREEP BETWEEN JOBS TO TWO PEN INCREMENTS.  THIS CAN
CAUSE PROBLEMS IF MULTIPLE TRACINGS ARE TO BE MADE OF THE SAME GRAPH, IN
DIFFERENT COLORS OR PEN WIDTHS, FOR INSTANCE.  WE HAVE BEEN RELUCTANT TO
MODIFY PLT00 TO COMPENSATE THIS CREEPAGE, BUT THAT WOULD BE A POSSIBLE
REMEDY.
 
     EVEN THOUGH MACHINE LANGUAGE INSTRUCTIONS EXIST TO DETECT WHETHER
OR NOT THE PLOTTER IS TURNED ON, THAT THE SPOOLER TAKES NO NOTICE OF THE
PLOTTER STATUS CAN RESULT IN THE LOSS OF GRAPHS THROUGH PROGRAMMER OR
OPERATOR INATTENTION. THIS NEGLECT IS IN MARKED CONTRAST TO THE STATE OF
DEVELOPMENT OF THE PRINTER SPOOLER, WHICH DETECTS WHETHER THE PRINTER IS
RUNNING, WHETHER IT IS TURNED OFF DURING THE COURSE OF PRINTING, WHETHER
THE PAPER TEARS DURING PRINTING, AND SO ON.
 
3  FRAMING AND PAGE CONTROL
 
     ALTHOUGH BOTH THE 11" AND THE 29 1/2" PLOTTERS ARE AVAILABLE FOR
USE, THE PLOT FILE HAS BEEN EXCLUSIVELY ADAPTED TO THE 11" PLOTTER. THE
MOTIVATION HAS BEEN THAT LETTER SIZED GRAPHS ARE QUITE CONVENIENT TO
MOUNT IN NOTEBOOKS, AS WELL AS THE SUSPICION THAT THIS WOULD BE THE MOST
LIKELY PLOTTER SIZE TO BE ENCOUNTERED IN OTHER COMPUTER CENTERS.  THUS
WE HAVE BEEN CONTENT TO SPECIALIZE IN THE ONE SIZE ONLY, WHICH IS A
SINGLE LETTER SIZED PAGE, WHICH OUGHT TO BE VIEWED LENGTHWISE FROM A
HORIZONTAL POSITION RATHER THAN FROM THAN VERTICAL POSITION.  SO IT IS
THAT THE STANDARD PAGE IS 8 1/2" HIGH AND 11" WIDE.
 
     THERE IS A CYCLE OF PAGE POSITIONING WHICH IS EENERALLY FOLLOWED,
WHICH IS INDEPENDENT OF THE CONTENTS OF THE INDIVIDUAL PAGE.  FIRST OF
ALL, THERE IS AN INITIALIZATION USING THE PLOTTER SUBROUTINE PLOTS WHICH
IS OBLIGATORY,	WE HAVE COMBINED THE CALL TO PLOTS WITH AN INITIAL PEN
POSITIONING MOVEMENT.  IN THE EXPECTATION THAT THERE WILL NEVER BE
RETROGRESSIVE PAGE MOVEMENT, NO INITIAL ROTATION OF THE DRUM IS MADE.
THIS CAN CAUSE PROBLEMS WHEN THE PREVIOUS GRAPH HAS BEEN INTERRUPTED OR
IF THE PREVIOUS PLOTTING PROGRAM HAS NOT FINISHED PROPERLY. THE PLOTTER
SPOOLER DOES NOT CHECK FOR THE SUCCESSFUL TERMINATION OF A JOB, SO THAT
SUCH DETAILS MUST BE WATCHED BY THE OPERATOR.  HOWEVER, AN INITIAL
HORIZONTAL EXPLORATION IS MADE BY ATTEMPTING TO MOVE THE PEN 11" TO THE
RIGHT.	UNLESS THE PEN WAS ORIGINALLY AT THE LEFT MARGIN, IT WILL BE RUN
UP AGAINST THE RIGHT HAND INTERLOCK, THEREAFTER REMAINING POSITIONED AT
THE RIGHT HAND MARGINAL STOP.
 
     THE RIGHT HAND MARGIN IS CHOSEN IN PREFERENCE TO THE LEFT HAND
MARGIN BECAUSE OF THE WAY THE ROLLS OF PAPER ARE PERFORATED.  DRIVING
THE PEN TO THE LEFT HAND MARGIN CAN POSITION THE PEN OVER THE LARGE
OVAL HOLES WHICH COMPENSATE IRREGULARITIES IN HOLE PUNCHING OR PAPER
SHRINKAGE.  BALL POINT PENS WILL RIDE OVER THE HOLES, ALTHOUGH THEY MAY
MARK THE DRUM BELOW. INK PENS MAY CATCH IN THE HOLES AND TEAR THE PAPER,
BESIDES BEING QUITE LIKELY TO SMEAR THE DRUM.
 
     UNFORTUNATELY THERE IS SOME PLAY IN THE MICROSWITCH WHICH SENSES
ENCROACHMENT ON THE MARGIN, SO THAT RUNNING THE PEN OUT TO THE EDGE OF
THE PAPER HAS NOT TURNED OUT TO BE A VERY REPRODUCIBLE METHOD OF PEN
POSITIONING.
 
     ONCE THE PEN HAS BEEN DRIVEN INTO THE MARGIN, THAT LOCATION BECOMES
THE ORIGIN, FOR ALL THE ROUTINES WHICH FOLLOW.	THE SUBROUTINE PLT00
INCORPORATES THE INITIALIZING CALL, PEN POSITIONING, AND DEFINITION OF
OF THE ORIGIN. IT WILL USUALLY BE CALLED ONLY ONCE IN ANY GIVEN PROGRAM.
 
     INITIALIZATION ACHIEVED, THERE FOLLOW PROGRAMS WHICH DEFINE THE
INDIVIDUAL PAGES, USUALLY CIRCUMSCRIBING THEM WITH A BORDER.  ALTHOUGH
NOT STRICTLY NECESSARY, THE EXPLICIT BORDER AIDS IN CUTTING THE PAGES
APART AFTER A SERIES OF GRAPHS HAS BEEN DRAWN, AND ALSO SERVES TO START
THE INK FLOW IN A PEN WHICH MAY HAVE BEEN SITTING IDLE FOR A WHILE.
SOME MARGINAL NOTATIONS HAVE ALSO PROVED CONVENIENT, INCLUDING THE
PROJECT-PROGRAMMER NUMBER TO IDENTIFY THE OWNER OF THE GRAPH AND THE
DATE, TO ASSIST IN IDENTIFYING THE POSITION OF THE GRAPH IN A SEQUENCE.
IT IS FREQUENTLY USEFUL TO BE ABLE TO REFER BACK TO THE DATE ON WHICH
SOME PARTICULAR WORK WAS DONE.
 
     TWO PROGRAMS ARE AVAILABLE TO DRAW THE MARGINS, PLTFR [FRAME] AND
PLTBO [BORDER]. THEY DIFFER WITH RESPECT TO AN INNER MARGIN, 1" FROM THE
OUTER MARGIN, WHICH IS DRAWN BY PLTBO BUT NOT PLTFR.  BOTH PLTBO AND
PLTFR REDEFINE THE ORIGIN, LEAVING THE ORIGIN AT THE CENTER OF THE PAGE.
A CENTRAL ORIGIN HAS MANY ADVANTAGES, INCLUDING A SLIGHT SIMPLIFICATION
OF THE MARGIN PROTECTION SUBROUTINES.  HOWEVER, MANY ORIGIN CONVENTIONS
EXIST WITH NO REASON TO SELECT ONE AND EXCLUDE OTHERS, SO THAT SOME
SHIFTING OF ORIGIN MAY BE REQUIRED DURING THE COURSE OF PREPARATION OF A
COMPLICATED GRAPH.  SO FAR, THESE SHIFTS HAVE ALWAYS BEEN CARRIED OUT
IMPLICITLY, SO THAT PLOT, AS WELL AS THE MARGIN PROTECTION SUBROUTINES
PLTMS AND PLTMC, ALWAYS PERCEIVES THE ORIGIN TO BE THE PAGE CENTER.
     FINALLY, THERE IS A SUBROUTINE, PLTEJ, WHICH MOVES THE DRUM AND
RESETS THE ORIGIN AT THE LOWER RIGHT HAND CORNER, THEREBY EJECTING THE
PREVIOUS PAGE AND PREPARING FOR A NEW ONE.  PLTEJ ASSUMES THAT THE OLD
ORIGIN WAS AT THE PAGE CENTER.
 
     LOGICALLY THERE SHOULD HAVE BEEN A TERMINATION SUBROUTINE, MAINLY
TO INSURE THAT ALL OUTPUT BUFFERS WERE FLUSHED AND ALL FILES WERE CLOSED
IN THE OUTPUT DEVICES.	THESE TASKS ARE PERFORMED BY THE FORTRAN LIBRARY
SUBROUTINE RELEASE.  A PRMGRAM WHICH CONTROLLED THE PLOTTER DIRECTLY AND
USED THE PLOTTER FOR ONLY A SHORT FRACTION OF ITS OWN DURATION SHOULD
CALL RELEASE, TO MAKE THE PLOTTER AVAILABLE TO OTHER USERS. WHEN PLOTTER
OUTPUT IS SPOOLED, THIS COURTESY IS NOT REQUIRED.  SINCE CALL EXIT ALSO
ATTENDS TO A VARIETY OF TERMINATION CHORES, WE HAVE NOT INCORPORATED ANY
TERMINATION SUBROUTINE INTO THE <PLOT> FILE.
 
     PAGE CONTROL THEREFORE APPEARS TO FOLLOW A CYCLE, WHICH IS THE
FOLLOWING:
 
	  A.  PLT00 INITIALIZES THE PLOTTING SEQUENCE, PLACING
	      THE ORIGIN AT THE LOWER RIGHT HAND OF THE PAE.
	  B.  PLTBO OR PLTFR OUTLINE THE PAGE, INSCRIBE A LEGEND,
	      AND SET THE ORIGIN AT THE PAGE CENTER.
	  C.  THE GRAPH BELONGING TO THE PAGE IS GENERATED, ALWAYS
	      USING THE CENTER AS ITS ORIGIN.
	  D.  PLTEJ POSITIONS THE PEN AND THE DRUM FOR THE NEXT
	      PAGE, WITH LOWER RIGHT HAND ORIGIN.
	  E.  THE PROCESS IS REPEATED FROM B TO CREATE THE DESIRED
	      NUMBER OF PAGES.
 
     THE FINAL CALL TO PLTEJ SHOULD NOT BE OMITTED; OTHERWISE THE NEXT
JOB IS LIKELY TO START OFF DRAWING A SEQUENCE OF GRAPHS BEGINNING FROM
THE CENTER OF THE LAST OF ONES OWN GRAPHS. ALTHOUGH IT WOULD BE POSSIBLE
TO GUAPD AGAINST SUCH OVERLAPPAGE BY ALLOWING TO SPOOLER TO INTERSPERSE
AMPLE PAPER BETWEEN JOBS, THE SCARCITY OF PAPER AND ITS COST COMMEND
EACH USER TO FOLLOW THE RECOMMENDED DISCIPLINE FOR PAPER POSITIONING.
 
     THE CYCLE OF ORIGINS, AS WELL AS THE CYCLE OF PEN MOVEMENTS WITHIN
EACH SUBROUTINE, IS ARBITRARY TO A CERTAIN EXTENT, BUT DOES REFLECT A
MODEST EFFORT TO ECONOMIZE PEN MOVEMENT BY LEAVING THE PEN AT THE END OF
EACH STEP IN A FAVORABLE POSITION FOR THE FOLLOWING STEP.  SOME WASTE
MOTION IS UNAVOIDABLE WHEN THE PEN HAS TO BE PHYSICALLY PRESENT AT A
DESIRED ORIGIN.
4  MARGIN CONTROL
 
     MARGIN CONTROL EXACTS A CERTAIN OVERHEAD, PARTICULARLY WHEN IT
INTERVENES IN EVERY PEN MOVEMENT.  YET, IT RETURNS ENOUGH ADVANTAGES
TO JUSTIFY ITS USAGE.  ONE REASON IS THAT IT IS DESIRABLE TO PROTECT
ADJOINING GRAPHS, ESPECIALLY WHEN THEY ARE PACKED AS CLOSELY AS WE ARE
ACCUSTOMED TO PLACING THEM.  EXPERIENCED PROGRAMMERS STILL MAKE ERRORS
OF JUDGEMENT IN ASSIGNING SCALES, WHILE NOVICES WILL INEVITABLY LAUNCH
THE PLOTTER ON HUNDRED MILE GOOSE CHASES IN ARBITRARY DIRECTIONS.
 
     NOT ONLY IS THE WASTAGE OF PAPER, OR DAMAGE TO NEIGHBORING GRAPHS,
A CONCERN IN MARGIN PROTECTION.  DUE TO THE INCREMENTAL NATURE OF THE
CALCOMP DIGITAL PLOTTERS, THE PLOTTER ITSELF HAS NO RECORD OF THE ORIGIN
AND THEREFORE CANNOT RECOVER WHEN THE PEN RUNS OFF THE PAPER, OR STRIKES
THE HORIZONTAL LIMITING SWITCHES.  IF THE BOUNDS ARE EVER ONCE EXCEEDED
THE WHOLE REMAINDER OF THE GRAPH IS DISTORTED, ALONG WITH WHATEVER
INFORMATION IT MIGHT HAVE CONTAINED.  IT IS WORTH SALVAGING AS MUCH OF
AN OVERSIZED GRAPH AS POSSIBLE, EITHER BECAUSE IT MAY STILL BE USABLE,
OR BECAUSE OF THE DIAGNOSTIC INFORMATION WHICH THE REMNANTS MAY CONTAIN.
 
     PROJECTIVE GEOMETRY REVEALS METHODS TO CONSTRUCT WINDOWS COMBINING
QUITE ARBITRARY CONVEX POLYGONS, BUT THE OVERHEAD FACTOR COMPELS US TO
SELECT THE SIMPLEST WINDOW, A RECTANGLE OF THE DIMENSIONS OF THE INNER
MARGIN OF THE PAGE, AND CHECK THE MARGINS ACCORDING TO THE ABSOLUTE
VALUES OF THE PROPOSED COORDINATES.  TWO DIFFERENT SUBROUTINES MOVE THE
PEN WITHIN LIMITED MARGINS, NAMELY PLTMS [MARGIN SUPPRESSED] OR PLTMC
[MARGIN COMPRESSED].
 
     BOTH THESE SUBROUTINES ESTABLISH AN INNER MARGIN 1" FROM THE OUTER
MARGIN, AND BOTH USE LINEAR INTERPOLATION TO DETERMINE THE EXACT POINT
OF INTERSECTION OF A LINE WHICH IS ABOUT TO BE DRAWN WITH THE MARGIN.
THEY DIFFER WITH RESPECT TO THEIR TREATMENT OF ANY PORTION OF THE GRAPH
LYING OUTSIDE THE MARGIN.  PLTMS SUPPRESSES THE EXCESS, MAKING IT A TRUE
WINDOWING ROUTINE.  PLTMC DRAWS THE PARTS OF THE GRAPH WHICH LIE BEYOND
THE MARGIN, BUT DIVIDES EACH LINE UP INTO SEVERAL SEGMENTS, AND SCALES
THEM BY A HYPERBOLIC TANGENT TRANSFORMATION WHICH COMPRESSES THE RANGE
FROM THE MARGIN TO INFINITY INTO THE INCH GAP SEPARATING THE MARGINS.
 
     EACH ROUTINE HAS ITS USES.  PLTMS PRODUCES CLEANER GRAPHS, BUT MAY
GIVE LITTLE INFORMATION ABOUT WHAT IS HAPPENING OUTSIDE THE WINDOW.
PLTMC RETAINS THIS INFORMATION BUT IF THE OVERRUN OF THE GRAPH IS SEVERE
IT MAY BE TOO CRAMMED INTO THE MARGIN TO DECIPHER.  IN ANY EVENT, THE
MARGINAL EXCURSIONS CREATED BY USING PLTMC ARE NOT INTENDED TO HAVE HIGH
PRECISION, AND PLTMC SHOULD NEVER BE USED TO SUPPLANT PROPER SCALING.
 
     INDEED, A KNOWLEDGEABLE PROGRAMMER WILL OFTEN APPLY LOGARITHMIC,
HYPERBOLIC TANGENT, OR SIMILAR TRANSFORMATIONS TO HIS DATA BEFORE THEY
ARE GRAPHED TO KEEP DATA VARIATION WITHIN BOUNDS.  CONSEQUENTLY MARGIN
CHECKING IS ONLY INTENDED AS A SAFEGUARD AGAINST ACCIDENTS. THEREFORE IT
SHOULD BE KEPT AS SIMPLE AS POSSIBLE, AND CAN BE QUITE RUDIMENTARY FROM
THE POINT OF VIEW OF WINDOWING PROCEDURES.
 
     VERY FEW SUBROUTINES OF THE <PLOT> FILE CALL PLOT DIRECTLY, NAMELY
PLT00, PLTAX, PLTBO, PLTEJ, PLTFR, PLTMC, PLTME, AND PLTMS.  OF THESE,
PLTME IS A SATELLITE OF PLTMC, PLTMS AND PLTMC ARE THE SUBROUTINES UNDER
DISCUSSION, PLTAX IS UNADAPTED, AND THE REMAINDER NEVER ARE USED IN THE
GENERATION OF THE PAGE ITSELF, ALTHOUGH IF REALLY NECESSARY THEY COULD
PRESUMABLY BE WRITTEN USING PLTMS AND PLTMC.  ADDITIONALLY, SEVERAL
SUBROUTINES CALL SYMBOL AND NUMBER, WHICH ALSO GENERATE PEN MOVEMENTS.
THEREFORE, IT IS REASONABLE TO CLAIM THAT PLTMS AND PLTMC ARE THE PEN
MOVEMENT SUBROUTINES OF THE <PLOT> FILE, USED EXCLUSIVELY BY ALL HIGHER
LEVEL SUBROUTINES.  IT IS THEREFORE INSTRUCTIVE THAT THEIR COMMON FORM
OF ARGUMENT, (X,Y,L), CONSISTING OF THE COORDINATES OF THE DESTINATION
OF THE PEN AND A PREDICATE EXPRESSING THE VISIBILITY OF THE IMPENDING
PEN STROKE, SUFFICE FOR ALL THE PEN MOVEMENT WHICH OCCURS.  EXCEPT FOR
THE DEFINITION OF A NEW ORIGIN, THIS ARGUMENT CONSTRUCTION WOULD SUFFICE
FOR ALL PEN MOTION.  THIS IS AN ITEM TO BE BORNE IN MIND WHEN DESIGNING
PLOTTER SUBROUTINES IN MACHINE LANGUAGE.
 
     IN ORDER TO RELY UPON A SINGLE ENDPOINT AS ARGUMENT, AND YET TO
RETAIN THE IDENTITY OF THE LINE BEING DRAWN, BOTH PLTMC AND PLTMS HAVE
INDIVIDUAL INTERNAL MEMORIES.  THE EXISTENCE OF TWO SEPARATE MEMORIES IS
EXPLOITED NOW AND THEN BY OTHER SUBROUTINES, PARTICULARLY PLTRI. ANOTHER
MEMORY RESIDES IN PLOT, ACCESSIBLE THROUGH THE PLOTTER SUBROUTINE WHERE.
	5  AXES, LABELS, AND MARKS
	   5.1	PLTAX
	   5.2	PLTLA
	   5.3	PLTCI, PLTFM
	   5.5	PLTIR, PLTUR
 
	6  RECTANGULAP GRAPHS
	   6.1	PLTRG
	   6.2	PLTRI
 
	7  COORDINATE CONVERSIONS
	8  CONTOUR PLOTS
	9  HIDDEN LINE SUBROUTINES
APPENDIX 1.  INDEX OF THE <PLOT> FILE.
 
      FUNCTION	  CARG (Z)
 
      SUBROUTINE  KONIT (I,J,K)
 
      SUBROUTINE  KONNC
 
      SUBROUTINE  KONRE
 
      SUBROUTINE  KONSA
 
      SUBROUTINE  KONSC (Z0,XF,YF,IA,IB,JA,JB,ZE,NX,NY,PL)
 
      SUBROUTINE  KONSK (Z0,IA,IB,JA,JB,ZE,NX,NY,FU,PL)
 
      SUBROUTINE  KONXV (I,J)
 
      SUBROUTINE  PLT00
 
      SUBROUTINE  PLTAX (X,Y,HE,NC,SZ,TH,V0,DV,L)
 
      SUBROUTINE  PLTBH (X,Y,P)
 
      SUBROUTINE  PLTBO
 
      SUBROUTINE  PLTBV (Z1,ZE,Z2,NX,MX,NY)
 
      SUBROUTINE  PLTCA (X,Y,P)
 
      SUBROUTINE  PLTCI (X,Y,R)
 
     SUBROUTINE  PLTEJ
      SUBROUTINE  PLTEL (XI,ETA,P)
 
      SUBROUTINE  PLTEV (Z1,ZE,Z2,NX,NE)
 
      SUBROUTINE  PLTFI (Y1,WY,Y2,N)
 
      SUBROUTINE  PLTFM (X,Y,R,PL)
 
      SUBROUTINE  PLTFR
 
      SUBROUTINE  PLTHP (NR,NT)
 
      SUBROUTINE  PLTIL (X1,Y1,Z1,X2,Y2,Z2,PL)
 
      SUBROUTINE  PLTIR
 
      SUBROUTINE  PLTKB (Z1,ZE,Z2,NZ,NX,NY,PL)
 
      SUBROUTINE  PLTKC (Z1,ZE,Z2,NZ,KX,NX,KY,NY,PL)
 
      SUBROUTINE  PLTKO (Z1,ZE,Z2,NZ,KX,NX,KY,NY)
 
      SUBROUTINE  PLTKP (Z1,ZE,Z2,NZ,KX,NX,KY,NY,PL)
 
      SUBROUTINE  PLTKX (Z1,ZE,Z2,NX,NY,PL)
 
      SUBROUTINE  PLTKY (Z1,ZE,Z2,NX,NY,PL)
 
      SUBROUTINE  PLTLA (I)
 
      SUBROUTINE  PLTLH (X,Y,P)
 
      SUBROUTINE  PLTMA (X,Y,X0,Y0)
 
      SUBROUTINE  PLTMC (X,Y,S)
 
      SUBROUTINE  PLTME (X1,Y1,X2,Y2)
 
      SUBROUTINE  PLTMS (X,Y,S)
 
      SUBROUTINE  PLTMT (X1,Y1,P1,X2,Y2,P2,Q)
 
      SUBROUTINE  PLTOR (Z1,ZE,Z2,NZ,KX,NX,KY,NY,PL)
 
      SUBROUTINE  PLTPO (T,R,P)
 
      SUBROUTINE  PLTPV (Z1,ZE,Z2,NR,NP)
 
      SUBROUTINE  PLTQ1 (X,Y,P)
 
      SUBROUTINE  PLTQ2 (X,Y,P)
 
      SUBROUTINE  PLTQ3 (X,Y,P)
 
      SUBROUTINE  PLTQ4 (X,Y,P)
 
      SUBROUTINE  PLTRG (X1,X,X2,Y1,Y,Y2,N)
 
      SUBPOUTILE  PLTRH (X,Y,P)
 
      SUBROUTINE  PLTRI (X,Y,L)
 
      SUBROUTINE  PLTRV (Z1,ZE,Z2,NX,MX,NY,TH)
 
      SUBROUTINE  PLTSE (Z1,ZE,Z2,NX,MX,NY)
 
      SUBROUTINE  PLTSP (PH,TH,P)
 
      SUBROUTINE  PLTSS (Z1,ZE,Z2,NX,MX,NY)
 
      SUBROUTINE  PLTSV (FU,NP,NT,O,PR,PL)
 
      SUBROUTINE  PLTSW (Z1,ZE,Z2,NX,MX,NY)
 
      SUBROUTINE  PLTTG (N)
 
      SUBROUTINE  PLTTH (X,Y,P)
 
      SUBROUTINE  PLTTP (X,Y,Z,P)
 
      SUBROUTINE  PLTTV (Z1,ZE,Z2,N,M)
 
      SUBROUTINE  PLTUR (XA,X1,DX,X2,XB,YA,Y1,DY,Y2,YB,W,PL)
 
      SUBROUTINE  VISBO (X1,T1,B1,M,X0,T0,B0,N0,X,Y,N,I,PL)
 
      SUBROUTINE  VISDC (Z1,ZE,Z2,NZ,NX,MX,NY,MY,US,VS,L,PL)
 
      SUBROUTINE  VISDO (Z1,S1,S2,Z2,NX,MX,NY,MY,US,VS,L,IS,PL)
 
      SUBROUTINE  VISDS (Z1,ZE,Z2,J1,J2,MX,I1,I2,MY,US,VS,L,M,PL)
 
      SUBROUTINE  VISES (Z1,ZE,Z2,X1,X2,NX,E1,E2,NE,L,M)
 
      SUBROUTINE  VISHH (X0,T0,B0,N0,X,Y,N,I,PL)
 
      SUBROUTINE  VISHO (X,Y,N,I,PL)
 
      FUNCTION	  VISLI (Z,X,Y,I)
 
      SUBROUTINE  VISNH
 
      SUBROUTINE  VISNP (PH,TH,JP,IT,NP,NT,O)
 
      SUBROUTINE  VISPS (Z1,ZE,Z2,R1,R2,NR,P1,P2,NP,L,M)
 
      SUBROUTINE  VISRB (X,Y,J,M,X1,Y1,N1,X2,Y2,N2,S)
 
      SUBROUTINE  VISRS (Z1,ZE,Z2,NX,MX,NY,MY,TH,PL)
 
      LOGICAL FUNCTION	VISSL (EX,WY,X,Y,I)
 
      SUBROUTINE  VISSP (RHO,PHI,R,T,P,O)
 
      SUBROUTINE  VISSS (FU,J1,J2,NP,I1,I2,NT,L,M,S,B,O,PR,PL)
 
      SUBROUTINE  VISTR (Z1,S1,S2,S3,Z2,NX,MX,NY,MY,US,VS,VD,L,IS,PL)
 
      SUBROUTINE  VISTS (Z1,ZE,Z2,N,M)
 
[06-JAN-75]
APPENDIX 2.  "GLOB" ANALYSIS OF THE <PLOT> FILE
 
SYMBOL DEFINED REFERENCED:
 
ABS	      PLTMS,PLTMT,VISBO,VISRB,VISRS,VISSL
AIMAG	      CARG
ALOG10	      PLTAX
AMAX1	      KONSC,KONSK,VISBO,VISRB
AMIN1	      KONSC,KONSK,VISBO,VISRB
ATAN2	      CARG,VISNP,VISSP
CABS	      PLTKC
CARG	CARG  PLTKC
COS	      PLTCI,PLTEL,PLTHP,PLTPO,PLTSP,VISES,VISPS,VISSP
	      VISSS
COSD	      PLTAX,VISRS
COSH	      PLTEL,VISES
DATE	      PLTBO,PLTFR
DUMMY.	      KONSC,KONSK,PLTFM,PLTKC,PLTKP,PLTOR,PLTSV,PLTUR
	      VISBO,VISDC,VISDO,VISDS,VISHH,VISHO,VISRS,VISSS
	      VISTR
EXP2.2	      PLTAX
FLOAT	      KONSC,KONSK,PLTAX,PLTBV,PLTCI,PLTHP,PLTKB,PLTKC
	      PLTKP,PLTKX,PLTKY,PLTME,PLTOR,PLTTG,VISBO,VISDC
	      VISDO,VISDS,VISES,VISNP,VISPS,VISRS,VISSS,VISTR
	      VISTS
IABS	      VISDS
IFIX	      PLTAX,VISNP
INT	      PLTAX
ISIGN	      VISDS
KON    KONIT  KONNC,KONRE,KONSA,KONSC,KONSK,KONXV
KONIT  KONIT  KONSC,KONSK
KONNC  KONNC  KONSC,KONSK
KONRE  KONRE  KONSC,KONSK
KONSA  KONSA  KONSC,KONSK
KONSC  KONSC  PLTKP,PLTOR
KONSK  KONSK  PLTKC
KONXV  KONXV  KONNC,KONSC,KONSK
KQN    KONRE  KONSA
MAX0	      KONSC,KONSK,PLTKC,PLTKP,PLTOR,VISBO,VISDC,VISDO
	      VISDS,VISES,VISNP,VISPS,VISRB,VISRS,VISSS,VISTR
MIN0	      KONSC,KONSK,PLTKC,PLTKP,PLTOR,VISBO,VISDC,VISDO
	      VISDS,VISES,VISNP,VISPS,VISRB,VISRS,VISSS,VISTR
	      VISTS
MOD	      KONSC,KONSK,VISSS
NUMBER	      PLTAX
PLOT	      PLT00,PLTAX,PLTBO,PLTEJ,PLTFR,PLTMC,PLTME,PLTMS
PLOTS	      PLT00
PLT00  PLT00
PLTAX  PLTAX
PLTBH  PLTBH
PLTBO  PLTBO  PLTHP,PLTKO
PLTBV  PLTBV
PLTCA  PLTCA  PLTKO,PLTRV,PLTSE,PLTSW,VISES,VISPS,VISTS
PLTCI  PLTCI  PLTHP
PLTEJ  PLTEJ  PLTEV,PLTKO,PLTPV,PLTRV,PLTSE,PLTSS,PLTSW,PLTTV
PLTEL  PLTEL
PLTEV  PLTEV
SYMBOL DEFINED REFERENCED:
 
PLTFM  PLTFM  PLTIR,PLTRI,PLTUR
PLTFR  PLTFR  PLTEV,PLTPV,PLTRV,PLTSE,PLTSS,PLTSW,PLTTV
PLTHP  PLTHP
PLTIL  PLTIL  PLTKB,PLTKX,PLTKY
PLTIR  PLTIR  PLTKO
PLTKB  PLTKB  PLTKO
PLTKC  PLTKC
PLTKO  PLTKO
PLTKP  PLTKP  PLTKO
PLTKX  PLTKX
PLTKY  PLTKY
PLTLA  PLTLA
PLTLH  PLTLH  PLTSS
PLTMA  PLTMA  PLTMC,PLTME
PLTMC  PLTMC  PLTCI,PLTIL,PLTIR,PLTKB,PLTKX,PLTKY,PLTRI,PLTTP
PLTME  PLTME  PLTMC
PLTMS  PLTMS  PLTBH,PLTBV,PLTCA,PLTEL,PLTLH,PLTPO,PLTQ1,PLTQ2
	      PLTQ3,PLTQ4,PLTRG,PLTRH,PLTRI,PLTSP,PLTTH
PLTMT  PLTMT  PLTMC,PLTMS
PLTOR  PLTOR
PLTPO  PLTPO
PLTPV  PLTPV
PLTQ1  PLTQ1
PLTQ2  PLTQ2
PLTQ3  PLTQ3
PLTQ4  PLTQ4
PLTRG  PLTRG
PLTRH  PLTRH  PLTSS
PLTRI  PLTRI  PLTHP
PLTRV  PLTRV
PLTSE  PLTSE
PLTSP  PLTSP
PLTSS  PLTSS
PLTSV  PLTSV
PLTSW  PLTSW
PLTTG  PLTTG
PLTTH  PLTTH
PLTTP  PLTTP  PLTTG
PLTTV  PLTTV
PLTUR  PLTUR
REAL	      CARG
SIGN	      KONNC,KONSC,KONSK,PLTMT,VISBO,VISRB,VISSS
SIN	      PLTCI,PLTEL,PLTHP,PLTPO,PLTSP,VISES,VISPS,VISSP
	      VISSS
SIND	      PLTAX,VISRS
SINH	      PLTEL,VISES
SQRT	      VISNP,VISSP
SYMBOL	      PLTAX,PLTBO,PLTFR,PLTLA
SYSJO	      PLTBO,PLTFR
TANH	      PLTHP,PLTMA
SYMBOL DEFINED REFERENCED:
 
TIME	      PLTBO,PLTFR
VIS    VISHO  VISNH
VISBO  VISBO  VISHH,VISHO
VISDC  VISDC
VISDO  VISDO
VISDS  VISDS  PLTSE,PLTSS,PLTSW
VISES  VISES  PLTEV
VISHH  VISHH  VISDC,VISDO,VISTR
VISHO  VISHO  VISDS,VISES,VISPS,VISRS,VISSS,VISTS
VISLI  VISLI  VISBO,VISRB
VISNH  VISNH  PLTEV,PLTPV,PLTRV,PLTSE,PLTSS,PLTSV,PLTSW,PLTTV
VISNP  VISNP  PLTSV,VISSS
VISPS  VISPS  PLTPV
VISRB  VISRB  VISDC,VISDO,VISTR
VISRS  VISRS  PLTRV
VISSL  VISSL  VISBO,VISRB
VISSP  VISSP
VISSS  VISSS  PLTSV
VISTR  VISTR
VISTS  VISTS  PLTTV
[02-JAN-75]
APPENDIX 3.  ABSTRACTS OF THE <PLOT> DEMONSTRATION PROGRAMS
 
C     [DEMO1]
C     [04-JUN-74]
 
C     [DEMO2]
C     DEMONSTRATION FOR THE PROGRAMS PLTSE, PLTSS, PLTSW, WHICH GIVE
C     PERSPECTIVE VIEWS OF FUNCTIONS STORED IN A RECTANGULAR ARRAY.
C     THE DEMONSTRATION SUPERPOSES AN ELLIPSOIDAL AND A HYPERBOLIC
C     MOUND, BOTH MN TOP OF A SADDLE.
C     [20-NOV-74]
 
C     [DEMO3]
C     FLAT-BOTTOM CRATER ON HILL
C     [16-NOV-74]
 
C     [DEMO4]
C     DEMONSTRATION FOR THE PROGRAM PLTPV, SHOWING A PERSPECTIVE
C     VIEW OF FUNCTIONS THAT ARE DEFINED IN POLAR COORDINATES.
C     [04-JUN-74]
 
C     [DEMO5]
C     DEMONSTRATION FOR TRIANGULAR VIEW
C     [15-MAY-74]
 
C     [DEMO6]
C     DEMONSTRATION FOR THE PROGRAM PLTEV, WHICH GRAPHS FUNCTIONS
C     DEFINED OVER ELLIPTICAL COORDINATES.
C     [10-NOV-74]
 
C     [DEMO7]
C     DEMONSTRATION FOR THE EMBEDDING OF CONTOUR LINES INTO THE VIEW
C     OF A SURFACE.
C     [13-APR-74]
 
C     [DEM08]
C     DEMONSTRATION FOR THE GRAPHING OF
C     A PAIR OF SURFACES, CONSISTING OF
C     SOME GAUSSIAN VARIANTS.
C     [14-APR-74]
 
C     [DEM09]
C     DEMONSTRATION FOR THE GRAPHING
C     OF A PAIR OF SURFACES, MADE UP
C     OUT OF PLANES AND CONES.
C     [13-APR-74]
 
C     [DEM10]
C     DEMONSTRATION FOR THE GRAPHING OF
C     A TRIPLE OF SURFACES, MADE UP OUT
C     OF PLANES AND CONES.
C     [14-APR-74]
 
C     [DEM11]
C     DEMONSTRATION FOR THE GRAPHING OF TRIPLES
C     OF SURFACES, CONSISTING IN THIS CASE OF
C     SINUSOIDAL FUNCTIONS MODULATED BY A GAUSSIAN
C     AMPLITUDE, PLUS A PARABOLOID. THE VERTICAL
C     SEPARATION OPTION SHOULD REVEAL THE DETAILS
C     OF THEIR MUTUAL INTERSECTIONS.
C     [14-APR-74]
 
C     [DEM12]
C     DEMONSTRATION FOR PLTRV WHICH GIVES A PERSPECTIVE VIEW
C     OF A FUNCTION STORED IN A RECTANGULAR ARRAY.  THE
C     DEMONSTRATION SUPERPOSES AN ELLIPSOIDAL AND A HYPERBOLIC
C     MOUND, BOTH ON TOP OF A SADDLE.
C     [18-MAY-74]
 
      SUBROUTINE  DEM13
 
C     [DEM13]
C     DEMONSTRATION FOR THE PROGRAM PLTSV, WHICH SHOWS A PERSPECTIVE
C     VIEW OF FUNCTIONS DEFINED OVER A SPHERE.
C     [02-JUN-74]
 
      SUBROUTINE  DEM14
 
C     [DEM14]
C     DEMONSTRATION FOR THE PROGRAM PLTSV, CONSISTING IN DRAWING
C     A PERSPECTIVE STEREOPAIR OF A FUNCTION DEFINED OVER A SPHERE,
C     EXHIBITING THE LINES OF CONSTANT LATITUDE AND LONGITUDE.
C     [02-JUNE-74]
 
      SUBROUTINE  DEM15
 
C     [DEM15]
C     DEMONSTRATION FOR THE PROGRAM PLTHV, WHICH SHOWS A PERSPECTIVE
C     VIEW OF TWO FUNCTIONS DEFINED OVER A HEMISPHERE.
C     [27-MAY-74]
 
      SUBROUTINE  DEM16
 
C     [DEM16]
C     CHRYSANTHEMUM
C     [22-MAY-74]
 
      SUBROUTINE  DEM17
 
C     [DEM17]
C     STRAWBERRY
C     DEMONSTRATION FOR THE PROGRAM PLTOV, WHICH CALCULATES
C     THE OUTER BOUND OF TWO FUNCTIONS DEFINED OVER A SPHERICAL
C     SURFACE.	THE DEMONSTRATION SHOWS A "STRAWBERRY" SURROUNDED
C     BY A SPARSE SPHERE.
C     [22-MAY-74]
 
C     [DEM18]
C     PUFF-FISH
C     DEMONSTRATION FOR THE PROGRAM PLTOV, WHICH CALCULATES
C     THE OUTER BOUND OF TWO FUNCTIONS DEFINED OVER A SPHERICAL
C     SURFACE.	THE DEMONSTRATION SHOWS A SPINY FIGURE WHICH HAS
C     BEEN CUT OFF AT A CERTAIN RADIUS.  THE INNER AND OUTER PARTS
C     ARE SHOWN SIDE BY SIDE IN TWO SEPARATE FIGURES.
C     [23-MAY-74]
 
      SUBROUTINE  DEM19
 
C     [DEM19]
C     TETRAHEDRON
C     DEMONSTRATION FOR THE PROGRAM PLTSV, WHICH SHOWS A PERSPECTIVE
C     VIEW OF FUNCTIONS DEFINED OVER A SPHERE.
C     [16-NOV-74]
 
      SUBROUTINE  DEM20
 
C     [DEM20]
C     DEMONSTRATION FOR THE PROGRAM PLTSV, WHICH SHOWS A PERSPECTIVE
C     VIEW OF FUNCTIONS DEFINED OVER A SPHERE.	A GRID OF SPINES IS
C     PLACED ON THE FIGURE AS AN AID TO LOCATING CONTOURS; EACH SPINE
C     IR ROUNDED UP TO THE NEXT TENTH.
C     [27-MAY-74]
 
      SUBROUTINE  DEM21
 
C     [DEM21]
C     DEMONSTRATION FOR THE PROGRAM PLTSV, WHICH SHOWS A PERSPECTIVE
C     VIEW OF FUNCTIONS DEFINED OVER A SPHERE.
C     [27-MAY-74]
 
      SUBROUTINE  DEM22
 
C     [DEM22]
C     PLANETARY COPPER MINE
C     DEMONSTRATION FOR THE PROGRAM PLTSV, WHICH SHOWS A PERSPECTIVE
C     VIEW OF FUNCTIONS DEFINED OVER A SPHERE. QUANTIFICATION IS USED
C     TO INDICATE THE VARIOUS RADIAL CONTOUR LEVELS OF THE FUNCTION.
 
C     [02-JUN-74]
 
      SUBROUTINE  DEM23
 
C     [DEM23]
C     CALCULATION OF THE TILT OF THE ELEMENTARY RECTANGLES
C     AS A FUNCTION OF THETA AND PHI FOR USE IN CHOOSING
C     THE DIAGONAL SEQUENCE TO BE FOLLOWED IN THE SPHERICAL
C     SEQUENCE ROUTINES.
C     [28-MAY-74]
 
      SUBROUTINE  DEM24
C     [DEM24]
C     [03-JUN-74]
 
      SUBROUTINE  DEM25
C     [DEM25]
C     [29-MAY-74]
 
C     [DEM26]
C     DEMONSTRATION OF TWO PARTICLES IN A COULOMB WELL
C     [18-MAY-74]
 
C     [DEM27]
C     DEMONSTRATION OF TWO PARTICLES IN AN EXPONENTIAL WELL
C     [18-MAY-74]
 
C     [DEM28]
C     DEMONSTRATION OF TWO PARTICLES IN A GAUSSIAN WELL
C     [06-OCT-74]
 
C     [DEM29]
C     DEMONSTRATION OF TWO PARTICLES IN A GAUSSIAN WELL
C     [14-NOV-74]
 
C     [DEM30]
C     DEMONSTRATION FOR CONTOURS OF A COMPLEX FUNCTION
C     [03-DEC-74]
 
C     [DEM31]
C     DEMONSTRATION FOR PERSPECTIVE OF A COMPLEX FUNCTION
C     [03-DEC-74]
 
C     [DEM32]
C     DEMONSTRATION OF BIRDSEYE VIEW
C     [18-DEC-74]
 
C     [DEM33]
C     DEMONSTRATION OF A COLOR COMPOSITE
C     [18-DEC-74]
 
IIIAAAA>>AAA>						AA@@@@IIIA			@@@@>AAA>``@@@@