Category:SSEM: Difference between revisions

Added some more information; no longer a stub
(Manchester Small-Scale Experimental Machine)
 
(Added some more information; no longer a stub)
Line 1:
{{stub}}{{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 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.
519

edits