> On Oct 24, 2018, at 6:50 AM, Noel Chiappa via cctalk <cctalk@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


Reply via email to