70's computers
Paul Koning
paulkoning at comcast.net
Wed Oct 24 07:46:52 CDT 2018
> On Oct 24, 2018, at 6:50 AM, Noel Chiappa via cctalk <cctalk at classiccmp.org> wrote:
>
>> From: Paul Koning
>
>
>> Some years ago I learned the architecture of the Dutch Electrologica X1
>> and X8 machines. ... they gain a lot of efficiency by allowing almost
>> all instructions to optionally set a condition flag, and almost all
>> instructions to be executed conditionally on that flag. So a lot of
>> code full of branches becomes much shorter. ... For example:
>>
>> if (x >= 0) { foo (); x += 2; }
>> else x -= 3;
>>
>> translates to just 5 instructions:
>
> Very clever!
>
> What's the word length on that machine, BTW? I ask because it would be hard
> to pull that trick on most short-word-length machines, there just isn't a
> spare bit or two in the instruction to add that.
27 bits, one's complement. The opcode layout is 6 bits for operation, 2 for addressing mode, 2 for controlling conditional execution, 2 for specifying whether/how to set the condition flag, and 15 bits for address or immediate operand. There's a short description in Wikipedia (both the EL-X1 and the EL-X8). The two share the same basic instruction set, the X8 adds float and has a different I/O system with a coprocessor (CHARON). The X1 has what may be history's strangest addressing mode ("C" mode).
One handy thing you could do with this is have instructions that are both conditionally executed and condition-setting, which lets you do Boolean operations without explicit AND or OR instruction use. For example, if you wanted to know if X is zero and Y is >= 0, you could write:
A=x, Z
Y, A=y, P
and end up with the condition flag set to "yes" if that composite condition is true. (If you needed OR rather than AND, the Y would simply become N in the second line.)
For a pretty detailed description of the X1, see Dijkstra's Ph.D. thesis, which is online in the U. Texas EWD archive. The X1, incidentally, was as far as I can determine the first commercial computer with interrupts standard. (TX-0 did interrupts slightly earlier and IBM offered interrupts as an option at about the same time as the X1, I believe.) Also, X1 had what you might call a BIOS, in ROM. Core ROM, that is -- different from "core rope" and somewhat more efficient.
paul
More information about the cctalk
mailing list