The Kenbak-1 is a personal computer released in early 1971 by the Kenbak Corporation. Designed in 1970 by John Blankenbaker (born 1929), the Kenbak-1 is considered by several institutions, including the Computer History Museum, the Mimms Museum of Technology and Art and the American Computer Museum, to be the world's first commercially released personal computer. Less than 50 units were ever built, using Bud Industries enclosures as a housing. The system first sold for . , only 14 machines are known to exist worldwide, in the hands of various collectors and museums. Production of the Kenbak-1 stopped in 1973,p. 52, "The First Personal Computer", Popular Mechanics, January 2000. as Kenbak failed and was taken over by CTI Education Products, Inc. CTI rebranded the inventory and renamed it the 5050, though sales remained elusive.

Since the Kenbak-1 was invented before the first microprocessor, the machine did not have a one-chip CPU but was instead based purely on 7400-series TTL chips. The 8-bit machine offered 256 bytes of memory, implemented on Intel's type 1404A silicon gate MOS shift registers. The clock signal period was 1 microsecond (equivalent to a clock speed of 1 MHz), but the program speed averaged below 1,000 instructions per second due the many clock cycles needed for each operation and slow access to serial memory.

The machine was programmed in pure machine code using an array of buttons and switches. Output consisted of a row of lights.

Internally, the Kenbak-1 has a serial computer architecture, processing one bit at a time."Kenbak Theory of Operation Manual"."Official Kenbak-1 Reproduction Kit".

Technical description

Registers + Kenbak-1 registers 07 06 05 04 03 02 01 00 (bit position) Main registers A A B B X X (Index) P Program Counter Flags 000000 C O A flags 000000 C O B flags 000000 C O X flags Input/Output Output Lights Input Switches

The Kenbak-1 has a total of nine registers. All are memory mapped. It has three general-purpose registers: A, B and X. Register A is the implicit destination of some operations. Register X, also known as the index register, turns the direct and indirect modes into indexed direct and indexed indirect modes. It also has a program counter, called Register P, three "overflow and carry" registers for A, B and X, respectively, as well as an Input Register and an Output Register.

Addressing modes Add, Subtract, Load, Store, Load Complement, And, and Or instructions operate between a register and another operand using five addressing modes:

Immediate (operand is in second byte of instruction) Memory (second byte of instruction is the address of the operand) Indirect (second byte of instruction is the address of the address of the operand) Indexed (second byte of instruction is added to X to form the address of the operand) Indirect Indexed (second byte of instruction points to a location which is added to X to form the address of the operand)

Instruction table The instructions are encoded in 8 bits, with a possible second byte providing an immediate value or address. Some instructions have multiple possible encodings."Programming Reference Manual KENBAK-l Computer"

Opcode matrix for the Kenbak-1 instruction set High octal digits Low octal digit 0 1 2 3 4 5 6 7 00HALTSFTR A1SET 0 b0 XXXADD A #XXXADD A XXXADD A (XXX)ADD A XXX, XADD A (XXX), X 01HALTSFTR A2SET 0 b1 XXXSUB A #XXXSUB A XXXSUB A (XXX)SUB A XXX, XSUB A (XXX), X 02HALTSFTR A3SET 0 b2 XXXLOAD A #XXXLOAD A XXXLOAD A (XXX)LOAD A XXX, XLOAD A (XXX), X 03HALTSFTR A4SET 0 b3 XXXSTORE A #XXXSTORE A XXXSTORE A (XXX)STORE A XXX, XSTORE A (XXX), X 04HALTSFTR B1SET 0 b4 XXXJPD A ≠0 XXXJPD A =0 XXXJPD A <0 XXXJPD A ≥0 XXXJPD A >0 XXX 05HALTSFTR B2SET 0 b5 XXXJPI A ≠0 XXXJPI A =0 XXXJPI A <0 XXXJPI A ≥0 XXXJPI A >0 XXX 06HALTSFTR B3SET 0 b6 XXXJMD A ≠0 XXXJMD A =0 XXXJMD A <0 XXXJMD A ≥0 XXXJMD A >0 XXX 07HALTSFTR B4SET 0 b7 XXXJMI A ≠0 XXXJMI A =0 XXXJMI A <0 XXXJMI A ≥0JMI A >0 XXX 10HALTROTR A1SET 1 b0 XXXADD B #XXXADD B XXXADD B (XXX)ADD B XXX, XADD B (XXX), X 11HALTROTR A2SET 1 b1 XXXSUB B #XXXSUB B XXXSUB B (XXX)SUB B XXX, XSUB B (XXX), X 12HALTROTR A3SET 1 b2 XXXLOAD B #XXXLOAD B XXXLOAD B (XXX)LOAD B XXX, XLOAD B (XXX), X 13HALTROTR A4SET 1 b3 XXXSTORE B #XXXSTORE B XXXSTORE B (XXX)STORE B XXX, XSTORE B (XXX), X 14HALTROTR B1SET 1 b4 XXXJPD B ≠0 XXXJPD B =0 XXXJPD B <0 XXXJPD B ≥0 XXXJPD B >0 XXX 15HALTROTR B2SET 1 b5 XXXJPI B ≠0 XXXJPI B =0 XXXJPI B <0 XXXJPI B ≥0 XXXJPI B >0 XXX 16HALTROTR B3SET 1 b6 XXXJMD B ≠0 XXXJMD B =0 XXXJMD B <0 XXXJMD B ≥0 XXXJMD B >0 XXX 17HALTROTR B4SET 1 b7 XXXJMI B ≠0 XXXJMI B =0 XXXJMI B <0 XXXJMI B ≥0 XXXJMI B >0 XXX 20NOOPSFTL A1SKP 0 b0 XXXADD X #XXXADD X XXXADD X (XXX)ADD X XXX, XADD X (XXX), X 21NOOPSFTL A2SKP 0 b1 XXXSUB X #XXXSUB X XXXSUB X (XXX)SUB X XXX, XSUB X (XXX), X 22NOOPSFTL A3SKP 0 b2 XXXLOAD X #XXXLOAD X XXXLOAD X (XXX)LOAD X (XXX)LOAD X (XXX), X 23NOOPSFTL A4SKP 0 b3 XXXSTORE X #XXXSTORE X XXXSTORE X (XXX)STORE X XXX, XSTORE X (XXX), X 24NOOPSFTL B1SKP 0 b4 XXXJPD X ≠0 XXXJPD X =0 XXXJPD X <0 XXXJPD X ≥0 XXX, XJPD X >0 XXX 25NOOPSFTL B2SKP 0 b5 XXXJPI X ≠0 XXXJPI X =0 XXXJPI X <0 XXXJPI X ≥0 XXXJPI X >0 XXX 26NOOPSFTL B3SKP 0 b6 XXXJMD X ≠0 XXXJMD X =0 XXXJMD X <0 XXXJMD X ≥0 XXXJMD X >0 XXX 27NOOPSFTL B4SKP 0 b7 XXXJMI X ≠0 XXXJMI X =0 XXXJMI X <0 XXXJMI X ≥0 XXXJMI X >0 XXX 30NOOPROTL A1SKP 1 b0 XXXOR #XXXOR XXXOR (XXX)OR XXX, XOR (XXX), X 31NOOPROTL A2SKP 1 b1 XXX — — — — — 32NOOPROTL A3SKP 1 b2 XXXAND #XXXAND XXXAND (XXX)AND XXX, XAND (XXX), X 33NOOPROTL A4SKP 1 b3 XXXLNEG #XXXLNEG XXXLNEG (XXX)LNEG XXX, XLNEG (XXX), X 34NOOPROTL B1SKP 1 b4 XXXJPD UNC XXXJPD UNC XXXJPD UNC XXXJPD UNC XXXJPD UNC XXX 35NOOPROTL B2SKP 1 b5 XXXJPI UNC XXXJPI UNC XXXJPI UNC XXXJPI UNC XXXJPI UNC XXX 36NOOPROTL B3SKP 1 b6 XXXJMD UNC XXXJMD UNC XXXJMD UNC XXXJMD UNC XXXJMD UNC XXX 37NOOPROTL B4SKP 1 b7 XXXJMI UNC XXXJMI UNC XXXJMI UNC XXXJMI UNC XXXJMI UNC XXX History The Kenbak-1, released in early 1971, is considered by the Computer History Museum to be the world's first personal computer. It was designed and invented by John Blankenbaker of Kenbak Corporation in 1970, and was first sold in early 1971. Unlike a modern personal computer, the Kenbak-1 was built of small-scale integrated circuits, and did not use a microprocessor. The system first sold for .. Only 44 machines were ever sold, though it's said 50 to 52 were built. In 1973, production of the Kenbak-1 stopped as Kenbak Corporation folded.

With a fixed 256 bytes of memory, input and output restricted to lights and switches (no ports or serial output), and no possible way to extend its capabilities, the Kenbak-1 was only really useful for educational use. In contrast, the 1975 Altair 8800 had expansion slots, allowing the addition of memory and peripherals.

See also Datapoint 2200, a contemporary machine with alphanumeric screen and keyboard, suitable to run non-trivial application programs Mark-8, designed by graduate student Jonathan A. Titus and announced as a "loose kit" in the July 1974 issue of Radio-Electronics magazine Altair 8800, a very popular 1975 microcomputer that provided the inspiration for starting Microsoft Gigatron TTL, a 21st-century implementation of a computer using small-scale integration parts

References

External links Kenbak.com Comprehensive Kenbak-1 history and technical information KENBAK-1 Computer Article KENBAK-1 Computer – Official Kenbak-1 website at www.kenbak-1.info Kenbak-1 Emulator – Kenbak-1 emulator in JavaScript Kenbak-1 Emulator – Kenbak-1 Emulator download Kenbak 1 – Images and information at www.vintage-computer.com Kenbak documentation at bitsavers.org