LINC-8
LINC-8 was the name of a minicomputer manufactured by Digital Equipment Corporation between 1966 and 1969. It combined a LINC computer with a PDP-8 in one cabinet, thus being able to run programs written for either of the two architectures.
Architecture
The LINC-8 contained one PDP-8 CPU and one LINC CPU, partially emulated by the PDP-8. At any one time, the computer was in either 'LINC mode' or 'PDP-8 mode' - both processors could not run in parallel. Instructions were provided to switch between modes. In the LINC-8, all interrupts were handled by the PDP-8 CPU, and programs that relied on the interrupt architecture of the LINC could not be run.
The LINC was a 12 bit ones' complement accumulator machine, whereas the PDP-8, while also a 12 bit accumulator machine, operated in two's complement arithmetic.
Memory addressing on the two architectures was also different. On the LINC, the full address space was divided into 1024-word segments, two of which were selected for use at any one time: the instruction field and the data field. Direct access of data in the instruction field was possible using 10 bit addresses. The data field could only be indirectly addressed. The Instruction field and Data field are theoretically capable of being chosen from up to 32 areas of 1K 12-bit words each as the maximum architecture is 32K total words. As a practical matter, few LINC-8 systems ever were expanded to 8K total. Memory expansion is accomplished first by adding PDP-8 memory extension hardware and extended memory instructions and a few minor LINC processor modifications to address the memory beyond the basic 4K total. Once this is accomplished, 4K memory "wings" can be added in a daisy-chained buss arrangement, which in theory could be expanded out as many as 7 times to implement the entire 32K. As a practical matter, it is always difficult to implement on the "regular" PDP-8, and, in the case of the LINC-8, it became necessary to slow down the CPU slightly just to add on the first additional 4K.
Thus, as a practical matter, LINC-8 memory segments are limited to segment 0-3, or perhaps 0-7 on the few 8K implementations. However, basic 4K machines cannot address beyond 0-3 while extended memory models could attempt to address segments 0-37 octal even if non-existent memory.
By convention, the segment 0 area is not available for normal fully emulated LINC operations. This is because the PDP-8 program usually known as PROGOFOP is loaded there to handle all interrupts, traps, etc. It is possible to write a program for a "partial" LINC CPU, meaning using only the hardware that actually exists. Whenever an operation is performed that it cannot handle, the PDP-8 operation resumes. However, the LINC operation could have been terminated for a variety of reasons. As such, it is always recommended that PROGOFOP be loaded when attempting to use "complete" LINC programs on this system.
Many operating systems were written for this machine; some were essentially slightly modified versions designed for the original LINC CPU it is partially based on. Bootup conventions allowed an image of a custom version of PROGOFOP to first be loaded, followed by executing tape instructions to load the LINC-based operating system. In some cases, the bootup procedure was accomplished manually right on the LINC console switches; later systems self-started the system after loading PROGOFOP.
Other operating systems are actually more generic and are designed to mostly ignore the LINC side of things. These are PDP-8-only systems, although perhaps custom configured for the vagaries of the specifics of a LINC-8. In some cases, this means that they cannot be run on any other machine; in other cases, the LINC-8 merely represented a normal variation of drivers off of an otherwise non-descript PDP-8 system. An advantage of a PDP-8-based system is that PROGOFOP is superfluous here. If needed, the PDP-8 system could load PROGOFOP as well as a user program primarily LINC-oriented to get at the laboratory peripherals. The LINC convention of the entire first 1K being unavailable reserved for PROGOFOP is exchanged for the far smaller PDP-8 convention of reserving only 07600-07777 or the last 128-word page of the first 4K of the machine. This corresponds to a small reserved area at the end of LINC segment 3 in exchange for much greater overall flexibility.
The PDP-8 divided its memory into 128-word pages. An instruction could reference the current page, that being the page where the instruction itself was located, or page 0, the 128 words of memory at addresses 0-127. Indirect addressing could be used to produce 12 bit addresses. If more than 4K memory is implemented, the indirect addressing is extended to include the Data Field, thus it is possible to access any location indirectly in 32K maximum. Again, hardware limitations of the LINC-8 make it hard to achieve a total size of more than 8K total. Also implemented is the Instruction Field, making it possible to load larger programs into the same addressing space the Data Field controls. Transfer of control can be either direct or indirect as required. The new address is determined by first setting the new Instruction Field value, and then executing a JMP or JMS instruction into the new field's corresponding 12-bit address, thus effecting a 15-bit address overall.
The computer included a number of LINC peripherals, which were controlled by special LINC mode instructions. These devices included analog inputs in the forms of knobs and jacks, relays for control of external equipment, LINCtape drives (the predecessor of the DECtape), an oscilloscope-like cathode ray tube under program control, as well as a Teletype Model 33 ASR. Actually, the CRT is a specially modified unit based on a standard Tektronix oscilloscope modified to only be driven by D-A converters and an intensifier interface; there are no sweep circuits as found in conventional oscilloscopes. Most of the modifications involve custom highly stripped down plug in modules, which also house the actual knobs hooked to the lowest A-D channels. Arguably, this is the precursor to the modern mouse interface; some software utilized knob twirling in a manner that would later suggest the two-dimensional form of a mouse; these are knobs controlling only one parameter at a time, etc.
Some of these peripherals are simulated and are actually peripherals of the PDP-8. Any unimplemented operation stops the LINC CPU and interrupts the PDP-8 processor to handle the specifics. Most notably, the LINCtape is actually a PDP-8 peripheral; the tape class of LINC instructions are trapped and interrupt the PDP-8 which then emulates how a real LINC or PDP-12 would carry out the specifics of the latest tape instruction. Pressing a variety of keys on the seemingly present LINC console all cause PDP-8 interrupts; PROGOFOP is designed to emulate the functions as they would appear on the original LINC.
An interesting feature is the FETCH/EXEC stop, which is implemented in all hardware in the LINC and PDP-12. The hardware, when enabled, continuously monitors instruction execution until specific conditions are met. This will cause a PDP-8 interrupt stalling the LINC program. Simulated console operations can be used to examine memory or make other changes, such as pressing the simulated DO key. The DO key executes any one instruction on the left switch register while the right switch register may have to also be set in the case of double word instructions such as most of the tape class. Booting certain operating systems consists of executing a tape read instruction directly from both sets of switches pressing the simulated DO key followed by pressing the simulated START 20 switch. In essence, the LINC-8 implements all of the functions of the console panel of the "real" LINC, then uses the PDP-8 to simulate most of them.
Purpose
The LINC-8 was built as a laboratory computer. It was small enough to fit in a laboratory environment, provided modest computing power at a low price, and included hardware capabilities necessary to monitor and control experiments.
The LINCtape magnetic tape drive, designed by Wesley A. Clark for the LINC, was suitable for handling in a laboratory environment, and the tapes could be carelessly pocketed, dropped, or even pierced and cut without losing the data stored on them.
Current status
In 1969, DEC improved upon the LINC-8 with the PDP-12, a similar combination computer for lab use, and the LINC-8 was cancelled. Few LINC-8 computers were ever built, numbering only in the low hundreds, and so the model is a rare sight today.
As of 2008, a project to emulate the LINC-8 on modern hardware is underway within the Update computer society at Uppsala University.