Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Introduction and contents2. The SMOG system3. Mapping to a device4. Line drawing5. Text printing6. Control of the medium7. Command-sets in files8. Economy - Integer routines9. High level routines10. Appendices11. Manual updates
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

Introduction and contents
2. The SMOG system
3. Mapping to a device
4. Line drawing
5. Text printing
6. Control of the medium
7. Command-sets in files
8. Economy - Integer routines
9. High level routines
10. Appendices
11. Manual updates

11. MANUAL UPDATES

This paper contains additions and corrections to the SMOG Manual which was issued in January 1976. The section numbers mentioned refer to the SMOG Manual. All of the new facilities except those in Section 7 are available on both the 1906A and the 360/195.

11.1 Mapping to a Device

Some confusion has arisen as to the exact effect of the subroutine LIMITS (3.4.10 in the Manual). In order to try to clarify the situation a new subroutine has been defined:

      LIMITR(X1,Y1,X2,Y2,RX,RY) 
      JLIMR(IX1,IY1,IX2,IY2,IRX,IRY)

This sets RX of the user's units in the X direction to be equivalent to RY of the user's units in the Y direction. This will normally necessitate a change of shape of the visible area in a similar manner to that caused by LIMITS. As with LIMITS, the new visible area is smaller than the old visible area.

Whereas LIMITS sets the aspect ratios of the whole visible area to be SX:SY, LIMITR sets the ratios of the sides of a square on the output to be RX:RY in the user's coordinates. If XMAX-XMIN equals YMAX-YMIN and RX,RY,SX,SY are all unity, which is often the case, then the two subroutines produce identical effects.

Also, a method of drawing on only a subsection of the screen has been defined. Having set up a visible area, a subdivision of this can be selected by a call to:

      SUBDIV(X1,Y1,X2,Y2)

where X1,Y1,X2 and Y2 are all in the range from 0.0 to 1.0. If the visible area is thought of as being 1 unit in each direction, then SUBDIV selects the rectangle defined by (X1,Y1) and (X2,Y2) as the new visible area. This new visible area still has the same user coordinates as the old visible area.

The following example successively subdivides the cine screen into 3 equal areas, each with a coordinate system from (0,0) to (10,10) and plots a number in the lower left hand corner of each area. Note the call to CINE each time to reset the visible area to the whole screen before subdividing it.

      CALL JLIMV(0,0,10,10)
      CALL CINE
      CALL SUBDIV(0.0,0.0,1.0,0.333)
      CALL JCHSIZ(5)
      CALL HPLOTS('1')
      CALL CINE 
      CALL SUBDIV(0.0,0.3333,1.0,0.6667)
      CALL HPLOTS('2')
      CALL CINE
      CALL SUBDIV(0.0,0.6667,1.0,1.0)
      CALL HPLOTS('3')

11.2 Dotted and Dashed Lines

The following set of six routines can be used to draw dotted and dashed lines. Since the dashes are drawn by calls to SETXY (4.1.1) and TOXY (4.1.2) and the dots by calls to SETXY (3.1.1) and PLOTPT (5.1.3) calls to these routines may generate large numbers of line drawing orders. The routines DOTINT and DOTSET are used to set up the mark-space ratios for the dot/dashing and the routines DOTVEC (integer equivalent JDTVEC) and ARDOT (integer equivalent JARDOT) are used to draw the line or lines according to those settings. NB For dashes in the horizontal and vertical directions to appear the same length a square region should be used (ie use LIMITR with RX=RY).

      DOTINT (DOTLEN)

This routine sets the length of the dash and the gap between the dashes to DOTLEN units in the current region's units.

      DOTSET (ON1,ON2,OFF1,OFF2)

This routine is used if a more sophisticated dashed/dotted pattern is required. The pattern is made up of sets of ON1, OFF1, ON2 and OFF2 where; ON1 and ON2 are dash lengths and OFF1 and OFF2 are gap lengths. If both ON1 and ON2 are set to 0.0 then the plotting point is plotted at alternate gaps of OFF1 and OFF2.

      DOTVEC (X1,Y1,X2,Y2) 
      JDTVEC (IX1,IY1,IX2,IY2)

This routine draws the line from (X1,Y1) to (X2,Y2) according to the specified dot/dash lengths.

      ARDOT (XAR,YAR,N)
      JARDOT (IXAR,IYAR,N)

This routine plots the continuous line specified by the first N points of the arrays (XAR,YAR) according to the specified dot/dash lengths. The routine remembers how far it has progressed along each line segment and is thus of use when plotting curves. When using JARDOT, N should not be greater than 100.

11.3 Body Centred Characters

On the FR80 the six characters - * + . 0 X are available in two formats, normal and centred-up (5.4.2). Previously switching from one format to the other required looking up character codes and changing values in the table in the COMMON BLOCK named TEXTAB (5.4). Two new routines simplify switching from one. format to the other. The routine:

      BCENON

switches the six characters from normal format to body centred format and the routine:

      BCENOF

switches them back to normal format.

WARNING: If text strings are drawn with body centred characters selected, any occurrences of the above six characters will not be in line with the other characters in the string.

11.4 External Functions

Just a reminder that when using the curve function drawing routines CVFNCA, CVFNCB, CVFNCR and CVFNCS (9.1.9,9.1.10) the name of the function to be drawn should be declared in an EXTERNAL statement. For example, to draw a sine curve from 0 to 2π

      EXTERNAL SIN
      PI=3.14159
      CALL CVFNCB(SIN,0.0,2.0*PI,72.0)

11.5 Graph Drawing

A new graph drawing routine

      GRAPF(N,XAR,YAR,NT,TITLE,NX,XLABEL,NY,YLABEL,APLOT)

has been provided to plot characters at the data points as well as drawing lines between the data points and plotting scales, axes and titles. The arguments are the same as those for GRAPH (9.2.1) with the exception of the last one, APLOT. This is the number of the character which is to be plotted at each data point. The body-centred characters are used if selected by APLOT but do not affect the titling. On the 1906A this number should be in the range 1.0 to 64.0 (64.0 will in fact plot character 0 which is 0 (zero)); see Appendix 3 for character codes. On the 360/195 the number should be in the range 1.0 to 256.0; see Appendix 6 for character codes.

11.6 3-D Projection

The orientation of the axes in the diagram (9.3) is somewhat misleading.

Axes marked X should be Z

Axes marked Y should be X

Axes marked Z should be Y

11.7 Facilities Only Available on the 360/195

The following list of facilities is by no means exhaustive; for a full list users should print the electric file 32MAINDR.WRITEUP.360SMOG. This file is in upper and lower case text so those users of Remote Workstations which do not cause lower case characters to be output as upper case should:

PRINT FL-32MAINDR.WRITEUP.360SMOG,FORMS=555,ROUTE=LOCAL 

with any PH parameter necessary for those with numeric identifiers.

11.7.1 FRSPEC

FRSPEC is an initialisation routine which picks up the camera type from the JCL and initialises SMOG accordingly. It solves two problems; firstly the camera type need only be specified once thus avoiding the possibility of a conflict between JCL and program and secondly it permits camera selection to be delayed until run time. This routine will default to hardcopy single (FRHCS) if the output is routed to disk for later use by VIEW$. It must not then be used with user owned output tapes for subsequent FR80 plotting.

11.7.2 KILLID

Some users found that they wished to suppress the IDframe when using microfiche. The IDframe serves two purposes; firstly it indicates to the user how the FR80 and film processor were performing when the job was processed and secondly it contains essential information for the operators when splitting and dispatching jobs on all film types except microfiche.

For microfiche only, it is the users choice whether the IDframe is output. Should the user wish to suppress it he may do so by calling the routine KILLID before calling an initialisation routine. On output types other than microfiche the routine has no effect.

11.7.3 Resetting FORTRAN I/O Streams in SMOG

The FORTRAN WRITE statements in SMOG have been changed to each use a predefined variable as the I/O stream number. These numbers are held in the SMOG COMMON BLOCK SMGCT but as this COMMON BLOCK is somewhat lengthy a routine has been provided to allow the user to change the default values for these streams.

There are eight FORTRAN I/O streams in the SMOG package as implemented on the 360/195 but not all of these are used at present. These streams, their default values and purposes are described in Table 1.

Associated with each of these variable stream numbers are two other variables. The first is a logical variable which is set to .TRUE. when the stream is attached to a legal device and the second holds the value returned by IDVICE (CIGAR SECTION E) from which the user can determine the type of device to which the stream is connected.

Table 1
STREAM
NAME
DEFAULT
NUMBER
LEGAL
DEVICES
OUTPUT BY THE SMOG SYSTEM
IOFROP NONE PRINTER RESERVED
IOUSER 12 PRINTER Output of FR80 banner, frame counts, etc
IODIAG `2 PRINTER SMOG error messages and general information from the basic system
IOHP NONE PRINTER May be used by the user for his own purposes. Reserved for HEWLET-PACKARD pen plotter orders
IOPUT NONE DISK
TAPE
For use in magnetic tape output from SMOG
IOLPG 13 PRINTER Not implemented at present but may be used in the future for lineprinter graphics emulation
IOMUG NONE DISK Output from TOMUG
IOPRT 12 PRINTER
DISK
Output from TOPRIN (6.4.3)

The routine SETIOS allows the user to set values of the stream variables in SMGCT and sets the logical switch (IOxxxx) and device type (IDxxxx) for the stream (IOxxxx). It has two arguments defined as follows:

  1. The stream name (this is a 4-character string which consists of the last 4 characters of the 6-character STREAM NAME specified in Table 1).
  2. The FORTRAN stream number.

Example:

      CALL SETIOS ('DIAG',15)

This call will initialise IODIAG to stream 15 and if this is connected to a printer will set LODIAG=.TRUE. and IDDIAG=2. If it is desired to turn off a stream it should be set to 0.

Legal values for the 4-character name are as follows:

PROP
USER
DIAG
HP
PUT
LPG
MUG
PRT

11.7.4 Job Control

Some of the JCL in Appendix 6 is now obsolete. Example 1 remains unchanged and the following changes have been made to example 2. The method for outputting to a private tape, example 3, has been extensively changed. The Electric file 32MAINDR.WRITEUP.TAPEUSE contains details of the new method. The old JCL shown in example 3 must not be used.

Example 2

This example has been considerably simplified. Example 2 compiles, link edits and executes a FORTRAN program driving SMOG output to a scratch disk dataset &&SCRA for subsequent processing by VIEW$.

//ABTEST JOB (ABGD,AB)/'D. COPPERFIELD'
//  EXEC FORTG,SYSLIB='SYS1.SMOG',REGION.G=210K
//C.SYSIN DD *
............
FORTRAN ROUTINES
.............
//G.GRAPHICS DD DSN=&&SCRA,UNIT-WORK,DISP=(,PASS),
//     SPACE=(TRK,(5,5)),DCB=XAFRDISK
//G.FT12F001 DD SYSOUT=A,DGB=PRINTER
// EXEC VIEW$
//G.FT14F001 DD DSN=&&SCRA,UNIT=WORK,DISP=(OLD,DELETE)

11.8 SMOG Names

The following routine names are now used by SMOG in addition to those in Appendix 7.2

ADVFTP
ARDOT
BCENOF
BCENON
BLCNTP
DOTINT
DOTSET
DOTVEC
DRIVER
FRBUFA
GRAPF
JARDOT
JDTVEC
JLIMR
LIMITR
MUGWMP 
NEXTAP 
SETIOS 
STRACT
SUEBDIV

Routine names containing non alphanumeric characters should be avoided. The following COMMON BLOCK name is now used by SMOG in addition to those in Appendix 7

DOTCOM

11.9 Graphics Library

As well as the graphics routines described in the SMOG Manual and this note some high level graphics routines are available on both the 1906A and the 360/!9S. These routines are described by a series of Graphics User Notes, the first nine of which are now available. Their subjects are as follows:

Graphics 
User 
Note Subject
1    Contour Plotting
2    Blocked Character Font .
3    Displaying Complex 3-D Objects
4    Drawing Map Projections
5    Shading in Areas
6    Plotting 3-D Histograms
7    Film Soundtracks by Computer
8    Blocked Character Font (Extensions to GUN 2)
9    Curve Fitting
⇑ 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