Context : Ferranti Mark 1 Handbook
The Ferranti Mark 1*
Note that the following information is based
on a Handbook produced
for the Armament Research Establishment at Fort Halstead, Kent by
K.N. Dodd, and on the two documents from
The National Archive for
the History of Computing :
C12 "A Radix 32 Input and Organisation Scheme for Ferranti MK.I* Digital
Computers", typescript, 1954.
C13a "Instructions in the Radix 32 Code", typescript, pp.20, 1954.
The information is not consistent, and I have not (yet) established
how definitive the information I have given here is.
The Ferranti Mark 1 order code was completely overhauled after the first
two machines sold in public (to the Universities of Manchester and Toronto). The
revised machine was called the Ferranti Mark 1*. A much
smaller order code was provided, and other
relatively minor changes made, to produce an instruction set and programming
conventions that eliminated most of the idiosyncracies and irritations of
the Mark 1.
The changes to the order code and basic programming conventions can be
summarised as follows :
- Number conventions
The Base-32 symbol codes,
on which the notation for writing machine code was based, were changed to
a more easily remembered set, i.e. from
/E@A:SIU½DRJNFCKTZLWHYPQOBG"MXV£ to
ø£½0@:$ABCDEFGHIJKLMNPQRSTUVWXYZ
(though e.g. 0123456789ABCDEFGHJKLMNPQRSTUVWX might have been even
better?). Note that the letter O was left out, presumably because number
0 was included. The new set matched the codes for the teleprinters used for
the Mark 1*s (or more likely, the teleprinters for use with the Mark 1*s
were expected to match this code set).
-
Binary numbers and base-32 numbers were now written with least
significant digit to the right, to fall into line with the rest
of the world!
-
With a reduced instruction code, it was now possible to represent
an instruction by a single base-32 code. This was held in the most
significant 5 bits of the 20-bit instruction. The second m.s. 5 bits
now only held the B-register (with the 3rd and 4th holding the 10-bit
address). This eliminated the
irritation in the Mark 1 of the 2nd
m.s. 5 bits containing one bit of the instruction code as well as the
B-register.
- Arithmetic
The standard 40-bit number for arithmetic work still occupied two
consecutive addressable 20-bit lines in store (which could start on an
odd address as well as an even). But the order code no longer provided
formal facilities for interpreting a 40-bit number in each of the four
modes : signed/unsigned and integer/fraction-of-1.
Arithmetic assumed that all numbers were
between 1 and minus 1 (with the sign bit at the most significant end,
and the implied decimal point after the 2nd m.s. bit).
The set of arithmetic operations provided
was dramatically reduced, in particular removing a number of instructions
provided originally on the Manchester Mark 1 to facilitate multi-length
arithmetic.
With the downgrading of the multi-length
influence, the only case where it matters how the hardware is
interpreting a 40-bit operation is in the detail of the multiply
operation. Otherwise the hardware will give the correct answer for any
pair of numbers with consistent position of the decimal point.
- The obvious deficiency in shift operations was addressed by adding a
(arithmetic) shift up or down on the accumulator. But the logical
operations were reduced by removing the OR, presumably as part of the
process of reducing the order code to < 32 instructions. (Of course OR
can be synthesized from AND and NOTEQUIV.)
- B-lines
The usefulness of the B-lines was increased by adding a B=B+S as well
as the B=B-S. Also the sign bit of the last B-line referred to in a
B-operation was remembered as a hardware bit Q; this could then
be tested. (This of course was particularly useful e.g. where a B-line
was being used in a loop both as an index and to count down the
elements of a vector.)
The subtle distinction between ordinary and
"B-exceptional" instructions was removed;
the four B instructions were always unmodified.
- Control
The control jump instructions were much simplified by providing (only)
jumps to direct addresses, contained in the instruction code itself. And
the address required was that of the instruction you were
jumping to, not the one before. This eliminated a lot of the
obscure programming that could be
found on the Mark 1! The direct jump introduced the concept
of a "literal" for the first time in the Manchester machines (used also
in the shift). Of course, with the introduction of the B-line and
instruction modification, the less common indirect jump could be easily
achieved using modification, by loading the address in a B-line first.
(Replacing the relative jump instructions would be less
straightforward, but maybe they were deemed a luxury given the
well-established programming convention of using page 0 and page 1 of
store to load routines from the drum. Also see
8 below.)
- An additional control jump was provided to jump on the sign of the
last B-operation.
An instruction was added to set the address of the
current instruction in a store line.
Dodd describes this as "of little
use", but it was clearly designed for use in a subroutine cue, and
possibly to facilitate relative jumps. (A neat solution to achieve
relocatability for a routine would be to start the routine by storing
the address of the start of the routine in a B-line, and using it to
modify each local jump.)
- Input/Output
The input/output machinery was removed from the special
"magnetic" instruction, where on the
Mark 1 the set of peripheral operations, i.e. input/output
and drum transfers, were placed in a single instruction in the main order
code; this gave the address of a store word containing the detailed
coding. The operation of reading the next character from paper tape,
and writing the next character, were separate instructions
in the main order code. In addition :
- An extra page was added to the store which was write-only, and
dedicated to use with a high-speed printer (this is described only by
Dodd). It could be filled with
character codes (appropriate to the printer), one character per 20-bit
line, and then a special instruction would print the 64 codes in the
page as the next line on the high-speed printer.
HOME PAGE
Copyright The University of Manchester 2003, 2004