File PLOT.HL (help file)

Directory of image this file is from
This file as a plain text file





	     DYNAMIC PLOTTING UNDER OS/12 FORTRAN IV	     DYNAMIC PLOTTING UNDER OS/12 FORTRAN IV	     _______ ________ _____ _____ _______ __

I.  INTRODUCTION    INTRODUCTION    ____________
      The plotting routines supplied for use with DEC's FORTRAN
IV provide for on-line plotting but require total dedication of
the CPU while the plot is being produced.  For long plots, this
requires long periods of time during which the CPU is idle but
cannot be used.  The routines described here allow plots to be
produced under interrupt control while the CPU performs other
tasks.  In particular, they allow the user to create a plot file,
preview it on the scope, select the plots (s)he likes to be
plotted on the CALCOMP plotter, and while they are being plotted,
preview additional plots and add selected ones to the plot file.

II.  CREATING AND PLOTTING DISK FILES     CREATING AND PLOTTING DISK FILES     ________ ___ ________ ____ _____
      The routines in the FORTRAN library have been modified so
use of the standard FORTRAN plot package will produce a plot file
on logical unit 9.  (The user must remember to open unit 9 to
avoid an I/O error.)  To plot the file currently being created or
a file created previously, the following code should be inserted
into the FORTRAN program:

      EXTERNAL PLOTIT
      CALL MODE8 (PLOTIT, UNIT)


PLOTIT is a routine in the FORTRAN library written in 8-mode
code.	The subroutine MODE8 is a RALF code program which allows
calling 8-mode programs from FORTRAN.

UNIT is the logical unit number of the file to be plotted.  This
may be the same file as the one being created with the plotter
routines or it may be a different file.  If UNIT=0, plotting will
continue from the point in the file where it previously stopped.
This feature has been added in case the user is plotting the file
(s)he is in the process of creating, but because of a telephone
call, etc., has allowed the plotter to "catch up".

      An external variable PDONE exists which indicates the state
of the plotter.  PDONE=0 if the plotter is busy and PDONE=1 if
the plotter is not busy.  PLOTIT should never be called when
PDONE is zero.  To prevent this from happening, the following
code can be inserted into the FORTRAN source program:

      EXTERNAL PDONE, PLOTIT
      LOGICAL PDONE
      IF (PDONE) CALL MODE8 (PLOTIT, UNIT)

It is especially important to do this if UNIT=0.

III.  PREVIEWING A PLOT      PREVIEWING A PLOT      __________ _ ____
      For the purpose of previewing, plots are divided into
"frames".  A "frame" is the amount of the total plot which is to
appear together as one unit.  To define the end of a frame, the
user must call XYPLOT with a pen control equal to -1, thus:


FORTRAN IV PLOTTING (continued) CALL XYPLOT (0, 0, -1) Once a plot is written to a disk file, it can be previewed on the storage oscilloscope (not the LINK scope) by using the following code: EXTERNAL PREVU CALL MODE8 (PREVU, UNIT, SIZE) PREVU is an 8-mode subroutine in the FORTRAN library. It returns to the calling program after each frame has been plotted. To continue to the next frame, it must be called with the value of UNIT=0. UNIT is the logical unit number of the file to be previewed. This may be the same file as the one being created with the plotter routines or it may be a different file. If UNIT=0, previewing will continue from the point in the file where it previously stopped. SIZE can be used to increase the size of the display. SIZE can have the values 0, 1 or 2 which represent multiplicative increases in the size of the display of 1, 2 or 4 times respectively. IV. INTERNAL OPERATION INTERNAL OPERATION ________ _________ XYPLOT is called with three parameters, an X coordinate, a Y coordinate and a PEN control. To generate a plot file, these numbers are simply output to a (unformatted) FORTRAN file after the three parameters are packed, X, Y, and PEN from one call to XYPLOT into the three words of a floating point variable and 85 floating point variables per record. Thus, each OS/8 block of the file contains a list of parameters used in the various calls to XYPLOT. Negative PEN control values are handled in a special way: If PEN is any negative value other than -3 (which redefines the origin), it is used by XYPLOT, and PREVU to define a new "frame". The file must always be terminated by a PEN control of zero to indicate to PLOTIT and PREVU that the end of file has been reached. Normally, the user need not be concerned about this. PLOTS writes a zero and then BACKSPACEs over it. Also, XYPLOT writes a zero and BACKSPACEs over it after every end of frame is written. Finally, PLEXIT writes a final zero to terminate a plot before closing the file. If the user chooses to copy a frame using the FORTRAN unformatted read and write routines, he must remember to handle these zero's properly. The correct code to copy one frame of a plot from unit 9 to unit 8 is: DIMENSION A(85) 10 READ (9) A WRITE (8) A IF (A(1).NE.0) GO TO 10 C DONE, BACKSPACE OVER THE ZERO IF DESIRED BACKSPACE 8 C REWIND 9 IF DESIRED REWIND 9
FORTRAN IV PLOTTING (continued) V. GETTING THE PLOT ROUTINES ON THE AIRV. GETTING THE PLOT ROUTINES ON THE AIR _______ ___ ____ ________ __ ___ ___ Three RALF modules must be inserted into the FORTRAN IV library in order for dynamic plotting to work. The following code will do this: .R RALF *XYPLOT<XYPLOT .R RALF *PREVU<PREVU .R RALF *PLOTIT<PLOTIT .R LIBRA *FORLIB<XYPLOT,PLOTIT,PREVU/R *^C At this point, the computer will list several duplicate entry points because of the replacement of the old XYPLOT with the new. If there is insufficient room in the library, or some other problem, refer to the LIBRA section of the OS/8 FORTRAN IV documentation from D.E.C. Finally, the handlers for TVIN: and NULL: must be inserted. These are inserted into the OS/8 moniter by BUILD. Note that although TVIN: is a legal device as far as OS/8 is concerned, unpredictable results will occure if it is referenced outside of FORTRAN. The following code will insert these devices: .R PAL8 *NULL<NULL .R BUILD /A version of BUILD updated to the user's / current system should be used here. $LO NULL $IN NULL,NULL $IN NULL,TVIN $BO



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search