Category:SSEM: Difference between revisions
Content added Content deleted
(Manchester Small-Scale Experimental Machine) |
(Added some more information; no longer a stub) |
||
Line 1: | Line 1: | ||
{{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. |