Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ OverviewUser Note 1User Note 2User Note 3User Note 4User Note 5User Note 6User Note 7User Note 8User Note 9User Note 10User Note 11User Note 12User Note 13User Note 14User Note 15User Note 16User Note 17User Note 18User Note 19User Note 20
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureProgress ReportsFR80 User :: FR80 User Notes
ACLLiteratureProgress ReportsFR80 User :: FR80 User Notes
ACL ACD C&A INF CCD CISD Archives
Further reading

OverviewUser Note 1User Note 2User Note 3User Note 4User Note 5User Note 6User Note 7User Note 8User Note 9User Note 10User Note 11User Note 12User Note 13User Note 14User Note 15User Note 16User Note 17User Note 18User Note 19User Note 20

User Note No 3: Spooling system for FR80 output on the 1906A

J R Gallop, A W Burraston

21 May 1975

DISC OR MAGNETIC TAPE?

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.

LINEPRINTER OUTPUT FROM A GRAPHICS JOB

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.

SIZE RESTRICTION

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.

RUNNING JOBS USING THE SPOOL AND USING TAPE DIRECT

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.

SMOG Examples

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)

SPROGS Examples (note macro name)

The examples are exactly the same as SMOG with the macro name changed to SPROGSF (not SPROGS).

GROATS Examples (note macro name)

Example 1: GROATF *CREXAMPLEGROAT
Example 2: GROATF *CREXAMPLEGROAT,#MT14(?,GRAPHICSDATA)
Example 3: RJ MOPCRISPIN,:ABCD99,:MACROS.GROATF,-
             PARAM(*CREXAMPLEGROAT,OPT,#LP2INFO,EJ),-
             JD(JT40)

SCSIM Examples (note macro name)

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)

VIEWING SPOOLED GRAPHICAL DATA

5.1 Viewing

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:

  1. Multiple frame advance is translated as a single frame advance.
  2. The 0+16383 square raster of the FR80 is mapped onto the largest central square on the Tektronix and a square is drawn to bound this area.
  3. FR80 dotted line orders are drawn solid on the Tektronix.
  4. Text scaling and rotation can be generated as special orders on the tape (and spool). These orders are ignored on the Tektronix due to hardware limitations and thus text is not scaled or rotated.

5.2 Action-on-removal: PLOT or ERASE

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).

5.3 Delaying a Job in the Spool

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.

5.4 The SPOOLJOB macro

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
Parameters
jobidentifier
must be present and must appear first. It takes one of 2 forms, jobname or number (say n) and identifies which job on the spool is to be accessed. SPOOLJOB searches for the job username.jobname (where username is the current user) or searches for the nth job on the spool, where n is the JOB NUMBER in the lineprinter output from the graphics job (see Section 2). If there are 2 jobs of the same name, the user should refer to the job by number.
frameparameter
is optional and can appear up to 10 times This specifies which frames to extract. No embedded spaces are allowed in the parameter.
FRAMESp        Frame p
FRAMESp-q      Frames p to q
FRAMESp-END    Frames p and all following frames are extracted
If 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.
actionparameter
can appear once or be absent. If absent, then the previous setting of PLOT or ERASE is kept (Section 5.2). If present, it can be:
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.
delayparameter
is optional and is only significant if ERASE is present. Its format is:
DELAY
If 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.
jobtime
is of the form:

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).

Control of delay and action-on-removal from a graphics program

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).

5.6 Two methods of viewing

Method 1

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
Method 2

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

OTHER DOCUMENTATION

1906A

1906A Reference Manual (December 1974)

SMOG

SMOG Manual (to be issued June 1975)

SPROGS

SPROGS Manual (January 1974) and SPROGS Supplement (January 1975)

FR80 User Note 6 - SPROGS Supplement for the FR80 (May 1975)

GROATS

GROATS - A graphical output package on the 1906A (June 1973)

FR80 User Note 2 (May 1975) (modifications to GROATS for the FR80)

FR80 Camera Schedules

FR80 User Note 4 (May 1975)

SCSIM

FR80 User Note 5 - "SCSIM" - Simulating the "1900 FORTRAN System for the SD4020" to use the FR80 (May 1975)

⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site