DMAC Manual

R Asbury and G England

March 1971

Atlas Computer Laboratory

Introduction

The DMAC plotting table may be used for the input of graphical data to computer programs, by tracing diagrams placed on the sensitive region of the plotting table with special pens.

A head is moved beneath the table, to follow the magnetic field generated by a coil in these pens, until it lies beneath the pen.

The co-ordinates of the head are then displayed on the neon tubes of the console to the nearest tenth of a millimetre. These co-ordinates may be punched on paper tape by pressing a foot pedal. A detailed description of the hardware is given in section 1. The paper tape produced by the hardware may be read by Atlas, if the tape has been prepared as a data document, see Preparing a Complete Program for Atlas 1, examples of complete data tapes are given in section 3.

A software system, the DMAC Package has been written to process this paper tape. The Basic Package forms a data structure corresponding to the original diagram, and may dump this onto backing store and display the input picture on SD 4020 hardcopy.

The dumped data may be accessed in Algol programs by the Load Package. Both these packages are described further in section 2, which assume knowledge of the GROATS system.

There are two appendices. Appendix 1 describes the paper tape codes used by the system, and Appendix 2 lists the references used in this manual.

1. DMAC Pencil Follower

1.0 Introduction

The DMAC pencil follower is a device used for converting pictorial information into a digitised form which is then suitable for being processed by a computer. Graphs, contour maps, charts and so on may be readily converted into a series of x and y co-ordinates which are punched onto paper tape. The format of the co-ordinates can be decided on by the user, and the paper tape itself can be either 5, 7 or 8 track. Figure 1 shows the system as a whole with an operator about to digitise a map. There is a keyboard on the table which is used to add further information to the paper tape, and on the left stands the electronic console and the paper tape punch. Below the table on the floor is the foot-operated readout switch which, when depressed, causes the current co-ordinates position of the pen to be punched.

Figure 1 - DMAC Pencil Follower (Nora Rowland). Camera for projecting slides off slanting mirror onto table

The image of a slide can be digitised by means of a projector mounted on the wall, and a large overhead mirror which is set at 45° to the table.

1.1 Further Description of the Equipment

1.1.0. The Table

The table consists of a flat surface with a usable area of one metre square. Beneath the table is a mechanism which automatically positions itself under the pen to an accuracy of ±0.1 mm., and which can move at a maximum speed of 25 cm/sec.

1.1.1. The Pens

There are several different pens available and these are shown in Figure 2. The topmost one is used when digitizing the projected image of a slide, while the pen on the extreme left of the picture is useful for fine detail and consists of a magnifying lens with cross-wires. Each pen carries a wire and plug which should be connected to the socket beneath the table.

Figure 2 - The DMAC Keyboard

It is important that the pen in use should be kept well within the red margin marked on the table, otherwise damage to the follower mechanisms can occur.

1.1.2. The Keyboard

The keyboard, as illustrated in Figure 2, is free to be placed in any convenient position. The button marked Power should be depressed before it will operate. The user can punch further information on the paper tape such as leaders and reference markers, which can be recognised and dealt with by his program. If the paper tape is destined for input to Atlas for example, it is often convenient to start the tape with a document leader and terminate it with an end of document marker.

All the letters of the alphabet are available also the digits 0-9 and various other useful characters such as the decimal point, case shifts, etc. It is sometimes important to know which case a particular character should appear in. For example, when using 7-track tape, the comma and asterisk should appear in lower case while plus and minus should appear in upper case. If in doubt, the user can refer to the list of codes in Appendix 1.

The Tape Out key will produce blank run out irrespective of the width of paper tape in the punch. Genuine run-out on 7-track tape should be produced by repeatedly pressing the figure-shift (ie upper case) key.

1.1.3. The Electronic Console

1.1.3.0. Figure 3 illustrates the electronic console with the current co-ordinate position of the pen displayed as two low-digit numbers.

Figure 3 - Electronic Console

1.1.3.1. The push-switch marked POWER controls the power for both the electronic console and the reading table.

1.1.3.2. The LINE/POSITION switch determines the method in which the readout is obtained. When LINE mode is selected, depression of the foot-operated readout switch causes data to be punched on the tape at set time intervals. The rate of output is under the control of the readout rate potentiometer. With the knob turned fully in the counter-clockwise direction, the readout rate is at its minimum. By turning the knob clockwise from there, the readout rate can be increased to any speed up to its maximum. The maximum readout rate can be calculated from the equation:

Number of readouts per second = 110/(Number of characters comprising the total format)

Using the format of the third example in section 1.1.3.5 with the Format Selection switch set to one, the approximate minimum and maximum readout rates are 2 readouts per second and 7 readouts per second respectively.

When POSITION mode is selected operation of readout switch causes only one output of data to the paper tape.

1.1,3,3, The FORMAT SELECTION switch consists of a thumb-wheel with ten possible positions marked 0-9. In Figure 3a it is set to position 1.

Figure 3a - Format Selection Switch

The way in which the data is punched on the paper tape is controlled by the plug board in the back of the console. The data is comprised of two distinct items ie format 1 and format 2. The number of times each format is produced for a given position of the format selection switch is shown in the following table:-

Switch PositionNo of times format 1 is givenNo of times format 2 is given
010
111
221
331
441
551
661
771
881
991

For example if format 1 consisted of an x co-ordinate followed by a y co-ordinate and format 2 consisted of a newline character, then to output the data in the form of two co-ordinate pairs followed by a newline, the switch should be set to position 2. The plugboard itself is explained in more detail in section 1.1.3.5.

1.1.3.4. The RESET pushswitch should be pressed during the switching on procedure before any output is produced; after the Format Selection switch has been changed or when the machine has locked up due to any fault such as incorrect format plugging. The operation of the Reset switch can do no harm provided that output is not being produced at that instant, so if in doubt as to when it is necessary, it can be used freely.

1.1.3.5. The Plugboard is shown in Figure 4 and can be found in the back of the electronic console unit. It consists of two upper rows of twenty sockets which are connected in parallel, two Reset sockets and a bottom row of twenty-two sockets. Two separate formats can be plugged, the first of which normally contains the x and y co-ordinates themselves, while format 2 is used to introduce characters such as newline at the end of the required number of co-ordinate pairs. Characters to be punched are taken from the bottom row of sockets and plugged consecutively into the top row starting at the extreme left. Format 1 is terminated by connecting the next available socket to the Reset 1 socket. The first character of Format 2 should be plugged into the second row of sockets directly below the one giving Reset 1. Plugging Format 2 should then continue along the top row filling every position until Reset 2 is plugged. The bottom row of sockets is marked as to precisely what output each will invoke. There are five sockets for the co-ordinate digits, only the right-hand four of which are normally used. It is not advisable to use any one character in both format 1 and format 2 if it is intended to have the Format Selection switch set to anything other than 0 or 1, since otherwise format 1 will be repeated only up to the first occurrence of this character. Duplication of any character is achieved by plugging the second row of sockets immediately beneath the last occurrence of the character, as in the case of the space character in some of the examples which follow. Sockets marked in equal numbers should be connected together.

Figure 4 - Plugboard
1 2 3 4 5 6 7 8 9 10 11 11 RESET 1 RESET 2 1 2 3 4 6 7 8 9 10 5 X y CR LF NL FS UC LS LC , SP + - . ? E F Format Selection Switch at 0 Output of the form XXXX $ YYYY → where $ is space and → is newline 1 2 3 4 5 6 7 8 9 10 11 13 11 RESET 1 10 12 13 RESET 2 1 2 3 4 6 7 8 9 12 5 X y CR LF NL FS UC LS LC , SP + - . ? E Format Selection Switch at 1 Output of the form XXXX $ YYYY $ → Format Selection Switch at 2 Output of the form XXXX $ YYYY $ XXXX $ YYYY $ → 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 15 RESET 1 7 13 14 16 17 RESET 2 2 3 4 5 9 10 11 12 16 6 1 8 X y CR LF NL FS UC LS LC , SP + - . ? E Format Selection Switch at 1 Output of the form EXXXX $$ FYYYY $$ → Format Selection Switch at 2 Output of the form EXXXX $$ FYYYY $$ EXXXX $$ FYYYY $$ →

1.1.3.6. Three types of paper tape are available, ie Ferranti 5-track, Ferranti 7-track and ICT 1900 tape. Associated with each type of paper tape is a set of three circuit boards marked Board No 1, 2 and 3. These boards should be changed over when necessary as indicated in Figure 5. Here, Board No 1 for 7-track tape is being removed while Boards 2 and 3 are shown partially withdrawn.

Figure 5 - 3 Circuit Boards (Ferranti 5-track, Ferranti 7-track, ICT 1900 8-track), Bob Asbury
1.1.4. The Westrex Paper Tape Punch

The punch is shown correctly threaded in Figure 6. The On/0ff switch for the motor is mounted rather obscurely behind the chad box on the right-hand side as viewed from this direction. To change the paper tape, it is best to tear it somewhere along the horizontal portion near the supply reel and then press the tape out key on the keyboard until the torn end has disappeared through e punch block. The old reel can then be lifted out and the required tape substituted. The three-position guide, which holds the tape straight just before it enters the punch block, should be rotated to the correct setting for the width of paper tape in use.

Figure 6 - Westrex Paper Tape Punch

After threading the new reel of tape, pull it gently with the tape out key depressed until enough sprocket holes have been punched for it to feed itself through correctly.

1.2 Switching On Procedure

Check that the switch on the wall socket is in the down position and that the pen is within the area of the table enclosed by the red line. Press the Power pushswitch on the console which should become illuminated and Reset.

If the keyboard is to be used, its power button should be in the depressed state. The paper tape punch has its own on/off switch as described above.

It is not advisable to switch off when a paper tape is incomplete, since the punch outputs a spurious character when it is switched back on again.

1.3 Notes on the use of the Equipment with the DMAC-SD4020 program package

The package has been written under the assumption that Ferranti 7-track tape will be used. This is because it is the kind of tape most frequently used on Atlas with the best flexowriter facilities. Unfortunately, run-out cannot be produced by operation of the Tape Out key on the keyboard since this gives blank tape. Instead, the Upper Case (ie Figure Shift) key should be pressed repeatedly to obtain genuine run-out. The package has been used successfully with 7- and 8-track tape but not with 5-track.

The paper tape will have to be presented to Atlas in the form of a data document, so it is convenient to punch the header using the keyboard before any co-ordinate output is produced. The ***Z terminator should also be punched at the end, remembering that the asterisk character is in lower case on 7-track tape while the Z must be in upper case. Commands for recognition by the package such as PAGE or TRACK must have upper case letters, the comma being lower case.

The package will ignore superfluous run-out characters which can be usefully inserted at points along the tape to facilitate any flexowriter editing if ever the need arises.

When tracing a curve defined as a TRACK within the package it is normal to have the electronic console set in Line mode. A TRACK consisting of a series of straight lines joined together can be digitised more quickly by setting the console in position mode and digitising only the points of discontinuity. Position mode must be selected when defining a TEXT co-ordinate. If the console is not in Position mode and the foot switch is held down too long, more than one co-ordinate pair may be produced and the second co-ordinate pair will be taken to be the text itself. Also, having specified the LINE command to the package via the keyboard, the package will expect an even number of co-ordinate pairs to follow, and the only safe way of ensuring this is to use Position mode on the console.

Figure 7 - DMAC Rear View

2. The DMAC Package

2.0 Introduction

The aim is to provide software that permits the user to input data to his program in two steps, namely:

  1. Production of paper tape from the DMAC and a run with the Basic Package to store the data on backing store.
  2. Running his own program, which includes the Load Package, to make use of this data.

Details of the command language on the paper tape, wnich is required by the Basic Package, are given in section 2.1. The procedures of the Load Package that are available to users are described in section 2.2.

2.1 The Basic Package

2.1.0 Introduction

Data plotted on the DMAC table takes the form of a sequence of co-ordinates separated by command words. The data is divided into a number of pages, a page normally being all the data required from a simple sheet. Each sequence of co-ordinates must be preceded by its type, that is TRACK, SYMBOL, LINE or TEXT.

A TRACK is a continuous line drawn through each co-ordinate pair, generated perhaps with the DMAC in line mode.

A SYMBOL is a series of points, perhaps representing towns on a map.

A LINE is a set of straight lines. The co-ordinate pairs are themselves taken as pairs, representing the ends of discrete lines.

When it is not necessary to distinguish between symbols, tracks or lines, they will be called chains. The generic term for chains, pages and texts is item.

The Basic Package resides on magnetic tape N1353 DMAC, as a dumped program. It may be recovered using the ABL program given in section 3. It may be used to:

  1. Convert data, written on punched tape in the standard format into a data structure in a data area of store.
  2. List the punched tape on Output zero, together with any error messages.
  3. Dump the data structure onto backing store, so that it may be retrieved by the Load Package.
  4. Display the diagram represented by this data structure on SD4O20 Hardcopy.

The standard format for data on the punched tape is described in 2.1.1., the commands that may be used on it in 2.1.2., and a simole set of commands is shown in 2.1.3.

An example of a complete program may be found in Section 3

.

Please note:

  1. The order in which commands are given is important, and disaster will follow unless commands are in the correct order. Please read 2.1.2.2.
  2. If a UNIT command is not given to the package, then logical tape No 90 will be used, if required.
  3. This package always produces graphical output. Even if omly the identification and endplotting frames.
  4. Since there is no way of discovering what you have just punched on the tape, if you think you have made a mistake, punch a newline, and repunch the line. One of these two lines will be ignored by the system, and will cause no damage to your data structure.
  5. In the event of problems consult G England.
2.1.1. The Format of Data on the Paper Tape
2.1.1.0 Introduction

Tape is sometimes not punched correctly, since this must not cause data to be stored incorrectly, a strict format is chosen for the representation of data on the punched tape. The format co-ordinate pairs is described in 2.1.1.1., and-for commands 2.1.1.2.

Please note:

  1. Runout of unnecessary upper or lower case shifts characters on seven hole tape is ignored.
  2. Upper case characters are distinguished from lower case characters.
  3. An empty line is ignored and there is no error trace, a line consisting of spaces only will be flagged by LINE NOT RECOGNISED. This will not change the data structure.
2.1.1.1. Format of a Co-ordinate Pair

Since the data on the punched tape is largely made up of co-ordinate pairs - it is important that the format for co-rdinates be strict. If a line does not comply with the format below, then it is flagged LINE NOT RECOGNISED and ignored by the data structure. Such errors should be reported to the authors, so that error statistics may be kept. It is believed that about 1 in 5000 co-ordinate pairs is mispunched.

The co-ordinate is a four digit number. The first of the pair is an X co-ordinate, and the second a Y co-ordinate. The X co-ordinate is preceded by an E and followed by two spaces, the Y co-ordinate is preceded by an F and followed by two, or more spaces, and a newline.

For example, a co-ordinate pair could be:

E1234$$  F5678$$→

Where $ represents a space, and → represents a newline.

2.1.1.2. Format of Commands

A command is made up of a number of Upper case letters. It may be preceded by any number of spaces. In some cases, this is followed by a comma and a <name> or a <number>.

A <name> is a set of characters that are not commas, spaces within a <name> are ignored.

A <number> is a set of digits, there may be no spaces between digits.

A command is terminated by a newline. An example of a command is:

PAGE, MARY 

and another is:

UNIT, 75 

Note if a command is mispunched, it will be ignored, and may be repunched on the next line. Thus:

PAAG, MARY
PAGE, M ARY 

is equivalent to the first example above.

2.1.2 The Commands on the Paper Tape

2.1.2.0 Introduction

A list of commands in alphabetical order is given in 2.1.2.1., and the rules for the sequence in which commands may be issued are defined in 2.1.2.2.

2.1.2.1 Commands
BLOCK, <number> 

This positions the tape or disk selected by UNIT at the beginning of the block numbered <number>.

If this command is not used, the tape is positioned at the beginning of block 1 by the Atlas supervisor.

DISPLAY

Each page is displayed on a separate frame of hardcopy as below.

DISPLAY, <name>

The page <name> is displayed on a new frame of hardcopy. The corners given by the ORIGINS sequence are used to define the limits for the region. The larger of the maximum X and maximum Y is found from the ORIGINS sequence, and this is used to specify the maximum X and Y in the call to procedure limits (see page 50 GROATS Manual) so that the horizontal and vertical seales are the same on the hardcopy.

If a point, in a track, is plotted with its X and Y co-ordinates greater than the above maximum, the track will be interrupted at that point.

If a point is plotted either of whose co-ordinates are less than the minimum in the ORIGINS sequence, the offending co-ordinate is set to zero.

DUMP

Writes all blocks of store in the data area, that have been used, - to the currently selected unit. These blocks may be recovered by LOAD, or by the Load Package. The number of the next block on the backing store is printed. This command is designed so that data may easily be stored between runs of the two segments of the DMAC package.

END

The package stops execution on reading this command. No further data is read from the paper tape.

EXPAND <number>

The co-ordinates following this command are multiplied by <number> before they are stored. This is to permit the co-ordinates to be normalised for the user of the load package.

IGNORE <number>

If points are less than <number> units apart, after their co-ordinates are expanded, the later points are ignored. This applies to all chains. When the DMAC is operating in line mode, leaving the pen still for a while might result in several points with the same, or nearly the same co-ordinates. The IGNORE command is provided to avoid storing these.

LOAD

Reads a previously dumped data area from the currently selected unit of backing store, and allows more items to be added to the structure. Any data structure present before this command will be destroyed.

LINE <name>

The co-ordinate pairs following are to be taken as the start and end of straight lines, alternately. There must be an even number of pairs of co-ordinates, or the package will fail with ILLEGAL FUNCTION.

The co-ordinates are stored in the data area, and <name> is associated with them. The sequence of co-ordinates is terminated by any command.

ORIGINS
<co-ordinate pair>
<co-ordinate pair>
<co-ordinate pair>
<co-ordinate pair>

Unless this command is followed by four pairs of co-ordinates the package will break down, giving the message ERROR IN PROCEDURE ORIGINS, all further activity is undefined.

The four co-ordinate pairs are taken as the four corners of the current page. They should be close to the corners of a rectangle but may be in any order, and the sides of the rectangle do not need to be parallel to the axes of the plotting table.

The co-ordinates of points on the page are transformed to page co-ordinates. The origin of axes of the page is defined by the co-ordinates of the corner nearest to the origin of the DMAC table, while the inclination of the axes is defined by the edge which is nearest to being parallel with the X axis of the table. All co-ordinates which transform to negative numbers are replaced by zero.

PAGE <name>

This opens a new page of data, and associates <name> with it. If Origins is not given in this page, its corner are assumed to lie at the corners of the plotting table, that is at (0,0), (0,9999), (9999,9999), (9999,0). The Ignore factor is set to zero and the Expand factor to one.

A page is terminated by the command END, or by the next PAGE command.

SYMBOL <name>

This command is followed by a sequence of co-ordinate pairs, which are taken to be points of interest on the diagram. When the page is displayed, they will appear as dots, stars, etc. See procedure plotchain section 2.2.1.

The sequence is terminated by any command.

TEXT <name>
<co-ordinate pair>
<text>

The <text> is stored, <name> and <co-ordinate pair> are associated with it.

<text> is one or more characters, terminated by a newline.

<co-ordinate pair> is taken to be the centre of the first character of <text>.

When the text is displayed, it is parallel with the X axis of the hardcopy, with the characters at hardwaresize.

TRACK <name>

The co-ordinate pairs following are points on a line, unless the point is outside the plotting area specified by ORIGINS. The points are stored, and <name> associated with them. When the line is displayed then points, whose co-ordinates are greater than the greater of the maximum X or Y specified for the page, interrupt the line. This facility cannot be used, unless ORIGINS is used in the current page.

UNIT <number>

The unit will be selected, whose logical number is <number>. This unit will be used for all further use of BLOCK, LOAD or DUMP. If <number> is not that of any unit in the job description, then these commands will cause the program to fail with TAPE NOT DEFINED.

The default, if no UNIT command is used, is logical No.90.

Please note:

Items of the same type should not be called by the same <name> within one page. If they are in different pages there is no problem.

2.1.2.2. Sequence

The first command to the basic package must be a PAGE or LOAD, or the package will fail ith ILLEGAL FUNCTION. All failures should be reported to G England.

The last command should be END, or display information will be lost.

Any EXPAND command should immediately follow the PAGE command, and should not be used again with the page. If the command is not used the Expand factor is taken to be 1.

The ORIGINS sequence should follow next, and then any other command may follow.

The page ends with either the command END or with another page.

2.1.3. An Example of a Set of Commands

Below is a set of commands that may be punched on a paper tape and submitted to the Basic Package.

PAGE, MAP 
ORIGINS 
E1001   F2011 
E3215   F4456 
E100l   Fl453 
E3220   F2008
SYMBOL, TOWNS
E1706   F2571 
E1812   F2100 
E1815   F3566 
E2177   F4115 
E2586   F2122 
E3117   F3217 
E2669   F3575
TEXT, TITLE 
E2203   F4100 
MAP  OF AREA  1
UNIT, 5
BLOCK, 100 
DUMP
DISPLAY
END

2.2 The Load Package

2.2.0. Introduction

The Load Package is designed to allow access to data output from the DMAC by an Algol program. It is made up of a number of procedures, followed by six variable declarations. It is available as library item DMAC 1 on disc area RO56 GRAHAM. The procedures that are needed to access the data, and to display it are described in 2.2.1. Example of the use of these procedures are given in 2.2.2.

Please note:

  1. As the data from DMAC is stored on a backing device, it must be loaded using procedure loadit, before the program can access the data.
  2. Since the data structure divides the output into pages, individual items may only be accessed by first selecting the page they are in.
  3. The package must run under GROATS.
2.2.1. Definitions of Procedures
2.2.1.0. Introduction

Definitions of procedure calls and their results are given below, in alphabetical order of their name.

2.2.1.1. The Definitions
integer procedure charcount; 

This procedure returns the number of characters in the currently selected textstring. If this procedure is called while a text is not selected, the result is undefined.

integer procedure count; 

Count returns the number of co-ordinate pairs in the selected chain. If a text is selected, this procedure will give an undefined result.

procedure displayeverything; 

This procedure may be called immediately after loadit, and will plot each page on a new frame, using the currently selected camera, as below.

procedure displayonepage; 

This plots the currently selected page, in the currently selected region, setting limits by a call of max.

A SYMBOL item is plotted by drawing a plotting character at the co-ordinates specified by nextcoordpair. For the first symbol item in each page, the plotting character is an asterisk, for the second a plus sign, and the third a plotting dot. This cycle is repeated for further symbol items. Other items are plotted as described below in plotchain.

procedure loadit (itape, iblock); 
value itape, iblock; 
integer itape, iblock; 

This must be the first procedure called from the load package. It reads the data area from the tape or disc numbered itape, starting at block iblock. This recovers data stored from earlier runs.

real procedure max; 

Max delivers the greater of the expanded and rotated values of the co-ordinates specified in the ORIGINS sequence of the basic package. Displayonepage sets limits by means of:

limits (0, 0, max, max); 
real procedure maxx; 

Maxx delivers the expanded and rotated values of the greatest X co-ordinate in the ORIGINS sequence.

real procedure maxy; 

Maxy delivers the expanded and rotated value of the greatest Y co-ordinate in the ORIGINS sequence.

procedure nextcoordpair; 

The next pair of co-ordinates of the currently selected chain or TEXT item are read to variables x1 and y1. These variables are declared by the load package.

This procedure does not check if the end of the current chain has been reached, nor if the co-ordinates are greater than max. The co-ordinates will not be negative. The procedure may thus be used to read the co-ordinates of a TEXT item.

procedure plotchain (i); 
value i; 
integer i; 

The currently selected chain or text is plotted, according to the format specified by i.

i   chain is plotted as a   
1   SYMBOL item   
2   LINE item   
3   TRACK item   
4   TEXT item   

A symbol item is plotted as described above at displayonepage, however, the user may first set the integer symboltype according to the table below.

Symboltype  Plotting Character
   1               *
   2               +
   3               .
procedure printstr (i); 
value i; 
integer i; 

This prints the string pointed to by i on stream zero, and ends the string with a newline. It is possible to set i by procedure pointer of GROATS or by textpointer.

procedure select (i); 
value i; 
integer i; 

The item specified by a string pointed to by i will be selected. The string should take the form:

PAGE, MARY 

(Where the item type is always in upper case, and the name of the item is as punched on the original paper tape). It is important that the page which contains the desired items is selected before that item, or it will not be found. Attempting to select an item that cannot be found causes the failure:

FAILED TO SELECT THE FOLLOWING ITEM 

and the string that cannot be matched is printed on the next line, followed by the normal algal Post Mortem trace. A typical call to select would be:

select (pointer ('PAGE,MARY')); 
integer procedure textpointer; 

This procedure returns a pointer to the textstring of the currently selected text item, so that the string may be output by prinstr or plotted by typestring of GROATS.

2.2.2. Examples of use of the Load Package

A picture of a rabbit sitting on a bench had been plotted on the DMAC table as page RABBIT, and a picture of a squirrel throwing a crab-apple at pinecones had been plotted as page SQUIRREL. It was desired to dissolve from the scene of the rabbit to the scene of the squirrel.

The portion of the Algol program concerned with this dissolve was:

begin
loadit (1, 100); 
limits (0, 0, 1023, 1023); 
regionandselect (11, 136, 1011, 886, 1); 
select (pointer ('PAGE, RABBIT')); 
startdef ('rabbit'); 
displayonepage; 
finishdef ('rabbit'); 
select ('PAGE, SQUIRREL'); 
startdef ('squirrel' ) ; 
displayonepage; 
finishdef ('squirrel' ) ; 
changedisplay ('rabbit', 'squirrel', 480); 
end

3. Examples of Use of the Packages

3.0 Introduction

A complete program to run the Basic Package is shown in section 3.1.1. the data tape for this program in 3.1.2.and an Algol program to use the Load Package in 3.2.

3.1 A Program to use the Basic Package

3.1.0. In use the Basic Package runs within 100 blocks and will process 3000 co-ordinates in 2 minutes.

It is verbose and produces on average 1.25 lines of output for every co-ordinate pair, on OUTPUT 0.

The package expects the data tape on input 1, and loads the package from tape N1353 DMAC. The program is shown in section 3.1.1. and the datatpe in 3.1.2.

3.1.1. The program:
JOB I00000 ENGLAND TO DRAW 
COMPUTING 2 MINUTES 
STORE 100/100 BLOCKS 
INPUT 1   COORDINATES 
OUTPUT 
0  ANY 2000 LINES 
12 ANY 50 LINES 
13 ANY 50 LINES 
TAPE 1 N1353 DMAC*INHIBIT 
TAPE 90 N1000 MYTAPE 
TAPE IBM 14 COMMON/ SC/GRAPHIC FOR ENGLAND 
USE ABL 
1002,   1, 0, J17
 121, 127, 0, J17 
EA 
***Z 
3.1.2. Datatape
DATA 
COORDINATES 

PAGE, 1 
ORIGINS 
E5882 F1O13 
E7972 FO997 
E7979 F1996 
E5892 F2OO9 

TRACK,CURVE E5985 F1111 
E6085 F1247 
E6187 F1345 
E6282 F1370 
E6387 F1186 
E6484 F1160 
E6584 F1256 
E6678 F1445 
E6782 F1614 
E6885 F1768 
E6981 F1868 
E7084 F1918 
E7185 F1868 
E7284 F1765 
E7380 F1645 
E7477 F1535 
E7576 F1442 
E7676 F1342 
E7777 F1252 
E7875 F1180 

DISPLAY 

BLOCK,1000 
DUMP 

END 

***Z 

3.2 An Algol program to use the Load Package

It plots the graph digitised onto the datatape in 3.1.2.

J0B I2201 ENGLAD RUN GRAPH 
OUTPUT O ANY 900 LINES 
OUTPUT 12 ANY 50 LINES 
OUTPUT 13 ANY 50 LINES 
TAPE IBM 1 COMMON/SC/ENGLAND GRAPH 
STORE 80/160 BLOCKS 
DISC 3 R056 GRAHAM 
DISC 99 R502 ALGOLIB 
TAPE 30 N000 MYTAPE 
USE ALGOL 
INPUT TELETYPE WITH GROATSICT I/O PROCEDURES. 
LIST ON LINEPRINTER$ 
BEGIN 
LIBRARY SC1; 
IDENTIFICATION; 
 BEGIN 
 LIBRARY DMAC1/3; 
 INTEGER I; 
 REAL XM, YM; 
 LOAD1T (30,1000); 
 SELECT(POINTER('(''PAGE',1')')); 
 XM:=MAXX; 
 YM:=MAXY; 
 COMMENT ORIGIN OF COORDINATES IS AT 12,15 MAX IS AT 33,25; 
 SELECT(POINTER('(''TRACK','CURVE'')')); 
 I:=COUNT; 
 I:=I-1; 
  BEGIN 
  REAL ARRAY XC[O:I],YC[O:I]; 
  INTEGER J; 
  FOR J:=O STEP 1 UNTIL I DO BEGIN 
  NEXTCOORDPAIR; 
  XC[J]:=X1;YC[J]:=Y1; 
  END; 
 COMMENT USE THE CURVE PLOTTING LIBRARY PROCEDURE; 
  BEGIN 
  LIBRARY SC8; 
  LIMITS (0,0, 1023,1023); 
  REGIONANDSELECT(50,50,970,970,1); 
  LIMITS(0,0,XM,YM); 
  GRATICULEAT(XM/21,YM/20); 
  BORDER; 
  CURVE(1,I,KC,YC); 
  PLOT(XC[0],YC[0],14); 
  FOR J:=0 STEP 1 UNTIL I DO PLOTN(XC[J],YC[J]); 
  END 
 END 
END; 

ENDPLOTTING;
END 

Appendix 1: Paper Tape Codes

Paper Tape Codes

The following abbreviations are used:-

 
BS   backspace         PT   paper throw   
CN   case normal       RO   run out   
CR   carriage return   SI   shift to inner set   
cs   case shifted      SO   shift to outer set   
ER   erase             SP   space   
FS   figure shift      ST   stop code   
LC   lower case        TB   tabulate   
LF   line feed         UC   upper case   
LS   letter shift      UL   underline   
NL    newline          ULN  underline non-escape   
PF    punch off        VBN  vertical bar non-escape   
PN    punch on       

FERRANTI 5-HOLE TAPE CODE

This is the paper tape code on Pegasus, Mercury and Atlas.

         FIGURE    ATLAS INTERNAL    LETTER    ATLAS INTERNAL   
CODE   SHIFT CHAR   CODE   NAME    SHIFT CHAR   CODE   NAME   
0.0   FS                              FS       
0.1   0             2.0I    0         P         6.0I    P   
0.2   8             3.0I    8         H         5.0I    H   
0.3   φ             2.00    φ         X         7.0I    X   
o.4   4             2.4I    4         D         4.4I    D   
0.5   →             2.30    →         T         6.4I    T   
o.6   ≈             3.10    ≈         L         5.4I    L   
0.7   .             3.71    .         .         3.71    .

1.0   2             2.2I    2         B         4.21    B   
1.1   ≥             2.40    ≥         R         6.2I    R   
1.2   =             3.4I    =         J         5.21    J   
1.3   +             3.51    +         Z         7.21    Z   
1.4   )             1.1I    )         F         4.6I    F   
1.5   6             2.6I    6         V         6.6I    V   
1.6   SP            o.1I    SP        N         5.61    N   
1.7   CR                              £         1.3I    π   

2.0   1             2.1I    1         A         4.1I    A   
2.1   >             3.31    >         Q         6.1I    Q   
2.2   ≠             2.50    ≠         I         5.1I    I   
2.3   9             3.1I    9         Y         7.1I    Y   
2.4   (             1.0I    (         E         4.5I    E   
2.5   5             2.5I    5         U         6.5I    u   
2.6   LF                              M         5.5I    M   
2.7   n             4.0I    '         ?         1.4I    ?   

3.0   *             1.6I    *         C         4.3I    C   
3.1   3             2.3I    3         S         6.3I    S   
3.2   -             3.6I    -         K         5.3I    K   
3.3   LS                              LS       
3.4   7             2.7I    7         G         4.7I    G   
3.5   /             1.7I    /         w         6.7I    w   
3.6   ,             1.2I    ,         O         5.71    O   
3.7   ER            7.70    ER        ER        7.70    ER   
FERRANTI 7-HOLE TAPE CODE

This is sometimes called ICT 7-HOLE TAPE CODE. It is one of the original input forms on Atlas.

     
          UPPER     ATLAS INTERNAL   LOWER    ATLAS INTERNAL   
 CODE   CASE CHAR    CODE   NAME   CASE CHAR   CODE   NAME   
 
 2.0        SP       0.1I    SP       SP       0.1I    SP   
 0.1                
 0.2        NL                        NL       
 2.3        PT                        PT       
 0.4        TB       0.2I    TB       TB       0.2I    TB   
 2.5        BS       0.3I    BS       BS       0.3I    BS   
 2.6        LC                        LC       
 0.7        UC                        UC       

 1.0               
 3.1               
 3.2               
 1.3               
 3.4        ST       1.4O   ST        ST      1.4O     ST   
 1.5        PN       1.5O   PN        PN      1.5O     PN   
 1.6        PF       1.6O   PF        PF      1.6O     PF   
 3.7        /        1.7I   /         :       1.70     :

 4.0        0        2.0I   0         '       4.0I     '
 6.1        1        2.1I   1         [       2.1O     [   
 6.2        2        2.2I   2         J       2.2O     ]   
 6.3        3        2.3I   3         <       3.2I     <   
 6.4        4        2.4I   4         >       3.3I     >   
 4.5        5        2.5I   5         =       3.4I     =   
 4.6        6        2.6I   6         UL      2.6O     UL   
 6.7        7        2.7I   7         |       2.7O     |   

 7.0        8        3.0I   8         (       1.0I     (   
 5.1        9        3.1I   9         )       1.1I     )   
 5.2        α        3.2O   α         2      3.0O     %   
 7.3        β        3.3O   β         π       1.3I     π   
 5.4        ½        3.4O   ½         ?       1.4I     ?   
 7.5        +        3.5I   +         &       1.5I     &   
 7.6        -        3.6I   -         *       1.6I     *   
 5.7        .        3.7I   .         ,       1.2I     ,   

10.0               
12.1        A        4.1I   A         a       4.1O     a   
12.2        B        4.2I   B         b       4.2O     b   
10.3        C        4.3I   C         C       4.3O     c   
12.4        D        4.4I   D         d       4.4O     d   
10.5        E        4.5I   E         e       4.5O     e   
10.6        F        4.6I   F         f       4.6O     f   
12.7        G        4.7I   G         g       4.7O     g   
      
13.0        H        5.0I   H         h       5.0O     h   
11.1        I        5.1I   I         i       5.1O     i   
11.2        J        5.2I   J         J       5.2O     j   
13.3        K        5.3I   K         k       5.3O     k   
11.4        L        5.4I   L         l       5.4O     l   
13.5        M        5.5I   M         m       5.5O     m   
13.6        N        5.6I   N         n       5.6O     n   
11.7        O        5.71   0         o       5.7O     o   

16.0        P        6.0I   p         p       6.0O     p   
14.1        Q        6.1I   Q         q       6.1O     q   
14.2        R        6.2I   R         r       6.2O     r   
16.3        S        6.3I   s         s       6.3O     s   
14.4        T        6.4I   T         t       6.4O     t   
16.5        u        6.51   u         u       6.5O     u   
16.6        V        6.6I   V         v       6.6O     V   
14.7        w        6.7I   w         w       6.7O     w   

15.0        X        7.0I   X         x       7.0O     X   
17.1        Y        7.1I   y         y       7.1O     y   
17.2        Z        7.2I   z         z       7.2O     z   
15.3               
17.4              
15.5               
15.6               
17.7        ER       7.7O   ER        ER      7.7O     ER   

ICT 8-HOLE TAPE CODE (ICT 1900 TAPE)
    ATLAS INTERNAL       ATLAS INTERNAL   
 CODE   CHAR   CODE   NAME   CODE   CHAR   CODE   NAME   
 0.0                         24.0    SP    0.1I    SP    
20.1                          4.1    !     2.7O    |     
20.2                          4.2    "     3.3O    β     
 0.3                         24.3    #     2.5O    ≠     
20.4                          4.4    £     1.3I    π     
 0.5                         24.5    %     2.0O    φ     
 0.6                         24.6    &     3.2O    α     
20.7                          4.7    →     4.0I    →     

21.0     BS    0.3I    BS     5.0    (     1.0I    (     
 1.1     TB    0.2I    TB    25.1    )     1.1I    )     
 1.2     NL                  25.2    *     1.6I    *     
21.3     LF                   5.7    +     3.5I    +     
 1.4     PT                  25.4    ,     1.2I    ,     
21.5     CR                   5.5    -     3.6I    -     
21.6                          5.6    .     3.7I    .     
 1.7                         25.7    /     1.7I    /     

22.0                          6.0    0     2.0I    0     
 2.1                         26.1    1     2.11    1     
 2.2                         26.2    2     2.2I    2     
22.3                          6.3    3     2.3I    3     
 2.4     ST    1.4O    ST    26.4    4     2.4I    4     
22.5                          6.5    5     2.5I    5     
22.6                          6.6    6     2.6I    6     
 2.7                         26.7    7     2.71    7     

 3.0                         27.0    8     3.0I    8     
23.1                          7.1    9     3.1I    9     
23.2                          7.2    :     1.7O    :  
 3.3                         27.3    ;     1.3I    π     
23.4                          7.4    <     3.2I    <     
 3.5                         27.5    =     3.4I    =     
 3.6                         27.6    >     3.3I    >     
23.7                          7.7    ?     1.4I    ?     

30.0     @     3.2O    #     14.0    UL    2.6O    UL   
10.1     A     4.1I    A     34.1    a     4.1O    a   
10.2     B     4.2I    B     34.2    b     4.2O    b   
30.3     C     4.3I    C     14.3    C     4.3O    C   
10.4     D     4.4I    D     34.4    d     4.4O    d   
30.5     E     4.5I    E     14.5    e     4.5O    e   
30.6     F     4.6I    F     14.6    f     4.6O    f   
10.7     G     4.7I    G     34.7    g     4.7O    g   

11.0     H     5.0I    H     35.0    h     5.0O    h   
31.1     I     5.1I    l     15.1    i     5.1O    i   
31.2     J     5.2I    J     15.2    j     5.2O    j   
11.3     K     5.3I    K     35.3    k     5.3O    k   
31.4     L     5.4I    L     15.4    l     5.4O    l   
11.5     M     5.5I    M     35.5    m     5.5O    m   
11.6     N     5.6I    N     35.6    n     5.6O    n   
31.7     0     5.7I    0     15.7    o     5.7O    o   

12.0     p     6.0I    p     36.0    p     6.0O    p   
32.1     Q     6.1I    Q     16.1    q     6.1O    q   
32.2     R     6.2I    R     16.2    r     6.2O    r   
12.3     s     6.3I    s     36.3    s     6.3O    s   
32.4     T     6.4I    T     16.4    t     6.4O    t   
12.5     u     6.5I    u     36.5    u     6.5O    u   
12.6     V     6.6I    V     36.6    V     6.6O    v   
32.7     W     6.7I    W     16.7    w     6.7O    w   

33.0     X     7.0I    X     17.0    x     7.0O    x   
13.1     Y     7.1I    Y     37.1    y     7.1O    y   
13.2     Z     7.2I    Z     37.2    z     7.2O    z   
33.3     [     2.1O    [     17.3         
13.4     $     0.3O    £     37.4         
33.5     ]     2.2O    ]     17.5         
33.6     ↑     2.4O    ≥     17.6         
13.7     ←     3.1O    ≈     37.7    ER    7.7O   ER   

Appendix 2: Bibliography and Acknowledgements

The following books were used in preparing this manual:

Preparing a complete program for Atlas 1, ICL, March 1966

Algol Groats Manual, F R A Hopgood, August 1969

Reference Manual for the Pencil follower type PF10000 Mk.1B, DMAC Ltd, 1970

Atlas Algol System by F R A Hopgood October 1969

Thanks are due to Mr F R A Hopgood for advice and assistance in preparing this system.