This manual was produced soon after the SC 4020 was installed at the Atlas Computer Laboratory (ACL). Prior to its arrival, ACL used the SC4020 recorder at Aldermaston and its own Benson-Lehner flat bed plotter for graphics. HARTRAN was the Fortran compiler on the Atlas computer.
The SC 4020 Computer Recorder records on microfilm and/or photorecording paper, digital information received from high speed computers via ½" magnetic tape. The information is displayed on the face of a special cathode ray tube known as a Charactron shaped-beam tube.
It is capable of accepting binary codes which it converts into combinations of alphanumeric printing, curve plots, and line drawings at speeds up to 17,000 alphanumeric characters per second or 7,000 printed lines per minute when used in the typewriter mode.
The SC 4020 records information on microfilm in a manner which provides compatibility with existing film storage retrieval systems. The microfilm camera employed for this purpose can be either a 16 mm or 35 mm camera which can be interchanged by the operator.
This mode of operation allows any of the 64 alphanumeric characters to be plotted at any point on a 1024 by 1024 position matrix.
This feature allows the SC 4020 to draw a line from any addressable origin for a specified length and direction. The origin, length, and direction of the vector is specified by the received word.
This feature permits the SC 4020 to draw X and Y axes. The START POINT as well as the STOP POINT of drawn axes is determined by program control. Variable length axes are useful when it is desired to create grids, co-ordinates, etc., of various lengths.
This mode allows the SC 4020 to interpret the incoming word as six printable alphanumeric characters and to print each character one at a time in a typewriter fashion. Standard Typewriter Mode operation allows up to 128 characters per line and up to 64 lines per frame.
This feature allows the SC 4020 to super-impose fixed data on the variable data generated by the Charactron shaped beam tube. The fixed data are produced on a glass slide and can take the shape of a business form, map, drawing format, etc. The strobe light is flashed under program control.
This facility permits the manual rotation and accurate indexing of the tube at 0°, 90°, 180° and 270°.
This feature allows the programmer to select one of two predetermined format sizes. The NORMAL IMAGE size is for recording separated frames, whereas the EXPANDED IMAGE size is to allow the abutment of frames on microfilm in order to obtain presentations having continuity from frame to frame. The actual size of plotted characters remains constant, however, whilst the vectors and axes expand.
Permits a maximum of 31 repeats of a frame group and is useful for cine work.
The following information is given for completeness only
blank print after single line space 0 print after double line space 1 print starting at the top of a new page Any other no effect other than character is lost character
There are at the moment two software systems, both of which employ some basic Atlas code, and to re-code them for use on computers other than Atlas would involve a little effort. It would probably be worthwhile for installations having ½" magnetic tape capability (7-track at 556 b.p.i.) but not otherwise.
The HARTRAN Subroutine System (about 25 Atlas blocks, where 1 block = 512 instructions).
Out of 79 routines, 22 are in basic code (ASP). This system includes a high level FORTRAN subroutine for ease of producing graphs, obtained from A.W.R.E. Aldermaston.
The ALGOL Procedures At the present time these are as specified in The Atlas ALGOL System Manual, Atlas Computer Laboratory, July 1967, for the Benson-Lehner Model J. The differences in the output between the SC4020 and the B-L J are noted in SECTION IV.
It is planned to extend these facilities in the very near future to make full use of the SC4020 features, and to provide a high level procedure to simplify the production of graphs.
EMA, AA and other languages Information for plotting if generated according to the specification contained in the Graph Plotter Manual, Atlas Computer Laboratory, and SECTION IV of this manual, will enable these languages to have access to the SC4020. Unlike HARTRAN and ALGOL, a second pass is necessary and consequently the information must be recorded on Ampex 1" magnetic tape during the first stage.
The following must be included for successful execution:
i) Subroutine System OUTPUT 12 ANY 200 LINES OUTPUT 13 ANY 200 LINES TAPE 99 FORTRANLIB INHIBIT TAPE IBM 14 COMMON/SC/USER 'S NAME AND ADDRESS COMPILER HARTRAN *SC4020 ....... +LIBRARY 99,610 $ *UNLOAD 99$ *ENTER
When the discs become available on Atlas, the following three statements in the above may be unnecessary as far as using the SC4020 is concerned:-
TAPE 99 FORTRANLIB INHIBIT *LIBRARY 99,610 $ *UNLOAD 99 $
ii) Extended B-L J System OUTPUT 12 ANY 200 LINES OUTPUT 13 ANY 200 LINES TAPE IBM 14 COMMON/SC/USER'S NAME AND ADDRESS COMPILER HARTRAN
OUTPUT 12 ANY 200 LINES OUTPUT 13 ANY 200 LINES TAPE 99 ALGOLIB*PROTECT TAPE IBM 14 COMMON/SC/USER'S NAME AND ADDRESS COMPILER ALGOL INPUT INTERNAL ICT WITH ICT I/O PROCEDURES; Algol program
Graphical information is recorded on a 1" Ampex private output tape during the first pass. A suggested format is that of the Extended B-L J System since this will simplify the program required for the second pass.
In addition to diagnostics, the number of frames of hardcopy and microfilm, and lines of information will also be shown.
One frame each of hardcopy and microfilm will be produced for identification and added to the totals. If no other frames are recorded, the user will normally just receive O/S 13. Output Stream 12 will be retained by the operator for record purposes in every case.
Programs using HARTRAN or ALGOL will automatically, upon due notification to the users, produce equivalent graphs on the SC4020 with the limitations as noted in SECTION IV.
Those wishing to continue using the B-L J should obtain a copy of the original graph processing routine from Mr. P. Nelson (Telephone: Abingdon 1900, Ext. 4406).
In addition to the camera using photo-recording paper there will be a 16 mm cine camera. It is hoped that a 35 mm camera will also become available later, although slides can be made by the user from the results produced on the photo-recording paper.
It will normally be possible to have a job processed again if the Laboratory is informed within five days of the program being run on Atlas ('phone Ext. 6640). For longer delays, the customer should use a private ½" magnetic tape with its title replacing COMMON/SC/ in the Job Description.
This is a solid circle which the SC4020 places in the margin of the output when forced to proceed past an error condition (e.g. magnetic tape parities).
Six channel digital tapes are read at 200, 556 or 800 bits per inch. Compatible tape units include the IBM 729 II, IV, V, VI and 7330 plus UNIVAC IIIC, Collins, and others. The Laboratory will use an IBM 729 IV at 55bpi.
Accepts data from tape up to 90,000 characters per second. Assembles six-bit information from tape and arranges it into 36-bit words.
Displays the alphanumerics, curves, axes and vectors for recording purposes.
By tape control, fixed format from the forms projector can be superimposed on microfilm and photo-recording paper.
Records combined information from tube face and forms projector onto 16 mm or 35 mm film for archive storage, reproduction or group viewing.
Records combined information from the CSBT and forms projector simultaneously with the microfilm camera. The photo-recording paper must be processed (developed) before viewing. The processed copy may be reproduced for multiple copies.
The routines included in this section are provided in order to make using the SC4020 as simple as possible.
They divide into basic routines and a high level routine known as SCFOR.
The basic routines are further divided into five main categories, with the fifth receiving only a brief mention here, as it is dealt with in detail in SECTION III.
The SC4020 plots on a grid of 1024 horizontal by 1024 vertical points. The origin is in the upper left corner, with X and Y increasing to the right and downward as shown.
There are, therefore, over one million addressable positions. The centre of any character may be plotted at any of these positions. However, each character can occupy an amount of space that varies from a square of 3 horizontal by 3 vertical points used by a plotting dot, to a rectangle of 8 horizontal by 16 vertical points used by all characters in the typewriter mode.
(1) CALL IDST
Must be called before all other SC4020 routines with the exception of CAM35. Provides identification, Atlas time and date, plus a test frame for accuracy of alignment. Heavy density of recording is set; the camera using the photorecording paper ('hardcopy') is selected and advanced to a new frame, and the typing position is placed at X= 0, Y= 0.
(2) CALL IDEND
Must be called at the end of plotting. Gives identification, Atlas time and date on a new frame, together with a frame and line-count on Output Stream 13.
(3) CALL ADVFLM(I)
The selected camera(s) are advanced by one frame. I = 1, 2, and 3,respectively, causes the graph to be photographed on microfilm only, hardcopy only, or on both microfilm and hardcopy.
(4) CALL ADVAN
Advances the previously selected camera(s) one frame. It does not give a frame count, and sets up the typing position to X = 0, Y = 0. Subroutine SELECT(I) must be used prior to CALL ADVAN. By means of these two routines it is possible, for example, to build up a composite picture of several different graphs on one camera, whilst at the same time putting them out separately on the other.
(5) CALL ADVREP(I,N)
I = 1, 2and 3, respectively, selects the microfilm camera only, the hardcopy camera only, or both cameras, and repeats the information from this point back to the previous call of ADVRBP, N times.
(6) CALL CAM35
To be called at the start of a job before IDST if the 35 mm camera is required. This gives a message to the SC4020 operator that the 35 mm camera is to be mounted in place of the normal 16 mm cine camera.
(7) CALL ENDFME or CALL FINISH
Writes the buffer holding SC4020 commands to the magnetic tape, and should be called before changing to the Line Printer Simulator mode. (See Code Conversion Differences table)
(8) CALL EXPAND
The image is expanded and causes successive frames on the 35 mm camera only to abutt thereafter.
(9) CALL PROJF
Information on the form slide is superimposed on the current frame only, along with the data displayed on the tube.
(10) CALL REDUCE
The image is reduced and remains so until EXPAND is called.
(11) GALL RESET
Performs the functions of ADVANCE FRAME on the currently selected camera(s), STOP TYPE and EXPOSE HEAVY. No frame count is given and the typing position is set to X = 0, Y = 0.
(12) CALL REVERS
This reverses the software characters currently in use.
(13) CALL ROTATE(N)
Causes all the software characters currently in use to be rotated through Nπ/2 clockwise.
(14) CALL SAVEA
Signals the commencement of a save sequence for any following SC4020 subroutine calls. (SECTION III).
(15) CALL SAVEB
Ends the save sequence initiated by CALL SAVEA.
(16) CALL USEIT
Re-Outputs the information that was originally output by the SC4020 subroutine calls sandwiched between CALL SAVEA and SAVEB.
(17) CALL SELECT(I)
Selects (i.e. opens the shutter on) either the microfilm camera, hardcopy camera or both, with I =1, 2 and 3, respectively.
(18) CALL STPTYP
Stops the typewriter mode. Must be used immediately after a call of TSP or TCP.
(19) CALL SYSSET
Re-establishes the standard software character set with normal orientation.
(20) CALL MOVETP(X, Y)
Moves the typing position to the X and Y deflection specified.
(1a) CALL PLOT (X,CC,Y) (1b) CALL EXPHVY (X,CC,Y) (1c) CALL EXPLGT (X,CC,Y)
These three subroutines are similar in that they plot the character (CC) at the point specified by the X and Y deflections. The PLOT routine, however, operates in the density mode to which the SC4020 has been set, whilst EXPHVY and EXPLGT set the machine to heavy or light density respectively before plotting the point. The heavy density can only be changed by calling EXPLGT and vice-versa.
The character code is the decimal equivalent of the octal BCD code and a complete table is now given:
Character | Decimal Value | Character | Decimal Value | Character | Decimal Value |
---|---|---|---|---|---|
0 | 0 | E | 21 | . | 42 |
1 | 1 | F | 22 | $ | 43 |
2 | 2 | G | 23 | * | 44 |
3 | 3 | H | 24 | γ | 45 |
4 | 4 | I | 25 | ∼ | 46 |
5 | 5 | π | 26 | d | 47 |
6 | 6 | • | 27 | 48 | |
7 | 7 | ) | 28 | / | 49 |
8 | 8 | β | 29 | S | 50 |
9 | 9 | ± | 30 | T | 51 |
∂ | 10 | ? | 31 | U | 52 |
= | 11 | - | 32 | V | 53 |
" | 12 | J | 33 | W | 54 |
' | 13 | K | 34 | X | 55 |
δ | 14 | L | 35 | Y | 56 |
α | 15 | M | 36 | Z | 57 |
+ | 16 | N | 37 | ° | 58 |
A | 17 | O | 38 | , | 59 |
B | 18 | P | 39 | ( | 60 |
C | 19 | Q | 40 | ∫ | 61 |
D | 20 | R | 41 | Σ | 62 |
□ | 63 |
(2) CALL SIPLOT(X,CC,Y,N)
Will plot the character, CC, at the point specified by the X and Y deflections in the currently selected density, N times.
(3) CALL PLOTSC(X,N,Y,FACTOR)
Will draw the software character (N) at the point specified by the X and Y deflection, with size governed by FACTOR. (Please refer to SECTION III for more details).
(4) CALL VECTOR(XS,YS,XF,YF)
A vector (or straight line) is drawn from the point (XS,YS) to (XF,YF).
(5) CALL GXAXIS(X,Y)
An axis parallel with the X-axis is generated. It starts at the X and Y deflections specified and continues to the right edge of the grid. The minimum length is 1/16th of the full scale (or 64 plotting points). All axes subroutines have software protection for this condition built-in, thereby forcing an axis to start not less than 64 units from the edge.
(6) CALL GYAXIS(X,Y)
An axis parallel with the Y axis, originating at the X and Y deflections given and continuing to the top edge of the grid, is generated. The minimum length is 64 points.
Example: CALL GXAXIS(100,700) CALL GYAXIS(100,700)
(7) CALL XAXSTP(X,Y,XSTOP)
An axis parallel with the X axis is generated. It starts at the X and Y deflections specified and continues to the XSTOP point. The minimum length is 1/16th of full scale i.e. XSTOP > X+63.
(8) CALL YAXSTP(X,Y,YSTOP)
An axis parallel with the Y axis, originating at the X and Y deflections given and continuing to the YSTOP point, is generated. The minimum length is 6l, points i.e. YSTOP < Y-63.
Example: CALL XAXSTP(100,700,300) CALL YAXSTP(100,700,300)
(1) CALL TSP(X,CC,Y)
This routine will Type on Specified Point the character denoted by the character code, CC, at the point (X,Y). TSP can be used, while in the plotting mode, to fix the point on the grid from where one wishes to start printing e.g. a title. This is done by having CC specify a blank:-
CALL TSP(20,48,60)
The typing position is moved to the right by one character. Alternatively, MOVETP(20,60) could be used, in which case the typing position is not then moved to the right by one character. Note: CALL STPTYP must be used if changing immediately to a Plotting Mode routine or Software Character routine.
(2) CALL TCP
This routine will type a blank at the current point and move the typing position one character to the right. The current point is defined as the last point plotted, the current typewriter position, or the origin of the last axis drawn. This does not apply to VECTOR, or to PLOTSC which produces the character by means of vectors.
(3) CALL NEWLIN(I)
This routine gives I new lines.
(4) CALL NEWPAG
This routine gives a new page by advancing the film to the next frame. A line is automatically left blank at the top of the page i.e. leaving 63 lines available for printing. NEWPAG automatically sets the heavy density of recording, causes the page to be photographed on microfilm only, and moves the typing position to X=0, Y=16.
(5) CALL HORAM(X,I)
Will print A-mode characters horizontally from the current typing position. X is the word to be printed. I is the number of characters within that word. I < 8. If X represents an array where characters are stored in A1 format then 8 < I ≤ 128.
(6) CALL VERAM(X,I)
Prints A-mode characters vertically from the current typing position. The arguments are as in (5), except that with the A1 format 8 < I ≤ 64.
Example READ 1, (Z(I),I = 1,3) 1 FORMAT (3A8) CALL TSP(A,CC,B) D0 2 I=1,3 CALL HORAM (Z(I),8) 2 CONTINUE CALL TSP(C,CC,D) D0 3 I= 1,3 CALL VERAM (Z(I),8) 3 CONTINUE
(7) CALL C4020H
To print horizontally from the current typing position using this routine, two statements are required and they must be adjacent:
CALL C4020H PRINT 10
Where 10 is a format label of a format containing a Hollerith statement. The print statement is a parameter of the C4020H subroutine and does not cause normal printing unless jumped to without using C402OH.
(8) CALL C4020V
Prints vertically from the current typing position in a similar manner to C4020H, and has to include the adjacent PRINT statement.
(9) CALL C4020E(B,M,N)
Routine for outputting numbers in the E-type format from the current typing position. B is the variable whose value is to be printed. M is the field width of B. N is the number of decimal places required.
(10) CALL C4020F(A,K,L)
Routine for outputting numbers in the F-type format from the current typing position. A is the variable whose value is to be printed. K is the field width of A. L is the number of decimal places required.
(11) CALL C4020I(I,J)
Routine for outputting numbers in the I-type format from the current typing position. I is the variable whose value is to be printed. J is the field width of I.
(12) CALL C4020N(I)
The routine will produce I blank spaces.
(13) WRITE(14,f) list or WRITE OUTPUT TAPE 14,f,list
Will come out as horizontal or vertical lines of text on the SC4020, starting at the current typing position. For horizontal text, the first two characters in the record must be GT and the last π (-,8,3 card punch). For vertical text, the first two characters must be GV... and the last π. If the first two characters are GC then a carriage-return/line-feed is produced. If the first two characters are GQ a line-feed is produced.
For records with no 'G' in the first character position produced by either WRITE or WRITE OUTPUT TAPE statements, the SC4020 simulates a line-printer, with automatic line and page advance and carriage control.
To enable all records to come out in this mode (including-those with a 'G' in the first character position) they must be preceded by a record with GA in the first two character positions. To cancel this and return to the typing mode a record with 'G4' in the first two character positions is required.
When changing from this mode to any other and vice-versa, an automatic RESET occurs.
Note: If a GA record is not used, then CALL ENDFME must be used in order to empty the buffer before changing to the Line-Printer Simulator Mode. CALL ENDFME is not required, however, when changing from the LinePrinter Simulator Mode to any other.
Atlas Internal Code (Octal) | Anelex Printer Availability (Inner Set) | Line Printer Simulator (SC4020 Equivalent) |
---|---|---|
00 | . | None, unallowed character |
02 | Space | *None (δ) |
03 | . | *None (α) |
04 | Shift to Outer Set | *None (Carriage Return) |
05 | Shift to Inner Set | *None |
06 | .. | *None (Σ) |
07 | .. | *None(□) |
13 | π | * π ($) |
14 | ? | * ? (γ) |
15 | & | ' |
32 | < | ∫ |
33 | > | β |
40 | ' | " |
73 | . | None |
74 | . | d |
75 | . | *α (π) |
76 | . | ± |
77 | . | γ (?) |
* denotes a software alteration from the character given in brackets at the side.
Note: Unless the first character of a record is a it is lost.
carriage-control character (blank, zero or 1)(Please refer to SECTION III for full details)
(1) CALL TITLEH (LABEL,K,FACTOR,KOLUMN,LINE) (2) CALL TITLEV (LABEL,K,FACTOR,KOLUMN,LINE) (3) CALL LABELH (LABEL,K,FACTOR,KX,KY) (4) CALL LABELV (LABEL,K,FACTOR,KX,KY) (5) CALL PLOTSC (X,N,Y,FACTOR) (6) CALL SHLINE (LABEL,K)
A = A-mode DV = Decimal value of octal BCD F = Floating-point Number I = Fixed-point Number H = Heavy Density L = Light Density P = Plotting Mode T = Typewriter Mode C = Control Mode LP = Line-Printer Simulator Mode
Subroutine | Argument | Mode of Argument | Density on return from subroutine | Mode | Function |
---|---|---|---|---|---|
IDST | H | C | Identification | ||
ISEND | H | C | Identification | ||
ADVFKM | I | I | As on entry | C | Advances one frame |
ADVAN | As on entry | C | Advances selected frame | ||
ADVREP | I N | I I | As on entry | C | Repeat frames |
CAM35 | I | As on entry | C | Requests 35mm camera | |
ENDFME | As on entry | C | Empties buffer | ||
FINISH | As on entry | C | Empties buffer | ||
EXPAND | As on entry | C | Enlarges image | ||
PROJFM | As on entry | C | Projects forms slide | ||
REDUCE | As on entry | C | Reduce image | ||
RESET | H | C | Advances frame, stops typing mode, Exposes heavy | ||
REVERS | As on entry | C | Reverses software characters | ||
ROTATE | N | I | As on entry | C | Rotates software characters |
SAVEA | As on entry | C | Starts save sequence | ||
SAVEB | As on entry | C | Stops save sequence | ||
USEIT | As on entry | C | Uses save sequence | ||
SELECT | I | I | As on entry | C | Selects camera(s) Use with ADVAN |
STPTYP | As on entry | C | Use when changing to Plotting Mode after a TSP or TCP | ||
SYSSET | As on entry | C | Re-establishes standard software character set | ||
MOVETP | X Y | I or F I or F | As on entry | C | Moves typing position to X,Y |
TSP | X CC Y | I or F DV I or F | As on entry | T | Types one of 64 possible characters * |
TCP | As on entry | T | Types a blank at current point * | ||
NEWLIN | I | I | As on entry | T | Gives I new lines |
NEWPAG | H | T | Gives new page on microfilm only | ||
HORAM | X I | A I | As on entry | T | Outputs text horizontally |
VERAM | A | As on entry | T | Outputs text vertically | |
C4020H | Print Statement | As on entry | T | Outputs text horizontally | |
C4020V | Print Statement | As on entry | T | Outputs text vertically | |
C4020E | B M N | F I I | As on entry | T | Outputs number in E-type format |
C4020F | A K L | F I I | As on entry | T | Outputs number in F-type format |
C4020I | I J | I I | As on entry | T | Outputs number in I-type format |
C4020N | I | I | As on entry | T | Gives I spaces + |
WRITE (14,f) | List | Any | As on entry | T or LP | Outputs text (alternative toC4020H/V |
TITLEH | LABEL K FACTOR KOLUMB LINE | A I F I I | As on entry | P | Outputs software characters horizontally |
TITLEV | LABEL K FACTOR KOLUMB LINE | A I F I I | As on entry | P | Outputs software characters vertically |
LABELH | LABEL K FACTOR KX KY | A I F I I | As on entry | P | Outputs software characters horizontally |
LABELV | LABEL K FACTOR KX KY | A I F I I | As on entry | P | Outputs software characters vertically |
SCFOR | N AA BB CC DD | I F F F F | As on entry except for options 3 and 5 change to H | P and T | Facilitates the making of graphs |
PLOT | X CC Y | I or F DV I or F | As on entry | P | Plots one of 64 possible characters |
EXPHVY | X CC Y | I or F DV I or F | H | P | Plots one of 64 possible characters |
EXPLGT | X CC Y | I or F DV I or F | L | P | Plots one of 64 possible characters |
SIPLOT | X CC Y N | I or F DV I or F I | As on entry | P | Plots one of 64 possible characters N times |
PLOTSC | X N Y FACTOR | I or F I I or F F | As on entry | P | Plots one of 128 possible software characters |
VECTOR | XS YS XF YF | I or F I or F I or F I or F | As on entry | P | Joins up (XS,YS) to (XF,YF) with a straight line |
GXAXIS | X Y | I or F I or F | As on entry | P | Draws line parallel to Y-axis |
GYAXIS | X Y | I or F I or F | As on entry | P | Draws line parallel to X-axis |
XAXSTP | X Y XSTOP | I or F I or F I or F | As on entry | P | Draws line parallel to X-axis |
YAXSTP | X Y YSTOP | I or F I or F I or F | As on entry | P | Draws line parallel to Y-axis |
* STPTYP must be used after these subroutines if changing immediately to a plotting mode routine.
+ STANDARD FORTRAN STATEMENT - not a subroutine call.
Routine Names Subsidiary Routines Public Names also used ADVAN /GIBM(/SC4020) A66666 ADVFLM ATOINT CHARRR ADVREP CTOBUF ISIGNV CAM35 ENDSCF IXXXXX C4020E INTRGP IYYYYY C402OF JOBTIT KKKKKK C4020H OPCODE KKKKK1 c4020I PAKBUF KLINES C4020N SCCHAR KUTMRK C4020V SCCSET KXXXXX ENDFME SCFRND KYYYYY EXPAND SCFOR0-9 LINEBK * EXPHVY SCSTOP LXXXXX EXPLGT SC40T LYYYYY FINISH SETBUF SCBUFF GXAXIS SHIFTV SCFONT GYAXIS VECTO SCRECS HORAM VSHIFT IDEND VVVVVV SCFORZ (Blocked Common) IDST ZSCFOR LABELH LABELV MOVETP NEWLIN NEWPAG PLOT PLOTSC PROJFM REDUCE RESET REVERS ROTATE SAVEA SAVEB SELECT SCFOR SHCONV SHLINE SIPLOT STPTYP SYSSET TCP TITLEH TITLEV TSP USEIT VECTOR VERAM XAXSTP YAXSTP
* A PUBLIC Integer whose normal value is zero. If set such that 0 < LINEBK< 63, then all calls of VECTOR will produce broken lines until LINEBK is reset to zero. The lines and breaks between the lines will be approximately equal in length to the value of LINEBK, in raster positions.
SCFOR is designed to allow a programmer to draw graphs on the SC4020 leaving the subroutine to deal with scaling and positioning. SCFOR is a collection of separate routines each fulfilling a specific function and these have been combined so that all necessary data is always available.
The subroutine defines the origin and dimensions of the graph relative to the SC4020 raster and defines scale factors to convert the co-ordinates of points and end points of vectors to the corresponding SC4020 co-ordinates. Facilities are provided for generating scale numbers and corresponding grid lines. Any number of curves may be plotted on one graph with separate sets of scale numbers if required. Alternatively two or more distinct graphs may be plotted on the same frame.
The programmer must define the positions of titles, legends and scale numbers relative to the SC4020 raster. This is 1024 units square with the origin in the top left hand corner. Graphs drawn by the subroutine have conventional orientation of axes.
The first operation on the SC4020 should be CALL IDST, and the last CALL IDEND. These two basic SC4020 routines have been described already. SCFOR does not advance the frame, and this should be done whenever a new frame is required by a call, of say, ADVFLM(I).
The 10 different operations of SCFOR are known as options and they are all brought into use by the same CALL statement.
CALL SCFOR(n,x1,x2,x4,x4)
where n is an integer defining the option required and having a value between 1 and 10, and x1, x2, x3, x4 are the parameters required by the individual options. All five parameters must be supplied for each use of SCFOR and their meaning will be described together with the appropriate option.
Note: x1, x2, x3, x4 must be of REAL not INTEGER mode.
This option defines the origin and dimensions of the graph relative to the SC4020 raster.
CALL SCFOR(1, XSCO, YSCO, XSCR, YSCR)
XSCO is the X co-ordinate of the origin of the graph relative to the SC-4020 raster.
YSCO is the Y co-ordinate of the origin of the graph relative to the SC-4020 raster
XSCR is the X range on the SC-4020 raster
YSCR is the Y range on the SC-4020 raster
All the above parameters should be integer values of Real Mode.
The program is terminated if (XSCO + XSCR) > 1023 or (YSCO - YSCR) < 0.
The origin in this case refers to the SC-4020 raster position of the minimum (X, Y) co-ordinate and not necessarily (0, 0).
For example
CALL SGFOR (1, 120.0, 900.0, 800.0, 700.0)
produces a graph within the shaded area below.
This option defines the maximum and minimum values of the abscissa and ordinate and calculates scaling factors to convert the values of the variables to SC-4020 co-ordinates.
CALL SCFOR(2, XMIN, YMIN, XMAX, YMAX)
XMIN is the minimum abscissa
YMIN is the minimum ordinate
XMAX is the maximum abscissa
YMAX is the maximum ordinate
Scaling factors are calculated so that the point (XMIN, YMIN) corresponds to (XSCO, YSCO) and (XMAX, YMAX) corresponds to (XSC0 + XSCR, YSCO - YSCR)
The program is terminated if XMIN ≥ XMAX or YMIN ≥ YMAX
For example
CALL SGFOR (2, -0.5, 1.0, 0.0, 3.0)
NOTE: If option 2 is used without previous use of option 1 and the programmer does not intend to use option 10, standard values are given to XSCO, YSCO, XSCR, YSCR, as shown below
XSCO = 150. YSCO = 890. XSCR = 850. YSCR = 850.
X scale numbers will be positioned 10 SC-4020 positions below the X axis and Y scale numbers will be positioned with their least significant digit 8 SC-4020 positions to the left of the Y axis. These positions will replace any requests made by subsequent use of options 3 and 5.
This option labels the X axis by generating scale numbers of a specified format and writing them at the position specified on the SC-4020 raster.
CALL SCFOR(3, YSCL, DX, FW, FL)
YSCL is the SC-4020 Y co-ordinate specifying the position of the X scale numbers. The X co-ordinates will be chosen to correspond with the position of the graph on the raster. This must be an integer value. Note: YSCL is the position of the centre line of the number, the digits of which each occupy an 8 by 16 square of SC-4020 positions. If option 1 has not been used the YSCL will be ignored and the standard. one used.
DX is the interval between X scale numbers, in the same scale as XMIN and XMAX.
FW is the field width of the scale numbers. This must be an integer value (Note: FW must include a position for the sign, even if positive).
YFL is the fraction length of the scale numbers. This must be an integer value.
If the field width is too large to allow scale numbers at the specified interval then scale numbers are provided at intervals which are multiples of DX.
If XMIN and XMAX cannot be represented by the specified format a scalling factor of the for E+XX or E-XX will be printed to give the correct scale.
For example
CALL SCFOR (3, 920.0, 0.5, 6.0, 1.0)
would print scale numbers in format F6.1 at Y position 920 at intervals of 0.5 and if used after the examples in options 1 and 2 would produoe:
This option generates and plots grid lines corresponding to the X scale numbers and at specified subdivisions.
CALL SCFOR(4, DXN, 0.0, 0.0, G)
DXN DIN is the number of subdivisions in any DX interval as defined in Option 3
For example, if DXN = 1, axes will be drawn at XMlN, XMIN + DX, XMIN + 2DX, ... XMAX.
If DXN = 10 axes will be drawn at XMIN, XMIN+0.1DX ... XMAX. The axes at XMlN, XMlN + DX etc. are drawn twice for emphasis.
G=0.0 for full grid. G<0.0 for no grid at all. If G>0.0, then indications only of the grid lines are produced around the edge of the frame, of length equal to 'G' raster positions. (See example later).
This option labels the Y axis by generating scale numbers of a specified format and writing them at the position specified on the SC-4020 raster.
CALL SCFOR(5, XSCL, DY, FW, FL)
XSCL is the SC-4020 X co-ordinate specifying the left hand position of the Y scale numbers. The Y co-ordinates will be chosen to correspond with the position of the graph on the raster ({this must be an integer value). Note: the digits printed are 8 SC-4020 positions wide. If option 1 has not been used the XSCL value will be ignored. and the standard value calculated using FW.
DY is the interval between the Y scale numbers, in the same scale as YMIN and YMAX.
FW is the field width of the scale numbers as defined for option 3.
FL is the fraction length of scale numbers as defined for option 3.
If YMIN and YMAX cannot be represented by the specified format a scaling factor of the form E+XX or E-XX will be printed to give the correct scale.
For example
CALL SCFOR (5, 70.0, 0.5, 4.0, 1.0)
would print scale numbers in format F4.1 at X position 70 at intervals of 0.5 and if used after the examples in options 1 and 2 would produce:
This option generates and plots grid lines corresponding to the Y scale numbers and at specified subdivisions.
CALL SCFOR(6, DYN, 0.0, 0.0, G)
DYN is the number of subdivisions in any DY interval. This option has a similar effect to that of option 4.
This option tests whether a given point lies in the range of the variables defined in option 2, and if within the range, plots the specified character at the corresponding point on the SC-4020 raster.
CALL SCFOR(7, X, Y, CHAR, G)
X and Y are co-ordinates of point to be plotted. These are compared with the maximum and minimum values specified by option 2. If the co-ordinates are within the specified range the corresponding SC-4020 co-ordinates are given by
XSC = XSCO +[(X-XMIN)*XSCR]/(XMAX-XMIN) for X-linear or XSC = XSCO +[log(X/XMIN)*XSCR]/log(XMAX/XMIN) for X-log YSC = YSCO +[(Y-YMIN)*YSCR]/(YMAX-YMIN) for Y-linear or YSC = YSCO +[log(Y/YMIN)*YSCR]/log(YMAX/YMIN) for Y-log
X and Y wi11 both be linear unless the log scales have been selected by a previous use of option 9.
CHAR specifies the character to be plotted as shown in the table gollowing.
If G≠0.0 then a software character is produced according to the table following with size determined by the value of the argument. If this value is 1.0, for example, the size is that of the characters in the JOB NUMBER. given in the centre of the second frame of output produced by CALL IDST.
The characters in the table may be replaced by customer-designed ones as described later.
Character | Decimal Value | Character | Decimal Value | Character | Decimal Value |
---|---|---|---|---|---|
0 | 0 | E | 21 | . | 42 |
1 | 1 | F | 22 | $ | 43 |
2 | 2 | G | 23 | * | 44 |
3 | 3 | H | 24 | γ | 45 |
4 | 4 | I | 25 | ∼ | 46 |
5 | 5 | π | 26 | d | 47 |
6 | 6 | • | 27 | 48 | |
7 | 7 | ) | 28 | / | 49 |
8 | 8 | β | 29 | S | 50 |
9 | 9 | ± | 30 | T | 51 |
∂ | 10 | ? | 31 | U | 52 |
= | 11 | - | 32 | V | 53 |
" | 12 | J | 33 | W | 54 |
' | 13 | K | 34 | X | 55 |
δ | 14 | L | 35 | Y | 56 |
α | 15 | M | 36 | Z | 57 |
+ | 16 | N | 37 | ° | 58 |
A | 17 | O | 38 | , | 59 |
B | 18 | P | 39 | ( | 60 |
C | 19 | Q | 40 | ∫ | 61 |
D | 20 | R | 41 | Σ | 62 |
□ | 63 |
For example:
CALL SCFOR(7, A, B, 16.0, 0.0) will plot a + at the point specified by A, B
CALL SCFOR(F, A, B, 41.0, 1.0) will plot an I 0.6" high with its centre at the point specified by A, B
This option plots the vector defined by two given points if these both lie within the range of variables defined in option 2.
CALL SCFOR(8, X1, Y1, X2, Y2)
(X1,Y1) and (X2,Y2) are the end points of a vector to be plotted if both points are within the range specified in option 2.
The corresponding SC-4020 points are calculated in the manner specified for option 7.
This option sets a switch such that when options 7 or 8 are subsequently called, it plots on a logarithmic scale in the X-direction or the Y-direction, or both. It also generates and plots scale numbers and grid lines corresponding to the logarithmic scale or scales.
CALL SCFOR(9, TYP, SUBDX, SUBDY, 0.0)
This option should be used after option 2 but before options 7 and 8.
TYP specifies type of graph required and should be an integer value. Values of TYP and corresponding type of graph:-
TYP=1, X-log, Y-linear Labelled heavy axes will be drawn at X/XMIN = 1, 2, 3, ... etc. The programmer should use options 5 and 6 to plot his Y scale numbers and axes. Options 3 and 4 should not be used.
TYP=2, X-linear, Y-log Labelled heavy axes will be drawn at Y/YMIN = 1, 2, ... etc. The programmer should use options 3 and 4 to draw his X scale numbers and axes. Options 5 and 6 should not be used.
TYP=3, X-log, Y-log Labelled heavy axes drawn at X/XMIN = 1, 2, 3, ... etc, Y/YIMN = 1, 2, 3, ... etc. Options 3, 4, 5 and 6 should not be used.
SUBDX takes the integer values 1 or 0. If the value is 1 then light axes will be drawn at X/MIN = 1.1 by .1 to 2; 2.2 by .2 to 5; 5.5 by .5 to 9.5. If the value is 0 then light axes are not drawn
SUBDY is analogous to SUBDX.
This option is designed to obviate the need for the programmer to specify any details regarding the layout of his graph other than the format of his scale numbers and the type of grid required. When used after option 2 (specifying maximum and minimum values) this option draws and labels a complete set of X and Y axes suitable for dealing with the specified range of values.
All axes and scale numbers lie within the area defined by the SC-4020 raster co-ordinates (16,26), (982,26), (16,946), (982,946).
Use of option 10 replaces use of options 1, 3, 4, 5, 6 and 9 which are called internally by option 10. The grid lines provided will be uniformly spaced.
CALL SCFOR(10, TYP, XAXIS, YAXIS, G)
TYP TYP indicates the type of grid required and should be an integer value.
TYP=0 gives X-linear, Y-linear
TYP=1 gives X-log, Y-linear
TYP=2 gives X-linear, Y-log
TYP=3 gives X-log, Y-log
XAXIS specifies the format of the largest sized scale number on the X axis and is written in the form A.B where A is the number of digits before the point and B is the number of digits after the point. If B = 0 then an integer A digits long without a point is produced. The number of digits before the point does not need to include space for a sign.
YAXIS specifies the format of the largest scale number on the Y axis and is written in the same form as XAXIS.
If either XAXIS or YAXIS is defined as 0.0 then a value 1.3 is used.
If G > 0.0 then indications only of the grid lines are produced, of length equal to 'G' raster positions.
G = 0.0 for full grid.
To plot a graph of pressure and energy against density. N values of pressure, energy and density stored in P, E and RHO respectively.
0 ≤ P ≤ 5.0
0 ≤ E ≤ 2.0
10.0 ≤ RHO ≤ 45.0
CALL IDST Identifies SC-4020 Output CALL ADVFLM (2) Advances hardcopy 1 frame CALL SCFOR (1,200.0, 900.0, 700.0, 800.0) Defines dimensions of graph CALL SCFOR (2, 10.0, 0.0, 45.0, 5.0) Sets minimum and maximum values CALL SCFOR (3, 916.0, 5.0, 5.0, 2.0) Labels X axis CALL SCFOR (4, 5.0, 0.0, 0.0, 0.0) Draw grid lines CALL SCFOR (5, 150.0, 1.0, 6.0, 3.0) Labels Y axis CALL SCFOR (6, 10.0, 0.0, 0.0, 0.0) Draws grid lines DO 100 I=1,N CALL SCFOR (7, RHO(I), P(I), 16., 0.0) Uses + to plot points 100 CONTINUE CALL SCFOR (2, 10.0, 0.0, 45.0, 2.0) Sets new minimum and maximum values CALL SCFOR (5, 50.0, 0.4, 6.0, 3.0) Labels Y axis again DO 200 I=1,N CALL SCFOR (7, RHO(I), E(I), 44., 0.0) Uses * to plot point 200 CONTINUE CALL IDEND Empties buffer and gives identification END
To plot a graph of pressure against density, pressure on a logarithmic scale, M values of pressure and density stored in P2 and RH02 respectively. Points to be plotted in heavy density, and a title to be printed at the bottom of the graph. Standard values given by subroutine to be used.
10.0 ≤ RH02 ≤ 35.0
10.0 ≤ P2 ≤ 1000.0
CALL IDST Identifies SC-4020 Output CALL ADVFLM (2) Advances hard copy 1 frame CALL SCFOR (2, 10.0, 10.0, 35.0, 1000.0) Sets minimum and maximum values CALL SCFOR (9, 2.0, 0.0, 1.0, 0.0) Select X-Linear, Y-log CALL SCFOR (3, 0.0, 5.0, 5.0, 3.0) Labels X axis CALL SCFOR (4, 5.0, 0.0, 0.0, 0.0) Draw grid lines CALL EXPHVY(0, 48, 0) Set to plot heavy characters DO 300 K=1,M CALL SCFOR (7, RHO2(K), 2P(K), 44., 0.0) Uses * to plot points 300 CONTINUE CALL TSP (200,48,980) Prints title at bottom of frame CALL C4020H PRINT 1 1 FORMAT(72H............) CALL IDEND Empties buffer and gives identification END
The same problem as in example 2 but making use of option 10
CALL IDST Identifies SC-4020 Output CALL ADVFLM (2) Advances hard copy 1 frame CALL SCFOR (2, 10.0, 10.0, 35.0, 1000.0) Sets minimum and maximum values CALL SCFOR (10, 2.0, 2.1, 4.0, 0.0) Draw and label appropriate grid CALL EXPHVY(0, 48, 0) Set to plot heavy characters ... as in example 2
The SC4020 hardware characters are limited to upper case, with no change of orientation possible during running. These hardware characters are also quite inadequate for cine work since, due to size, one character becomes indistinguishable from another when projected.
The software character set provided to overcome these limitations, gives 106 out of 128 possible characters, with only the alphabetic characters changing from one case to the other. The upper case characters correspond exactly with those provided by Atlas on the Anelex line printers for inner set.
It is a simple matter for a user to specify his own particular character (or, indeed, character set) and temporarily replace the system one. This should facilitate the production of, say, flow charts or even printed-circuit networks.
The routines divide into two main classes:-
Class I Those that employ a division of the SC4020 raster into lines and columns:
CALL TITLEH(LABEL,K,FACTOR,KOLUMN,LINE) - for horizontal lines CALL TITLEV(LABEL,K,FACTOR,KOLUMN,LINE) - for vertical lines
Class II Those that specify an absolute SC4020 raster co-ordinate position as the centre Of the first character:
-CALL LABELH(LABEL,K,FACTOR,KX,KY) - for horizontal lines CALL LABELV(LABEL,K,FACTOR,KX,KY) - for vertical lines CALL PLOTSC(X,N,Y,FACTOR)
For PLOTSC - X and Y may be of Real or Integer mode; N is an integer from 0-127 representing the decimal value of the Atlas Internal Code character (+64, for lower case) required to be plotted.
LABEL is the word or first word of an array containing text characters.
K is the number of successive characters to be output starting from LABEL.
FACTOR is the size of the characters, and therefore determines the number of characters per line and the number of lines per page. For example, with FACTOR equal to 1.0 the upper case characters are each contained within a square of 80 raster positions (i.e. 100 × FACTOR × 0.8). With Class I routines the next line starts 100 × FACTOR raster positions down from the previous one.
Maximum number of characters per line = 1023/100 × FACTOR × 0.8
Meximum number of lines per page = 1000/100 × FACTOR (Class I)
Meximum number of lines per page = 1023/100 × FACTOR (Class II)
Note: A carry-over into the next line or column does not occur if there is insufficient room for all the characters specified by K. Characters may also get truncated at the end of a line.
An Example with FACTOR = 1.0 is provided on the identification sheet of the output, giving upper case characters about 0.6" high on hardcopy.
KX and KY s are the absolute SC4020 raster co-ordinate position, with Y increasing downwards.
KOLUMN and LINE are the column and line to be used (counting commences at 1, not zero); the absolute position being governed by FACTOR.
In order to change from one case to another it is only necessary for an invalid card-code character (AIC = 77 octal) to be included in the string of text. Because it is possible that the tail of some lower case characters will interfere with characters on the next line using Class I subroutines should be used.
For a mirror-image, a call of subroutine REVERS reverses all the software characters currently in use, i.e. the system set, including those re-specified by the user.
Similarly, a call of subroutine ROTATE(N) will rotate all the software characters currently in use through N π/2 clockwise from their current orientation.
An example is now given of changing a character to one specified by the user:-
Example: To replace the upper case * by a diamond:-
PUBLIC SCFONT TEXT SCFONT(20, 128) x y x y x y x y Where 14 represents the SCFONT(1, 14) = 16B0005050005001205 decimal value of * in SCFONT(1, 14) = 16B1205051205120005 Atlas internal code SCFONT(1, 14) = 2B63 63 indicates the end of a character character
Each word therefore contains the start and finish points of two distinct lines, and it is possible to use up to 39 lines for any one oharaoter.
To re-establish the * (in fact, the complete set, with normal orientation), simply CALL SYSSET.
This subroutine combines the speed of the hardware character set with the flexibility of the software one in which the user can specify his own characters.
In use, CALL SHLINE(LABEL, K) will output K characters (K ≤ 128) stored as text from LABEL onwards as one line. Subsequent calls will automatically give a new line, and after 63 lines will automatically give a new page. Note that as is usually the case in HARTRAN, the text variable LABEL may be replaced by the actual characters, for example:
CALL SHLINE(7H TEST 1,7)
To replace particular software characters by the equivalent SC4020 hardware ones, it is necessary to include the following:-
PUBLIC SCFONT TEXT SCFONT (20,128) ... SCFONT(1, M) = 2B64 SCFONT(1, N) = 2B64 etc
where M, N, etc., are the decimal values of the Atlas Internal Characters required as hardware ones, e.g. N = 33 for 'A'. It is possible to select alternative SC4O20 hardware characters to those provided; for example, the '+' could be replaced by ".
On each entry to the subroutine, the current typing position plus 'next line' is assumed for Y, and X is placed equal to zero. The current typing position can be altered by subroutines such as NEWLIN(I), ADVAN, TSP(X, CC, Y), etc.
Note: Class I and Class II subroutines are also affected by these changes and, therefore, should not be used until CALL SYSSET has re-established the software set.
For cine films, a repeat of each frame 4 to 5 times is often advantageous, and subroutine ADVREP(I, N) enables up to 512 records to be repeated as many as 31 times at a cost to Atlas of outputting only 12 characters to the magnetic tape.
A further set of subroutines can produce an appreciable reduction in computing time on Atlas when each frame contains some repetative information e.g. a map or form, etc. The hardware system know as the Forms Projection feature of the SC4020 is time consuming both in the preparation of the slide and in use on the machine, but details will be supplied on request.
The set of subroutines (SAVEA, SAVEB, and USEIT), intended to provide an alternative to the forms projection, is used as follows:-
CALL SAVEA .... CALL VECTOR (XA, YA, XB, YB) CALL SCFOR (2, -0.5, 1.0, 0.0, 3.0) .... CALL SAVEB
With the exception of CALL PROJFM, CALL CAM35 and WRITE (14,f) 1ist, any other of the aforementioned routines used to produce SC4020 output can be 'sandwiched' between calls of SAVEA and SAVEB.
CALL USEIT then re-outputs this information when desired.
It is believed, at the time of writing, that not all the raster is capable of being projected as a cine film, and the exact limits will be made known later.
The user may wish to employ some of the un-used SC4020 hardware characters in place of those provided when using subroutine SHLINE(LABEL, K).
The complete set is shown below.
To change a character:-
CALL SHCONV(29,14)will change + to " on output using SHLINE(LABEL,K).
Please also refer to the Graph Plotter Manual for the Benson-Lehner Model J.
Some library subroutines, as well as customers' own programs are currently using the Laboratory's Benson-Lehner Model J graph plotter.
To make the change-over to the SC 4020 as easy for the user as possible, the library processing routine has been re-written. This routine automatically checks the plotter information and writes it to an IBM tape in the correct format. Only blocks of Atlas store are used by this routine as opposed to about 20 by the routines of SECTION II.
The number of different types of records has been increased in order to make full use of all the facilities offered by the SC 4020.
The advantages to B-L J users are:-
The possible disadvantages to B-L J users are:-
FORTRAN PROGRAM CHANGES required for a satisfactory result.
The following represent extra facilities of which users may wish to take advantage, in probable order of importance.
The new types of record which are specified by the first two characters, supplement the GI, GH, GD and GE already in use, and are as follows:-
1. GS - for the selection of a symbol set. The symbols are:
It is possible to change the arbitrally chosen symbol set whenever one wishes and as many times as desired by means of the GS record.
The digits which immediately follow the GS are the octal digits for the particular characters to be called by the codes O, 1,2...9,=,' and +.
For example
GS|00|01|02|03|04!05!06|07|10|11|40|52|20 would produce symbol set: 0 1 2 3 4 5 6 7 8 9 - . +
2. GGRID
This will produce the standard mesh grid on each new frame called thereafter. This condition is assumed at the start of a job.
3. GNOGRID
Omits the grid on each new frame called thereafter.
4. GUNLINK
Will cause all free-run graphs to take on a dotted appearance thereafter. Can be used in conjunction with the Fortran subroutine OB03A which joins up any two points with a line in the free-run mode.
5. CLINK
Will restore the free-run mods to give a continuous line. This condition is assumed at the start of a job.
6. GO+ddddbl±ddddbl (d= digit 0 to 9 or a blank; bl = blank)
A record of this form, in the scale and with the origin offset of the preeceding header record, will locate the position from where printing, using the SC 4020 hardware character set, is to start. Alternatively, if there is a blank (octal 60) in the character set (code '+' in the one supplied) then an ordinary GD record with the appropriate code may be used. A composite character will result in the 1st character position if anything other than a blank is used. The GO or GD record must immediately precede the text records (7) and (8).
7. GPABCD.....π(π=-,8,3 card punch)
This record outputs a string of up to 128 characters which must be terminated by a π. These characters are then printed starting at the position specified by the GO or GD record immediately preceding it. Subsequent GT (or GV) records without a preceding GD, GO or GCRLF (9) will continue on in the next character position horizontally. Each character is contained within a rectangle 8 wide × 16 high plotting positions.
It is possible to have 128 characters per line if started at X=0.
8. GVABCD....π (π=-,8,3)
This record outputs a vertical string of characters (up to 64, if started at Y = 1023). The same conditions that apply to GT records apply in this case, except that subsequent GV or GT records without a preceding GD, GO or GCRLF will continue on in the next character position vertically unless already at Y ~ 15 when it goes back to Y = 1024 + Y -16.
9. GCRLF
This record results in a carriage-return line-feed (i.e. K = O Y= Y-16.
10. GQ
This record results in a 1ine-feed (i.e. X= X, Y=Y-16).
11. GX±ddddbl±ddddbl (in the scale and with the origin offset of preceding header record) . First part is X stop and second Y.
Produces an X axis starting at X = 0 and stopping at the X value with a vertical displacement of the Y value. (X stop > X start + 63)
12. GY±ddddbl±ddddbl in the scale and with the origin offset of preceding header record). First part is X and second Y stop.
Produces a Y axis starting at Y = 0 and stopping at the Y value with a horizontal displacemsnt of the X value. (Y stop > Y start + 63)
13. GZ±ddddbl±ddddbl (in the scale and with the origin offset of preceding header record). First and second part are X start.
Specifies the origin of axes for all subsequent GX and GY records and can be used to allow for printing scales down the left hand side and along the bottom of a grid produced using GX and GY records.
14. GFINISH
Empties the buffer. It also produces identification and the time of the Atlas clock at that point as well as putting file-marks on the tape.
15. GMICRO
Will produce all subsequent output on miorofilm as well as hardcopy.
16. GBUTT
Will cause the hardcopy frames to be expanded to approx. 8" × 8" and microfilm frames to abutt on 35 mm microfilm only.
17. GREDUCE
Will cause the normal size (7.5" × 7.5" approx. on hardcopy) to be resumed. This is the condition at the start of a job.
18. GPROJECT
Will cause the fixed data on the slide to be projected onto the current frame only. These slides have to be made specially and inserted by the operator.
19. GJ*ddddbl (dddd <31 *=blank or + sign)
This initially produces a frame advance and signals the beginning of a frame repeat sequence of 'dddd' repeats.
20. GK*ddddbl (dddd<31, and equals the number given in the GJ record).
This produces a frame advance and signals the end of a frame repeat sequence.
21. GALL
Records with no G in the 1st character position will automatically come out as lines of print, with normal Fortran carriage control. By using a GALL record, all records including those with G in the first character position will be printed although the G (or any other character) will normally be lost.
22. GW
This will produce a cut-mark on each new frame thereafter to facilitate automatic cutting of the hardcopy output into separate sheets.
Note: All these records must be output on Output-stream 14 together with the GI, GH, GD and GE records.
It is not recommended to use ENDFILE 14 since part of a graph may be lost, but instead use a GENDFILE record on output stream 14.
A 'GENDFILE' record must be output before any records with no G in the 1st charaoter position for a correct result.
To summarise, the types of records in alphabetical order are:
*These oonditions are assumed at the start of graphing.
The general purpose routines applicable to plotting in the Fortran Library have been collected into this section.
Routines OB01A to OB05A are at the moment for use with the Extended Benson-Lehner J System, and therefore should not be used with the routines of SECTION II. Similarly, routines OB06A/B/C/D/E/F and OC01A can only be used with the routines of SECTION II. The arguments of the routines in SECTION V are of Real or Integer mode depending on the initial letter of the variables.
Any user who may produce what he considers to be a useful addition to this collection, is invited to send a descriptioh of it to the Laboratory for possible inclusion in the program library.
Two other routines available whose details will be supplied on request are:-
1. Purpose This subroutine arranges output for the graph plotter, and may be called to plot points and to draw lines in either free run or long line mode. It plots lines by joining the point specified in the argument list of the subroutine to the point specified by the last call of the subroutine, provided this point was also required in a line drawing mode.
Except for the name, OB01A is identical to the subroutine PLOT written by M. Larkin of Culham. Therefore for a full description users are referred to Plasma Physics Note No. 16/62.
2. Argument List
SUBROUTINE OB01A (x, Y, XMIN, XMAX, YMIN, YMAX, GSIZE, NLP, MODE)
All the arguments are to be scalar variables or constants.
(X, Y) are the coordinates of the point to be plotted.
The point is plotted so that XMIN is on the extreme left of the plotting area and so that YMIN is on the bottom of the plotting area.
Scaling is done so that the maximum of (XMAX-XMIN) and (YMAX-YMIN) is equal to GSIZE inches. Therefore GSIZE should not normally exceed 12.
NLP controls new pages and new lines and must be set to -1, 0 or +1. If it is set to -1 a new page will be used. It should normally be set to 0 but if it is set to +1 and a line drawing mode is specified the point to be plotted will not be joined to the previous point.
MODE controls the type of plot, -1 is the free run mode, 0 is the long line mode and 1-12 determine which of the variety of symbols will be used to plot a single point (for example 11 is a circle and 12 a plus). If MODE is set to 13 it will be assumed that the mode is to be that of the 1ast call OB01A.
3. Printed Output The subroutine will print a message in the normal way (a) when a new page is called for, (b) if (X,Y) lies outside the rectangle defined by XMIN, XMAX, YMIN and YMAX and (c) if the mode does not satisfy -1 ≤ MODE ≤ 13.
4. General The user who wishes his graphs to be returned to him should arrange for his name to be printed out to the operator of the graph plotter by means of an information record.
This subroutine does not use common and it does not call any other subroutines.
1. Purpose This subroutine generates the output which enables the graph-plotter to draw contours of a function of two variables of the form
u{x,y) = uc
The function is to be specified by tabular values at the grid points of a rectangular mesh. Linear interpolation is used to locate the position where a contour crosses a box and hyperbolic interpolation to generate the co-ordinates.
2. Argument List
SUBROUTINE OB02A (U,UC,NX,NY,HX,HY,OX,OY,NP,IDF)
U is the two dimensional array which contains the tabular values of the function.
UC defines the contour so that U(x,y) = UC is plotted.
NX and NY are the number of distinct values of X and Y used in the tabulation.
HX and HY are the intervals in inches between successive values or X and Y in the tabulations.
OX and OX are such that the point corresponding to U(1,1) would be plotted at OY inches up from the bottom and OX inches from the left hand side of the page. The point corresponding to U(NX,NY), would therefore, be plotted OX+HX*(NX-1) inches from the left hand side and OY+HY*(NY-1) inches up from the bottom.
NP controls new pages and grid lines. It may take one of the following six values:
NP = 0 or 100 Just contours are plotted NP = 1 or 101 The outline of the rectangle is drawn as well as oontours. NP = 2 or 102 The mesh lines are drawn as well as contours. NP ≥ 100 A new sheet of graph paper is called for.
IDF defines the first dimension of the array U so that in the calling routine there would normally be
DIMENSION U(IDF, )
3. Restriction The complete rectangle must fit on to the standard 10" x 12½" paper.
4. Other Subroutines Library routine OB03A is called by this subroutine.
5. Output AB well as the normal "G" output, messages will be printed if a fault is recognised. After such a message control will be returned to the calling program with NP set to -1.
6. Information record, header and end file The operator of the graph-plotter must know to whom the graphs are to be returned, and it is conventional that the first five characters of the information record shall be the job number. Therefore before calling OB02A it is essential that the user print a message having e format similar to
FORMAT(17HGI12345bbJ.BLOGGS)
The header record specifies one value of x and y and is incorporated in the subroutine.
The subroutine OB02A does not write an end file so it is therefore necessary that after the last call of OB02A the user writes a message in the form
FORMAT(8HGENDFILE)
1. Purpose This subroutine causes the graph plotter to draw a straight line between two points. In fact it draws it in the free run mode.
2. Argument List
SUBROUTINE OB03A (AX, AY, BX, BY, IPAGE)
All coordinates are in inches from the bottom left hand corner of the paper.
AX and AY are the x and y coordinates of one point.
BX and BY are the x and y coordinates of the other point.
IPAGE may take the value 0 or 1. If it is zero the line will be drawn on the current sheet of paper; if it is one a new sheet of paper will be called for before the line is drawn.
3. Information record and header It is essential that the operator of the graph plotter shall know to whom the graphs are to be returned, and. it is conventional that the first five characters of the information record shall be a job number. Thererore, erore calling OB03A, the user must print a message having a format similar to
FORMAT (17HGI12345bbJ.BLOGGS)
The header record specifies one value of x and one value of y.
4. Points off the paper Should the line not fit onto the standard 10" x 12½" paper a suitable message will be printed. If any part of the line will fit onto the paper this part will be plotted and. an asterisk will be printed where the line has to be discontinued. Even if no part of the line can be plotted a new page will be provided if IPAGE=1.
1. Purpose This subroutine provides output to the graph plotter to enable it to draw sections of the surface
f(a,b,c) = 0
which are parallel or perpendicular to the a-b plane. It requires a subroutine to calculate f and its derivatives.
2. Argument List
SUBROUTINE OB04A(Q1,Q2,Q3,P1,P2,XMIN,XMAX,YMIN,YMAX,GSIZE,NP)
All arguments are scalar variables or constants.
The X and Y directions on the graph plotter will be scaled so that
Q1, Q2, Q3 must be set so that the point (Q1, Q2, Q3) lies in the required section and is close to the surface.
P1 and P2 need only be set when a section perpendicular to the a-b plane is required, and then the x-axis on the graph plotter is the line joining (P1, P2, 0) to (Q1, Q2, 0) and the y-axis is the line through (P1. P2, 0) in the direction or the c coordinate. In this case the point (X,Y) on the graph corresponds to
(P1,P2,Y) ± X * (Q1-P1,Q2-P2,0)/sqrt((Q1-P1)2 + (Q2-P2)2)
When sections are drawn parallel to the a-b plane the X-Y coordinates of the graph are the a-b coordinates.
NP may be set to -2,-1, 1, 2,3 or 4.
If it is odd a new sheet of graph paper will be used and the 0x and 0y axes will be drawn together with crosses marking the corners of the plotting square.
If it is 3 or 4 a section parallel to the a-b plane will be drawn.
If it is -2, -1, 1 or 2 a section perpendicular to the a-b plane will be drawn, the negative sign being chosen in the above (X,Y) coordinate definition if NP is negative.
3. Subroutine DERIV
SUBROUTINE DERIV (F, Q1, Q2, Q3) DIMENSION F(4)
This must be provided by the user and must set
The last derivative need not be set if NP= 3 or 4.
4. Restrictions Only one branch of the curve will be drawn, and it will be the one found from the initial approximation (Q1, Q2, Q3).
As a precaution the length of plotted line will not exceed 5*GSIZE inches.
5. General Arrange for the calling program to print your name for the operator of the graph plotter by means of an information record.
DERIV is called about twenty times per inch of plotted line.
1. Purpose This subroutine plots a graph title consisting of any of the characters in the Fortran Set on graphs produced by the graph plotter.
2. Argument List
SUBROUTINE OB05A (X,Y,H,W,S,A,IMAX,I)
The title to be plotted should be stored in the one dimensional array A, the characters being stored in A1 format in A(I) to A(IMAX).
X and Y are the distances of the bottom left hand corner of the first character of the title from the left hand and bottom edges of the paper.
H is the height of the characters in the title.
W is the width of the characters in the title.
S is the spacing between individual characters in the title.
X, Y, H, W and S are all measured in inches.
The initial entry to the routine should have I set to 0 which will set up the graphs of the character set. The routine will return with I set to 1. Subsequent entries to the routine should have I non-zero, as this avoids setting up the graphs again.
The characters tend to get distorted if the height and width are greater than .8 inches or less than .2 inches.
3. Other routines The routine uses a subroutine, OB05AA, whose cards are with those of OB05AA. It also calls the Library Routine ZA04AS.
4. General The size of the routine is about 11000 octal locations. It does not use common storage.
Library Subroutines for use with1. Purpose These routines are for use in drawing diagrams on the SC 4020, and draw circles, arcs, arrows in either cartesian or polar co-ordinates, arrowheads, and lines in polar co-ordinates. (They were originally written at A.W.R.E. under the names ARC, OLE, .ARROW, HEAD, PNTR and RADIUS.)
2. Argument Lists All arguments with integer-mode names are in integer mode in the routines and the others are floating point. All variables corresponding to linear measurements are in 4020 raster units. All regular quantities are measured clockwise, from the vertical.
(a) SUBROUTINE OB06A (CX, CY, R, A1, DA)
This draws an arc of a circle, with its centre at (CX, CY) radius R, starting at an angle A1 and being drawn through an angle DA from A1. (CX, CY) may, if desired, be outside the 4020 mesh, and A1 and DA may be negative. A diagnostic is printed if R is negative.
(b) SUBROUTINE OB06B (MX, MY, IR)
This draws a circle centred at (MX, MY) and of radius IR. A diagnostic is printed if IR is negative.
(c) SUBROUTINE OB06C (X1, Y1, X2, Y2, H)
This draws an arrow from the point (X1, Y1) to the point (X2, Y2) with an arrowhead at (X2, Y2). The length of the arcs forming the head is H. If, however H is specified as 0. a suitable value is selected by the routine. The subroutine calls subroutine OB06A.
(d) SUBROUTINE OB06D (X1, Y1, X2, Y2, H)
This produces an arrowhead, and operates in the same way as C above, but without the shaft of the arrow. It can be used, for example, to produce a head on the other end of an arrow drawn by C above.
If, however, the fifth argument is specified as 0., a different format is used. The statement:
CALL OB06D (X2, Y2, THETA, H, 0.)
produces an arrowhead whose point is at (X2, Y2) and points in a direction THETA clockwise from the vertical.
(e) SUBROUTINE OB06E(X, Y, ANG, R, H)
This draws an arrow from the point (X, Y) of length R pointing in a direction ANG and the arc length of the arrow-head is H. Again,if H is specified as 0. a suitable value is chosen.
(f) SUBROUTINE OB06F(X, Y, ANG, R)
This draws a line from the point (X, Y) of length R in the direction ANG.
3. Restrictions For lines and arrows, both ends should be within the 4020 raster. For arcs and circles the centre may be off the raster, but if the centre of a circle is nearer the edge than its radius, part of the circle will be lost. All angular arguments may be positive or negative.
4. Other Routines Routines C, D and E above all call routine A. All the routines call SUBROUTINE VECTOR.
1. Purpose This subroutine plots a histogram on one frame of either microfilm, hard copy or both using the SC 4020.
2. Argument list
SUBROUTINE OC01A(A,XMAX,YMAX,XTITLE,YTITLE,NFLM,F,IA,I20)
A is a one dimensional array of length YMAX; it is the actual height of the section of the histogram.
XMAX is the number of sections in the histogram.
YMAX is the largest value of A.
XTITLE and YTITLE are the titles to be printed along the X and Y axes respectively. These titles must be read in by the user on a card in 'A' format.
NFLM is set to 1, 2 or 3 according to whether 1: Microfilm, 2: Hard copy, 3: Both are required.
F is the field width of the numbers to be printed. The position depends upon the value given to I20.
IA is not set if 120 is set to 1.
If I20 is 2, then IA must be set to the number of intervals between the maximum and minimum Y values.
I20 is set to 1 or 2 eccording to whether printing.
1. In the sections of the histogram 2. Along the side of the Y axis
is required.
3. Restrictions If I20 is set to 1 then there is a restriction on the size of number which can be printed. If there are a lot of sections to the histogram then the field width is small. In general for about 20 sections F < 6 and varying according to the number of sections.
4. Output This subroutine causes no output except for the graphs.
5. Other routines SCFOR is called by OC01A.
6. General This routine does not use common storage.
The compiler of this manual would like to acknowledge the assistance given to him by the staff of A.W.R.E. Aldermaston and U.K.A.E.A. Culham in the course of preparing the software for the SC4020. In particular, the supplying of routine SCFOR and the associated notes by Miss M. U. Thomas, and ideas from Computer Organisation Notes by Dr. G.T. Jones and Mrs J. Knock all of A.W.R.E. Aldermaston.
Paul M. Nelson, Atlas Computer Laboratory, 1st September, 1967