The SSEM Computer:
Small Scale Experimental Machine

The SSEM (aka: "the Baby") was a computer constructed at the University of Manchester to test the Williams-Kilburn Tube memory system in preparation for the construction of the Manchester Mark 1 computer.

On June 21, 1948 the SSEM became the first stored-program machine to run a program and so claimed it's niche in the history of computing.

Contents (this page): Sub-pages:


The SSEM was a minimal machine, providing only enough functionality to support it's purpose of testing the memory system.

The SSEM had 32 words of 32 bits of main memory (the Store), a single 32-bit Accumulator, a program counter (Current Instruction), and an instruction register (Present Instruction). The Store, Accumulator and CI/PI registers were implemented in three Williams-Kilburn Tube memories.

The SSEM was a bit-serial machine, with two single-bit serial adders, one for data arithmetic and one for program counter arithmetic.

Input was performed bit by bit with switches and pushbuttons. Output was presented on a fourth CRT which monitored the Williams-Kilburn tube memories.

Figure 1: Architecture of the SSEM

Instruction Set

The SSEM implemented only seven instructions. It didn't even have an add instruction - one had to use a load negative followed by a subtract to obtain addition. The instruction format was laid out so it could expand as the SSEM grew to become the Manchester Mark 1.

A memory location was referred to as a 'line' because it occupied one line on the CRT raster. Note that because the scanning of the memory tubes was from left to right, and in bit-serial machines one deals with low-order bits first, all displays on the SSEM and documentation present the lowest order bit on the left.

In contrast to modern machines, the SSEM performed an increment/fetch/execute cycle rather than fetch/increment/execute. Consequently, the target values for JMP instructions must be one less than the actual target line (address) of the jump and programs typically begin in line 1 as line 0 will be skipped when the program starts with CI at 0.

All instructions except Skip Negative and Halt use the L operand. Unused bits in an instruction are ignored during instruction decoding.

Arithmetic is two's complement.

Some symbol definitions:

SSEM Instruction Format
Bit: 0001020304050607 0809101112131415 1617181920212223 2425262728293031
Use: LLLLL   FFF  
Value: 2^0 2^31

SSEM Instruction Set
Function Code Modern
Action Description
Decimal Binary
0 000 JMP S(L) --> CI Jump Indirect. Jump to one after the contents of the specified Store line.
1 100 JPR CI + S(L) --> CI Jump Relative. Add contents of specified Store line to CI.
2 010 LDN -S(L) --> A Load Negative. Load the Accumulator with the negative of the contents of the specified Store line.
3 110 STO A --> S(L) Store. Copy contents of the Accumulator to the specified Store line.
4 001 SUB A - S(L) --> A Subtract. Subtract contents of specified Store line from Accumulator.
6 011 SKN if A<0 then CI+1-->CI Skip if Negative. Skip next instruction if contents of Accumulator is negative.
7 111 HLT   Halt. Stop instruction execution. The Stop neon will light.

References and Links

For more information about the SSEM and the Manchester Mark 1 direct from the source:

Much of the information used to create the simulation was obtained from the article:

  Programs | Simulation