The normal method of using the FR80 via the 1906A is through one of the Atlas Laboratory's graphics packages, SMOG, SPROGS, GROATS or the FORTRAN SD4020 package (now called SCSIM), either explicitly or indirectly through an applications package. .
The FR80 is run off-line from the 1906A and FR8D control data is sent there via magnetic tape. The FORTRAN or ALGOL routines provided by each graphics package generate the FR80 control data in the correct format and relieve the user from the need to know what this format is. There are, however, 2 methods of routing the FR80 control data to the FR80; this note will explain the consequences of using either of these and will also outline how they are specified.
The method, which is strongly recommended for the majority of jobs, is to use the spooling system. The graphics package sends FR80 control data to a discfile, where there are several areas (currently 20) each of which accommodates the FR80 control data for one job. Whenever a camera is loaded on the FR80, the "spooled" jobs for that camera are copied to an FR80 control tape by an operator-initiated job and plotted. The turnaround for the user will be faster using the spool than if he attempts to use magnetic tape himself; the spool method is more convenient for the FR80 and 1906A operators since fewer almost empty tapes are handled; the macro to summon the graphics package is easier to use since otherwise a magnetic tape parameter would have to be specified (see Section 4); additionally, the user can view graphical data on an interactive terminal (remote or central) while the data is still held on the spool and can ERASE the job if it proves to be useless. On the final control tape each job is automatically protected from a possibly erroneous predecessor by a filemark, blank frame(s) and parameter resetting orders. Any filemark requested by the user (SUBROUTINE FLEMK in SPROGS or SMOG or procedure filemarks in GROATS) is noted on the disc and reproduced on the control tape; however, filemarks are no benefit to the user unless he needs to read the control tape for any reason. Two consecutive filemarks are not allowed (either when using tape directly or when using the spool).
The user will therefore find it advantageous to use the spool whenever the FR80 control data is not to be retained by him and for all jobs which do not produce a large amount of graphical data. The maximum amount is much greater than the SD4020 spool allows. If in doubt about your requirements, see Section 3 on SIZE RESTRICTION.
Tapes with spooled jobs on will be retained by the FR80 operators until the user's output has been produced satisfactorily. The greater reliability of the FR80 should mean that machine malfunctions will not make replotting necessary.
The other method is for the user's program to write a control tape directly. This is only necessary if the user wishes to own the tape (in a GEORGE sense) in order to keep it or if the amount of graphical data is large. If only a small amount of graphical data is produced, this method is wasteful both of operators' and FR80 time, since it increases the amount of tape handling required. If the user must use tape, the recommended method is to use owned 7-track tapes. It may be necessary to use 9-track if the amount of information is greater than one 7-track tape can hold (>10000 blocks approximately).
If there are any problems with a job, you should contact Program Advisory Office who will require lineprinter output from the graphics package or, failing that, will require job details including when it was run on the 1906A and which FR80 camera was requested.
The user can confirm which route has been used by inspecting the lineprinter output produced by the package (stream 13). This output can be sent to file if preferred (see example 3 in Section 4).
If a magnetic tape has been used, the output specifies the tape serial number.
If the spool has been used, the output will say that the FR80 output has been "off-lined" (or "spooled"). It will also print the number of records (z blocks), the job number in the spool, the date/time that any jobs were last removed from the spool ("processed"), the date/time that the job started, the package used and the camera selected.
The maximum size that a job can occupy in the spool is currently 1316 blocks. This is twice as much space as the SD4020 spool allows. Therefore, some jobs whose space requirement was too large for the SD4020 spool can now be easily accommodated in the FR80 spool.
There is no, straightforward algorithm that will predict the number of blocks required by a job. The lineprinter output (see previous section) produced by any of the packages will show the number actually used. An extremely rough prediction can be calculated thus:
(1) In most cases the FR80 control-data is more compact than the corresponding SD4020 orders. One exception is if the user's picture consists chiefly of short (less than 1/16th of the addressable space), disconnected vectors.
(2) If the program consists chiefly of lines, the number of "movements" of the "current plotting position" in a disc block can vary between 170 and 340 depending on whether or not the "movements" are parallel to the x- and y- axes. A "movement" is either a line itself or a repositioning of the "current plotting position" between 2 disconnected lines.
If the space is filled up, the graphics package will terminate the job. The FR80 control data so far entered in the spool will not be lost.
Three different typical situations are illustrated each with an example macro call from each package. In each situation the program resides in one file called EXAMPLESMOG (for SMOG and SPROGS), EXAMPLEGROAT (for GROATS) or EXAMPLESC (for SCSIM). The directory is that currently selected (by DY) in examples 1 and 2 and is :ABCD99 in example 3. The manual for the desired package must be consulted for further details. Note that the calls from MOP (examples 1 and 2) each create a background job. More than 2 such jobs from one MOP job for the same package (in the cases of SMOG, SPROGS or SCSIM) cause a name clash.
Example 1 illustrates a simple macro call from MOP which uses the spool, performs no other I/O except to #LP0 and allows defaults set up by the package to be used for jobtime, program description, etc. Example 2 is similar but routes FR80 control data to a 7-track pooltape, which is allocated to the user under the name GRAPHICSDATA, remains in his filestore and debited against his tape budget until it is RETURNed. Example 3 routes FR80 control data to the spool and can be used in NO USER context. It also sends details concerning the graphics (see Section 2) to be sent to the file :ABCD99.INFO instead of to the lineprinter, uses the FORTRAN optimising compiler (except in GROATS), restricts jobtime to 40 seconds and reduces the monitoring file to ALLBUT, COMMANDS.
Example 1: SMOG *CREXAMPLESMOG Example 2: SMOG *CREXAMPLESMOG,#MT14(?,GRAPHICSDATA(PRRTRACK7))(WRITE) Example 3: RJ MOPARTHUR,:ABCD99,:MACROS.SMOG,- PARAM(*CREXAMPLESMOG,OPT,#LP6INFO,EJ),- JD(JT40)
The examples are exactly the same as SMOG with the macro name changed to SPROGSF (not SPROGS).
Example 1: GROATF *CREXAMPLEGROAT Example 2: GROATF *CREXAMPLEGROAT,#MT14(?,GRAPHICSDATA) Example 3: RJ MOPCRISPIN,:ABCD99,:MACROS.GROATF,- PARAM(*CREXAMPLEGROAT,OPT,#LP2INFO,EJ),- JD(JT40)
Example 1: SCRF80 *CREXAMPLESC,PD Example 2: SCRF80 *CREXAMPLESC,PD,#MT14(?,GRAPHICSDATA(PRTRACK7))(WRITE) Example 3: RJ MOPCRISPIN,:ABCD99,:MACROS.SCFR80,- PARAM(*CREXAMPLESC,PD,OPT,#LP6INFO,EJ),- JD(JT40)
If a graphics job sends FR80 control data to the spool, the data can be viewed on a Tektronix Storage Tube before it is copied to tape. This must be done in 2 stages.
First run the SPOOLJOB macro (described in Section 5.4) to create a file called SPOFILE in the current directory and send graphical information to it. For example, if the jobname of the graphics run was MOPDRACULA, the macro:
SPOOLJOB MOPDRACULA,FRAMES6-10,FRAMES15-16,FRAMES20,FRAMES25-END
would send frames 6, 7,8,9, 10, 15, 16,20, 25,26,27, ........ of that job to the file SPOFILE. A background job is required for this stage.
Second when SPOFILE has been created, log-in to MOP at a Tektronix terminal (if unfamiliar with this consult the 1906A Reference Manual Section Z.7), preset the appropriate directory and issue the command:
LF SPOFILE(/FRME),ALL
which should start by displaying one frame. The parameter ALL causes the LF command to stop at the end of each frame (indicated by *+*+ which is automatically inserted by SPOOLJOB). To continue with the next frame, type ACCEPT (CTRL-SHIFT-K on the Tektronix). To terminate the LF command before the end of the file type CTRL-A followed by ACCEPT. If parameter ALL is absent, frames will appear in immediate succession. Any frames not required on the Tektronix can be omitted by the SPOOLJOB macro without being lost from the spool.
The following should be noted about conversion from FR80 to Tektronix:
When users' jobs are removed from the spool, the normal action is to copy all jobs for the camera specified by the operators. However, if the user discovers that his job need not be plotted, he can specify explicitly that the job should be erased. It is not to anyone's advantage to plot an unwanted job, since materials are wasted and the user will be accounted for FR80 resources used. The user can specify that the action-on-removal be ERASE or PLOT (which is the default). This can be specified either by subroutine call while the job is being run (see Section 5.5) or with the macro SPOOLJOB before or after the job is viewed (Section 5.4).
Normally the FR80 control data for a user's job remains in the spool until an operator-initiated job removes it (ie either PLOTs or ERASEs it). Until this occurs, the user can run SPOOLJOB to view a job or reverse any action-on-removal previously specified. The user can find out when the job is likely to be removed by consulting the FR80 camera schedule (FR80 User Note 4) and may find that this allows enough time to view the job before it disappears.
If the user needs more certainty however, it is possible to delay the removal of the job for a period which the user can specify by subroutine call (Section 5.5) and keep or zero it with the SPOOLJOB macro (Section 5..4). The delay plus the time at which the user's binary initialises the graphics package (this is given on the lineprinter output from the package) gives an earliest-removal-time. The job will not be plotted before this.
The delay should not be made longer than necessary since the user may miss a scheduled camera run and also unnecessarily delayed jobs will jam the spool thus preventing other jobs from using it. If it is found that jobs are unnecessarily hogging space in the spool, the delay facility may have to be modified.
The macro SPOOLJOB is in :MACROS. It can be called directly (if no file called SPOOLJOB is in the user's filestore) thus:
SPOOLJOB jobidentifier,frameparameter,frameparameter,...,- actionparameter,delayparameter,jobtime
FRAMESp Frame p FRAMESp-q Frames p to q FRAMESp-END Frames p and all following frames are extractedIf any frameparameter is present, then all frames specified are sent to SPOFILE(/FFME) in the current directory (current when SPOOLJOB is called). To list it, see Section 5.1.
PLOT job will be plotted when delay has expired. ERASE job will not be plotted. It will be erased as soon as possible, unless a delayparameter is present.
DELAYIf DELAY is present (and ERASE is present), any delay previously applied to a job is kept. This is only required if the user wishes to subsequently access the job again. The DELAY parameter should only be used if definitely required by the user; unnecessary use of DELAY causes a job to hog space in the spool. If ERASE is absent the existing delay is kept whether or not the DELAY parameter is present.
JTtime where time is any valid JT parameter. This parameter is only used, if the user is not issuing a RUN JOB directly, and specifies a JOBTIME for the SPOOLJOB run. If no frameparameter is present, 5 SECS may be sufficient; if frameparameter is present, 30 SECS is normally more than sufficient (depending on the amount of information to be converted).
If the user is issuing a RUNJOB directly, the JT parameter must of course be included in the JD scheduling parameter (D.2.4 and I.4.3 of the 1906A Reference Manual).
By default, a user's graphics program will set the delay to be zero and the action-on-removal to be PLOT. For the user who does not want to preview his graphical data, this is sufficient. If the data is to be viewed however, the SPOOLJOB macro may not be issued in time before the data is removed and sent to tape.
Therefore in SPROGS and SMOG, routines called DELAY (which takes an INTEGER parameter and specifies the delay in minutes) and ERASE (with no parameters, which sets the action-on-removal to be ERASE) are provided (see FR80 User Note 6 or the SMOG Manual). In GROATS, one procedure DELAY is provided which takes one integer parameter specifying the delay in minutes (see FR80 User Note 2). ERASE is not provided in GROATS, but the SPOOLJOB macro can be subsequently applied to set action-on-removal to be ERASE.
It is possible for DELAY to appear in the program more than once so that if the program fails in a way which the package is able to detect (for example an execution error) a different delay can be specified than if the program is successful. When using SPROGS and SMOG, it is possible to call DELAY before an FR80 camera is selected; if this is done a delay is set even if the job fails in a catastrophic manner (for example JOBTIME EXCEEDED).
Remember - do not use DELAY if you do not require it and do not use a longer delay than you need. Excessive use of delay may prevent subsequent jobs from using the spool (which can only take a fixed number of jobs).
Suppose that the FR80 is to be used, but the user wishes to check first that the graphical data is satisfactory and to erase it if erroneous.
Step (a): Include in the program, a call to set a suitable delay (say 1.5 hours).
In SMOG, SPROGS or SCFR80 CALL DELAY(9) In GROATS DELAY(90);
Step (b): Run the job in the usual way, but also include some means of signalling that the job is complete, for example:
SMOG *CRExAMPLESMOG,#LP6INFO,JT30SECS
This creates a job SMOGOPHAMME if logged in as MOPHAMMER
Step (c): Check contents of file INFO which should contain details from SMOG when the job is complete.
Step (d): Run SPOOLJOB to obtain required frame{s), for example:
SPOOLJOB SMOGMOPHAMME,FRAMES6,JT10SECS
Step (e): When SPOOLJOB has been run, display the resultant file on the Tektronix:
LF SPOFILE(/FRME),ALL
Step (f): If the data is satisfactory, then we want the job to be plotted. No further action need be taken. If the data is erroneous, then we do not want it plotted:
SPOOLJOB SNOGMOPHAMME,ERASE,JT5SECS
Suppose that the user expects more than one debugging and that if there are failures the output should not be plotted. If the program terminates correctly, then the user may want a longer delay in order to change the action-on-removal to PLOT.
Step(a): Include in the FORTRAN program (which uses SMOG or SPROGS), calls to DELAY and ERASE, for example:
C DELAY BEFORE FR80 CAMERA SELECTION WILL SURVIVE JOBTIME FAILURE CALL DELAY(90) CALL ERASE C PRECISION 16MM CAMERA CALL FRPR16 ... C HERE IF PROGRAM APPEARS TO HAVE EXECUTED CORRECTLY C DELAY REPLACE FORMER DELAY CALL DELAY(150) CALL ENDSPR STOP END
Step (b): Run; the job in the usual way for instance (from no-user context):
RJ MOPPOE,:ABCDEF,:MACROS.SPROGS,PARAM(*CREXAMPLESPR),JD(JT30SECS)
Step (c): This step depends on whether the program halted in an apparently successful way. If it did not (case 1), we want to view it on the Tektronix and set the delay to zero, for example:
SPOOLJOB MOPPOE,ERASE,FRAMES3-END,JT30SECS
If the program appeared to be successful (case 2) (the correct STOP was obeyed for instance), we want to view one key frame but still delay in case we decide to plot the job, for example:
SPOOLJOB MOPPOE,FRAMES41,JT10
Step(d): When SPOOLJOB has been run, display the resulting file on the Tektronix:
LF SPOFILE(/FRME),ALL
Step(e): Case 1: Nothing more to do.
Step(e): Case 2: If the Tektronix display was not satisfactory, we erase the job as soon as possible:
SPOOLJOB MOPPOE,ERASE,JT5SECS
If the Tektronix display was satisfactory, we want to plot the job:
SPOOLJOB MOPPOE,PLOT,JT5SECS
1906A Reference Manual (December 1974)
SMOG Manual (to be issued June 1975)
SPROGS Manual (January 1974) and SPROGS Supplement (January 1975)
FR80 User Note 6 - SPROGS Supplement for the FR80 (May 1975)
GROATS - A graphical output package on the 1906A (June 1973)
FR80 User Note 2 (May 1975) (modifications to GROATS for the FR80)
FR80 User Note 4 (May 1975)
FR80 User Note 5 - "SCSIM" - Simulating the "1900 FORTRAN System for the SD4020" to use the FR80 (May 1975)