Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Forword and contents1. Introduction2. Plotting a graph3. Device and coordinate selection4. The Graphics Library (New routines)5. Miscellaneous notesAppendices and references
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureICL 1906A manualsSMOG
ACLLiteratureICL 1906A manualsSMOG
ACL ACD C&A INF CCD CISD Archives
Further reading

Forword and contents
1. Introduction
2. Plotting a graph
3. Device and coordinate selection
4. The Graphics Library (New routines)
5. Miscellaneous notes
Appendices and references

5. MISCELLANEOUS NOTES

This section contains descriptions of many of the pitfalls that have trapped the author in the process of preparing the primer. It also contains all those little bits of information that do not warrant a chapter to themselves and at the same time, do not fit nicely into any of the other chapters.

5.1 Microfiche Output

The microfiche camera is one of the cameras on the FR80 but it has several fundamental differences as far as the user is concerned. Firstly, the film is not returned as a roll of film like the hardcopy, 16mm or 35m film, it is returned as individual fiche/frames having been separated by the operators. Secondly, each fiche is viewed within a special viewer so that the correct magnification is obtained. The individual fiche contain hundreds of pages/subframes and it is these pages that are viewed in the microfiche viewers. The third difference is that fiche are usually viewed in "comic" mode which means that X is along the length of the film and Y is across the film (see 5.3).

5.1.1 FR80 camera number 6

To cope with the oddities of the microfiche camera, camera number 6 to SMOG and SPROGS, several extra routines have been written, some of which are described below. To enable the FR80 operators to identify the fiche, the users identification number is written along the top in large eye-readable letters. The fiche are numbered in case any job should produce more than one. It is also possible for the user to output a title to the fiche so that at a later date, each fiche is easily identifiable. To output a title, call the routine FCHTLE(N,STR) where N is the number of characters in the title and STR is the string of characters. This routine must be called before the microfiche camera is selected.

To ensure that output appears the right way up it has to be rotated through ninety degrees and, as usual, there are several ways to do this. To select the equivalent of the CINE area as used for the other FR80 cameras one calls the routine CMCINE. Similarly, APER and ABUT ([6]3.4) should be replaced by calls to CMAPER and CMABUT. If one is working in device co-ordinates, region zero in SMOG, then a call to COMIC (I) with I=1 will ensure that X is across the page and Y is up the page.

To select the microfiche camera one can use any of several methods, see Section 3.1, the three examples given below are the simplest to use:

      CALL FRMFCH 
   or
      CALL DVALL (6) 
   or
      CALL STSPR
      CALL CAMERA (6.0)
      CALL DVOUT (1.0) 

The last method is only available to SPROGS users.

5.1.2 Bulk output device

This method of listing "large" files to microfiche on the 1906A does not actually use SMOG or SPROGS but is included here for completeness. A modification has been made to the LISTFILE command so that output destined for the microfiche camera is stacked in the queue for the lineprinter with PROPERTY FICHE ([1] section F.2.1). A program is run at frequent intervals to dump all the files that are destined for the fictitious lineprinter at FICHE onto a magnetic tape in the right format for the FR80. In other words, it is a fiddle that beats the system and all the above implies is that one extra parameter is added to a LISTFILE command to direct a file to the microfiche camera. The following examples will give a better idea of what is required:

LISTFILE LONGFILE1,*LP,PROPERTY FICHE
LF LONGFILE2,*LP,FROM 1000,LINES 15000,PR FICHE

A few notes on the second example will make it a lot clearer; LF is the abbreviation for LISTFILE, PR is the abbreviation for PROPERY, 15000 lines of output starting at line 1000 of file LONGFILE2 will be output to microfiche. As' each page holds 44 lines, this volume of output will only require two fiche with the second about half full. On the lineprinter this volume of output would have required over 300 pages, giving a pile of paper over an inch thick.

5.2 Using The Tektronix 4010 Display Unit

The Tektronix 4010 storage display unit can be used as an ordinary MOP terminal or it can be used to display pictures. One uses the LISTFILE (LF) command to display pictures, which have already been generated, but this is explained in Section 5.2.3.

5.2.1 The Tektronix in a SMOG or SPROGS program

One selects the Tektronix in a SMOG or a SPROGS program as described in section 3.3. As well as selecting the Tektronix in the program, an extra parameter has to be passed to the graphics macro. The parameter is #TP0 filename (ALLCHAR) for example:

SMOG *CR PROGRAMFILE,#TP0 TEKFILE(ALLCHAR)

will compile, consolidate and run the program in the file PROGRAMFILE and the graphical output, destined for the Tektronix, will be stored in the file TEKFILE. The significance of the (ALLCHAR) qualifier of the parameter is that the file is not of a standard type (file types are explained in [1]C.3.1). When the program has run the Tektronix output will be stored in the associated file. For example, the file TEKFILE has been used above. There is another method of producing Tektronix files and this is described in the next Section.

One small point to note about the Tektronix is that if a user, for example, defines his coordinate system by calling LIMIT with the arguments (0.0,0.0,4.0,4.0) and then draws a circle of radius 2 units about the point (2.0,2.0) he will have drawn an ellipse. The reason is quite simple, the Tektronix has a rectangular screen and when LIMIT was called it set both the x-axis and the y-axis to be 4 units in length.

5.2.2 Output from the SPOOLJOB Macro

If one has run a job which produces output for any of the FR80's cameras, it is possible to have a quick look at some of the frames to check it (see section 5.4), provided that it is still in the spool area. There are ways to ensure that it stays in the spool area, see section 5.4. To select the 6th, 9th and 10th frames of a job in the spool, assuming the job ran as MYMOPJOB, would require the following:

SPOOLJOB MYMOPJOB,FRAMES6,FRAMES9-10,JT20

The three frames are copied to a file called SPOFILE which is an ALLCHAR file, as all files of graphical output for the Tektronix must be. The next section describes how to list these files on the Tektronix.

5.2.3 Graphical output at a Tektronix

Once a job has produced a Tektronix output file, it is ready for displaying on the Tektronix. One has to LOGIN to MOP on a Tektronix as usual and then use the LISTFILE command to display the file, for example:

LISTFILE TEKFILE,ALL
or
LISTFILE SPOFILE,ALL

would display the files TEKFILE or SPOFILE. The parameter ALL is not necessary but it does have a useful feature in that it stops the listing at the end of each frame. If one wishes to look at the next frame type ACCEPT (CTRL/SHIFT/K on the Tektronix). When one has looked at a few frames it is possible to abort the listing rather than continue to the end of the file. This is achieved by CTRL/A followed by ACCEPT. Finally, if one is timed out CTRL/A reverts the terminal to expecting ACCEPT to continue or CTRL/A and ACCEPT to terminate.

In a Tektronix file the end of a frame is marked by *+*+ regardless of whether it was generated by SMOG, SPROGS or SPOOLJOB. An example Tektronix file is stored in :GRAFEX.TEKOUT9 and can be displayed as follows:

LISTFILE :GRAFEX.TEKOUT9,ALL

Note: remember to erase old and unwanted files.

5.3 What Is "Many-Up" Hardcopy?

"Many-up" hardcopy is a facility for preventing excessive wastage when using the FR80's hardcopy camera. It is particularly recommended for users who are producing test runs with just the odd frame of output. It is not often that a user wants or needs the full 12" width of the hardcopy frame, it is just as useful to plot several pictures on this frame. All the examples in the primer requiring hardcopy use it in the standard many-up mode of two pictures/subframes in the x and y directions, that is, four pictures per frame.

To output more than the standard four subframes per frame, requires a call to the routine MANYUP (IWIDE, IDOWN) where IWIDE is the number of subframes across the frame and IDOWN is the number down the frame. This routine must be called before FRHCM is called. It is advisable to have IWIDE greater than or equal to IDOWN when in "cine" mode or the opposite when in "comic" mode because parts of subframes have been lost due to the camera not photographing the whole tube face. This fault in the FR80's operating system may eventually be removed, but was present at the time of going to print. If IWIDE is not equal to IDOWN, for example:

      CALL MANYUP (4,2)

then the shape and size of area used for each subframe is the same as if they were both equal to the larger, in this example 4. In other words, it is pointless to have IWIDE unequal to IDOWN as this wastes paper.

One final warning about the use of "many-up". If comic mode is selected at any stage during a run, the position of the next frame may alter unexpectedly. The diagram shows the positioning of the standard 2×2 "many-up" subframes in both "cine" and "comic" modes:

Many-up

Many-up
Full image ⇗
© UKRI Science and Technology Facilities Council

Thus, if one selects "comic" after frame two, then frame three will occupy the same place as frame one.

5.4 The Spool And SPOOLJOB

The spool area is an intermediate storage area where output for FR80 jobs is kept until several jobs destined for the same film type are dumped onto magnetic tape ready for plotting on the FR80. The operators ensure that the spool does not fill up with too many jobs. This method saves the user from worrying about how his output is transferred from the 1906A to the FR80. The maximum size of job that can go to the spool is just over 1300 records and if a user is outputting a job larger than this, then he will need to use a magnetic tape of his own, see section 5.6 for more details. (The spool and the SPOOLJOB are described in detail in [8] 3 and 8).

The example program following in this section produces output for black and white 35mm film and whenever possible, the integer version of the routines is used, for example, JVEC is used instead of VEC. The cine area for the camera is selected and the user limits chosen range from (0,-5) to (10,5). Four lines are drawn around the edge of this area and then a circle is drawn (CIRCLE is one of the routines that does not have an integer version, see [6] section 9.1.6). Two diagonal lines are drawn and the film is advanced to the next frame. For this frame the area is nominally divided into three rectangles. In the top rectangle, which is ten units wide by three units high, lines are drawn vertically at one, unit intervals using the vector family command. The first four arguments define the first line, the next four define the last line and the last argument defines how many lines are to be drawn. In total, eleven lines are drawn splitting the rectangle into ten sections. The second rectangle is again ten units wide, but it is four units high. It illustrates what happens when the second line is defined, parallel to the first, but drawn in the opposite direction, the lines between are still parallel but they decrease to a point in the middle. The third rectangular area is used to illustrate relative orders. Two identical relative vector family orders are drawn but the starting position is controlled by a call to the JSETXY routine, that is, a relative order is related to the last known position.

The above is a description of two frames of output destined for the FR80's black and white 35mm camera. The output is stored temporarily in the spool and to ensure that it is not removed from the spool before a run of SPOOLJOB it is advisable to keep it there for at least an hour. To do this, a call to the routine DELAY with an integer argument of minutes is used. In the example, an hour is used:

      CALL DELAY (60)

The run is terminated as usual by a call to ENDSPR which releases the SPOOL disc as soon as it has emptied the buffers. Thus it is very important to call ENDSPR as soon as possible, especially if much computation is to be done after the graphics is completed. It will prevent unnecessary delay to other users and any more of ones own jobs as well. The complete program is shown below:

5.4.1 The program file is GRAFEX.CODEFOR35MM

      LIST
      MASTER PROGRAM
C---------------------------------------------
C  IN THIS EXAMPLE THE OUTPUT WILL NOT REACH THE
C  FR80 BECAUSE IT WILL BE  EXTRACTED FROM THE
C  SPOOL AREA BEFORE IT CAN BE PLOTTED
C----------------------------------------------
C
C  SELECT THE 35MM CAMERA AND CINE AREA.
      CALL FRBW35
C  USE THE INTEGER VERSION OF THE ROUTINES IN THE
C  EXAMPLE ON LINEPRINTER GRAPHICAL TO OUTPUT
C  A CIRCLE, A SQUARE AND ITS DIAGONALS
      CALL JLIMV (0,-5,10,5|)
      CALL JVEC (0,-5,10,-5)
      CALL JTOY (5)
      CALL JTOX (0)
      CALL JTOY (-5)
      CALL CIRCLB (5.0,0.0,5.0,30.0,0.0)
      CALL JVEC (0,-5,10,5)
      CALL JVEC (0,5,10,-5)
C  NOTE THAT THE CIRCLE ROUTINE DOES NOT HAVE AN
C  INTEGER VERSION -- ANOTHER FRAME
C  USING THE VECTOR FAMILY ROUTINES TO DRAW SETS OF
C  LINES      CALL ADVFLM
      CALL JVECFR (0,2,0,5,10,2,10,5,10)
      CALL JVECFR (0,-2,10,-2,10,2,0,2,8)
      CALL JSETXY (0,-5)
      CALL JVECFR (5,0,0,3,5,3,6)
      CALL JSETXY (5,-5)
      CALL JVECFR (5,0,0,3,5,3,6)
C  MAKE SURE THE JOB IS NOT DESPOOLED BEFORE IT IS
C  EXTRACTED  --  KEEP IT FOR AN HOUR
      CALL DELAY (60)
C  TERMINATE PLOTTING
      CALL ENDSPR
      STOP
      END
****

5.4.2 Command to run job

The command is similar to all the others where there is a FORTRAN program to be compiled and output destined for the FR80. The command used for this example was:

TASK SMOG,*CR:GRAFEX.CODEFOR35MM,*LP,#LP6,JT20

5.4.3 Extracting the output from the spoolb

The call to DELAY (60) in the program, ensures that the FR80 output in the spool area will stay there for at least an hour. There are many ways a remote user can tell if a job has finished or not. One the author uses quite often is to search the LOG ([9]46) file using the SEARCH macro ([9]59.4). If logged in the following command sequence is quite easy to use:

SEARCH LOG
PE
P-1,W
Q

The four lines are separated by terminal responses and the effect of the command sequence is to list the last entry in the LOG file. Since the entries are in chronological order, it should be fairly easy to determine if the relevant job has completed or not.

Once it has been established that the graphics job has terminated, it is then possible to extract the FR80 output from the spool. The effect is to convert the FR80 output into a form suitable for listing at a Tektronix terminal. The command issued to accomplish this is:

SPOOLJOB SMO-DAVEMOP,FRAMES1-END,JT10,ERASE

The first parameter SMO-DAVEMOP is the name of the job that produced the FR80 orders. FRAMES1-END literally means copy from frame one to the last frame. A jobtime of ten seconds (JT10) is quite sufficient. The ERASE parameter is included to prevent the output from going to the FR80. The file with the default name of SPOFILE is used to hold the output for the Tektronix. It is best to use the default filename of SPOFILE so that each use of SPOOLJOB will use the same file and thus will not create lots of files, most of which only need to be looked at once.

When the job has finished it is possible to look at the output on a Tektronix terminal by listing the file. In the example, this is achieved by:

LISTFILE SPOFILE,ALL

The parameter ALL causes the file to be listed a frame at a time. To display the next frame type ACCEPT (that is CTRL/SHIFT/K) and to terminate a listing part of the way through type CTRL/A and then ACCEPT.

A copy of the example output has been stored in the file :GRAFEX.SPOFILE and can be displayed by typing the following when logged in on a Tektronix:

LISTFILE :GRAFEX.SPOFILE,ALL

5.5 Lineprinter Graphical Output

Lineprinter graphical output is another method of checking that graphical output looks reasonable without having to wait for the delay caused by the FR80. In the case of remote users, the delay is caused more by waiting for post than waiting for the output to be plotted. For this reason, the cine area of lineprinter graphical is 0 to 69 in the x and y directions. Now, it just so happens that this produces a file which will easily fit onto a teletype. In a similar way to using the Tektronix, once the graphics job has finished it is then possible to list the output on the teletype, for example:

LISTFILE :GRAFEX.LPGFRAME

will output the lineprinter graphical file called LPGFRAME stored in directory :GRAFEX, see section 5.5.2.

To select lineprinter graphical it is easiest to use the following:

      CALL LPGRAF

Select the cine area as the output is destined for a teletype although it could still be plotted on the lineprinter. The output is a square and its diagonals plus a circle. The run is then terminated in the usual way, by:

      CALL ENDSPR 

The completed example program is shown below:

5.5.1 Example program, file is GRAFEX.LPGRAPHEX

      LIST
      MASTER TEST
C-------------------------------------------------------------
C   THIS EXAMPLE SHOWS HOW TO USE A TELETYPE FOR A 
C   QUICK CHECK ON THE GRAPHICAL OUTPUT.
C----------------------------------------------------------
C   SELECT LINEPRINTER GRAPHICAL
      CALL LPGRAF 
C   CHOOSE AN OUTPUT AREA SUITABLE FOR A TELETYPE.
      CALL CINE 
C   SELECT SUITABLE USER LIMITS.
      CALL LIMITV (0.0,-5.0,10.0,5.0)
C  OUTPUT A RECTANGLE, A CIRCLE AND A FEW LINES. 
      CALL VEC (0.0,-5.0,10.0,-5.0)
      CALL TOY (5.0)
      CALL TOX (0.0)
      CALL TOY (-5.0)
      CALL CIRCLB (5.0,0.0,5.0,30.0,0.0)
      CALL VEC (0.0,-5.0,10.0,5.0)
      CALL VEC (0.0,5.0,10.0,-5.0) 
C  TERMINATE PLOTTING
      CALL ENDSPR
      STOP
      END

5.5.2 Teletype listing (photographically reduced)

Teletype Output

Teletype Output
Full image ⇗
© UKRI Science and Technology Facilities Council

As can be seen from the two times 09.26.30 and 09.35.03, it took 8½ minutes to list it to the teletype. So, although there is an improvement in the turnround it is not advisable to output more than one or two frames for any run. It is also advisable not to try and output too much information to lineprinter graphical as the plotting is very coarse and it would be difficult to sort out which is what. The other point about using the lineprinter or a teletype is that the frame is about twice as high as it is wide and hence distorts the picture.

5.5.3 Command to run job

The command issued whilst logged in was:

TASK SMOG,*CR:GRAFEX.LPGRAPHEX,#LP1LPGFRAME,*LP,JT20

where #LP1LPGFRAME causes the lineprinter graphical output to be stored in file LPGFRAME, A copy of this file is in the directory :GRAFEX and can be sent to the lineprinter by:

LF :GRAFEX.LPGFRAME,*LP

or on a teletype by:

LF :GRAFEX.LPGFRAME

assuming one is logged in at a teletype, of course.

5.6 Large Jobs To Magnetic Tape

Why use magnetic tape when the output can go the the SPOOL disc? Well, each job that uses the SPOOL writes to a fixed area on the disc. These areas are currently 1315 records long and each record contains 340 FR80 orders. Any job that is too big for the SPOOL, as can be seen from the above figures, is outputting at least half a million FR80 orders. Although this sounds like a lot of information, some users require this for a single frame of output. To estimate how large a job is going to" be, use the FR80 order summary ([6] appendix 4), for example, a call to VEC will use four orders whereas a call to TOXY will only use two orders. An example of a job that will fill the SPOOL is one that is outputting more than 100,000 lines using calls to VEC. This may seem a lot until you consider putting the tick marks on a graph like this. One wouldn't do it this way of course, one would use vector families.

Is it possible to fill a magnetic tape? Well, a standard (2400 ft) 7-track tape will hold at least 8000 records, similarly a standard (2400 ft) 9-track tape will hold 20,000 records. The user who usually has problems is one producing "just a couple of minutes of film". Each second of film needs 24 frames and so a couple of minutes needs about 3000 frames which means that if each frame is about 7 records long, then the job will fill a 9-track tape.

Summarising, most jobs will fit into the SPOOL especially test runs of just a few frames. Of the remaining jobs most will fit onto one magnetic tape but the occasional large job will require more than one tape. The next section explains how to direct the FR80 output to a magnetic tape rather than the SPOOL and the final section explains how to use more than one tape.

5.6.1 FR80 output using one magnetic tape

The FR80 output by default uses the SPOOL disc. If this is not large enough, one has to direct output to a magnetic tape. To do this requires one extra parameter to be passed to the macro, neither the program nor the Program Description segment need to be altered in any way. To use magnetic tape requires a tape budget ([1] I2.2.2). For the rest of-this section, the example user has a budget of five tapes of which two are being used. To output the FR80 orders using a new 7-track tape and calling it FR80OUT would require the following parameter:

#MT14(?,FR80OUT(PRTRACK7))(WRITE) 

To use a new 9-track tape and call it MYTAPE would require the following:

#MT14(?,MYTAPE(PRTRACK9))(WRITE)

To use an already "owned" 7-track tape number 7000010, called GREENFLY, one could use any of the following:

#MT14(7000010)(WRITE)
#MT14(GREENFLY)(WRITE)
#MT14(7000010,GREENFLY)(WRITE)

If the 9-track tape allocated as MYTAPE was number 1243 then this could be used again by adding any of the following:

#MT14(1243)(WRITE)
#MT14(MYTAPE)(WRITE)
#MT14 (1243,MYTAPE) (WRITE)

If, for example, the histogram job in section 2.6.2 needed to use magnetic tape and the tape was a "new" 9-track tape to be called HISTOUT then the following job could be issued:

TASK JT30, SMOG,*CR:GRAFEX.PROGRAM6,#MT14 (?',HISTOUT(PRTRACK9)) (WRITE)

All FR80 output going directly via magnetic tape uses channel fourteen, hence the #MT14 part of the parameter. The ? is used when the tape serial number is not known to GEORGE, that is, a new tape is to be acquired. If a ? is used the (PRTRACK7) for 7-track tape or (PRTRACK9) for 9-track tape is needed, but if it does not matter what sort of magnetic tape is used, then this part need not be given. The (WRITE) qualifier should always be given to ensure that the tape is mounted with a "write permit ring" on.

5.6.2 Very large jobs needing more than one magnetic tape

There are two ways to route FR80 output to more than one tape. The first method is to split the job into a set of smaller jobs where the output from each fits comfortably onto a tape. The second method is for the job to check how full the tape is and at the appropriate moment, ask for another one.

Two routines have been written for the user who wants more than one tape in a single job ([8] 16). The first, BLCNTP (IREC,ITYPE), returns the number of records written as IREC and the tape type as ITYPE, that is, ITYPE is one for a 9-track tape, zero for a 7-track and negative if a tape is not being used. The second routine NEXTAP should be called when the tape is almost full, that is, IREC is greater than 20,000 records for a 9-track tape or IREC is greater than 8000 records for a 7-track tape. The number of records will vary according to the length of the tape.

Where multiple tapes are being used, the last order on each tape has to be an advance frame order so, it is best to call BLCNTP(IREC,ITYPE) after each call to ADVFLM to see if the tape is nearly full. When it is time to output to a new tape, it is advisable to use an error restart facility whereby all essential data is written to a file so that if one of the tapes is faulty or the job fails, for some reason, then it is possible to rerun just a part of the job and not duplicate all of the correct sections. When NEXTAP is called the current magnetic tape is released and a new one is "grabbed".

The first tape to be used is specified as usual by a #MTI4 parameter (see section 5.6.1). When a new tape is required, the reel number is increased by one and if the user has a tape of this name and reel number in the directory the job is running under, then this is used; otherwise a new tape is used. The job can use up to 10 tapes in all, so long as the reel number and the generation number are less than ten, the reel number is.a useful way of preventing errors caused by looping and continually calling NEXTAP. If the first tape is specified again in a subsequent run of the job, then the same set of tapes will be used.

⇑ 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