Ferranti Mark 1
The world's first commercially available general-purpose electronic computer was the English machine Ferranti Mark 1, launched in February 1951. It was based on the previous computers Small Scale Experimental Machine and Manchester Mark 1 of Frederic Williams and Tom Kilburn.
Only two months after the successful test run of the Small Scale Experimental Machine (aka the Baby) in June 1948, a full-scale version was under way and Ferranti was investigating commercial production, although the progress to commercial production was far from certain because of the financial risks. The first machine was delivered to the University of Manchester on 12 February 1951. Later seven updated versions were sold.
The memory of Mark 1 was based on a 20-bit word stored as a line of dots of electric charges settled on the surface of a Williams–Kilburn tube (a cathode ray tube used as a computer memory to electronically store binary data), each tube storing 64 words (lines of dots). Instructions were stored in a single word, while numbers were stored in two words (40 bits). The main (primary) memory consisted of eight tubes, each storing one such page of 64 words, thus the total main memory was 512 words.
Other Williams tubes stored the single main 80-bit accumulator (A), the 40-bit multiplicand/quotient register (MQ) and eight 20-bit B-lines, or index registers, used to modify instructions. The accumulator could also be addressed as two 40-bit words. An extra 20-bit word per tube stored an offset value into the secondary storage. Secondary storage (an extra 20-bit word per tube) was provided in the form of a 512-page magnetic drum, storing two pages per track, with about 30 milliseconds revolution time.
The instructions (about fifty in total) had an address and an operator part and used a single address format in which operands were modified and left in the accumulator. Writing of programs was based on a numerical system to the base 32 (a five-bit value). Integer numbers were usually treated as 40-bit double words, negative numbers were represented as two's complement.
The digit frequency is 100 KHz, giving a 10 microsecond digit-period. The drum is synchronized to the processor's clock, allowing more than one drum to be added if required. 24 digit-periods (240 microseconds) are known as a beat.
The basic cycle time (needed for arithmetical and logical instructions) was 1.2 milliseconds (5 x 240 microseconds beats), a multiplication could be completed in about 2.16 milliseconds (9 beats), while most other instructions took 4 beats (0.96 ms). The multiplier used almost a quarter of the machine's 4050 vacuum tubes. Several instructions were included to copy a word of memory from one of the Williams tubes to a paper tape machine, or read them back in.
Ferranti Mark 1 had to be programmed by entering alphanumeric characters representing the base 32 (a five-bit) value that could be represented on the paper tape input. The engineers decided to use the simplest mapping between the paper holes and the binary digits they represented, but the mapping between the holes and the physical keyboard was never meant to be a binary mapping.
Ferranti Mark 1 contained approximately 1600 pentodes and 2000 thermionic diodes. The main CPU is contained in two bays, each 5 metres long by 2.7 metres high and consumed 25kW of power.
The normal input/output equipment for the Ferranti Mark I consisted of paper tape readers operating at 200 characters/second, paper tape punches operating at 15 characters/second, and a teleprinter printing at six characters/second.
The Mark I's console
The Mark I's console (see the above image) has two large and four small display tubes.
The two large tubes at the bottom show two pages of the main memory.
The actual processing was done on four smaller tubes, and which were labelled with the first four letters of the alphabet. A, the accumulator, contained the results of the arithmetical and logical operations and also temporarily stored data for the transmission from one line of the page to another. In the C tube (C for control) was the current instruction and its address. The content of auxiliary store B could be added to the current command and thus could modify it before it was carried out. D contained the multiplier in appropriate calculations.