LINC
The LINC is a 12-bit, 2048-word transistorized computer. The LINC is considered by some the first minicomputer and a forerunner to the personal computer. Originally named the "Linc", suggesting the project's origins at MIT's Lincoln Laboratory, it was renamed LINC after the project moved from the Lincoln Laboratory. The LINC was designed by Wesley A. Clark and Charles Molnar.
The LINC and other "MIT Group" machines were designed at MIT and eventually built by Digital Equipment Corporation and Spear Inc. of Waltham, Massachusetts. The LINC sold for more than $40,000 at the time. A typical configuration included an enclosed 6'X20" rack; four boxes holding two tape drives, display scope and input knobs, control console and data terminal interface; and a keyboard.
The LINC interfaced well with laboratory experiments. Analog inputs and outputs were part of the basic design. It was designed in 1962 by Charles Molnar and Wesley Clark at Lincoln Laboratory, Massachusetts, for NIH researchers. The LINC's design was literally in the public domain, perhaps making it unique in the history of computers. A dozen LINC computers were assembled by their eventual biomedical researchers in a 1963 summer workshop at MIT. Digital Equipment Corporation and Spear Inc. of Waltham, MA. manufactured them commercially.
DEC's pioneer C. Gordon Bell states that the LINC project began in 1961, with first delivery in March 1962, and the machine was not formally withdrawn until December 1969. A total of 50 were built, most at Lincoln Labs, housing the desktop instruments in four wooden racks. The first LINC included two oscilloscope displays. Twenty-one were sold by DEC at $43,600, delivered in the Production Model design. In these, the tall cabinet sitting behind a white Formica-covered table held two somewhat smaller metal boxes holding the same instrumentation, a Tektronix display oscilloscope over the "front panel" on the user's left, a bay for interfaces over two LINC-Tape drives on the user's right, and a chunky keyboard between them. The standard program development software was designed by Mary Allen Wilkes; the last version was named LAP6.
Architecture
The LINC had 2048 12-bit words of memory in two sections. Only the first 1024 words were usable for program execution. The second section of memory could only be used for data.Programs could use a 12-bit accumulator and a one-bit link register. The first sixteen locations in program memory had special functions. Location 0 supported the single-level of subroutine call, automatically being updated with a return address on every jump instruction. The next fifteen locations could used as index registers by one of the addressing modes. A programmable, six-bit relay register was intended for use by external instruments.
A later modification to the LINC added a 12-bit Z register to facilitate extended precision arithmetic, and an interrupt was provided forcing execution to location 21.
Alphanumeric input/output devices included a dedicated keyboard, and the ability to display text on the attached bit-mapped CRT. A teleprinter could be connected for printed output.
Arithmetic was ones' complement, which meant that there were representations for "plus zero" and "minus zero".
The original LINC required 8 microseconds for each instruction.
Instruction set
The natural notation used for the LINC was octal. In this section, all numbers are given as base ten unless identified as octal. The LINC instruction set was designed for ease of use with scientific instruments or custom experimental apparatus.- Miscellaneous class, no address - Halt, clear accumulator, enable tape mark write gate, transfer accumulator to relay register, read relay register to accumulator, no operation, complement accumulator
- Shift class, no address - rotate left, rotate right, scale right,
- Full address class, two word instructions. immediate address given in second 12-bit word of the opcode - add, store and clear accumulator, jump. Only the first 1024 words of memory can be accessed.
- Skip class, skips the next instruction, can test for set or clear condition. Conditions are: external logic line, key struck, one of five sense switches, accumulator positive, link bit zero, or active tape unit in an interblock zone. Later models added skip on bit 0 of the Z register, skip on overflow, and skip on interrupt paused.
- Index class - these instructions could either have a second word that was the immediate operand, or that specified the operand address, or that specified one of the registers 01 through 15 as holding the address of the operand. The address was incremented. These instructions included load or add to accumulator, add accumulator to memory, add accumulator with carry to memory, multiply, skip if equal, skip and rotate, bit clear, bit set, and bit complement. Another instruction in this group was to display a bit map, to represent a character or other data, on the built-in CRT display screen.
- Half-word class - instructions operating on the lower or upper six bits of a word. These included load half, store half, skip if halves are different,
- Set - moves data from any memory location to one of the locations 1 through 15.
- Sample - reads one of the sixteen 8-bit analog to digital converters and places the signed value in the accumulator. The first eight A/D channels were dedicated to control panel knobs to allow interaction with a running program by the user. The instruction could either hold the computer till a conversion result was ready, or allow more instructions to be executed provided they didn't rely on the contents of the accumulator, which would be overwritten by the A/D conversion value.
- Display - draws a pixel on one of the CRT displays at a specified location, optionally indexing a register.
- Index and skip - adds one to one of the memory locations 1 through 15, and skips if a 10-bit overflow occurs.
- Operate class, used for input/output operations. These included set a bit on one of 14 output lines, read the keyboard, or read the left or right switch bank.
- Tape class, with opcodes to position the tape, read or write to the tape, and to check the tape against memory.
Control panel
LINCtape
A noteworthy feature of the LINC was the LINCtape. It was a fundamental part of the machine design, not an optional peripheral, and the machine's OS relied on it. The LINCtape can be compared to a linear diskette with a slow seek time. The magnetic tape drives on large machines of the day stored large quantities of data, took minutes to spool from end to end, but could not reliably update blocks of data in place. In contrast, the LINCtape was a small, nimble device which stored about 400K, had a fixed formatting track allowing data to be repeatedly read and re-written to the same locations, and took less than a minute to spool from one end to the other. The tape was formatted in fixed-sized blocks, and was used to hold a directory and file system. A single hardware instruction could seek and then read or write multiple tape blocks all in one operation.Filenames were six characters long. The file system allowed for two files—a source file and an executable binary file to be stored under the same name. In effect it was a 6.1 filename in which the extension was restricted to "S" or "B". Since the basic LINC had only 1024 12-bit words of core memory --and the big, expanded LINC had only 2048—normal operations depended heavily on swapping to and from LINCtape..
LINCtape is also remembered for its reliability, which was higher than that of the diskettes which supplanted it. LINCtape incorporated a very simple form of redundancy—all data was duplicated in two locations across the tape. LINC users demonstrated this by punching holes in a tape with an ordinary office paper punch. Tape damaged in this way was perfectly readable. The formatting track made operation almost independent of tape speed, which was, in fact, quite variable. There was no capstan; the motion of the tape during reading and writing was directly controlled by the reel motors. There was no fast forward or rewind—reading and writing was performed at fast forward and rewind speeds. In some modes of operation, the data transfers were audible over the built-in loudspeaker and produced a very characteristic series of harsh bird-like squawks with varying pitch.
Keyboard
The LINC keyboard, manufactured by company named Soroban Engineering, had a unique locking solenoid. The internal mechanism of each key had a slot that worked with a set of bars to encode the character and another slot that caught a locking bar, which locked all the keys in one mechanical movement of the locking solenoid.When the user pressed a key, the pressed key was locked in its down position, and all the other keys were locked in the up position. When the running program read the keyboard, the lock was released, and the pressed key would pop back up. This could have the effect of slowing down typing and preventing even 2-key rollover. This exotic keyboard was abandoned in favor of Teletype keyboards, such as the Model 35 KSR and Model 37 KSR, in the LINC-8 and PDP-12 follow-on computers.
Knobs
The LINC included a set of eight three-turn potentiometers that could be each be read by a computer instruction. The dial box was a convenient user input device at a time before general adoption of the mouse. For example, one knob could control the scaling of a displayed graph, and another might be used as a cursor to display the actual data value at a point.Text display
The LINC hardware allowed a 12-bit word to be rapidly and automatically displayed on the screen as a 4-wide by 6-high matrix of pixels, making it possible to display full screens of flicker-free text with a minimum of dedicated hardware. The standard display routines generated 4 by 6 character cells, giving the LINC one of the coarsest character sets ever designed.The display screen was a CRT about 5 inches square which was actually a standard Tektronix oscilloscope with special plug-in amplifiers. The special plug-ins could be replaced with standard oscilloscope plug-ins for use in diagnostic maintenance of the computer. Many LINCs were supplied as kits to be assembled by the end user, so the oscilloscope came in handy.
The CRT used a very long-persistence white or yellow phosphor, so that lines and curves drawn point-by-point at a relatively slow speed would remain visible throughout programmed drawing loops that frequently lasted half a second or more. The y-axis displayed both plus and minus zero as different values, unnecessarily reflecting the fact that the LINC used ones' complement arithmetic. Programmers quickly learned to move any negative displayed data up one point to hide the artifact that otherwise tended to appear at y=0.
Notoriously, a tight loop that displayed points repetitively in one place on the screen would burn a permanent dark hole in the delicate phosphor in well under a minute; programmers had to be ready to hit the Stop lever fast if a very bright spot suddenly appeared because of a programming mistake.