The LINC (Laboratory Instrument Controller) Computer system was designed by engineers at MIT in 1962, using off-the-shelf parts manufactured by DEC. It was a 12-bit accumulator-oriented architecture designed for realtime lab use. It includes special instructions for sampling input channels and controling relays and a display scope. It's descendants include the micro-LINC line, the DEC LINC-8, and the DEC PDP-12. The LINC-8 and PDP-12 add several instructions to the basic LINC instruction set for switching into PDP-8 mode and dealing with special registers. LINC instructions use direct addressing, in which bits 2-11 of the instruction word represent an address, or indirect addressing in which bits 7-11 determine how the address is interprited, which might include the next 12 bit word. In indirect addressing, the 7th bit or the instruction and bits 8-11 are interpited as follows: 7th 8-11 instruction argument address 0 0 the following word contains the address 1 0 the following word is the argument 0 1-17 memory word 1-17 contains the address 1 1-17 memory word 1-17, incremented by 1, contains the address Only a few instructions use direct addressing: ADD, STC, and JMP. LINC memory is segmented into 1K sections, with a 5-bit Instruction Field register and a 5-bit Data Field register that select the 1K segment for code and data accesses. Special instructions are used to set the two field registers. The LINC instruction set: All values are in octal. 0000 HLT Halt 0001 AXO Transfer accumulator to extended ops buffer 0002 PDP Switch to PDP-8 instruction set (LINC-8 & PDP-12) 0003 TAC Tape Drive accumulator to LINC accumulator 0004 ESF Transfer accumulator to special functions register 0005 ZTA Transfer Z register to accumulator 0006 DJR Disable jump return 0010 ENI Enable interrupts 0011 CLR Clear accumulator, MQ, and link bit 0014 ATR Transfer accumulator to relay control 0015 RTA Transfer relay control to accumulator 0016 NOP no operation 0017 COM Complement 0040 SET Set ???? 0100 SAM Sample analoge channel to accumulator 0100 + n, where n is the number of the channel to sample. 0140 DIS Display point on scope 0140 + 20 + n displays a point (x,y) where x is bits 3-11 of memory location n, nad y is bits 3-11 of the accumulator. Bit 7 is set in the instruction to increment the contents of memory location n. 0200 XSK Index and skip ???? 0240 ROL Rotate left 0300 ROR Rotate right 0340 SCR Scale right 0400 SXL Skip on external level This tests various lines on the I/O bus. 0400 + 20 + n, where n is the bus line, and bit 7 is set to skip on level = 0v, otherwise skip on +3v. KST, STD, and TWC are special opcodes that use this same instruction, but test common lines. 0415 KST Skip on key struck 0416 STD Skip on tape instruction done 0417 TWC Skip on tape word complete 0440 SNS Skip on front panel sense switches 0440 + 20 + n where n = the sense switch to be checked, and bit 7 is set to skip on switch n = 0, other skip on switch n = 1. 0450 AZE Skip on accumulator zero 0451 APO Skip on accumulator positive 0452 LZE Skip on link bit zero 0453 IBZ Skip on interblock zone ???? 0454 OVF Skip on overflow bit ???? 0455 ZZZ Skip on Z register zero 0467 USK Unconditional skip 0500 IOB I/O Bus enable - access PDP-8 side devices (PDP-12) 0514 TYP Type a character to the serial port 0515 KBD Read a character from the keyboard (serial port) 0516 RSW Transfer right front panel switches to accumulator 0517 LSW Transfer left front panel switches to accumulator 0600 LIF Load LINC Instruction Field This doesn't actually take effect untill the next JMP Also known as LMB 0640 LDF Load LINC Data Field Also known as UMB 0700 RDC Read and check block from tape 0701 RCG Read and check group from tape 0702 RDE Read block from tape 0703 MTB Move tape toward block 0704 WRC Write and check block to tape 0705 WCG Write and check group to tape 0706 WRI Write block to tape 0707 CHK Check tape 1000 LDA Load accumulator 1040 STA Store accumulator 1100 ADA Add to accumulator 1140 ADM Add to memory 1200 LAM Add to memory with link bit 1240 MUL Multiply 1300 LDH Load half 1340 STH Store half 1400 SHD Skip if half differs 1500 SRO Skip if bit 11 = 0, and rotate right 1 bit 1540 BCL Bit clear 1600 BSE Bit set 1640 BCO Bit compliment 1740 DSC Display character on scope 2000 ADD Add ???? 4000 STC Store and clear 6000 JMP Jump The following instructions only exist on the PDP-12 in LINC mode: 0021 AXO; Transfer extended ops buffer to accumulator 0023 TAC; Transfer accumulator to tape accumulator 0024 ESF; Transfer special function register to accumulator Yes, "AXO;" is the opposite of "AXO", "TAC;" is the opposite of "TAC", and "ESF;" is the opposite of "ESF".