Category:SSEM

From Rosetta Code
Language
SSEM
This programming language may be used to instruct a computer to perform a task.
See Also:


Listed below are all of the tasks on Rosetta Code which have been solved using SSEM.
Your Help Needed
If you know SSEM, please write code for some of the tasks not implemented in SSEM.

The Manchester Small-Scale Experimental Machine (SSEM or "Manchester Baby"), constructed in 1948, was the world's first stored-program electronic computer. Although its storage space (32 words of 32 bits each) was too limited for it to be a really practical general-purpose machine, the SSEM is of considerable historical interest.

The machine could only be programmed in pure binary machine code from the front panel. No assembly language was ever specified for it, but there was a more or less standardized mnemonic notation used when drafting programs on a piece of paper before entering them into the machine.

Each storage address could hold either a signed 32-bit integer (using two's complement for negative values) or an instruction word. Unlike most later digital computers, the SSEM's binary notation has the least significant bit first: 1 is one, 01 is two, 001 is four, etc. In an instruction word, the leftmost five bits stored the address of the operand and bits 13-15 stored the instruction itself. The operand was always a storage address and never an immediate value, even in the case of jumps: the jump target needed to be stored in a separate word, to which the jump would refer. The instruction set consisted of:

000 <operand> to CIload the number stored at address operand into the Current Instruction register. CI would then be incremented, so this is equivalent to goto store[operand] + 1
100 Add <operand> to CIrelative jump ahead by one more than the number stored at operand (because CI is incremented anyway after the instruction has been executed)
010 -<operand> to cload the negation of the number stored at operand into the accumulator
110 c to <operand>store the number in the accumulator at address operand
001 Sub. <operand>subtract the number stored at operand from the number stored in the accumulator, leaving the result in the accumulator
101 Sub. <operand>identical to 001
011 Testskip the next instruction if the number in the accumulator is negative
111 Stophalt


Several emulators exist allowing SSEM code to be run on modern computers, including two browser-based implementations: David Sharp's Manchester Baby Simulator in Java and Edmund Griffiths's JsSSEM in JavaScript.