Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ OverviewUser Note 1User Note 2User Note 3User Note 4User Note 5User Note 6User Note 7User Note 8User Note 9User Note 10User Note 11User Note 12User Note 13User Note 14User Note 15User Note 16User Note 17User Note 18User Note 19User Note 20
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureProgress ReportsFR80 User :: FR80 User Notes
ACLLiteratureProgress ReportsFR80 User :: FR80 User Notes
ACL ACD C&A INF CCD CISD Archives
Further reading

OverviewUser Note 1User Note 2User Note 3User Note 4User Note 5User Note 6User Note 7User Note 8User Note 9User Note 10User Note 11User Note 12User Note 13User Note 14User Note 15User Note 16User Note 17User Note 18User Note 19User Note 20

User Note No 6: SPROGS Supplement for the FR80

R E Thomas

20 May 1975

1. INTRODUCTION

This manual describes the version of SPROGS designed also to cater for the new micro,film recorder, the III FR80, obtained by the Atlas Computer Laboratory. The various sections describe the new facilities offered by this device, and the software that has been written to make use of them. There are also sections on the conversion of programs originally designed for the SD4020, and the running of jobs previously run under SMOG (a simpler version of SPROGS).

It is assumed that the user is familiar with existing SPROGS manuals, and, in the case of SMOG jobs, with the SMOG manual.

2. THE FR80 MICROFILM RECORDER

The Atlas Computer Laboratory has purchased an FR80 Microfilm Recorder from Information International Incorporated to replace the SD4020. This device, apart from being more accurate, has a number of extra facilities which will enable better pictures to be produced faster. The main features are:

2.1 Cameras

The FR80 can only mount one camera at a time (the SD4020 could have both hardcopy and one of the microfilm cameras mounted together). However, there are more cameras available:

  1. 16mm/35mm dual movement camera: This is similar to the existing camera on the SD4020, in that it can take either 16mm or 35mm film, depending on the movement mounted. However, it also has the ability to place coloured filters in front of the film, and hence produce coloured films direct. More details of the colour feature will be given later.
  2. 16mm single movement camera: This camera is more accurate than the 16mm dual movement, but can only produce black and white film. It should be used for all 16mm black and white output.
  3. 105mm microfiche camera: This is capable of producing 42X and 48X microfiche, together with a title and numbering system.
  4. Hardcopy: This camera takes 12" wide paper (compared to the SD4020's 8"). However, it is possible to save paper by putting more than one frame across the width. A typical setting might produce 4 subframes within the one (larger) frame. Users are requested to use 12" frames only when absolutely necessary.

2.2 Raster size

The FR80 has an addressable area of 16384x16384 points with origin at the bottom left-hand corner (compared to 1024xl024 points on the SD4020 with origin at the top left-hand corner). However, each camera has a fixed aperture plate, which prevents the whole of the screen being seen. Also, the area visible through the aperture is normally greater than the area moved by advancing the frame, so adjacent pictures drawn to fill the aperture will overlap. This means that frames may be abutted by confining the picture to a specifiable area within the aperture (on the SD4020, abutment is possible only on 35mm by special order), and can be spaced "normally" by further confining the picture. The appropriate values for aperture, abutment and cine picture on each camera are given in the Appendix.

2.3 Intensity

It is possible to vary the intensity of the beam over a range of 256 values (on the SD4020, intensity variations on vectors are available only by overstriking). Since if is also possible to overstrike on the FR80, an almost continuous grey-scale can be produced. The intensity selected affects both vectors and characters.

2.4 Colour

As mentioned earlier, the dual movement camera has a number of colour filters which can be selected by program and inserted in front of the film. The filters are clear, cyan, magenta and yellow, and a subtractive process is used to obtain the primary colours (eg yellow and cyan together will produce green). The user must adjust intensity himself to get the desired shade. Since the primaries require a double filter, users who are not particular about which colour they have are advised to use the single-filter colours (cyan, yellow and magenta).

2.5 Vectors

The FR80 is able to draw full-screen-width lines (unlike the SD4020). Consequently, lines will not have to be split by the low-level software. In general, this will produce fewer orders on tape, and will make SPROGS faster.

2.6 Hardware Characters

Unlike the SD4020, there are no hardware-produced characters as such. Instead, hardware exists to interpret a special packed-character mode, which allows many fonts to be defined. Initially, two fonts will be available. It is also possible to specify character height, spacing, rotation and line spacing, and whether the characters are to be equispaced or proportionally spaced without redefining the font.

2.7 Tape Decks

The FR80 has two tape decks; one compatible with the current SD4020 deck (7-track) and the other a 9-track 1600 'bpi deck.

2.8 Filemarks

The software in the FR80 will interpret two consecutive filemarks as "end of tape". Consequently, users must not write more than one filemark at a time.

2.9 Comic Mode

The standard output from the FR80 will be in cine mode (frames upright when film is lying from top to bottom. It is possible to rotate this image to comic mode: (frames upright when film is lying from left to right) without physically moving the tube. Thus one can switch from cine to comic quickly with no operator intervention. The standard output from the SD4020 was cine mode. Output to microfiche will be comic mode.

2.10 Forms Flash

There is no hardware forms flash facility, whereby a previously prepared slide can be superimposed on any given frame by optical projection (this SD4020 feature is at present used only on the identification frame).

3. CHANGES TO EXISTING SPROGS ROUTINES

The FR80 will eventually replace the SD4020 and new SPROGS routines have been provided to exploit its enhanced performance. For the moment, the old SD4020-specific routines will be preserved, with FR80 equivalents. These will be withdrawn at some future time.

3.1 Device Number

The FR80 will be accessible as device 1, 2, or 32 in DVOUT. Only one of these numbers should be used and, at a later date, numbers 2 and 32 may be re-assigned. The COMMON blocks SDH, SDM, SDBOTH will be removed later.

The specific camera required must be selected either by the routine CAMERA, or by one of the standard device setting routines (see Section 4).

3.2 Expand Image

The routine EXPRED will cease to function for the FR80. It will thus affect only the Lineprinter Graphical device. Abutment will be achieved by other means (see later).

3.3 Forms Flash

The routine: FLASH will be removed.

3.4 Removal of the Device

The routine: NOSD will prevent the FR80 routines being loaded. This routine will be removed later.

3.5 Standard Region Settings

The routines: SDFILM and SDHARD will set region 1 with limits 0,0,1023,1023 as before, but will map this onto the visible area of the black and white 16mm single movement camera, and the 'multi frame' hardcopy camera respectively (see Section 4.1). Both these routines will later be removed.

LPFILM and LPHARD select the Lineprinter Graphical device, together with the cameras selected by SDFILM, SDHARD respectively. The actual function of these two routines may be changed at a later date.

3.6 Intensity

Since intensity variation on the SD4020 is performed by overstriking, the intensity values specified will tend to be low (1-4). The standard intensity on the FR80 is 225, with a range of 1-256, so all the intensity commands must be altered to avoid a very faint picture.

3.7 Colour

If the dual movement camera is loaded with colour film, then the COLOUR and COLCL commands will actually cause filters to be selected, as follows:

0  no output
1   Cyan (Blue/green)
2   Yellow (green/red)
3   Green
4   Magenta (red/blue)
5   Blue
6   Red
7   Clear
8   Clear

Care must be exercised in selecting intensities to avoid very faint colours. Green, blue and red require two filters to be selected.

3.8 35mm Output

The routine: MF35MM will no longer be available. Users requiring 35mm output should make use of the extra routines to be described later.

3.9 Spooling

The SPOOL area provided for the FR80 output is much larger than that available for the SD4020. There is also a considerable number of useful utilities associated with it. Users are therefore urged to use the SPOOL rather than private tapes.

Those users who need special facilities or who have large amounts of output can now use 9-track 1600 bpi tapes as well as 7-track. The greater packing density on 9-track will enable much more information to be stored.

3.10 Reading SD4020 Tapes

The routine DVITEM has been removed.

4.NEW FR80 ROUTINES

This section describes the new routines which allow the user access to the new features of the FR80. These routines should be used in preference to any existing SD4020 routines.

4.1 Starting a Job

The following routines will select the specified cameras and select region with coordinates equal to the. whole raster (0,0,16383,16383). This region will be chained to the base region 0, which has the same coordinates. Calling one of these will allow the user to set his own limits with LIMIT (or with one of the similar routines described later).

FRCL16  1  Combined camera, 16mm, colour 
FRBW16  2  Combined camera, 16mm, black and white 
FRCL35  3  Combined camera, 35mm, colour  
FRBW35  4  Combined camera, 35mm, black and white 
FRPR16  5  Precision, 16mm, black and white 
FRMFCH  6  microfiche 
FRHCS   7  hardcopy, one sub-frame 'per frame' 
FRHCM   8  hardcopy, many sub-frames 'per frame'

The hardcopy camera has 12" wide paper, which gives a large frame size. It is possible to pack sub-frames into the page, thus saving paper.

The routine:

      MANYUP (N,M)

called before the 'many frames' hardcopy camera is selected (by FRHCM or by CAMERA (8.0)), will cause N x M sub-frames to be packed within one 12" frame, N sub-frames across the page, and M sub-frames down. If MANYUP is not used, but FRHCM is called, 4 sub-frames will be fitted into the single frame area. In order to conserve paper stocks, users are asked to make use of this 'many frames' feature wherever possible.

The following routine has been provided to ease the changing of devices within a program. However, its use will cause more core to be occupied.

      DVALL (I)

will set up the devices as follows:

 I   Equivalent routine
 1   FRCL16
 2   FRBW16
 3   FRCL35
 4   FRBW35
 5   FRPR16
 6   FRMFCH
 7   FRHCS
 8   FRHCM
 9   TKTRON
10   BPACK
11   LPGRAF

The user may also set up regions himself and select the FR80 using DVOUT. The required camera must first be specified by:

      CAMERA (X)

where X defines the camera and film stock (see previous table).

Thus:

      CAMERA (4.0) 
      DVOUT (1.0)

will select the 35mm black and white camera.

Note that DVALL has an integer argument, whereas DVOUT has a real argument.

4.2 Region Settings

Although the basic raster of the FR80 is 16384 x 16384, not all cameras can 'see' all the raster. For each camera, it is possible to define the aperture size which is normally larger than the distance moved in a frame advance. This means that two adjacent frames with information filling the whole aperture will overlap. Within the aperture, it is possible to define an abutment area such that output on adjacent frames over this area would touch. For cine film, a third area gives the image frame which can be seen in a projector. All the figures are provided in the table in the Appendix.

The following routines will set the conversion of the current region so that the coordinates of this region will map onto the aperture, abutment or cine area for the selected camera. Meanings for these three areas have been given to the other devices as well for completeness (see Appendix).

APER   Map user coordinates onto aperture area
ABUT   Map user coordinates onto abutment area
CINE   Map user coordinates onto cine area.

(NB. This is distinct from cine mode, which determines the rotation)

COMIC mode CINE mode

The FR80 will normally write output in cine mode (except on microfiche). If comic mode is desired, the corresponding routines:

      CMAPER 
      CMABUT 
      CMCINE

should be used.

In the case of the FR80, the X,Y limits will also be interchanged if one of these three routines is used. Thus the actual shape of the area visible on film will remain the same, but the user's X,Y aspect ratios will have changed. If the user wishes to rotate his area through 90°, he can use the routine:

      COMIC (1) 

Thus:

      APER 
      COMIC (1)

is not the same as:

      CMAPER

since, in the former case, the X,Y limits are not interchanged.

In general, this will imply that, considering a cine mode picture as standard, the use of CMAPER instead of APER will still cause all the picture to be visible, but will change the shape of items in the picture. Use of COMIC(1) will not alter any of the shapes, but will map some part of the picture outside the visible area.

Mappings

Mappings

COMIC(0) will reset the rotation to cine mode.

On all other devices, 'comic' mode has no effect. Thus, on the Tektronix, for example:

CMAPER is same as APER , etc.

The user can set his own region limits using RGLIM or LIMIT, as before. However, since the various areas already described tend to be rectangular in shape, he will have to take the aspect ratio into account to avoid distorted pictures.

The routine:

      LIMITS(X1,Y1,X2,Y2,AX,AY)

will set the current region limits to X1,Y1,X2,Y2 and alter the conversion limits, so that the current region maps onto the largest area within the currently-defined, mapped area, having an aspect ratio such that AX units in the X direction will equal AY units in the Y direction. This new area will be centralised within the old area.

Thus:

      ABUT 
      LIMITS(X1,Y1,X2,Y2,1.0,1.0)

will map the current region onto a square area within the previously-defined abutment area.

4.3 Line Drawing

The standard SPROGS line-drawing routines will function as before. However, care should be taken over the use of intensity. The FR80 has 256 intensity levels, with the 'standard' level being 225. The routine:

      INTNST (X)

will select the specified beam intensity, rather than overstrike the line. The interpretation of the intensity value on the other devices has been changed to avoid any problem caused by the magnitude of these numbers. Now, no overstriking will take place on the Tektronix and only 1 overstrike will be allowed on the Hewlett-Packard pen plotter.

The colour routines COLGL and COLOUR will cause colour orders to be generated, and, if the colour camera is selected, colour film can be produced. Exactly which intensities should be used with which colours has yet to be determined. The colour settings are:

0   no output
1   Cyan (blue/green)
2   Yellow (green/red)
3   Green
4   Magenta (red/blue)
5   Blue
6   Red
7   Clear
8   Clear

COLGL(-1.0) will cancel filter selection.

The filter system has three single coloured filters: cyan, yellow and magenta. Using two of these together produces the primary colours green, red and blue. However, these primaries must be run at a higher intensity, since two filters are involved. Those users requiring colour for contrast, but who do no specifically require primary colours, are advised to select the single filters rather than the primaries. The contrasts between magenta and cyan, say, or magenta and yellow are quite striking.

4.4 Microfiche

Two routines refer only to the FR80 microfiche camera.

Normally, ADVFLM will move to a new frame on the current fiche. The routine:

      HFICHE

will throw to a new fiche. However, HFICHE is not a display routine (in the SPROGS sense), and, if it is used within a file definition, it will act as ADVFLM.

Note that repeated use of ADVFLM will not throw a new fiche eventually, but will produce one long fiche.

It is possible to add a fiche title by using the routine:

      FCHTLE (N, STRING)

N must be less than 60, and FCHTLE must appear before the FR80 is first selected. If STRING contains:

$L

the title will occupy 2 lines at the top of the fiche. $L should appear once at the most, and $ should not appear elsewhere in the title.

Standard fiche will have the user's identifier and a fiche count as well as any user-defined title.

4.5 Removal of FR80 Code

For those users who do not wish to use the FR80, or have the FR80 device-handling code in core, the following routine has been provided:

      NOFR

wil1 prevent any FR80 code being loaded. Subsequent calls to FR80-specific routines will lead to error conditions.

5. HARDWARE CHARACTERS

The FR80 has two sets of hardware characters available for use. The first, OCRB3, is a simple font. The second, GPO, has a somewhat better character set for proportional spaced text output. It is possible to specify the character height, character rotation and line spacing, and also the space between characters. Usually, the space determines the distance between the left-hand edge of one character and the left-hand edge of the next. This is called mono-spacing and selection of mono-spaced text allows fast printing using special FR80 hardware. Alternatively, the space value can determine the distance from the right-hand edge of one character to the left-hand edge of the next. This is called proportional spacing. This form of spacing may make a line of text look more pleasing, but the resulting printing is slower. Users are therefore advised to use mono-spacing wherever possible.

i c e d b i c y c l e s no hot trails Mono-spaced text Proportionately-spaced text DS DS set by CALL CHSP(DS) DL set by CALL LNSP(DL) DS DS set by CALL CHSP(DS) DH set by CALL CHHP(DH)

5.1 Selecting a Font on the FR80

The routine:

      HFONT (N)

called before the FR80 is selected, will select the OCRB3 font if N = 0 and the GPO font if N = 1. If this routine is not used, OCRB3 will be selected by default.

5.2 Mono or Proportional Spacing

The routine:

      MONO

will cause the specified character space to be interpreted as a mono space in all subsequent text, whereas the routine:

      PROP
will cause the spacing to be proportional. These routines can be called more than once during a job.

5.3 Character Height

The routine:

      CHHT(Z)

will cause all FR80 characters to have a height of Z units in the current region coordinate system. If Z = 0.0, a height appropriate to the setting of character space for mono-spaced text will be used.

5.4 Character Spacing

The routine:

      CHSP(X)

will set the character spacing of FR80 characters to X units in the current region coordinate system. This space value, together with the current mono or proportional setting, will determine how far apart adjacent characters will be.

5.5 Line Spacing

The routine:

      LNSP(Y)

will cause adjacent lines of text to be Y units apart in the current region coordinate system. This measures the distance between corresponding points on the two lines.

5.6 Character Rotation

The routine:

      CHOCT(X)

will cause each character on the FR80 to be rotated through X × 45° anticlockwise. A whole line of characters may be rotated in this way, but if X is odd, no newline characters should be used.

All the above routines affect the FR80 only. The following routines are applicable to any device having a hardware character set. Since the use of these routines does not involve SPROGS fonts in any way, they will use less core and be more efficient. However, the characters cannot be used in general within SPROGS files.

5.7 Plotting Characters

The existing routine:

      PLOT(XCH)

is still available, and will plot the character, whose SPROGS number is XCH, on the current devices at the current point. If XCH = 76.0, a point plot order will be generated on the FR80.

The routine:

      PLOTPT

is equivalent to PLOT (76.0).

Subsequent text commands will either specify character strings or the 1906A internal code number (in INTEGER format). To allow access to the full 256 characters in the FR80 character set, a COMMON block called TEXTAB has been set up:

      COMMON/TEXTAB/NTXTAB(64)

Each value in NTXTAB is the FR80 code (+256) of the corresponding 1906A code (-1). Thus:

         ICL code for character 2 is 2 
         NTXTAB(3) contains 306 =  256 + 50 
         FR80 code for 2 is 50

This COMMON block may be included in the user's program and locations changed. Thus:

      NTXTAB(3) = 256 + 51

will cause every 2 to become 3. Every printing character must have 256 added. Control characters (such as newline, code 143) do not require the extra 256. Thus:

      NTXTAB (3) = 143

will cause every 2 to generate a newline code. Other ways of obtaining a newline are dealt with below.

The routine:

      HPLOT(N)

will call PLOT (X), where X is the SPROGS number of the character whose 1906A code is N. The COMMON block TEXTAB is used in the conversion, so altering TEXTAB will affect all selected devices.. The routine:

      HPLOTS(ICH)

will also call PLOT(X), where X is the SPROGS number of the single character ICH.

Thus:

HPLOT(33) ≡  HPLOTS('A') ≡  PLOT(11.0)

(unless TEXTAB has been altered).

5.8 Text Strings

The following routines output one or more characters. If no other orders have been generated between two consecutive calls to these routines, the text from the second call and that from the first call will be concatenated. TEXTAB changes will affect the FR80 only.

      HTEXT(N,STR)

will print N characters of the string STR, either immediately following a previous text string or starting from the current position. There is no change in the current position.

The routine:

       HTYPES(ICH)

is equivalent to HTEXT(1,ICH) and the routine:

      HTYPE(N)

is equivalent to HTYPES(ICH) where ICn ~s the character whose 1906A code is N.

Thus:

      HTEXT (3,'ABC') 
      HTYPES ('D') 
      HTYPE(37) 
      HTEXT (2, 'FG')

is equivalent to:

      HTEXT(7,'ABCDEFG')

and:

      HTEXT(3,'ABC') 
      HTYPES('D') 
      SETXY(5.0,7.0) 
      HTYPE(37) 
      HTEXT(2,'FG')

is equivalent to:

      HTEXT (4,'ABCD') 
      SETXY(5.0,7.0) 
      HTEXT(3,'EFG')

since the intervening SETXY will prevent concatenation of ABCD and EFG.

Note that concatenation is only possible between these three routines. No concatenation will take place if PLOT, HPLOT or HPLOTS are used.

5.9 Output of Numbers

The routine:

      TYPNMB(A,XI,XJ)

is equivalent to:

      TYPEN(A,XI,XJ)

but calls HTEXT instead of TEXT to output the character form of A in the specified format: Since TYPNMB uses hardware characters, the routine GETFNT is not required.

      XI = 0.0            E format,  field width XJ + 7
      XJ = 0.0            I format,  field width XI + 1
      XI, XJ not = 0.0    F format,  XI places before decimal point,
                          XJ places after. Field width XI + XJ + 2.

5.10 Newlines

There are three ways to output newlines:

(1) Reset one of the locations in TEXTAB to 143. This will cause the newline code to be output on the FR80 only and will have no effect on other devices.

(2) The routine:

      NLCHAR(STR)

will set the character defined by the single-character string STR to be interpreted as carriage return, line feed on all devices. Setting STR to -1 will cancel any newline.

Thus:

      NLCHAR('/') 
      JTEXT (4,'A/BC')

will produce the following output:

A
BC

Newline will cause the X coordinate to return to the beginning of the string containing the newline character. Thus the above pattern of characters (with B vertically below A) will be repeated as long as the text string has not been concatenated. For example:

      HTEXT (5,'DEFGH') 
      NLCHAR('/') 
      HTEXT(4,'A/BC')

will produce:

DEFGHA 
BC

The newline character can be removed by:

      NLCHAR(-1)

(3) The routine:

      HLINES(N)

is equivalent to:

      ICB = previous newline character
      NLCHAR('/') 
      HTEXT(N,'///...') 
      NLCHAR(ICH)

Thus:

      NLCHAR('/') 
      HTEXT(4,'A/BC') 
      NLCHAR(-1)

is equivalent to:

      HTYPES ('A') 
      HLINES (1) 
      HTEXT (2,'BC')

5.11 New Page

A page throw can be obtained by:

      HPAGE

which is equivalent to:

      ADVFLM
      UP
      LEFT
      HLINES(1)

6. EXTRA FACILITIES

6.1 Grid Lines

Two routines have been added to aid the drawing of horizontal or vertical grid lines.

      HGRATX(X1,Y1,X2,Y2,N)

will divide the range (X1,Y2) into N parts and draw N-1 lines parallel to the Y-xis between the lines (X1,Y1,X1,Y2) and (X2,Y1,X2,Y2).

      HGRATY(X1,Y1,X2,Y2,N)

is similar, but will draw lines parallel to the X axis. These lines will be drawn using VEC orders, unless the FR80 is the only selected device. In this case, use is made of the special 'vector family' order within the FR80, and a more efficiently generated grid is drawn.

6.2 Lineprinter Graphical Plotting Character

It is now possible to alter the character used by Lineprinter Graphical mode to draw lines. The routine:

      LPCHAR(ST1,ST2)

will use the character defined in the single-character string ST1 to draw lines on the lineprinter, and the character defined in the single-character string ST2 to indicate overstriking. The default setting is LPCHAR ('*','+').

6.3 Use of LISTFILE for Tektronix and Hewlett-Packard Plotter

The LISTFILE command in GEORGE 4 has recently been altered.

         LISTFILE MYFILE,ALL

will cause MYFILE to be listed up to a line containing:

      *+*+

At this point, the listing will be halted, and will resume when the user types the ACCEPT key.

Alterations have been made to the output to the Hewlett-Packard pen plotter and to the Tektronix to make use of this feature, so that a user can look at one frame at a time without having to split the file. All pen plotter messages (such as ADVANCE, COLOUR) are now followed by *+*+. Each frame of Tektronix output also ends with *+*+, and each frame now begins with a 'clear screen' command.

These new files are not currently acceptable to the FRSPLIT macro.

6.4 SPOOL Utilities

One of the SPOOL utilities available separately is the ability to view spooled output on the Tektronix. To ensure that the user's output remains in the SPOOL long enough for viewing, the following routine can be used to prevent the output being sent to the FR80 for a given length of time.

      DELAY(N)

will cause spooled output to be delayed in the SPOOL for N minutes. If this routine is called before the FR80 is selected, the delay will take effect even if the job subsequently fails catastrophically. If a job runs to completion, the last call to DELAY will be effective.

If the user knows that the output is not worth plotting, or he only wishes to access the Tektronix via the SPOOL (rather than directly), he can greatly assist the operators by calling:

      ERASE

This will cause the output to be removed from the SPOOL, without being sent to the FR80, after the delay period has expired.

Other SPOOL utilities are available as stand-alone programs. These are described elsewhere.

6.5 FR80 Device Common Block

The COMMON block:

      COMMON/FR/FR

has been initialised to the correct FR80 device number and may be included in user's programs. In this way, they will be unaffected by any possible future device number alterations.

6.6 Removing Unwanted Routines

In order to assist users further in decreasing the amount of core (particularly Lower Data) used, the following routines have been defined. They act in the same way as NOFR, NOTK etc. Thus, their inclusion in the user's program will prevent sections of SPROGS code being loaded, and will give rise to an error halt if the code is subsequently accessed.

Routine   Halt    Action
NOSHFT    SF      Removes shift character feature from text.
NOTHK     TH      Removes thick and dotted lines feature.
NOCUT     SC      Removes circular, elliptic and irregular region scissoring.
NOINDX    NX      Removes all index variable code.
NOSQ      SQ      Removes sequence list control codes. This will still allow 
                          the use of DRAW.
NOLIB     LB      Removes SPROGS library creation feature. This will still allow 
                          the use of GETFNT and GETLIB.
NODSP     DP      Removes user-defined display routine feature.
NONULL    NL      Removes NULL routine feature.
NOCOL     CL      Removes colour feature
NOBSFL    BS      Removes basic file feature. Ordinary SPROGS files unaffected.
NOTRCE    TR      Removes trace feature.
NOPLOT    PL      Removes PLOT routine. This will also prevent access to fonts 3 
                          and and 4.
NOXP      XP      Removes expand and rotate feature.
NOTXP     TX      Removes text expansion feature.
NOSTOR    ST      Removes creation of SPROGS files.

7. THE SPROGSF MACRO

While the SD4020 is still active, the existing version of SPROGS will be unaltered. A new macro, SPROGSF, will give access to the FR80 version of SPROGS.

The parameters to this macro are the same as those for SPROGS. However a user may now attach a 9-track tape to #MTI4 if large amounts of output are required.

8. RUNNING EXISTING SD4020 PROGRAMS

Users are strongly advised to convert programs to call the FR80 routines directly. However, for those with existing SD4020 programs, the following points must be taken into account.

(1) If DVOUT is used to select the device initially (rather than SDHARD, SDFILM), then the routine:

      CAMERA (X)

must be called before DVOUT to select the desired camera. Details of this routine will be found in Section 4. Only one camera may be selected.

(2) If intensity settings are required, the values of the SD4020 intensities must be changed. Default settings give an intensity of 225 in a range of 1 to 256. Darker lines can therefore be drawn either by using an intensity value greater than 225, or by calling INTNST at the start with a lower value, and subsequently using a higher value.

(3) Only one of the devices numbered 1, 2 or 32 should be called in a program. Calling more than one together will result in the outputs being repeated two or three times.

(4) Only one filemark, at most, may be written to tape (or SPOOL) as a marker. In general, no filemarks need be explicitly written.

NB A filemark will produce a frame advance.

(5) The routines:

      FLASH 
      MF35MM

will be dummies and will later be removed.

(6) The basic raster of the FR80 is 16 times that of the SD4020. However, not all cameras can record from the whole area. A user who currently plots in raster coordinates must take account of the camera aperture size, and adjust his limits accordingly (see Appendix). Similarly, users who provide their own region mapping onto the base region must change the scaling used. The routines SDHARD, SDFILM will take this into account.

(7) The routine:

      EXPRED

will only affect Lineprinter Graphical output. Abutment is ensured by calling the appropriate FR80 routines (for example, ABUT and CMABUT).

9. DIFFERENCES BETWEEN SMOG AND SPROGS

The simple graphics package, SMOG, has been defined so that programs written in SMOG can run under SPROGS with very little alteration. Thus, a user can graduate from simple graphics to the more sophisticated system without trouble. There are a few minor differences, however, which must be taken into account.

(1) The SPROGS routine:

LIMIT

behaves like LIMITV in SMOG. However, if the routine LIMIT is used immediately after a call to APER, ABUT etc, the effect will be the same in both systems.

(2) Only absolute orders are generated for the FR80. This should not affect a user's program. However, it will mean that, if TOPRIN (1.0) is selected to print the commands being sent to tape or SPOOL, the two listings generated (under SMOG and SPROGS) will be different.

(3) Owing to a fundamental difference in design between the two systems, the following command sequence will give different results under SMOG and SPROGS. However, it is not very likely to occur in practice.

      SETXY (X1,Y1) 
      HTEXT (3,'ABC') 
      SETXY (X1,Y1) 
      HTEXT (3,'DEF')

where the order between two HTEXT calls will, in fact, not alter the current position. In SPROGS, the second SETXY is ignored, and so the two HTEXT strings will be concatenated. In SMOG, the second SETXY generate"s a "plotting" order, so the second string will overprint the first (see SMOG manual).

The routine HPLOTS can be used to cause overprinting in both systems:

      SETXY (X1,Y1) 
      HTEXT (3,'ABC') 
      HPLOTS(' ') 
      HTEXT (3,'DEF')

(4) The routine:

      FRSAV(X)

does not generate an FR80 picture definition in SPROGS. Instead, it generates a SPROGS basic file. The effect should be the same.

(5) The routine:

      RDLIB(XA,XN)

does not make use of a user-supplied COHMON block. Instead, it reads a SPROGS file from channel DA1 into the SPROGS filestore.

10. SMOG ROUTINES

Some extra routines have been added to SPROGS so that SMOG programs can be run under the more sophisticated system. Some of these which provide new facilities have been described already. The following routines duplicate existing SPROGS features.

10.1 Filemarks

      FLEMK ≡ FLEMKS(1.0)

10.2 Region Limits

      LIMITV(X1,Y1,X2,Y2) ≡  LIMIT(X1,Y1,X2,Y2)

10.3 Number Output

       JTYPEN(NI,NJ) ≡ TYPNMB(FLOAT(NI),FLOAT(NJ),0.0)

10.4 Files

      FRSAV(X)  ≡  STSAV(X+16383.0,DEV)
where DEV is the currently selected device.

      RDLIB('SPROGS' ,XN)  ≡  GETLIB(XN,1.0,1.0)
and defines XN as the current 'background'.

      DRAWNM(X)  ≡ DRAW(Y)
where Y = X + 16383.0 if X≥0 
        = background file if X<0

10.5 Integer Routines

The majority of routines in SPROGS require real arguments. A set of routines has been provided which takes integer arguments, calling the equivalent real routines. Thus, in SPROGS, these routines are less efficient than their real argument counterparts.

Routine     Equivalent Real Routines
VECTOR        VEC 
JVEC          VEC 
JTOXY         TOXY 
JTOX          TOX 
JTOY          TOY 
JTODXY        TODXY 
JTODX         TODX 
JTODY         TODY 
JSETXY        SETXY 
JSETX         SETX 
JSETY         SETY 
JUPDXY        UPDXY 
JUPDX         UPDX 
JUPDY         UPDY
JLIMIT        LIMIT 
JSTYPE        STYPE 
JLIMV         LIMITV 
JLIMS         LIMITS

APPENDIX

A1. Image Sizes

The complete FR80 plotting area has coordinates 0 to 16383 in both the X and Y directions. Each camera is capable of photographing only part of the plotting area - the aperture plate ensures that plotting outside its bounds is not recorded. However, if output is produced over the complete area allowed by the plate, the images on consecutive frames overlap. Consequently, it is usual to restrict plotting to a least an area such that two consecutive frames abut. For 16mm and 35mm cine film, the frame area is even smaller with a gap between consecutive frames. Where appropriate, the three areas given above are defined. All images are defined within aperture by 20 raster positions to allow for errors in measurement.

Image XWIDTH YWIDTH XMIN YMIN XMAX YMAX
8020 Combined 35mm
Aperture 16383+ 13530 0 1460 16383 14990
Abutment 16383 12520 0 1931 16383 14451
Cine 14653 10528 0 2928 14653 13456

Cine image is based on British Standard 0.866 (+.004, -.000) by 0.629 (+.004, -.000) inches

Atlas cine (image) is based on 0.868 by 0.631 both ±.002

(1 raster = 0.0000596")

8020 Combined 16mm
Aperture 7000 5960 4720 5260 11720 11220
Abutment 6960 5010 4740 5686 11700 10696
Cine 6728 4920 4827 5731 11555 10651

Cine image is based on British Standard 0.402 (+.006, -.000) by 0.292 (+.006, -.000) inches

Atlas cine (image) is based on 0.404 by both 0.294 ±.002

(1 raster = 0.0000596")

8021 16mm cine
Aperture 10230 8800 3140 4250 13370 13050
Abutment 10190 7220 3160 4822 13350 13042
Cine 9688 7086 3347 4889 13035 11975

Y offset by +241 raster positions to centre 16mm cine image

8060 Hardcopy
Aperture 16383+ 12930 0 1962 16383 14892
Cine 16383+ 11771 0 2307 16383 14078
Abutment 16383+ 12422 0 1981 16383 14413

1 raster unit = 0.000708

8025 105mm Microfiche
Aperture 14000 16383 1200 0 15200 16383
Image 13530 16383 1427 0 14957 16383

Lineprinter Graphical

The complete plotting area has coordinates 0 to 119 in both X and Y directions. On the 1906A, characters are spaced 10 to the inch in the X direction and 6 to the inch in the Y direction. A page throw is inserted between each frame.

Routines exist to remove the page throw, and to decrease the plotting area. The routines APER, ABUT and CINE will give the following effects:

XMIN YMIN XMAX YMAX PAGE THROW
Aperture 0 0 119 119 Yes
Abutment 0 0 119 119 No
Cine 0 0 69 69 Yes

Tektronix

The complete plotting area has coordinates 0 to 1023 in the X direction and 0 to 779 in the Y direction. The three areas set by APER, ABUT and CINE are:

XWIDTH YWIDTH XMIN YMIN XMAX YMAX
Aperture 1023 779 0 0 1023 779
Abutment 779 779 224 0 1023 779
Cine 779 585 224 97 1023 682

Hewlett-Packard Pen Plotter

The complete plotting area has coordinates 0 to 9999 in both the X and Y directions. Since the aspect ratios can be set manually on the device, no other areas have been defined for this device.

A2. FR80 Character Code

Character Codes

Character Codes
Full image ⇗
© UKRI Science and Technology Facilities Council

A3. FR80 Order Code

The following is a very brief description of the FR80 order code sent to tape. It is included here so that some decoding will be possible if the user has selected 'Print orders sent to tape' (TOPRIN(1.0)). It is by no means a complete set.

All words consist of 6 octal digits. Orders may be one or more words long. Various records will be sent to tape before START JOB and after END JOB. Their contents are not described here.

Vector Drawing

(a) Single-Word Commands

The format of single word commands is as follows:

03 C 417 A Single-word

The first four bits define the type of command while the lower 14 bits define an X or Y value or increment.

C A Formal Description Name
0010 X CX' = X ABSOLUTE MOVE HORIZONTAL
0110 DX CX' = CX + DX RELATIVE MOVE HORIZONTAL
1010 X V(CX,CY,X,CY); CX' = X ABSOLUTE DRAW HORIZONTAL
1110 DX V(CX,CY,CX+DX,CY); CX' = CX + DX RELATIVE DRAW HORIZONTAL
0011 Y CY' = Y ABSOLUTE MOVE VERTICAL
0111 DY CY' = CY + DY RELATIVE MOVE VERTICAL
1011 Y V(CX,CY,CX,Y);CY' = Y ABSOLUTE DRAW VERTICAL
1111 DY V(CX,CY,CX,CY+DY);CY' = CY + DY RELATIVE DRAW VERTICAL

(a) Two-Word Commands

The two-word commands are similar to the one-word commands. The format is as follows:

C A Two-word 03 0001 417 B
C A B Formal Description Name
0010 X Y CX' = X; CY' = Y MOVE ABSOLUTE
0110 DX DY CX'= CX + DX; CY' =CY + DY MOVE RELATIVE
1010 X Y V(CX,CY,X,Y); CX' = X; CY' = Y DRAW ABSOLUTE
1110 DX DY V(CX,CY,CX+DX,CY+DY); CX' = CX + DX; CY' = CY + DY DRAW RELATIVE

The remaining orders will be given in their octal form, together with a description.

Vector family: 222000 + N

N-1 lines will be drawn between the next two visible lines drawn.

Point Plot: 215000

A point is plotted at the current position.

Intensity

234400 + N (two words) 
400000 + M 

This sets intensity N for filter defined by M, as follows.

M     Colour 
0     Clear 
200   Red 
300   Magenta 
400   Green 
500   Yellow 
600   Blue 
700   Cyan

Colour

214000 (two words) 
N 

This selects colour N, as follows:

N           Colour 
610000    Blue 
600400    Green 
600020    Red 
600001    Clear 
410000    Cyan 
400400    Yellow 
400020    Magenta 

Camera Mode

221400 cine mode or
221000 comic mode 

Advance Frame 034001

Advance Fiche 036000

No Operation 000000

Start Job

020000 or 
022000 followed by text string 

Character Space

211000 + N 
or
211777 (two words)
100000 + N

Character Spacing is set to N

End Job 004010

Line Space

212000 + N 
or 
212777        (two words)
140000 + N 

Line spacing is set to N

Character Height

224000 + N 
or 
224777         (two words)
140000 + N

Character height is set to N, or to a suitable space value if N = 0.

Character Rotation: 210000 + N

Characters are rotated through N × 45°.

Character String, proportional spacing

204400 followed by text string

Character String, mono spacing

204100 followed by text string

Picture Definition

202100 + N   This indicates the start of picture N
202377       This indicates the end of the current picture definition.

Draw Picture: 202500 + N

This draws picture N.

Text String

Various commands can be followed by text strings. Text is packed two characters to a word. The code used is that defined in Appendix 2, with the additional feature that all non-control codes have the 9th bit set. For example, A will be 501.

Text strings are terminated by 203.

Order Summary

000000       NOP   
004010       End Job
020000       Start Job
022000       Start Job followed by text
034001       Advance Frame
036000       Advance Fiche

100000 + X   Set absolute position, next word may be Y
140000 + Y   

202100 + N   Define picture N   
202377       End definition
202500 + N   Draw picture N
203100       Mono spaced text, followed by text
204400       Proportional spaced text, followed by text 
210000 + N   Character rotation through N × 45°
211000 + N   Character Spacing
211777       Next word gives character spacing
212000 + N   Line Spacing 
212777       Next word gives line spacing
214000       Next word gives colour
215000       Plot point
221000       Comic mode
221400       Cine mode
222000 + N   Vector family
224000 + N   Character height
224777       Next word gives character height
234400 + N   Intensity. Next word gives colour

300000 + X   Set relative position, next word may be Y
340000 + Y   

500000 + X   Absolute vector, next word may be Y
540000 + Y   

700000 + X   Relative vector, next word may be Y
740000 + Y   

A4. SPROGS Device Numbers

(for use with DVOUT).

  1.0   FR80
  2.0   (FR80)
  4.0   Not defined
  8.0   Lineprinter Graphical
 16.0   Lineprinter
 32.0   (FR80)
 64.0   Tektr0nix
128.0   User-defined
256.0   User-defined
512.0   Hewlett-Packard pen plotter

A5. User Routines

7.3 SPROGS Routines

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

Name Type Meaning
ABUT S Set abut limits for current camera
ADVRPT(X) S X > 0.0, set up advance repeat file, X=0.0, delete advance repeat file
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
APER S Set aperture limits for current camera
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
CAMERA(X) S Select specified FR80 camera
CHHT(Z) S Set height for hardware characters
CHOCT(X) S Set rotations 45 degrees * X hardware characters
CHSP(X) S Set spacing for hardware characters
CINE S Set cine limits
CHABUT S set abut limits in comic mode
CHAPER S set aperture limits in comic mode
CHCINE S Set cine limits in comic mode
COMIC(N) S N=0/1 for cine/comic mode
DELAY(N) S Set spool output delay to N mins
DLETE (FILE) S Delete file from store
DRAWNM(X) S Draw file X+16383 or background if x -ve
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
DVALL(I) S Set up regions for device I
DVOUT(XI) S Sets the value of NTRMLS to XI
ENDSPR S Clears SPROGS output at end of run
ERASE S Do not plot spooled output
EXPRED(A) S Select SD4020 expand image mode and remove pagethrow in lineprinter graphical
FAIR(FR,FNO,TYP) F Fairing value
FILIST(X,XN) S List file X, number XN
FISAV S Finish saving basic file
FLASH S Project SD4020 form flash
FLEMK S Output 1 filemark
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
FRBW16 S Set up FR80 16mm Black and White
FRBW35 S Set up FR80 35mm Black and White
FREL(FNAM,FNO) S Output relative orders equivalent to those in file file FNAM/FNO
FRCL16 S Set up FR80 16mm Colour
FRCL35 S Set up FR80 35mm Colour
FRHCM S Set up FR80 multi frame hardcopy
FRHCS S Set up FR80 single frame hardopy
FRMCH S Set up FR80 microfiche
FRPR16 S Set up FR80 16mm precision
FRSAV(X) S =STSAV (X-16383,current device)
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
HFICHE S Advance one fiche
HFONT(N) S Select FR80 font
HGRATX(X1,Y1,X2,Y2,N) S Draw N+1 vertical lines
HGRATY(X1,Y1,X2,Y2,N) S Draw N+1 horizontal lines
HLINES(N) S N newlines in device ardware characters
HPACK S Set up HP plotter region
HPAGE S New page in device hardware characters
HPLOT(N) S Plot hardware character with 1900 code N
HPLOTS('ST') S Plot singe hardware character
HTEXT(N,'ST') S Print text string in device hardware characters
HTYPE(N) S Print hardware character with 1900 code N
HTYPES('ST') S Print single hardware character
IDSTST(XN,A) S Test for store or execute user display routine
LIBINT(X) S Initialise library X
LCPRY(XPRYV) S Set local priority value
LIMIT(XM,YM,XN,YN) S Set limits of current region
LIMITS(X1,Y1,X2,Y2,AX,AY) S Set limits with aspect ratio
LIMITV(X1,Y1,X2,Y2) S =LIMIT
LNSP(y) S Set line spacing for hardware characters
LPCHAR('S1','S2') S Set plot and overstrike characters for lineprinter graphical
LPDBUG S Add lineprinter to current region devices and select it in addition
LPFILM S Set regions for SD4020 microfilm and LP Graphical and select
LPGRAF S Set regions for lineprinter graphical and select
LPHARD S Set regions for SD4020 hardcopy and LP Graphical and select
LSTALL S List all files
MANYUP(N,M) S Set N*M subframes on hardcopy
MF35MM S Select 35mm camera instead of 16mm
MONO S Set mono spaced hardware characters
NEWDSP(XN,XNI,XNO) S Set up new user display routine
NLCHAR('ST') S Set ST as newline character in hardware text
NLINES(XN) S Draws file 'NL' XN times
NOBSFL S Do not include basic files
NOCOL S Do not include colour
NOCUT S Do not include irregular scissoring
NODSP S Do not include user defined display routines
NOFR S Do not include FR80
NOHP S Do not include HP plotter
NOINDX S Do not include index variables
NOLIB S Do not include library creation
NOLP S Do not include LP output
NOLPG S Do not include lineprinter graphical routines
NONEW S Do not include new IO routines
NONUL S Do not include null routines
NOPLOT S Do not include plot routines
NOSD S Do not include SD4020 routines
NOSHFT S Do not include software shift characters
NOSQ S Do not include sequence list additions
NOSTOR S Do not include file creation
NOTHK S Do not include dotted and thick lined
NOTK S Do not include Tektronix routines
NOTRCE S Do not include tracing
NOTXP S Do not include text expansion for software characters
NOXP S Do not include text expansion for software characters
NPAGE S ADVFLM, UP, LEFT and draw file 'NL'
NWCLPL(XS,YS,IV,N,R) S User routine to clip lines
NWCLPP(X,Y,IV,R) S User routine to determine point visibility
NWCNV(X,Y,R) S User routine to provide shear conversion
NW8ADV S Advance frame for dummy devices
NW9ADV S Advance frame for dummy devices
NW8CH(X,Y,ICN,IV,IC) S Plot ICN on dummy device
NW9CH(X,Y,ICN,IV,IC) S Plot ICN on dummy device
NW8FIN S Close dummy device
NW9FIN S Close dummy device
NW8ST S Open dummy device
NW9ST S Open dummy device
NW8VEC(X1,Y1,X2,Y2,IV,IC) S Draw vector on dummy device
NW9VEC(X1,Y1,X2,Y2,IV,IC) S Draw vector on dummy device
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
PLOTPT S =PLOT(76.0)
PROP S Select hardware proportional spacing
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
RDLIB(X,XN) S Read file XN from library 1 and set as background
READXY(X,Y) S Read current position into X,Y
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
TKREAD(CH,X,Y) S Read character and cross-hairs from Tektronix
TKTRON S Set up Tektronix base region
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
TYPNMB(A,XI,XJ) S Output number in hardware characters
VECTOR(IX1,IY1,IX2,IY2) S =VEC
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
⇑ 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