SMOG is a set of FORTRAN routines for the presentation of numerical information in a graphical format. Whilst not minimal in computer resource requirements, it has been designed to be fast in operation and sparing in core requirement without sacrificing the major advantages of the larger graphical interface packages. SMOG can be considered to be a fast-running sub-set of the SPROGS subroutines with which it is consistent and fully compatible - subroutines with the same names have the same functions in both systems and passing from SMOG to SPROGS, should the user require it, requires little, if any, change to the source program.
The main output peripheral device is the III FR80 Microfilm Recorder at ACL and although, to some extent, the other graphical peripherals are considered to be diagnostic aids to "Production" running on the FR80, it must not be forgotten that the lineprinter, pen-plotter or storage-tube display is often quite sufficient an output medium and is certainly faster in that no wet-processing is required before results can be viewed.
SMOG Device Number |
SMOG Codename |
Output Medium | Main Device |
---|---|---|---|
1 | FRCL16 | 16mm Colour film | FR80 + Combined 35/16mm camera |
2 | FRBW16 | 16mm Black and White film | |
3 | FRCL35 | 35mm Colour film | |
4 | FRBW35 | 35mm Black and White film | |
5 | FRPR16 | 16mm Black and White film | FR80 + Precision 16mm camera |
6 | FRMFCH | 105mm Microfiche film | FR80 + Microfiche camera (see 6.3.3) |
7 | FRHCS | 12" × 12" full-frame Hardcopy paper | FR80 + Hardcopy camera (see 6.3.1) |
8 | FRHCM | "Many-up" Hardcopy ie many sub-frames per 12" × 12" full-frame Hardcopy paper | |
9 | TKTRON | Storage cathod-ray tube | Tektronix 4010 |
10 | HPACK | Paper chart | Hewlett-Packard pen-plotter |
11 | LPGRAF | Lineprinter paper | Standard lineprinter |
In the SMOG system these are considered to be eleven separate devices, only one of which may be used in any job. (Since some SMOG devices are not cameras, the term "Camera Number" is inappropriate. There is no correspondence between "SPROGS cameras" and "SMOG devices".) The SMOG Codename is the FORTRAN identifier of the subroutine that sets up the system to drive the particular device selected by the user in a particular run. This "Setting-up" of the system involves assigning output channels, issuing operator instructions, starting resource accounting etc and is called Initialisation.
The following are examples which generate some graphical output. They are presented here so as to fix ideas; the rest of the manual is devoted to the detailed description of the SMOG system.
In subroutine descriptions the FORTRAN, "CALL" will be suppressed, its presence being understood, and there being no function segments in the system at the user's level. Arguments, subscripts etc will be included in full, and the correct FORTRAN form will be used in all examples.
Many subroutines in SMOG are available in two versions, one for use with REAL and one for use with INTEGER arguments (see 8.2). In all cases, the version which has INTEGER arguments has the same or a similar name to its REAL counterpart but it is prefixed with the letter J. For example, the integer version of the subroutine SETXY(X.Y) is JSETXY(IX,IY). The descriptions of the subroutines will always refer to the arguments as REAL.
The command-structure demanded by the SMOG system is:
Command (a) is the calling of a device initialising subroutine (3.5) and (c) the calling of a graphics terminating subroutine (6.3.7). Both must be present for the system to operate correctly in routing output to the main device and to the user.
The set of FORTRAN statements (2.2.1) is complete in the sense that it will, when accessed by the SMOG macro (2.2.2) generate two sub-frames of hardcopy output on the FR80, the first depicting the unit circle and the second depicting a spiral. The section numbers refer the reader to the body of the text.
It is assumed that the FORTRAN program is a file on disc named FR80SOURCE (the user should consult the 1906A Reference Manual if he is not familiar with file creation).
Example: 2.2.1 Fortran Statement Section No / Comments LIST MASTER GRTEST C CALL XMPL1 Master Segment STOP END SUBROUTINE XMPL1 C***PLOTTING EXAMPLES CALL FRHCM 2.1 Initialise CALL APER 3.4.1 Select masking CALL LIMITS(-1.05,-1.05,1.05,1.05,1.0,1.0) 3.4.10 Aspect ratio scales C***FIRST FRAME - UNIT CIRCLE CALL SETXY(1.0,0.0) 4.1.1 Start at (x,y).. TH=0.0 DTH=3.1416/50.0 DO 10 I=1,100 TH=TH+DTH X=COS(TH) Y=SIN(TH) CALL TOXY(X,Y) 4.1.2 draw to (x,y) 10 CONTINUE C***END OF FIRST FRAME - COULD END HERE BY:- C CALL ENDSPR 6.3.7 Terminate C RETURN C END C FINISH C***BUT WE CONTINUE C C***SECOND FRAME - SPIRAL CALL ADVFLM 6.3.5 DR=0.005 R=0.0 TH=0.0 CALL SETXY(0.0,0.0) 4.1.1 DO 20 I=1,200 TH=TH+DTH R=R+DR CALL TOXY(R*COS(TH),R*SIN(TH)) 4.1.2 20 CONTINUE CALL ENDSPR 6.3.7 RETURN END FINISH
At the MOP terminal in USER CONTEXT one need only issue the following command:
SMOG *CR FR80SOURCE
and the system will respond:
DISPLAY: TASK NOW JOB SMG - mopjobname; END OF MACRO 08.31.27← 2.2.2