Western Digital MCP-1600 | |
Numinstructions: | 98 |
Data-Width: | 8 (microdata), 18 (microcode), 16 (macrodata) |
Address-Width: | 11 (microcode), 16 (macrodata) |
Fastest: | 3.3 |
Fast-Unit: | MHz |
Manuf1: | Western Digital |
Pack1: | 4 or 5 x 40-pin DIP |
Successor: | none |
15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 | (bit position) | |
Register file | LSI-11 use[1] | ||||||||||||||||
R3 | R2 | PSW | |||||||||||||||
R5 | R4 | Destination | |||||||||||||||
R7 | R6 | Source | |||||||||||||||
R9 | R8 | Bus address | |||||||||||||||
RB | RA | Instruction register | |||||||||||||||
RD/GD | RC/GC | R7 (PC) | |||||||||||||||
RF/GF | RE/GE | R6 (SP) | |||||||||||||||
GB | GA | R5 | |||||||||||||||
G9 | G8 | R4 | |||||||||||||||
G7 | G6 | R3 | |||||||||||||||
G5 | G4 | R2 | |||||||||||||||
G3 | G2 | R1 | |||||||||||||||
G1 | G0 | R0 | |||||||||||||||
Control registers | |||||||||||||||||
G | Register Pointer | ||||||||||||||||
LC | Location Counter | ||||||||||||||||
RR | Return Register | ||||||||||||||||
TR1 | TR0 | Translation Register | |||||||||||||||
Status register | |||||||||||||||||
NB | ZB | C4 | C8 | N | Z | V | C | ALU status/Flags |
The MCP-1600 is a multi-chip 16-bit microprocessor introduced by Western Digital in 1975 and produced through the early 1980s.[2] [3] Used in the Pascal MicroEngine, the WD16 processor in the Alpha Microsystems AM-100, and the DEC LSI-11 microcomputer,[4] a cost-reduced and compact implementation of the DEC PDP-11.
There are three types of chips in the chip-set:
The chips use a 3.3MHz four phase clock and three power supply voltages (+5V, +12V, and -5V), as required by the N-channel silicon gate process then available at Western Digital. Internally the MCP-1600 is a (relatively fast) 8-bit processor that can be micro-programmed to emulate a 16-bit CPU. All byte operations execute in one clock period; word operations and branches take two clocks. Up to four MICROMs are supported, but usually two or three could hold the needed microprogram for a processor.[5]
The register file consists of 26 8-bit registers. Ten may be addressed directly by the microinstruction (Rx), four may be addressed either directly or indirectly (Rx/Gx), and the remaining 12 may be addressed only indirectly (Gx). Indirect addressing is via a 3-bit G register which is usually loaded with the register field of the PDP-11 instruction.
The most significant feature of the MCP-1600 is its Programmable Translation Array (PTA). The PTA serves to generate new microinstruction fetch addresses as a function of several parameters. These parameters are those which are normally considered during the decode of a macroinstruction. The PTA was designed specifically to eliminate most of the overhead of macroinstruction translation. Essentially a macroinstruction opcode is quickly translated into an address that is loaded onto the Location Counter, creating a jump to the appropriate microcode to handle the macroinstruction.
John Wallace was the Project Manager and designed the 1621, Mike Briner designed the 1611, and later became a Senior VP at Silicon Storage Technology. Bill Pohlman was the design engineering manager and he later was Project Manager for the Intel 8086 processor.
Microcode could be developed using a DEC LSI-11 computer with the KUV11-AA Writable Control Store (WCS) option. This option allowed programming of the internal 8-bit micromachine to create application-specific extensions to the instruction set. The WCS is a quad Q-Bus board with a ribbon cable connecting to an open MCP-1600 microcode ROM socket.[6]
In January 1976, the three-chip minimum MCP-1600 configuration was offered at $159 ($ in) in 100-999 quantities.[7] In March 1976, it was announced that National Semiconductor would second-source the MCP-1600. It is unclear whether any were produced by National.[8]
A clone of the CP1611 and CP1621 was manufactured in the Soviet Union under the designation KR581IK1 and KR581IK2 (ru|[[:ru:К581|КР581ИК1]] and КР581ИК2|italic=yes).[9] The Soviet 581 series included other members of the MCP-1600 family as well.[10]
cp16sim is an open source MCP-1600 simulator. Written in C, it emulates the MCP-1600 processor and its PTA executing the code found on the WD9000 Pascal Microengine processor. As of 2016 it is unfinished. "It works well enough to execute the first few dozen p-code instructions of the ACD PDQ-3 boot ROM before going into the weeds." It is released under the GNU General Public License version 3.[11]