Category:SSEM: Difference between revisions

From Rosetta Code
Content added Content deleted
(Manchester Small-Scale Experimental Machine)
 
(Added some more information; no longer a stub)
Line 1: Line 1:
{{stub}}{{language|SSEM}}
{{language|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 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.
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 word could store 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 the case of instructions, 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:
<table>
<tr>
<td><tt>000 <operand> to CI</tt></td><td>load the number stored at address <tt>operand</tt> into the Current Instruction register. CI would then be incremented, so this is equivalent to <tt>goto store[operand] + 1</tt></td>
</tr>
<tr>
<td><tt>100 Add <operand> to CI</tt></td><td>relative jump ahead by the number stored at <tt>operand</tt> + 1 (because CI is incremented anyway after the instruction has been executed)</td>
</tr>
<tr>
<td><tt>010 -<operand> to c</tt></td><td>load <i>the negation of</i> the number stored at <tt>operand</tt> into the accumulator</td>
</tr>
<tr>
<td><tt>110 c to <operand></tt></td><td>store the number in the accumulator at address <tt>operand</tt></td>
</tr>
<tr>
<td><tt>001 Sub. <operand></tt></td><td>subtract the number stored at <tt>operand</tt> from the number stored in the accumulator, leaving the result in the accumulator</td>
</tr>
<tr>
<td><tt>101 Sub. <operand></tt></td><td>identical to <tt>001</tt></td>
</tr>
<tr>
<td><tt>011 Test</tt></td><td>skip the next instruction if the number in the accumulator is negative</td>
</tr>
<tr>
<td><tt>111 Stop</tt></td><td>halt</td>
</tr>
</table>



Several emulators exist allowing SSEM code to be run on modern computers, including two browser-based implementations: David Sharp's [http://www.davidsharp.com/baby/ Manchester Baby Simulator] in Java and Edmund Griffiths's [http://www.edmundgriffiths.com/jsssem.html JsSSEM] in JavaScript.
Several emulators exist allowing SSEM code to be run on modern computers, including two browser-based implementations: David Sharp's [http://www.davidsharp.com/baby/ Manchester Baby Simulator] in Java and Edmund Griffiths's [http://www.edmundgriffiths.com/jsssem.html JsSSEM] in JavaScript.

Revision as of 10:03, 3 October 2016

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.

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 word could store 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 the case of instructions, 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 the number stored at operand + 1 (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.