Computer Technology Limited
Founder Iann Barron had worked for Elliott Computing but left to form CTL when he couldn't persuade Elliott to incorporate his ideas in their next generation of computers. He left in 1973, going on to form Inmos and develop the transputer.
The first CTL computer (the Modular One) appeared for sale in 1968.
The Modular One
The Modular One was a 16-bit computer built with Emitter Coupled Logic (ECL) and was competitive with other first generation minicomputers. A key feature, from which it derived its name, was that it was composed of separate processor, memory and peripheral modules sharing a common interface and physical form factor, so allowing them to be put together in any combination, housed one or two high in modular racking. Standard modules were roughly 50cm wide and deep, 70cm tall, and complete with power supply, typically weighed in excess of 25kg. Modules were interconnected using a single type of interface, comprising two identical cards to be plugged into two modules to be connected, these cards themselves linked by a flat ribbon cable either one or two metres long. Thus, memory was just another peripheral (such as a printer) but was both input and output. Every interaction over these interfaces comprised a 3-way handshake, which in the case of a processor accessing a memory module, consisted of send address, receive data, and send new data, a scheme well suited to the destructive read followed by rewrite required by magnetic-core memory of the time. These three phases were mediated by voltage edges rather than pulses, as this was thought to be faster. Furthermore, the input and output impedances of Emitter Coupled Logic were comparable to the characteristic impedance of ribbon cable. This, together with the small voltage swings between the "0" and "1" states made for low noise, reflection-free communication.
Processors naturally had a number of interface slots bussed together, allowing connection to memory and peripheral modules as required. Memory modules had several, allowing them to be accessed by more than one processor as well as by disc controllers for DMA. Disc controllers could be connected to two processors as well as memory modules. All modules had a "1.x" type designation, for example, the original processor module was 1.11, memory modules were 1.2x, character peripherals were 1.3x, discs were 1.4x and magnetic tape devices were 1.5x. The standard interface was designated 1.01.
The various building blocks could be assembled and configured to produce a fault-tolerant computer system.
Distinctive features of the processor were memory-mapped I/O and an early version of segmented memory (similar to the later Intel 8086 but having both base and limit). The processor had 3 segment registers referred to as X, Y and Z. The X segment was read/execute only and used to map code segments (corresponding to CS in the x86 architecture). It was not possible to execute code in the Y and Z segments, which were used for data (roughly corresponding to DS and ES in x86). There were 8 addressing modes allowing access to data mapped by the segment registers in various ways.
The memory segmentation, together with two execution states (Normal State and non-interruptible privileged Special State) made possible the implementation of a self-protecting operating system kernel (known as the Executive, or Exec). Such ideas were popular in British computer academia at the time and later were adopted by some US designs such as the Intel 8086. Furthermore, the power system was set up as a peripheral with interrupt capabilities that gave the machine the ability to power down gracefully in an emergency.
The Modular One was comparatively expensive. It was somewhat exotic in that its modular design resulted in almost every system delivered being somewhat different, which created a high maintenance burden. It never sold widely outside of the UK, and even in the UK it was surpassed in sales by DEC and Data General before the end of the 1970s. Over the mid '70s to mid '80s the systems were cost reduced with TTL bitslice technology and 8-bit microprocessor communications controllers, retreating from the radical modular design, but it never gained a significant market share.
The Exec was known as E4. (E1, E2 and E3 were much simpler execs used only in the first few years of the company). E4 was a multitasking kernel, using Dijkstra semaphores to protect internal data structures from conflicts. It was based on an early version of object-oriented principles, though lacking most of what are now considered essential features of the paradigm, such as inheritance. Objects included Activities (now more commonly known as tasks or processes), Segments (of memory), Files, Semaphores and Clocks. Another object type, the Sphere, was a run-time protection domain within which all other object types (including other Spheres) existed. Objects could be created in arbitrary quantities, and were each referenced through a Run Time Name, or RTN. Since an object could be referenced by several RTNs belonging to different spheres, they could easily be shared between programs, and were deleted only when the object's reference count of RTNs fell to zero. Linked lists were used very extensively within E4 to manage data structures, in fact the RTN list was about the only linear list there was. (The system generation process included a phase prosaically called "knitting" comprising a combination of macro expansion and procedural elements, by which the initial data structures were dynamically "knitted" together to create an input file for the assembler.)
The ease with which multiple processor, store and peripheral modules could be built into a system, plus the need to extend the upper capability limits, prompted the development of a dual processor variant of E4. This was built entirely from standard modules except for a small synchronisation board which prevented both processors operating simultaneously in special state, and a very minor modification to one of the processors' interface to store zero, allowing each processor to address a small dedicated memory area for processor-specific variables such as the current activity. However, the results were somewhat disappointing as E4 naturally spent a significant proportion of its time in special state even though efforts had always made to limit special state routines to 100uS at a time. Even running processor-bound user programs, the performance achieved was only of the order of 150% of that of a single processor, and no dual processor E4 systems were ever sold.
There was some similarity to Unix in the use of (mainly) device-independent serial byte oriented streams in the file system and interprocess communication, in contrast to the record-oriented file systems then dominant in commercial data processing. E4 also supported real-time priorities and virtual memory at the Segment level. It was a relatively elegant OS for its time but was never ported to other hardware, having been written entirely in assembler. (Appropriate and effective high-level language implementations were not readily available at the time.)
During the mid '80s, the company realised that the future lay in open systems and attempted to make the transition to Unix with re-badged systems from Motorola and Sequoia. However, sales of the proprietary systems fell off before the new systems could be ramped up to replace them and the company was taken over by ACT in January 1990