KENBAK-1

From Computer History Wiki
Jump to: navigation, search

The KENBAK-1 (many Web sites give the name as 'Kenbak-1', but scans of original manuals show the capitals were the usual) was the first hobbyist personal computer. (Depending on one's exact definition of 'personal computer', it has been argued that it was the first personal computer, overall, but that was likely the LINC; with the added 'hobbyist' qualifier, it probably is accurate.) It was first produced in 1971, by John V. Blankenbaker, and intended for use in teaching programming. It was not commercially successful - only about 52 were made - and did not introduce any important technical ideas, but it was still historic.

Like other early personal computers (such as the Datapoint 2200), the Kenbak-1 preceded microprocessors being available. Like them, its CPU is made out of about 131 SSI TTL ICs, from the 74 series family. It is a serial computer (which, like many of the earliest computers, which reduced the cost, by reducing the component count), with a 1-bit ALU. It had a clock rate of 1 megahertz, but the serial nature meant it only executed about 480 instructions per second (for typical 2-byte instructions).

Its main memory, 256 bytes, was built out of shift registers. It had no I/O capability; it was programmed by storing data in memory through the front panel.

Architecture

It had a word size of one byte (8 bits), the ALU's width. It was basically a load-store machine; most instructions had 5 addressing modes:

  • immediate (constant)
  • memory
  • indirect (deferred)
  • indexed
  • indirect indexed

(Bit instructions and jumps did not support all 5 modes.) Most instructions were two bytes long: the second byte's contents depended on the addressing mode; the first byte contained two bits of register specification, three bits of opcode, and three bits of addressing mode. There were roughly 27 different instructions (ones marked with '!' did not use the format described above; the digit is the number of different versions):

  • ADD
  • SUB
  • LOAD
  • STORE
  • AND !1
  • OR !1
  • LNEG !1
  • JUMP !10
  • SKIP !2
  • SET !2
  • SHIFT !2
  • ROT !2
  • NOP !1
  • HALT !1

All jumps were conditional branches. The KENBAK-1 had 4 registers:

It had two condition codes, Overflow and Carry, set by the ADD and SUB instructions.

External links