The machine has a very great flexibility. Although this has obvious advantages, it has also certain disadvantages which can become serious unless precautions are taken. It is for instance possible to alter the whole content of the electronic and magnetic stores merely by putting an appropriate tape on the input. Although we may be often glad of this fact it increases the possible damage which can be caused by mistakes. The remedy for this kind of difficulty lies in the introduction of conventions. These are in effect decisions to restrict the freedom or flexibility of the machine in various ways. It is hoped that the loss of flexibility will be fully compensated for by the advantages of the resulting reduction of the uncertainty of the state of the machine. The conventions are mostly not to be regarded as absolute commands or prohibitions, but rather as normal procedure, any deviation from which must be noted in the descriptions of the routines in which they occur.
Since these conventions do not form any part of the physical machine the user has the alternative of ignoring them altogether. Likewise he can if he wishes ignore altogether the whole of what is said about actual programmes and (at his peril) make his own from scratch, if he considers it advisable. The conventions should not be regarded as pure tyranny, but to know that they have been obeyed in the programmes one is using is a great comfort. Moreover they enable one to reduce considerably the lengths of official accounts of routines, since they allow a great deal to be taken for granted.
There are certain expressions which it is desirable to keep constantly
available in the electronic store. The amount of material which
should be so kept is a matter of opinion. At present it is proposed
to keep only the powers of two and the `routine changing sequence'.
The details of this material are shown on the accompanying diagram.
The forty powers of two are obtained without using
more than forty-one short lines, although each power occupies a long
line. However the addresses of those are not in linear sequence.
This means that if we wish to use some particular power in an
instruction we can do so, but if for instance we want to find
, a somewhat lengthy process involving a test
instruction is required. Sometimes this has to be done, e.g. in the
routines for the logarithm and the reciprocal. In these cases the
forty one lines of PERM are combined with a further forty lines which
are put into the electronic store simultaneously with the routines
which require them.
[The listing of PERM is actually at the end of the manuscript; it is as follows:
The routine changing sequence is entered by the instruction NS/P. The ``special working space'' is scratch space which any routine may overwrite at any time.]
The purpose of the routine changing sequence is to enable routines to be changed without having a lot of preparatory bother in the routine which is being left, but fairly quickly and certainly. A certain amount of preparatory bother is unavoidable. When leaving any routine it is necessary to specify the new routine which is being entered. We do it with a long line which is called the `cue' for the new routine. When leaving a master routine for a subroutine it is also necessary to specify what is to be done when the operations of the subroutine are over. This is done with another forty digit line, called the `link'. When leaving the subroutine the `link' will become a cue, and will normally lead back to the master routine.
The preparation to leave a routine will always include putting the cue into VS where the routine changing sequence will find it and deal with it. This setting of the cue may be done just before leaving the routine, though it can be done at any previous time, provided no subroutine intervenes. With routines which have no subroutines the cue is often planted immediately after entering the routine itself. If a link is required it should be put into the least significant half of the accumulator immediately before leaving the routine. On entering the subroutine the link may be planted in VS at once, or if there are lesser subroutines, may be temporarily stored elsewhere.
The cue itself is required to specify the new routine which is being
entered. Two different systems are used according to whether the
routine in question is or is not `of fixed abode', i.e., whether it is
always kept in the same track or not. The cue itself determines which
type it belongs to, and the routine changing sequence recognises the
type and acts accordingly. The two types are called `true cues' and
`false cues'. True cues end with 0 and are used with routines of
fixed abode. False cues end with 1 and are used with routines of no
fixed abode. The cues will be described here from the point of view
of their treatment by the routine changing sequence. The same
information is given again on p. from a rather different
point of view. [That discussion in fact describes their format, which
includes a magnetic instruction to load the routine off the magnetic
wheel (or for false cues, a pointer to the magnetic page containing
one, and a location on that page), a crude checksum, and the
address of the first instruction once the new routine has been loaded
into the electronic store; the reader may wish to turn ahead for
details before coming back here to see the details of how a cue is
followed.]
The first step after entering the routine changing sequence is to
deposit the link temporarily in VK, leaving the accumulator
clear and free for other purposes. This is the instruction
VKTA. The next instruction is JS/L [orig. FS/L]
which is a dummy stop.
This will be encountered whenever routines are
changed, and enables one, when testing out routines by hand, to speed
through subroutines known to be sound. The next two instructions
VSTF and CK/H discriminate between the true and false
cues. Let us take first the case of a true cue. The next instruction
is £S/:, and obeys the magnetic instruction part of the cue. The
next five instructions form the quantity
whose value depends on the
preceding magnetic transfer and, if the wrong transfer is made, is
likely to have the wrong value. The correct value is contained in
digits 10-19 of the cue. The next four instructions are concerned
with verifying whether the value obtained agrees with the value given
in the cue. If the value is wrong a middle C hoot occurs. If the
value is right the routine is entered by the instruction VS/P,
using the control transfer number part of the cue.
In the case of a false cue a new magnetic instruction is constructed and obeyed, resulting in [the] left half of the track mentioned in digits 30-38 of the cue being transferred to [electronic] p.0. The line of this track named in digits 20-29 is then transferred to the short line £S. The routine changing sequence is then reentered. But now there is a new line in £S, not ending in 1, so that the content of VS is now treated as a true cue. The part of the routine changing sequence which deals with false cues is in [electronic] p.7.
Connected with PERM we have the conventions
It must now be explained that it is very doubtful whether the sixteen pages of electronic store will ever be available. In any case it is advisable not to use more of the store than is really necessary, on account of the difficulties of servicing. However it is futile to practice excessive space economy with a routine which is normally to be used in connection with others which practice less economy. It is necessary therefore to have fairly definite understandings about how much may be used. The following may be assumed
The decision as to which of the sixteen tubes should be made functional is at our disposal. It seems preferable that these should be chosen amongst the first eight, although it might be difficult to give any very convincing reasons for doing so. Of these any five may be taken, but it is desirable that a particular five be chosen and not altered. This is essential if library routines are used. The selection which has been chosen is 0,1,2,4,7, i.e. columns /,E,@,A,:,S,¼,D,C,K. This selection may appear somewhat arbitrary. It may appear less so after it has been explained how these pages will normally be used.
Pages 0 and 1 (columns /,E,@,A) are customarily used to contain routines, i.e. instructions together with auxiliary fixed numbers etc. The magnetic transfers applied in the routine changing sequence will normally be to one or both of these pages.
Page 2 (columns :,S) contains most of PERM
Page 4 (columns ¼,D) is used as systematic working space, i.e. whenever it is required to store tables or other material systematically arranged it is recommended that this page be used.
Page 7 (columns C,K) is used as unsystematic working space, i.e. its content is largely unrelated long lines. It also includes a part of PERM viz. the part of the routine changing sequence concerned with false cues.
The uses of the other three pages if ever available is anticipated as follows
Page 3 (columns I,U) may be used either as a further part of PERM or as a more unsystematic or systematic working space or any combination of these. The lines used for the former applications should preferably be the earlier ones so that the systematic working space may consist of consecutive lines.
Page 5 (columns R,J) will be available as additional systematic working space.
Page 6 (columns N,F) will be available for systematic or unsystematic working space, the latter preferably being restricted to the later lines.
These decisions and suggestions have been influenced by the following considerations.
These suggestions are supported by the following conventions
It is intended that lines GK,MK,VK be used as special short form working space i.e. to contain quantities which are no longer of interest once the routine is finished. Lines MK and VK are in any case used in the routine changing sequence. It will be seen that the presence of these three lines and the part of PERM on page 7 makes this page useless for systematic working space. If further short term working space is required one may use those lines of pages 0,1 which contain instructions which will not be obeyed again before they are wiped out by a magnetic transfer. It should hardly ever be necessary to use any other part of the unsystematic working space as special working space [i.e., scratch space].
The normal uses of the pages are set out briefly again on Fig. G.
The conventions concerning the use of the B-tube are
It may be remarked that B7 is used in the routine changing sequence.
There are a number of different ways of using magnetic storage which are worth distinguishing.
There are a number of modes or styles in which the machine may be used, and each mode has its conventions restricting the operations considered admissible. The engineers for instance will consider the removal of a valve or the connection of two points temporarily with crocodile clips to be admissible, but would frown on certain uses of a hatchet. The removal of valves and all alterations of connections are certainly not permitted to the programmers and other users, and they have additional taboos of their own. There are in fact a number of modes of operation which might be distinguished, but only the formal mode will be mentioned here. This mode has rather stringent and definite conventions. The advantage of working in the formal mode is that the output recorded by the printer gives a complete description of what was done in any computation. A scrutiny of this record, together with certain other documents should tell one all that one wishes to know. In particular this record shows all the arbitrary choices made by the man in control of the machine, so that there is no question of trying to remember what was done at certain critical points.
The conventions involved in the formal mode are of two kinds, restrictions on the programming and punching of tapes, and restrictions on the actions of the man in control of the machine.
Restrictions on the actions of the man in control
The programmer issues instructions both to the machine and to the controller. The latter may be as complicated as the programmer considers advisable, but must of course be consistent with (a), (b) and (c). The complete programme is restricted by the further conditions:-
This ensures that the programmer, looking at the printed output afterwards, will be able to verify that his instructions were obeyed, always assuming that the machine made no mistake and that (a),(b) and (c) were not disregarded. The routine ACTION is constructed so as to make a printed record of every action of the controller, assuming he has obeyed (a),(b) and (c).
In general the programmer cannot be held responsible for the effects that may arise when his instructions are disregarded, any more than for those which are the result of errors in the machine. He will of course be well advised to have checks for both. The efficiency of his precautions will mainly affect his own work. To avoid it affecting the work of others it is advisable that title begin e.g. with the initials of the programmer, or with something identifying the job.
If the output were only on punched tape it would be quite difficult to
ensure that (i) was obeyed, since any combination of characters might
appear as part of the genuine output. For instance one might wish to
have the machine calculate to a certain number of places, the
number possibly being determined by the machine, and then to do
something else. One might have the machine indicate the end of the
digits of
by writing DIGITSOFPIENDHERE. But there is no
reason why this particular combination of digits should not be part of
the binary expansion of
, indeed it almost certainly does appear
somewhere, so that the appearance of this sequence of digits could not
be taken as conclusive evidence that the machine had completed as much
of the computation of
as it was proposing to do. Of course it
is vastly more probable that this is the case than that these
characters were obtained as part of the binary form of
. The
objections to making such assumptions are mainly aesthetic. It is
satisfactory to be in a position to regard the behaviour of the
machine as constituting the proof of some mathematical statement. It
is less repugnant to those with pure mathematical training to be
obliged to assume that the machine has made no mistake, than to have
to admit that even if no mistake was made the required result does not
quite follow. I personally, for instance, would prefer to have to
admit a probability
that the machine had made a mistake,
than to have to assume that a thousand consecutive zeros occur in the
first million digits of
.
The condition (i) can fortunately easily be met if the printer is available. It is for instance easy to take precautions that - can never occur except when printed in ACTION. This justifies one in assuming that the warning signals given in ACTION actually are produced by that routine and are not some counterfeits produced in another way.
It is essential for the possibility of programming at all that the properties of the machine should hardly ever be changed. There are however certain features of the machine which can reasonably be described as `disadvantageous'. It is desirable to leave open the possibility that these features might at some time be removed. This suggests the convention
We must also recognize the possibility of altering routines, whilst leaving their essential properties, except for speed, unaltered. It is desirable that such changes should not affect the validity of the programmers which use them as subroutines. This suggests
The time restriction is not one which one is tempted to violate, and indeed one which could only be violated by use of the clock. Statements about the time of the routine itself will of course depend on the time of the subroutine, and are excepted, but it is desirable to state the former as a function of the latter.