![]() Datapoint 2200 computer | |
Manufacturer | Computer Terminal Corporation |
---|---|
Type | Intelligent terminal,personal computer |
Release date | May 1970; 54 years ago (1970-05) |
Discontinued | 1979; 46 years ago (1979)[1] |
Operating system | Datapoint O/S |
CPU | serial, discrete logic implementation of theIntel 8008 instruction set |
Memory | 2KB standard; expandable to 16 KB |
Display | Text only, 80×12 characters |
TheDatapoint 2200 was a mass-produced programmableterminal usable as acomputer, designed byComputer Terminal Corporation (CTC) founders Phil Ray and Gus Roche[2] and announced by CTC in June 1970 (with units shipping in 1971). It was initially presented by CTC as a versatile and cost-efficient terminal for connecting to a wide variety ofmainframes by loading various terminalemulations from tape rather than being hardwired as most contemporary terminals, including their earlierDatapoint 3300.[3]
Dave Gust, a CTC salesman, realized that the 2200 could meetPillsbury Foods's need for a small computer in the field, after which the 2200 was marketed as a stand-alone computer.[3] Its industrial designerJohn "Jack" Frassanito has later claimed that Ray and Roche always intended the Datapoint 2200 to be a full-blownpersonal computer, but that they chose to keep quiet about this so as not to concern investors and others.[2][4]
The terminal's multi-chipCPU (processor)'sinstruction set became the basis of theIntel 8008 instruction set, which inspired theIntel 8080 instruction set and thex86 instruction set used in the processors for the originalIBM PC and its descendants.
12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 | (bit position) | |
Main registers | ||||||||||||||
A | Accumulator | |||||||||||||
B | B register | |||||||||||||
C | C register | |||||||||||||
D | D register | |||||||||||||
E | E register | |||||||||||||
H | H register(indirect) | |||||||||||||
L | L register(indirect) | |||||||||||||
Program counter | ||||||||||||||
P | ProgramCounter | |||||||||||||
15-level push-down address stack | ||||||||||||||
AS | Call level 1 | |||||||||||||
AS | Call level 2 | |||||||||||||
AS | Call level 3 | |||||||||||||
... | ||||||||||||||
AS | Call level 13 | |||||||||||||
AS | Call level 14 | |||||||||||||
AS | Call level 15 | |||||||||||||
Flags | ||||||||||||||
C | P | Z | S | Flags |
The Datapoint 2200 had a built-in full-travelkeyboard, a built-in 12-line, 80-columngreen screen monitor, and two 47 character-per-inchcassette tape drives each with 130 KB capacity. Its size,9+5⁄8 in × 18+1⁄2 in × 19+5⁄8 in (24 cm × 47 cm × 50 cm), and shape—a box with protruding keyboard—approximated that of anIBM Selectrictypewriter.[5] Initially, aDiablo 2.5 MB 2315-type removable cartridgehard disk drive was available, along withmodems, several types ofserial interface,parallel interface,printers and apunched card reader. Later, an 8-inchfloppy disk drive was also made available, along with other, largerhard disk drives. An industry-compatible 7/9-track (user selectable) magnetic tape drive was available by 1975. In late 1977, Datapoint introducedARCNET local area networking. The original Type 1 2200 shipped with 2kilobytes (KiB) of serial shift registermain memory, expandable to 8 KiB. The Type 2 2200 used denser 1kbitRAM chips, giving it a default 4 KiB of memory, expandable to 16 KiB. Its starting price was around US$5,000 (equivalent to $39,000 in 2024), and a full 16 KiB Type 2 2200 had a list price of just over $14,000.
The 8-bit processor architecture that CTC designed for the Datapoint 2200 was implemented in four distinct ways, all with nearly identical instruction sets, but very different internalmicroarchitectures: CTC's original design that communicated data serially, CTC's parallel design, the Texas Instruments TMC 1795, and the Intel 8008.[6]
The 2200 models were succeeded by the 5500, 1100, 6600, 3800/1800, 8800, etc.
The fact that most laptops and cloud computers today store numbers inlittle-endian format is carried forward from the original Datapoint 2200. Because the original Datapoint 2200 had aserial processor, it needed to start with the lowest bit of the lowest byte in order to handle carries. Microprocessors descended from the Datapoint 2200 (the 8008, Z80, and thex86 chips used in most laptops and cloud computers today) kept the little-endian format used by that original Datapoint 2200.[7][8]
The original design called for a single-chip8-bitmicroprocessor for theCPU, rather than a processor built from discreteTTL modules as was conventional at the time. In 1969, CTC contracted two companies,Intel andTexas Instruments (TI), to make the chip. TI was unable to make a reliable part and dropped out. Intel was unable to make CTC's deadline. Intel and CTC renegotiated their contract, ending up with CTC keeping its money and Intel keeping the eventually completed processor.[2]
CTC released the Datapoint 2200 using about 100TTL components (SSI/MSI chips) instead of a microprocessor, while Intel's single-chip design, eventually designated theIntel 8008, was finally released in April 1972.[9]
Possibly because of their speed advantages compared to MOS circuits, Datapoint continued to build processors out of TTL chips until the early 1980s.[7]
Nonetheless, the 8008 was to have a seminal importance. It was the basis of Intel's line of 8-bit CPUs, which was followed by their assembly language compatible 16-bit CPUs — the first members of thex86 family, as the instruction set was later to be known. Already successful and widely used, the x86 architecture's further rise after the success in 1981 of the original IBM Personal Computer with anIntel 8088 CPU means that most desktop, laptop, and server computers in use today[update] have a CPU instruction set directly based on the work of CTC's engineers. The instruction set of the highly successfulZilog Z80 microprocessor can also be traced back to the Datapoint 2200 as the Z80 was backwards-compatible with theIntel 8080. More immediately, the Intel 8008 was adopted by very earlymicrocomputers including theSCELBI,Mark-8,MCM/70 andMicral N.
Instructions are one to three bytes long, consisting of an initial opcode byte, followed by up to two bytes of operands which can be an immediate operand or a program address. Instructions operate on 8-bits only; there are no 16-bit operations. There is only one mechanism to address data memory: indirect addressing pointed to by a concatenation of the H and L registers, referenced as M. The 2200 does, however, support 13-bit program addresses. It has automatic CALL and RETURN instructions for multi-level subroutine calls and returns which can be conditionally executed, like jumps. Direct copying may be made between any two registers or a register and memory. Eight math/logic functions are supported between the accumulator (A) and any register, memory, or an immediate value. Results are always deposited in A. Most instructions are executed in 16 μs, 24 μs, or a leisurely 520 μs when accessing M. The 520 μs represents the delay of the 2200's shift register memory to fully recirculate back to the next instruction. Branch type instructions take a variable amount of time (24 μs to 520 μs) depending on the distance of the branch.
Opcode | Operands | Mnemonic | Time μs | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | b2 | b3 | |||
0 | 0 | 0 | 0 | 0 | 0 | 0 | X | — | — | HALT | — | Halt |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | — | — | SLC | 16 | A1-7 ← A0-6; A0 ← Cy ← A7 |
0 | 0 | CC | 0 | 1 | 1 | — | — | Rcc (RETURN conditional) | 16/† | If cc true, P ← (stack) | ||
0 | 0 | ALU | 1 | 0 | 0 | data | — | AD AC SU SB ND XR OR CPdata | 16 | A ← A [ALU operation] data | ||
0 | 0 | DDD | 1 | 1 | 0 | data | — | Lrdata (Load r with immediate data) | 16 | DDD ← data (except M) | ||
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | — | — | RETURN | † | P ← (stack) |
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | — | — | SRC | 16 | A0-6 ← A1-7; A7 ← Cy ← A0 |
0 | 1 | CC | 0 | 0 | 0 | addlo | addhi | Jccadd (JMP conditional) | 24/† | If cc true, P ← add | ||
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | — | — | INPUT | 16 | A ← input |
0 | 1 | command | 1 | — | — | EXcommand (external command) | 16 | command ← A (coded 8-31 only) | ||||
0 | 1 | CC | 0 | 1 | 0 | addlo | addhi | Cccadd (CALL conditional) | 24/† | If cc true, (stack) ← P, P ← add | ||
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | addlo | addhi | JMPadd | † | P ← add |
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | addlo | addhi | CALLadd | † | (stack) ← P, P ← add |
1 | 0 | ALU | SSS | — | — | ADr ACr SUr SBr NDr XRr ORr CPr | 16/520 | A ← A [ALU operation] SSS | ||||
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | — | — | NOP | 16 | No operation (Actually LAA) |
1 | 1 | DDD | SSS | — | — | Lds (Load d with s) | 16/520 | DDD ← SSS | ||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | — | — | HALT | — | Halt |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | b2 | b3 | Mnemonic | Time μs | Description |
SSS DDD | 2 | 1 | 0 | CC | ALU | |||||||
A | 0 | 0 | 0 | FC, C false | ADr AD (A ← A + arg) | † Variable. Can be from 24 μs to 520 μs. | ||||||
B | 0 | 0 | 1 | FZ, Z false | ACr AC (A ← A + arg + Cy) | |||||||
C | 0 | 1 | 0 | FS, S false | SUr SU (A ← A - arg) | |||||||
D | 0 | 1 | 1 | FP, P odd | SBr SB (A ← A - arg - Cy) | |||||||
E | 1 | 0 | 0 | TC, C true | NDr ND (A ← A ∧ arg) | |||||||
H | 1 | 0 | 1 | TZ, Z true | XRr XR (A ← A ⊻ arg) | |||||||
L | 1 | 1 | 0 | TS, S true | ORr OR (A ← A ∨ arg) | |||||||
M | 1 | 1 | 1 | TP, P even | CPr CP (A - arg) | |||||||
SSS DDD | 2 | 1 | 0 | CC | ALU |
Although the Datapoint 2200 version I is somewhat faster than anIntel 8008 on register instructions, any reference to the 2200's shift-register memory incurs a large 520 μs delay. Also any JMP, CALL, or RETURN can incur a variable delay up to 520 μs depending on the distance to the new address. The parallel-architecture Datapoint 2200 version II is much faster than either.[5][10]
Instruction | Description | Datapoint 2200 ver I μs | 500 kHz Intel 8008 μs | Datapoint 2200 ver II μs | ||||
---|---|---|---|---|---|---|---|---|
ADB | Add B to A | 16 | 20 | 3.2 | ||||
ADI nn | Add nn immediate to A | 16 | 32 | 4.8 | ||||
ADM | Add memory to A | 520 | 32 | 4.8 | ||||
JMP nnnn | Jump to nnnn | 24-520 | 44 | 6.4 | ||||
CALL+RET | Call and Ret combined | 520 | 64 | 9.6 | ||||
Rcc (false) | Conditional return not taken | 16 | 12 | 3.2 |
The following Datapoint 2200 assembly source code is for a subroutine named MEMCPY that copies a block of data bytes from one location to another. Because the byte counter is only 8 bits, there is enough room to load all the subroutine parameters into the 2200's register file. Datapoint 2200 version I transfers 374 bytes per second using this routine. A 500 kHz Intel 8008 executes this code almost four times faster, transferring 1,479 bytes per second. Datapoint 2200 version II is much faster than either at 9,615 bytes per second.[5][10] If more than an 8-bit count is needed, a more complicated copy routine with parameters held in memory would be required.
002000 317 002001 206 020 004002004 371 002005 206 020 004002010 302002011 024 001002013 320002014 110 000 004002017 007 002020 306002021 364 002022 004 001002024 340002025 305 002026 353002027 014 000002031 330002032 007 002032 | ; MEMCPY --; Copy a block of memory from one location to another;; Entry parameters in registers; HL: 13-bit address of source data block; DE: 13-bit address of target data block; C: 8-bit count of bytes to copy. (1 to 256 bytes)ORG2000Q;Code at 002000 octalMEMCPYLBM;Read source byte into BCALLXCHGI;Exchange HL<->DE and increment DELMB;Save B to target byteCALLXCHGI;Exchange HL<->DE and increment DELAC;Decrement byte counter in CSU1LCAJFZMEMCPY;Continue for all bytesRETURN;Exchange DE and HL register pairs then increment DE as 16 bitsXCHGILAL;Exchange L and ELLEAD1;and inc E, low byte of DELEALAH;Exchange H and DLHDAC0;proagate Cy into DLDARETURNEND |
The originalinstruction set architecture was developed byVictor Poor andHarry Pyle.[11] TheTTL design they ended up using was made byGary Asbell.Industrial design (how the box's exterior looked, including the company's logo) was done by Jack Frassanito.[2]
Main unit
Peripherals
Users of the 2200 and succeeding terminals eventually had several optional units to choose from. Among these were: