The original hypercubes described in Chapter 20, the Cosmic
Cube [Seitz:85a], and Mark II
[Tuazon:85a] machines, had been designed and built as exploratory
devices. We expected to be able to do useful physics and, in particular, were
interested in high-energy physics. At that time, we were merely trying to
extract exciting physics from an untried technology. These first machines
came equipped with ``64-bit FIFOs,'' meaning that at a software level, two
basic communication routines were available:
rdELT(packet, chan)
wtELT(packet, chan).
The latter pushed a 64-bit ``packet'' into the indicated hypercube channel, which was then extracted with the rdELT function. If the read happened before the write, the program in the reading node stopped and waited for the data to show up. If the writing node sent its data before the reading node was ready, it similarly waited for the reader.
To make contact with the world outside the hypercube cabinet, a node had
to be able to communicate with a ``host'' computer. Again, the FIFOs
came into play with two additional calls:
rdIH(packet)
wtIH(packet),
which allowed node 0 to communicate with the host.
This rigidly defined behavior, executed on a hypercubic lattice of nodes, resembled a crystal, so we called it the Crystalline Operating System (CrOS). Obviously, an operating system with only four system calls is quite far removed from most people's concept of the breed. Nevertheless, they were the only system calls available and the name stuck.