Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Contents1. Introduction2. Regions3. Display routines4. SPROGS files5. The file format6. Character fonts7. Index variables8. Efficiency of picture storage9. The sequence list10. Further facilities11. SPROGS on the 1906A12. An example film13. SPROGS preprocessor14. Future extensionsAppendices
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

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

Contents
1. Introduction
2. Regions
3. Display routines
4. SPROGS files
5. The file format
6. Character fonts
7. Index variables
8. Efficiency of picture storage
9. The sequence list
10. Further facilities
11. SPROGS on the 1906A
12. An example film
13. SPROGS preprocessor
14. Future extensions
Appendices

APPENDICES

Appendix 1: Nomenclature

ABSOLUTE
A file which contains coordinates of points as well as increments. That is, routines of the VEC type are used in the file's definition. See also RELATIVE.
BASIC FILE
A file containing basic device orders for a given device.
COMMAND
A display routine appearing in a file definition causes a command to be added to the file.
DISPLAY AREA
The complete area of the display on to which it is possible to place graphical information.
DISPLAY POSITION
The last coordinate used in any graphical output command. Defined as (XPOS,YPOS).
DISPLAY ROUTINE
All routines which can be stored in files as well as being executed.
FILM FILE
A file which contains control commands such as ADVFLM as well as line drawing commands.
FILE NAME
The name associated with a file. Stored in name table.
FILE NUMBER
The number associated with a file. The name and number together uniquely define a file.
FILE STACK
Stack used to save and restore system variables when using the sequence list.
FILE STORE
The area of store set aside to contain all files in the main system, it need not reside only in core.
FILE TABLE
Points to all files in the system. The key to the table consists of the file name and number.
INDEX VARIABLE
A SPROGS variable which can replace actual arguments in display routines.
NULL FILE
A file consisting solely of NULL commands.
PICTURE FILE
A file containing only line drawing commands and commands associated with setting line attributes. It does not contain any control commands.
PRIORITY LEVEL
Display routines are defined as being at a particular priority level. It is possible to define a file with no commands above a certain priority level.
REGION
A region either puts some constraint on the parts of the picture to be output or defines a unit system with respect to which the line coordinates refer..
LINE SEGMENT QUEUE
The storage system which contains information about the individual parts of a line to be output.
REGION TABLE
Contains parameters of all the regions.
RELATIVE
A file containing only line drawing commands which use increments of the display position is defined as relative. It requires a starting position to be defined external to the file before it can be output.
SEQUENCE LIST
The system whereby more than one file can be processed together, producing a composite film.
SYSTEM VARIABLE
One of the COMMON variables (such as XPOS, YPOS) which can be accessed by a user only through various SPROGS routines.

Appendix 2: Selected Region Parameters

SELECTED REGION PARAMETERS

XMIN YMIN XMAX YMAX
Limits of the selected reg~on REG
CNV
Type of conversion to be applied
BSC
Basic shape of region
P
Region in terms of which REG is defined
XPMIN,YPMIN,XPMAX,YPMAX
Equivalent limits of region REG in units of region
XMI,XMO
Defines visibility for the region
SWOUTP
Basic output region marker

VARIABLES PRESERVED DURING FILE OR SEQUENCE LIST EXECUTION

The following variables are saved every time a file is entered, and a subset of them is restored on exit, depending on the settings of FIDF. The restoration of variables following ADVFLM during sequence list execution is controlled by the second argument of ADSQLG, ADSQLL.

REG
Current region
INTEN
Intensity
THKNES
Thickness
DOT
Length of dotted segments
IDOTYP
Type of dotting
EOX,EOY
Origin of expansion
EX,EY
Expansion factors
ROX,ROY
Origin of rotation
RXY
Rotation factor
NRDR
Order of rotation/expansion
XPOS,YPOS
Current display position
EXT,EXY
Text expansion factors
LCLGLV
Current colour
NSWT
Text expansion switch

Possible settings of FIDF are:

1.0
All variables restored on exit. File number reset to 1.0.
2.0
XPOS,YPOS not restored. File number reset to 1.0.
3.0
XPOS,YPOS not restored. File number not reset.

Appendix 3: Display Routines

No Name Priority Arguments Meaning
0 NULL P1
1 SETXY 1 X,Y XPOS=X, YPOS=Y
2 TODXY 1 DX,DY Line from (XPOS,YPOS) to (XPOS+DX,YPOS+DY)
3 UPDXY 1 DX,DY XPOS=XPOS+DX,YPOS=YPOS+DY
4 DRCTN 1 DIR DIR;XPOS=XMIN,XMA YPOS=YMIN,YMAX
5 DRAW 1 FILE Draw File
6 NUMBR 1 XN XN is number of next file called or defined
7 PLOT 1 X Plots hardware character defined by SPROGS Number X
8 FIDF 1 X Finishes a file definition, Resets globals
9 STRACE 1 XN,XM Output trace information
10 RLNUMB 1 XN Current file number = XN
11 SHIFTD 1 XN Set lower shift character to XN
12 SHIFTU 1 XN Set upper shift character to XN
13 TEXPAN 1 EXT,EYT Set text expansion factors
14 TEXSW 1 XSW Switch text expansion ON and OFF
16 EXPAN 1 EOX,EOY,EX,EY Expand about EOX,EOY by factor (EX,EY)
17 ROTN 1 ROX,ROY,RXY Rotate about (ROX,ROY) by RXY radians
18 ERDR 1 ERDRV 1,2 Rotation before Expansion
19 INTNST 1 XNT Change line intensity
20 THICK 1 THK Change line thickness
21 DOTTED 1 DOT,DOTYP Change line type
22 IFS VAL1,CDTN,VAL2 Single shot while
23 ADSQLG 1 FILE,Y,Z Add file to sequence list starting with GLOBAL, Y variables, Z marker
24 DLSQLS 1 FILE Delete file from sequence list
25 SPSQLS 1 FILE Suspend file in sequence list
26 RSSQLS 1 FILE Restart file in sequence list
27 STOPSQ 1 Terminate sequence completely
28 REPEAT 1 Repeat file from start
29 PRINV 1 XINDX Print value of Index variable
30 SETX 1 X XPOS=X
31 SETY 1 Y YPOS=Y
32 TOXY 2 X,Y TODXY(X-XPOS,Y-YPOS)
33 VEC 2 X1,Y1,X2,Y2 SETXY(X1,Y1);TODXY(X2-X1,Y2-Y1)
34 UPDX 1 DX XPOS=XPOS+DX
35 UPDY 1 DY YPOS=YPOS+DY
36 LEFT 2 DRCTN(1.0)
37 RIGHT 2 DRCTN(3.0)
38 DOWN 2 DRCTN(2.0)
39 UP 2 DRCTN(4.0)
40 LNTYP 2 XNT,THK,DOT,DOTYP INTNST(XNT);THICK(THK);DOTTED(DOT,DOTYP)
41 REGION REG Select region REG
42 RGLIM R,XMIN,YMIN,XMAX,YMAX Reset limits of R
43 RGPLIM R,P,XPMIN,YPMIN,XPMAX,YPMAX Redefine R in terms of P
44 RGPRM R,CNV,BSC,XMI,XMO,SWOUTP Redefine parameters
45 ADVFLM Advance Film
46 LOAD XINDX,VAL Variable XINDX = VAL
47 ADD XINDX,VAL Variable XINDX = Variable XINDEX + VAL
48 SUB XINDX,VAL Variable XINDX = Variable XINDEX - VAL
49 MPY XINDX,VAL Variable XINDX = Variable XINDEX * VAL
50 DVD XINDX,VAL Variable XINDX = Variable XINDEX / VAL
51 POW XINDX,VAL Variable XINDX = Variable XINDEX ** VAL
52 WHILE VAL1,CDTN,VAL2 Repeat next command while VAL1 CDTN VAL2 is true
53 BEGINS 1 Command open bracket
54 ENDS 1 Command close bracket
55 SINX XINDX,VAL Variable XINDX = SIN(VAL)
56 COSX XINDX,VAL Variable XINDX = COS(VAL)
57 EXPX XINDX,VAL Variable XINDX = EXP(VAL)
58 LOGX XINDX,VAL Variable XINDX = LOG(VAL)
59 NEG XINDX Variable XINDX = - Variable XINDX
60 ADSQLL 1 FILE,Y,Z Add file to sequence list starting with CURRENT, Y variables, Z marker
61 TDX 2 X TODXY(X=XPOS,0.0)
62 TDY 2 Y TODXY(0.0,Y=YPOS)
63 TODX 2 DX Line from (XPOS,YPOS) to (XPOS+DX,YPOS)
64 TODY 2 DY Line from (XPOS,YPOS) to (XPOS,YPOS+DY)
67 NULSET 1 X Null routines will behave as routine X
68 GETLIB 1 X,Y,Z Get file X/Y from library
69 PUTLIB 1 X,Y,Z Put file X/Y into library
70 ERSLIB 1 X,Y,Z Erase file X/Y from library
71 LSTLIB 1 X List directory on library X
72 RDREG X Read current region numbers
73 RDLIM X1,Y1,X2,Y2 Read current limits
74 RDPLIM P,X1,Y1,X2,Y2 Read RGPLIM setting
75 RDVISO XMI,XMO Read visibility
76 RDBASE SW read region device setting
77 RDSHAP CNV,BSC Read shape
78 RDXY X,Y Read XPOS,YPOS
79 GALLIB 1 X Get All Files from Library X
80 COLOUR X All subsequent lines have colour X
81 COLGL X Only lines of colour X to be output
82-89 User display routines

Appendix 4: SPROGS Routines

The type indicates Subroutine (S) or Function (F).

Name Type Meaning
ANAME('ST') F Converts string ST into a REAL number representation, characters converted to SPROGS number, if ST is less than 5 chars, chars packed using 65 as multiplier, otherwise each must be alphanumeric, and ST must start with a letter, 37 is then used as packing multiplier
AR1(XND1,XND2,XND3) F Ith argument is array reference defined by index variable
AR2(XND1,XND2,XND3) F
AR3(XND1,XND2,XND3) F
AR4(XND1,XND2,XND3) F
AR5(XND1,XND2,XND3) F
AR6(XND1,XND2,XND3) F
BASE(SWOUTP) S Set current region as basic for device SWOUTP
BASER(R,SWOUTP) S set region R as basic for devices SWOUTP
DLETE (FILE) S Delete file from store
DSALL S Set visibility of current region
DSPF82 S Routines to execute user defined display routines
DSPF83 S
DSPF84 S
DSPF85 S
DSPF86 S
DSPF87 S
DSPF88 S
DSPF89 S
DVOUT(XI) S Sets the value of NTRMLS to XI
ENDSPR S Clears SPROGS output at end of run
EXPRED(A) S Select SD4020 expand image mode and remove pagethrow in lineprinter graphical
FILIST(X,XN) S List file X, number XN
FISAV S Finish saving basic file
FLASH S Project SD4020 form flash
FLEMKS(ANO) S Write ANO file marks to SD4020 tape
FMODE(XN) S Sets mode equal to XM, the mode of storage for the next file
GARBGE S Collect unused space in filestore
GETCHA(X,y) S Get character X from font Y into filestore
GETFNT (X) S Get font X into the file store
GVCHSZ(DX,DY) S Get text factor for natural character size
IDSTST(XN,A) S Test for store or execute user display routine
LCPRY(XPRYV) S Set local priority value
LIBINT(X) S Initialise library X
LIMIT(XM,YM,XN,YN) S Set limits of current region
LPDBUG S Add lineprinter to current region devices and select it in addition
LPGRAF S Set regions for lineprinter graphical and select
LSTALL S List all files
MF35MM S Select 35mm camera instead of 16mm
NEWDSP(XN,XNI,XNO) S Set up new user display routine
NOLPG S Do not include lineprinter graphical routines
NOSD S Do not include SD4020 routines
NLINES(XN) S Draws file 'NL' XN times
NPAGE S ADVFLM, UP, LEFT and draw file 'NL'
OUTR (R,XN) S Set region R as basic for devices XN and select devices
PCPRY(P) S Sets the global priority level NPRYV equal to P for the next file definition
PLIMIT(P,XM,YM,XN,YN) S Set current region in terms of region P
PR1(XIND) S Defines argument in Ith position as reference to index variable
PR2(XIND) S
PR3(XIND) S
PR4(XIND) S
PR5(XIND) S
PR6(XIND) S
RUNOUT(X) S X frames of runout on SD4020 microfilm
SDFILM S Set regions for SD4020 microfilm and select
SDHARD S Set regions for SD4020 hardcopy and select
SETIO(XL,XER,XLP,XSDO,XSDU,XSDU,XTR) S Reset IO streams for file lists, error messages, lineprinter output, SD4020 operator and user output and trace list
SHAPE(CNV,BSC) S Set shape of current region
SHAPER(R,CNV,BSC) S Set shape of region R
SHIELD S Set visibility of current region to outside only
STCHSZ(DX,DY) S Set text factor for character grid size
STDF(ST) S Starts defining a file whose name is ST, the number of the file is the current value of NUMBER, the mode of the file is attempted as the current mode setting, the value of NPRYV defines the global priority setting
STSAV(X,D) S Save orders for device D in file X
STSPR S Initialise SPROGS system
STSQLS S Start sequence list
TEXT(N,'ST') S A shorthand for drawing a set of pictures corresponding to characters
TOPRIN(ANO) S Print SD4020 tape orders
TOTAPE(ANO( S Suppress writing SD4020 tape
TYPEN(A,XI,XJ) S Print number A on output devices
VISO(XMI,XMO) S Set visibility of current region
VISOR(R,XMI,XMO) S Set visibility of region R
VTEXT(N,'ST') S As for text, but character interspersed with file 'VT'
VTYPEN(A,XI,XJ) S As for TYPEN, but characters interspersed with file 'VT'
WINDOW S Set visibility of current region to inside only
XMLTIM(A) F Mill time in secs

Appendix 5: Hardware Output Devices

DEVICE RASTER SIZE INITIAL REGION RGLIM SETTINGS
SD4020 1024*1024 0 0.0,1023.0,1023.0,0.0
LP Graphic 120*120 1 0.0,0.0,119.0,119.0

Note that these settings are initialisations only. The user can, of course, define his own basic regions for these devices.

Region 3 is initially set as an upright SD4020 region (ie, with origin in the bottom left hand corner, and region defined in terms of region 0). If only text is to be output to the SD4020, region 3 should be selected, since all software characters are defined assuming the origin at the bottom left hand corner of the frame.

Appendix 6: SPROGS Hardware Characters

SPROGS
Number
Character SD4020
Octal
1906A
Octal
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 10 10
9 9 11 11
10 0 0 0
11 A 21 41
12 B 22 42
13 C 23 43
14 D 24 44
15 E 25 45
16 F 26 46
17 G 27 47
18 H 30 50
19 I 31 51
20 J 41 52
21 K 42 53
22 L 43 54
23 M 44 55
24 N 45 56
25 O 46 57
26 P 47 60
27 Q 50 61
28 R 51 62
29 S 62 63
30 T 63 64
31 U 64 65
32 V 65 66
33 W 66 67
34 X 67 70
35 Y 70 71
36 Z 71 72
37 + 20 33
38 - 40 35
39 * 54 32
40 / 61 37
41 Space 60 20
42 . 33 36
43 , 73 34
44 = 13 15
45 ( 74 30
46 ) 34 31
47 $ 53 74
48 ? 37 17
49 ' 15 27
50 " 16 22
51 < 14
52 > 16
53 [ 73
54 ] 75
55 ! 21
56 # 23
57 £ 24
58 % 25
59 & 26
60 @ 40
61 : 12
62 ; 13
63 ↑ (uparrow) 76
64 ← (backarrow) 77
65 ± (+-) 36
66 d 57
67 ∫ (Integral) 75
68 Σ (Sigma) 76
69 π (pi) 32
70 box 77
71 α (alpha) 17
72 β (beta) 35
73 γ (gamma) 55
74 δ (delta) 16
75 ° (degree) 72
76 · (plotting dot) 52

Appendix 7: Fonts

The following fonts are available. All of them assume that the current region is upright, ie the upper region limits (XMAX,YMAX) are greater than (XMIN,YMIN) respectively.

FONT NUMBER CHARACTER GRID DESCRIPTION
1 16 × 16 The first 64 SPROGS characters are defined, using simple lines to construct them.
2 16 × 16 As above, but with lower case letters in place of the upper case ones.
3 12 × 8 SD4020 hardware set. Characters 65 to 76 are obtained by using the printable characters 51 to 63, which have no SD4020 equivalent.
4 1 × 1 Lineprinter hardware set.
5 32 × 32 Helvetica font. Alphanumeric characters only. This font is not equispaced, however, and will give strange effects if used vertically.

It should be noted that, because of the coarse grid possible on the lineprinter, the software characters will appear strange if used with lineprinter graphical output selected.

Associated with each font are three files, which are used in the various high level routines. The file names are:

NL
Carriage return, linefeed
VT
Backspace, linefeed
BS
Backspace

Appendix 8: Additional Routine Names

The following additional routine names are used by the SPROGS system. Care should be taken to avoid name clashes with user routines.

ACFLSR       DVDF        LOGIC       RDSHPF     STXFLS 
ACFLST       DYLIST      LOGXF       RDVSOF     STXFLT 
ACFLTB       DYREAD      LPCH        RDXYF      STXNMT 
ACLSQ        DYRITE      LPGEX       RECOV      SUBF 
ACNDST       ENDSF       LPGST       REDUND     TAPE14 
ACNMTB       ENDIST      LPGOUT      REGONF     TAPE15 
ACRGTB       ERDRF       LPGCH       REPETF     TEXPNF 
ADDF         ERLIST      LPGVEC      RESET      TEXSWF 
ADSQGF       ERRMESSAGE  LPPRINT     RGLIMF     THICKF       
ADSQLF       ERROR       LPVEC       RGPLMG     THKEN    
ANDBIT       ERROR1      MAINCO      RGPRMF     TMPLT    
ANDLOG       ERROR2      MDEXX       RIGHTF     TOBUFFER 
AR           ERROR3      MORECORE    RLNUMF     TODXF 
ARGET        ERSFIL      MOVFLM      ROTNF      TODXYF 
ARK          EXPANF      MPYF        RSSQLF     TODYF 
ARPUT        EXPXF       NACDST      RTRACE     TOXF 
ASSLP        FIDFTR      NACMTB      RTRACS     TOXYF 
ASSTLP       FILMARKS    NAFLSQ      SDCH       TOYF 
BDRY         FILEMARKS   NAFLST      SDMH       TRIGS 
BEGNSF       FISVTR      NAFLTB      SDVEC      UNITSZ 
CHARSZ       FINIS       NEGF        SDTITL     UPF 
CHKARG       FLCONT      NFNDSQ      SD4020     UPDXF 
CHKMDE       FLDEL       NSDCNV      SEE        UPDXYF 
CHKOUT       FLINE       NULLE       SEEVEC     UPDXYF 
CHNLNK       FLINIT      NULSTF      SETUPF     UPDYF 
CLEARLPBUFF  FPLNT       NUMBRF      SETXF      VECF 
CLOSEMT      GALFIL      OBEY        SETXYF     WHILF 
CLOSEMV      GETBOD      OPENMT      SETYF      XERROR 
CNVXY        GETFIL      OPI         SHFTDF     XPAND 
CONCUT       GETSTK      OUTBSC      SHFTUF     XPROT 
CONTHT       GIVSTK      OUTBUFFA    SINXF      XROT 
CONVINSTR    IARSET      OUTORDER    SPOTCH     XTPAN 
COSXF        IDSRTN      PACKFL      SPSQLF     XXJBTL 
CPRERR       IFPOS       PDPCH       SQEND      XXLPG 
DCODE        IFF         PDPVEC      SQNTRY     XXMES 
DELBLK       IGNORE      PLNTV       SQSWCH     XXNUMR 
DELSQ        INISPR      PLOTF       STDFTR     XXPACK 
DEXPA        INPOS       PLOTHT      STFLSQ     XXSD 
DLSQLF       INTERP      POWF        STFLSR     XXSDCV 
DMOVG        INTNSF      PR          STFLST     XXTMDT 
DMOVP        INVIEW      PRINTlNSTR  STFLTB     XXUNPK 
DOPEN        ISTREX      PEINVF      STLSQ      XXUPSN 
DOTTF        ITOBIG      PUTFIL      STNMTB     ZERROR 
DOWNF        JOBNAME     QRITE       STORE 
DRAWF        LEADER      RCNCL       STPSQR 
DRCTNF       LEFTF       RDBASF      STRACF 
DREAD        LNTYPF      RDLIMF      STRGTB 
DRITE        LOADF       RDREGF      STSVTR 
DRWBDY       LOGAND  

SPROGS also uses the following COMMON block names

   SPRG1 
   SPRG2 
   SPRG3 
   SPRG4 
   SPRG5

Appendix 9: SD4020 Description

A9.1 Introduction

The SD4020 Microfilm Recorder, designed and manufactured by Stromberg DatagraphiX Corporation, is a sophisticated microfilm and hardcopy plotter which can be used as either on-line or off-line peripheral equipment for a computer. The most obvious use of the SD4020 is for the rapid production of graphical output.

A9.2 Machine Description

The basic components of the SD4020 are shown in Fig A9.1.

Fig A9.1: Diagrammatic View of the SD4020

Fig A9.1: Diagrammatic View of the SD4020
Full image ⇗
© UKRI Science and Technology Facilities Council

These are as follows:

  1. An IBM 729 IV tape deck capable of reading 7-track tapes at 200 and 556 bits per inch.
  2. A tape adapter which accepts data from magnetic tape at up to 90,000 characters per second. The 6-bit information tracks from the IBM tape are assembled into 36-bit SD4020 instructions.
  3. The Charactron Shaped Beam Tube. This is a special cathode ray tube upon which are displayed vectors, axes and characters. The Charactron tube is the most important part of the SD4020.
  4. Forms Projector. It is possible to illuminate a microfilm slide, called a form slide, by switching on the light behind it for a short period. The light deflection system allows light from both the form slide and the Charactron tube to impinge on the two characters.
  5. Microfilm Camera. The microfilm camera is capable of running 16mm or 35mm film. Both are sprocket controlled and the operator can manually load one or other. The film advance and shutter control of the camera is controlled by SD4020 instructions.
  6. Hardcopy Camera. The hardcopy camera is similar in operation to the microfilm camera. The photorecording paper must be developed before viewing.
  7. Plate Film. Large single hardcopy plates, size 8" x 10", can be loaded in place of the hardware camera. As there is no film advance mechanism, users of this film should separate each frame on tape by filemarks so that the operators can change plates.

The operation of an SD4020 camera is basically different from that of a standard camera in that an SD4020 camera tends to have its shutter open most of the time. An SD4020 instruction requesting a line to be drawn on the Charactron tube will cause the line to appear for sufficient time to sensitize the film in the camera (with its shutter open). A complete scene on a microfilm frame is therefore built up by a large number of lines and characters appearing on the Charactron tube for short periods of time. At no time is the complete scene available on the tube face.

A9.3 The Charactron Shaped Beam Tube

A diagram of the tube is shown in Fig A9.2. As far as line drawing is concerned, the Charactron tube behaves very similarly to the standard cathode ray tube. Fig A9.2 shows how a character is projected on the viewing screen. The electron gun shoots an unshaped electronic beam towards the viewing screen. The beam passes through selection plates which deflect the unshaped electronic beam through the particular matrix aperture for the desired character. As the beam leaves the matrix, it has been shaped into the form of the character aperture through which it has passed. This shaped beam is then accelerated and then deflected to the desired position on the tube face. The character matrix is a small thin alloy disc on which 64 character shaped openings are engraved in an 8 × 8 array. The whole matrix is less than 0.25in square.

Fig A9.2: Charactron Shaped Beam Tube 7-inch type

Fig A9.2: Charactron Shaped Beam Tube 7-inch type
Full image ⇗
© UKRI Science and Technology Facilities Council

As far as line drawing is concerned, the screen is divided into 1024 × 1024 positions and the beam can be deflected so that a line can be produced between any two of the raster positions. Each Charactron character occupies approximately 6 horizontal by 9 vertical raster positions on the plotting area of the tube face.

The complete Charactron tube assembly can be manually moved through 90°, 180°, 270°. Its standard setting is the CINE postion shown in Fig A9.3. The other positions of the tube are also shown in Fig A9.3. This manual movement of the tube is not a trivial operation. Consequently,plotting at the Laboratory will always be in CINE mode unless another tube position is specially requested.

Fig A9.3

Fig A9.3
Full image ⇗
© UKRI Science and Technology Facilities Council

A9.4 Microfilm Cameras

35mm and 16mm film is available at the Laboratory. The 16mm film will normally be mounted. This is perforated and is ideal for producing movies direct from the SD4020. The 35mm film is also perforated. The film can be used in aperture cards or 35mm roll viewers. The image is compatible with standard 35mm movie projectors. The camera operates at speeds up to 10 frames per second and is supplied with two take-up and two supply magazines.

A9.5 Hardcopy Camera

The hard copy camera makes it possible to record the displayed information on photo recording paper. The paper is in a continuous roll approximately 9 3/8in in width. The 4in square display on the Charactron tube is recorded as a 7.5in square on the paper. The standard pull down between frames is about 99.5in. The magazine holds about 350 feet of paper. Once a suitable amount of output has been produced on the SD4020, the hard copy magazine is removed and developed off-line from the SD4020.

A9.6 Form Projector

This feature allows the SD4020 to superimpose fixed data on the variable data generated by the Charactron shaped beam tube. The fixed data is produced on a glass slide (for example maps and drawing formats). The glass slide is then mounted in a slide holder assembly which is inserted into the form projector. A strobe light located within the form projector is used to illuminate the glass slide. The strobe light is flashed under program control to cause the slide data to be superimposed on the information coming from the Charactron tube. Alternatively, by energising a special AUTO-FORM PROJECT switch, a form may be projected automatically for each frame advance.

A9.7 Tape Deck

Graphical output from the SPROGS package is stored on 7-track magnetic tape as SD4020 orders. This tape is then removed and remounted on the SD4020. The SD4020 tape adapter then decodes the information and produces the desired output. Output is normally produced in odd parity mode. However,the SD4020 is also capable of accepting even parity BCD records. Even parity records are assumed to be BCD information to be output as characters and such records are typed with automatic line feeds and page throws inserted between frames.

A9.8 SD4020 Instruction Set

Appendix 10 defines the SD4020 order code and the format taken by the 36 bit instructions. The raster positions run from 0 to 1023 in both directions. The origin (0,0) is in the upper left hand corner with X and Y values increasing to the right and down, respectively.

The SD4020 instructions refer to these raster positions. The following section will describe each of the SD4020 operations. The opcode of each instruction is given in brackets following the instruction name. The names in the next section are those used in Appendix 10. The complete set of all SD4020 commands are described here, although a number of these cannot be used directly from SPROGS.

A9.8.1 Control Operations

ADVANCE FILM (46)
The ADVANCE FILM command causes the film in the camera (or cameras) selected to be advanced one frame.
RESET (56)
The RESET command performs simultaneously the function of ADVANCE FILM, STOP TYPE and EXPOSE HEAVY.
SELECT CAMERA (41, 42, 43)
These three instructions open the shutter of the camera (or cameras) designated and close the shutters of any camera not selected. The instructions are SELECT MICROFILM CAMERA (41), SELECT HARDCOPY CAMERA (42), and SELECT BOTH CAMERAS (43).
EXPAND IMAGE (44)
The EXPAND IMAGE instruction expands the size of the image on the Charactron tube face. The exact size is adjusted so that successive frames of 35mm microfilm will abut to allow plots to extend continuously through several adjacent frames. The number of raster positions and the size of the hardware characters remain the same. The expansion therefore causes the space between the hardware characters to be increased in EXPAND IMAGE mode. The image remains expanded until the REDUCE IMAGE command is given.
REDUCE IMAGE (45)
The REDUCE IMAGE command causes the image to be reduced to 4in square on the Charactron tube and to remain at 4in until another EXPAND IMAGE command is given.
PROJECT FORM (50)
The information on the form slide is superimposed on the current frames of the currently selected cameras. This is done by illuminating the slide for a short period.

A9.8.2 Plotting Instructions

PLOT (00)
EXPOSE LIGHT(04)
EXPOSE HEAVY(02)
These 3 instruction are similar in that they plot the hardware character with SD4020 number C centred on the raster position at (X,Y) (see Appendix 10). The instruction PLOT operates_ in the density mode to which the SD4020 has been set. The other two instructions reset the intensity before plotting the characters. All plotting or typing subsequent to the EXPOSE LIGHT or EXPOSE HEAVY instructions is done in the intensity established. Changes to the intensity can only be achieved by another of these instructions or the RESET instruction.

A9.8.3 Line Drawing

DRAW VECTOR (6)
This instruction causes a line to be drawn between the point (X,Y) and the point: (X+(2SX-1)DX, Y-(2SY-1)DY) where SX, SY are single bits taking either the value 0 or 1.
GENERATE X-AXIS (30)
This instruction generates an axis parallel to the X-axis starting at (X,Y) and extending to (I,Y) where I = complement(S). The point (I,Y) must be at least 64 raster positions to the right of the point (X, Y).
GENERATE Y-AXIS(32)
This instruction generates an axis parallel to the Y-axis starting at (X,Y) and extending upwards to (X,S). The two points must be at least 64 raster points apart.

A9.8.4 Typing Instructions

For all the operations given above, the SD4020 accepts 36 bit instructions one at a time, decodes them and produces the required action. This is the normal mode of working. However there is also a typewriter mode of working. Once this mode has been selected, hardware characters are generated more economically as far as both time and space are concerned. The typewriter mode is initiated by either of the two commands TYPE SPECIFIED POINT or TYPE CURRENT POINT.

TYPE SPECIFIED POINT (20)

The SD4020 character. numbered C, is typed at the raster position (X,Y). In addition the typing position is moved to the next character position. In the typewriter mode, the raster grid of 1024 × ]024 positions may be regarded as consisting of 64 lines of 128 typing positions. Once typing mode has been entered by the TYPE SPECIFIED POINT instruction, characters are typed across the line until the 128th space has been filled or a CARRIAGE RETURN character is typed. In either case, typing continues on the next lower line at the extreme left of the grid (X = 0, Y = Y + 16). An ADVANCE FILM instruction must be given after the 64th line has been typed. Otherwise typing will continue on the first line of the same frame at X = 0, Y = 0 and will be superimposed on any information already there.

After the SD4020 has entered typewriting mode, each subsequent instruction of 36 bits is divided up into six 6-bit fields as shown in Format 7 (Appendix 1Otyping position is then incremented. Each 36-bit instruction in typewriting mode therefore types 6 characters. The characters Ci can be any of the characters defined in Appendix 6, except that the character codes 12, 52 and 56 octal do not type characters but act as carriage and mode controlling operations.

Ci = 12 will cause the rest of the instruction to be ignored and returns the SD4020 from typewriter mode to normal mode.

Ci = 52 will cause the carriage control to move to the next line (X = 0, Y = Y + 16).

Ci = 56 is similar to the RESET instruction. Any remaining characters in the word are ignored.

As the character 12 can also appear in the first character position, this could be considered as a special SD4020 order for resetting the normal mode of operation. This is given the name STOP TYPE (see RESET).

TYPE CURRENT POINT (22)
This is another instruction which changes the mode of operation to typewriting mode. Instead of defining the next typing position as in TYPE SPECIFIED POINT, the typing position is defined as the position specified by the last point plotted or typed or the origin of the last vector or axis drawn. This instruction has little value in a high-level graphical system. Once the typewriting mode has been entered, the characters C1 to C5 are typed.

A9.8.5 Lineprinter Simulation Mode

If at any time the SD4020 encounters a record on the IBM tape which is even parity instead of the normal odd parity, then it enters a completely distinct mode of operation called PRINT MODE. In PRINT MODE, the SD4020 can be used for producing output equivalent to standard lineprinter output produced from BCD coded even parity files on a computer such as the IBM 1401. Within the PRINT MODE there are two sub-modes called PRINT NORMAL MODE and PRINT LIST MODE. The submode can be selected by the SD4020 operator. At the Laboratory, the SD4020 will normally be set to PRINT NORMAL MODE.

PRINT NORMAL MODE

In this mode the first character of each record is interpreted as a control code to allow carriage control command to be fulfilled. The remaining 6-bit characters in the record are converted, the second character in the record being printed in the first character position of the line. The possible control characters in the first character position are:

01
Page throw
20
Single newline
12
Double newline
52
Carriage return
56
Typewriter reset, advances frame and sets to EXPOSE HEAVY. Stays in PRINT Mode.

When the 64th line of a page is reached, the SD4020 executes an automatic advance frame on the next carriage return. In positions other than the first, the BCD code 12 will cause the remainder of the current record to be ignored. Similarly the BCD code 56 will be equivalent to the RESET operation in typewriter mode except that the SD4020 will stay in PRINT MODE. In PRINT NORMAL MODE records of up to 132 characters can be processed.

PRINT LIST MODE
In this mode, which can be selected by the SD4020 operator, the first character of the record is not treated as a control character. In PRINT LIST MODE, an automatic carriage return is executed upon reaching the 128th character of the line. The first character of the record is printed in the first character position of the line. Automatic page advance occurs as in PRINT NORMAL MODE.

Appendix 10: SD4020 Order Code

This Appendix is a copy of the order code page.

Appendix 11: Extra High Level Routines

The following routines provide histograms, shading, curve drawing, etc:

Routine Meaning
Histograms
HSTGMA Single shaded histogram
CMHSTA Composite shaded histogram
Shading
TXTURA Shading rectangular area
Curve Drawing
CVFNCA Single valued function plot
CVFNCB
CVFNCR
CVFNCS
ARCB Arc of a Circle
ARCR
ARCS
CIRCLA Complete Circle
CIRCLB
CIRCLR
CIRCLS
ELLPSA Complete ellipse
ELLPSB
ELLPSR
ELLPSS
Contour
CNTOUR square grid contours
CNTOR1 Contours inside specified boundary
Graphs
AXESA Plot axes
GRATA Graticule over plotting area
SCALA Label axes
Miscellaneous
AROWHR Arrow heads
CAROWVR
BOXA Rectangle
BXR
READXY Read current position

These routines are described in more detail below:

ARCA (X,Y,RAD,D,THST,THFI,P)
ARCB (X,Y,RAD,Q,THST,THFI,P)
ARCR (RAD,D,THST,THFI,P)
ARCS (RAD,Q,THST,THFI,P)
These subroutines draw an arc of a circle of radius RAD. ARCA,ARCB take the circle centre (X,Y) and draw an arc from (X+RAD*COS(THST), Y+RAD*SIN(THST)) to (X+RAD*COS(THFI),Y+RAD*SIN(THFI)), antic1ockwise, using VEC orders. ARCR,ARCS start the arc at the current display position and use relative orders (ie the centre of the circle is assumed to be (CURRENT X-RAD*COS(THST),CURRENT Y-RAD*SIN(THST)). In ARCA,ARCR, each line segment of the arc is less than D in length. In ARCB,ARCS, Q equal line segments are used. If P=0.0, all lines are drawn, otherwise only every other line is visible, giving a dotted arc. The end-point of the arc will be the current position on exit.
Possible errors are the same as for the circle drawing routines.
AROWHR (DX, DY)
AROWVR (DX,DY)
draw an arrow head (V) at the current position whose size is given by DX,DY. AROWHR draws a horizontal arrow (left if DX positive, right if DX negative). AROWVR draws a vertical arrow (up if DY positive, down if DY negative).
AXESA (X,Y)
draws axes through (X,Y), reaching to the edges of the current region. The current display position on exit will be (X,Y).
BOXA (X1,Y1,X2,Y2)
BOXR (DX,DY)
draw a rectangle. BOXA uses VEC orders and constructs the rectangle so that the bottom left-hand corner is (X1,Y1) and the top left-hand corner is (X2,Y2), leaving the current position at (X1,Y1). BOXR uses relative orders and, starting from the current position, constructs the rectangle with sides DX,DY.
CIRCLA (XX,YY,RAD,D,P)
CIRCLB (XX,YY,RAD,Q,P)
CIRCLR (RAD,D,P)
CIRCLS (RAD,Q,P)
These subroutines draw a circle of radius RAD. CIRCLA, CIRCLB select (XX,YY) as centre and use VEC orders. CIRCLR, CIRCLS select the current position as centre and use relative orders. The circle centre will be the current position on exit. CIRCLA, CIRCLR construct the circle so that each line segment is less than D in length. CIRCLB, CIRCLS construct the circle from Q lines of equal length. If P = 0.0, all lines are drawn, otherwise only every other line is visible, giving a dotted circle.
The following errors are possible:
RAD≤0.0
ABS (RAD) taken, or 1.0 if RAD = 0.0
D<O0.001*RAD
D = 0.1*RAD
Q<1.0
ABS (Q) taken, or 8.0 if Q = 0.0
CMHSTA (XMN,YMN,DELTAX,DYAR,YMAX,CMAX,DX,Dy,TYPE,SRND)
This subroutine is similar to HSTGMA but produces a composite histogram. All the Y values involved are contained in the single dimensioned array DYAR. It is recommended that the user sets up the Y values in a two dimensional array whose limits are YMAX,CMAX and then uses the equivalence statement to provide the single dimensioned array needed for the argument to this routine. For example:
      DIMENSION DZ (YMAX,CMAX), DYAR (YMAX*CMAX) 
      EQUIVALENCE (DZ(1,1),DYAR(1))
Each histogram in this example would be contained in DZ(1,N) to DZ(YMAX,N). TYPE is a single dimension array, specifying the type for each histogram in the set. Similarly, DX,DY are single dimension arrays. Any negative Y values encountered in a histogram are taken as 0.
CNTOUR (XGRID,XN,HEIGT,XNO,XMK)
CNTOR1 (XGRID,XN,HEIGT,XNO,XMK,M)
These subroutines draw both closed and open contours on an XN by XN grid. The single dimensioned array XGRID gives the values at each grid point, stored by rows. XNO gives the number of contours required. If XNO is positive, the values of the contours are given in the array HEIGT. If XNO is negative, equally spaced contours are calculated and these values written to HEIGT. XMK non-zero indicates that dots are to be placed for reference at each grid point. CNTOUR draws contours to cover the whole grid, while CNTOR1 draws contours within the boundary specified by the integer array M, as follows:
M(1) = count of boundary points 
M(2) = not used 
M(I) = X, Y coordinates of boundary points in order
M(I+1)
These two routines expect output devices and a font to be set up and selected, together with the appropriate text scaling (suggested value for scaling fonts 1 and 2 here is XN/1023). The current region limits are reset to (0.0,0.0,XN,XN).
CVFNCA (F,XMN,XMX,DX,DY)
CVFNCB (F,XMN,XMX,P)
CVFNCR (F,XMN,XMX,DX,DY)
CVFNCS (F,XMN,XMX,P)
These subroutines draw the curve Y=F(X) between the X values XMN and XMX. F(X) must be a single-valued real function in the range. The curve is drawn using either VEC orders (CVFNCA,CVFNCB) or TODXY orders (CVFNCR,CVFNCS). If DX,DY are specified, the curve is drawn so that each line segment has an X-increment less than or equal to DX and a Y-increment less than or equal to DY. If P is specified, the curve is drawn using P lines, equally spaced in the X direction.
The following errors can occur:
XMX<XMN
curve drawn from XMX to XMN
XMX-XMN>100*DX
DX = 0.1*(XMX-XMN)
DY≤0
DY = 1.0
P<0
MOD (P) taken
P=0
P = 1.0
ELLPSA (XX,YY,A,B,DX,DY,P)
ELLPSB (XX,YY,A,B,Q,P)
ELLPSR (A,B,DX,DY,P)
ELLPSS (A,B,Q,P)
These subroutines draw an ellipse whose major and minor axes (parallel to X,Y axes) are A,B respectively. ELLPSA, ELLPSB select (XX,YY) as centre and use VEC orders. ELLPSR,ELLPSS select the current position as centre and use relative orders. The ellipse centre will be the current position on exit. ELLPSA,ELLPSR construct the ellipse so that each line segment has X,Y increments less than DX,DY. ELLPSB,ELLPSS construct the ellipse from Q lines, subtending equal angles at the centre. If P=0.0, all lines are drawn, otherwise only every other line is visible.
Possible errors are:
A,B≤0.0
Absolute value taken, or 1 if zero
DX<0.001*A
DX = 0.1*A
DY<.001*B
DY = 0.1*B
Q≤0.0
Absolute value taken, or B if zero
GRATA (DX,DY)
draws vertical lines DX apart and horizontal lines DY apart covering the whole of the currently selected region. The current position on exit will be the bottom left-hand corner of the current region.
HSTGMA (XMN,YMN,DELTAX,DYAR,YMAX,DX,DY,TYPE,SRND)
This subroutine produces a histogram with the interval in the X direction = DELTAX. The origin is assumed at (XMN,YMN). The Y values are contained in array DYAR (I) where I = I,YMAX. TYPE defines the pattern used in the histogram, as given in TXTURA. SRND = 0.0 draws a border around the histogram but excluding the baseline. SRND = 1.0 will draw the baseline as well. Any errors are processed by TXTURA.
READXY (X,Y)
reads the current values of the display position (XPOS,YPOS) into the FORTRAN variables X,Y. (cf RDXY which reads the same information into index variables).
SCALA (DX,DY,X,Y,XI,XJ,YI,YJ)
uses the currently selected font to label axes. Taking (X,Y) as origin, values are printed below the X axis, DX apart, and to the left of the Y axis, DY apart, to the edges of the region. The current visibility setting outside the region boundary is temporarily ignored to prevent numbers being lost. On exit, the current display position will be (X,Y). XI,XJ and YI,YJ define the formats of the numbers printed in the X,Y directions respectively. (See definition of routine TYPEN for possible number formats.)
TXTURA (XMN,YMN,XMX,YMX,DX,DY,TYPE,SRND)
The subroutine TXTURA puts a pattern on the rectangular area having opposite corners (XMN,YMN) and (XMX,YMX). The pattern is defined by the parameter TYPE with parameters DX,DY defining the periodicity. SRND specifies whether or not the border surrounding the area is drawn (SRND = 0.0 for no border, SRND = 1.0 for border).
The possible values of TYPE are:
0.0 no pattern
1.0 horizontal lines, DY apart
2.0 vertical lines, DX apart
3.0 combination of 1 and 2
4.0 diagonal lines, angle to horizontal THETA where TAN (THETA) = DY/DX
5.0 diagonal lines, angle to horizontal THETA where TAN(π - THETA) = DY/DX
6.0 combination of 4 and 5
7.0 horizontal dashed lines, DX long, DY apart.
8.0 as above, but every other line displaced by DX
9.0 vertical dashed lines, DY long, DX apart
10.0 as above but every other line displaced by DY
Parameters not used for a particular value of TYPE should be set to 0.0.
The following errors can occur:
XMX<XMN
Routine takes no action
YHX<YMN
Routine takes no action
DX<0
MOD (DX) taken
DY<0
MOD (DY) taken
XMX-XMN>500*DX
DX = .002*(XMX-XMN)
YMX-YMN>500*DY
DY = .002*(YMX-YMN)

Appendix 12: The SPROGS Macro

The SPROGS macro, which makes use of the TASK system designed at ACL, allows a user to compile and run a FORTRAN job together with the SPROGS graphics package. The macro may be OBEYed, in which case a background job is initiated, or may be called from a RUNJOB command. The following parameters are available.

JT time
JT specifies the jobtime for this run.
*CR, *TR
*CR filename, *TR filename
This parameter must appear somewhere, unless the RUN parameter is used (see later). The FORTRAN source for the job is taken from the job itself or from filename. More than one source parameter may appear, in which case the files will be compiled in order.
PRE
PRE filename
This parameter introduces source in preprocessor format, either in the job itself or in filename. At most, one PRE parameter may be used. Output from the preprocessor is appended to the first *CR filename specified, which should therefore not end with FINISH. If the *CR filename does not exist, it is created. Compilation then proceeds as usual. Note that, if this parameter is present, the first *CR may not refer to the job source.
PD filename
PD indicates that the user is supplying his own program parameters for the compiler in the file filename. Otherwise, default parameters will be used if the first source file does not begin with a set.
*LP
*LP filename
Computer output will be sent to the monitor file or to filename. Otherwise, it is sent to a workfile.
OPT
The optimising FORTRAN compiler XFEH will be used in place of XFIH.
COMP filename
Semicompiled output will be saved in filename.
SEMI filename
Semicompiled routines in filename will be included at consolidation. There may be several SEMI parameters.
BIN filename
The binary program will be sent to filename by the consolidator. However, this will not prevent execution of the program.
TI time
This parameter specifies the time limit for execution of the user's core image. Default setting is 30 secs.
NORUN
The job will not go into execution after consolidating.
RUN filename
Compilation and consolidation are ignored, and the binary program in filename is loaded.
SAVE filename
The core image after consolidation is saved in filename as a *DA file.
MZ number
The maximum size of the user's job is set to number.
SZ number
The size of the user's core image is set to number.
#CRn, #CPn,
#TRn filename, #CRn filename, #CPn filename, #TPn filename
Any number of these parameters may occur. The specified basic peripherals will be set up before the job begins execution, with data being read from the job itself or from filename, or sent to the monitor file or filename. n specifies the stream number.
#LPn, #LPn filename
This sets up the job's lineprinter streams. SPROGS makes use of streams 0, 1, 5 and 6. All lineprinter streams will be listed, with the exception of streams 5 and 6 if NOTAPE is present or #MT14 is absent (see below). LP1 will not be automatically assigned if lineprinter graphical output has not been selected.
NOTAPE
SPROGS uses MT14 for SD4020 output. If no SD4020 output is required, this parameter prevents the tape being loaded, and lineprinter streams 5 and 6 being assigned.
#ED filename, #DAn filename
As for basic peripherals, ED files are set up. filename may be an exofile name, in which case the file is ONLINEd. Qualifiers for ordinary files should follow filename in brackets. See below for exofile qualifiers.
#MTn,#MTn filename
This sets up either magnetic tapes or magnetic tape files. If filename is absent a work tape is ONLINEd. If filename is enclosed in brackets, the specified tape is ONLINEd. A magnetic tape may be specified by either its name or number or both. Qualifiers should follow the filename in brackets. For example:
#MT1                   work tape, usually 9~track
#MT1 MYFILE            magnetic tape file
#MT1 (MYTAPE)          magnetic tape called MYTAPE
#MT1 (7172 ,MYTAPE)     magnetic tape number 7172 called MYTAPE
If the user specifies ? as the magnetic tape number, a pool tape will be obtained, a GETONLINE command instead of an ONLINE will be obeyed and the tape will be renamed. The user must have a magnetic tape budget which allows at least one more tape to be acquired, otherwise no tape will be allocated and an error will be indicated. For example:
#MT1(?,MYNEWTAPE)(WRITE)
obtains a pool tape, GETONLINEs it and renames it MYNEWTAPE.
#MT14,#MT14 filename
The SD4020 uses 7-track tapes and so the property PRTRACK7 has to be appended to the tape name when acquiring a new tape. Once a 7-track tape has been acquired, the property need not be specified. A tape for the SD4020 output must be WRITE qualified and must be assigned to channel 14. For example:
#MT14(?,FILMTAPE(PRTRACK7)) (WRITE)
obtains a 7-track pool tape, GETONLINEs it, renames it FILMTAPE and WRITE qualifies it. The number of the magnetic tape used is given in the monitor file. Suppose, for example, it is 7000203. To use this tape again for SD4020 output, the user need only specify the tape name, the tape number, or both, with or without property.
#MT14 (FILMTAPE)(WRITE) 
#MT14 (7000203)(WRITE) .
#MT14 (7000203,FILMTAPE(PRTRACK7))(WRITE)
all have the same effect. The user can specify a work tape by:
#MTI4 (?,!WORKTAPE(PRTRACK7))
No magnetic tape budget is required, but the tape will not be preserved after it has been printed on the SD4020. The above format is the only way to ensure that a 7-track work tape is loaded.
#?? (string)
If a user wishes to qualify exofiles or magnetic tapes that are ONLINEd, the whole GEORGE command should be enclosed in this parameter. For example:
#?? (OL *DA1(WRITE),(999 ,HYFILE))
will ONLINE the exofile MYFILE with WRITE qualifier. Any commands specified in this way will be executed before all other peripheral assignments, which will take precedence if any stream conflict occurs.
PM (list)
If the running job fails in any way, the user can get a core print (as long as the job did not DELETE) by using this parameter. The macro will obey:
PRINT list
before taking any remedial action.
MOPEJ name
If the job is initiated via MOP, this parameter is inserted by the macro to allow a BROADCAST to the required terminal when the job is complete. The user may use this parameter himself to force a broadcast. name is the user's MOP jobname.
EJ
EJ (list)
Normally, the macro will EXIT. If EJ or MOPEJ are present, the macro halts:
ENDJOB ALLBUT, COMMANDS
However, if EJ (list) is specified, the macro halts:
ENDJOB list
where list should contain a series of legal ENDJOB parameters.
ENP (list)

SPROGS passes the user name and the job name to the user program as parameters 1 and 2 on the ENTER command (for use as frame identification when DVOUT is called for the first time for SD4020 selection). ENP allows the user to specify a list of parameters which will be added to the end of the parameter list used by SPROGS. Hence the first parameter in the list provided by the user will be the third parameter following ENTER. These parameters can be read by PERI type 60 orders (see ICL manual). The default program parameters are:

SEMICOMPILED (A) 
LIBRARY (B) 
PROGRAM (SPRG) 
COMPRESS INTEGER AND LOGICAL 
OUTPUT 12 = LP5 
OUTPUT 13 = LP6 
EXTENDED 
ABNORMAL FUNCTIONS 
OUTPUT `, (MONITOR) = LP0
END

The SPROGS semicompiled is held in two files, which are always the last two files presented to the consolidator.

XFIH and XPCH are used to compile and consolidate (unless the OPT parameter is used).

MT14 is used for SD4020 output. LP0 is used for tracing and monitor (but see SETIO command. LP1 is used for lineprinter graphical. LP5, LP6 are used for SD4020 operator instructions (but see SETIO command).

Examples

(1) A simple SD4020 job is contained in MYFILE

SPROGS *CR MYFILE,EJ 
or 
RJ MYJOB,:MACROS.SPROGS,*CR MYFILE,EJ

(2) No output to tape.

SPROGS *CR MYFILE,EJ,NOTAPE

(3) SD4020 job with card input and extra lineprinter output. Full monitor requested.

SPROGS *CR MYFILE, #CR1 MYDATA, #LP2 MYLIST,EJ()

(4) Compiler output and job output to same file. Optimising compiler required. Save binary job.

SPROGS *CR MYFILE,*LP MYLIST, #LP2 MYLIST,OPT,SAVE MYSAVED, EJ

(5) Binary program loaded. Extra ED file.

SPROGS RUN MYSAVED, #ED2 MYDISC,EJ

Note that, if a user wishes to run more than one SPROGS job from MOP at the same time, he should use the RUNJOB form for the second and subsequent jobs to avoid a jobname clash, since SPROGS will run the job as background with a predetermined name if called from MOP.

Appendix 13: SPROGS Error Messages

There are two levels of errors in the SPROGS system: expected and unexpected.

A13.1 Expected Errors

An error detected by the SPROGS routines themselves will normally generate an error message on the error output stream. If it is possible to recover from the error, the message is tagged NON-FATAL, and the program continues. Fatal errors lead to:

PAUSE EX

following a call to ENDSPR to close any magnetic tape used.

A13.2 Unexpected Errors

There are a number of other halts in the SPROGS system. These occur in places that should not be reached by the code, and indicate either a serious error, or an attempt to access a facility that has yet to be implemented. The current halts are:

PAUSE PZ
Illegal packing mode detected after FMODE argument has been checked.
PAUSE FL
Illegal packing mode read from a previously packed file.
PAUSE RE
Illegal FIDF argument used.
PAUSE OB
Display routine number read from file is out of range.
PAUSE name
Display routine of this name does not yet exist.
PAUSE AR
Attempt to use local index variables, not yet implemented.
PAUSE AP
Attempt to frame advance the PDP15.
PAUSE PX
PAUSE PY
Attempt to access PDP15 device.
PAUSE SE
Illegal visibility marker encountered.

In the PLAN routines:

SUSWT AN
Illegal name as argument to ANAME.
SUSWT DC
Illegal name encountered when converting packed name to characters.
SUSWT SD
SD4020 routines called when NOSD included.
SUSWT LC
LPG routines called when NOLPG included.
⇑ 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