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