35 lines
No EOL
2.7 KiB
Text
35 lines
No EOL
2.7 KiB
Text
{{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 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:
|
|
<table border=1>
|
|
<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 one more than the number stored at <tt>operand</tt> (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. |