Kenbak-1

{{Short description|Personal computer, invented in 1970}}

{{Infobox information appliance

| name = Kenbak-1

| title =

| aka =

| logo =

| image = Kenbak-1 personal computer.jpg

| caption = A Kenbak-1 at Deutsches Museum, Munich

| developer = John Blankenbaker

| manufacturer = Kenbak Corporation

| family =

| type = Personal computer

| generation =

| releasedate = {{Start date and age|1971}}

| lifespan =

| price = {{US$|750|1971|round=-1}}

| discontinued = {{End date|1973}}

| unitssold = 44

| unitsshipped =

| media =

| os =

| power =

| soc =

| cpu =

| memory = 256 bytes of memory

| storage =

| memory card =

| display =

| graphics =

| sound =

| input =

| controllers =

| camera =

| touchpad =

| connectivity =

| platform =

| service =

| dimensions =

| weight =

| topgame =

| compatibility =

| predecessor =

| successor =

| related =

| website =

}}

File:Kenbak IDE running a program.gif

File:Kenbakuino, an Arduino-based Kenbak emulator.jpg-based Kenbak-1 emulator]]

The Kenbak-1 is considered by the Computer History Museum,{{cite web|url=https://www.computerhistory.org/revolution/personal-computers/17/297 |title=What was the First PC? |accessdate=October 25, 2022}} the Mimms Museum of Technology and Art{{cite web|url=https://www.computermuseumofamerica.org/past-exhibits/ |title=PastExhibits - History of the PC |accessdate=October 13, 2022}} and the American Computer Museum{{cite web|url=http://www.compustory.com/Pioneers.html |title=The George R. Stibitz Computer Pioneer Award|accessdate=August 5, 2008 |url-status=dead |archiveurl=https://web.archive.org/web/20080913191154/http://www.compustory.com/Pioneers.html |archivedate=September 13, 2008 }} to be the world's first "personal computer",{{cite web |publisher=Computer History Museum |url=http://www.computerhistory.org/timeline/?year=1971 |title=Timeline of Computer History |accessdate=July 22, 2008}} invented by John Blankenbaker (born 1929) of Kenbak Corporation in 1970 and first sold in early 1971.{{Cite web|url=https://www.bbc.com/news/business-34639183|title=The man who made 'the world's first personal computer'|date=November 6, 2015|via=www.bbc.com}} Less than 50 machines were ever built, using Bud Industries enclosures as a housing.{{r|OralHist}} The system first sold for US$750.{{cite news |date=November 17, 1971 |title=Kenbak-1 The Training Computer |work=Computerworld |page=43 |url=https://books.google.com/books?id=wCl2yLDv2bAC&dq=Kenbak-1&pg=PT42 |accessdate=May 25, 2014}} Today, only 14 machines are known to exist worldwide,{{cite web|title=List of Extant Kenbak-1 Computers|url=https://www.kenbak.com/extantkenbaks|website=Kenbak.com|accessdate=13 October 2022}}{{cite web|title=Kenbak-1|url=http://www.computermuseum.20m.com/kenbak.htm|website=Computer Museum of Nova Scotia|accessdate=19 November 2015}} 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.{{cite web|date=2005|author=Robert R Nielsen, Snr|title=Inside the Kenbak-1|website=YouTube|url=https://www.youtube.com/watch?v=lxsdL_OWumw |archive-url=https://ghostarchive.org/varchive/youtube/20211213/lxsdL_OWumw |archive-date=2021-12-13 |url-status=live|accessdate=8 November 2015}}{{cbignore}}

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.{{rp|38-41}} The 8-bit machine offered 256 bytes of memory,{{cite web|url=https://www.bbc.co.uk/news/business-34639183|title=The man who made 'the world's first personal computer'|author=Bill Wilson|date=6 November 2015|publisher=BBC News}} implemented on Intel's type 1404A silicon gate MOS shift registers.{{Cite web|url=https://www.kenbak-1.net/index_files/page0003.htm|title=Technical|website=www.kenbak-1.net}} 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.{{cite web |author=Erik Klein |title=Kenbak Computer Company Kenbak-1 |publisher=Old-computers.com |url=https://www.old-computers.com/museum/computer.asp?st=1&c=1259 |accessdate=May 25, 2014}}

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.

[http://www.kenbakkit.com/manuals/KENBAK-Theory_of_Operation-07-Release1-Searchable.pdf "Kenbak Theory of Operation Manual"].

{{rp|16}}

[http://kenbakkit.com/ "Official Kenbak-1 Reproduction Kit"].

Technical description

=Registers=

class="infobox" style="font-size:88%;width:20em;"

|+ Kenbak-1 registers

style="text-align:center;"| 07

| style="text-align:center;"| 06

| style="text-align:center;"| 05

| style="text-align:center;"| 04

| style="text-align:center;"| 03

| style="text-align:center;"| 02

| style="text-align:center;"| 01

| style="text-align:center;"| 00

| (bit position)

colspan="9" | Main registers
style="background:silver;color:black"

| style="text-align:center;" colspan="8"| A

| style="width:auto; background:white; color:black;"| A

style="background:silver;color:black"

| style="text-align:center;" colspan="8"| B

| style="background:white; color:black;"| B

style="background:silver;color:black"

| style="text-align:center;" colspan="8"| X

| style="background:white; color:black;"| X (Index)

style="background:silver;color:black"

| style="text-align:center;" colspan="8"| P

| style="background:white; color:black;"| Program Counter

colspan="9" | Flags
style="background:silver;color:black"

| style="text-align:center;" colspan="6"| 000000

| style="text-align:center;" colspan="1"| C

| style="text-align:center;" colspan="1"| O

| style="width:auto; background:white; color:black;"| A flags

style="background:silver;color:black"

| style="text-align:center;" colspan="6"| 000000

| style="text-align:center;" colspan="1"| C

| style="text-align:center;" colspan="1"| O

| style="width:auto; background:white; color:black;"| B flags

style="background:silver;color:black"

| style="text-align:center;" colspan="6"| 000000

| style="text-align:center;" colspan="1"| C

| style="text-align:center;" colspan="1"| O

| style="width:auto; background:white; color:black;"| X flags

colspan="9" | Input/Output
style="background:silver;color:black"

| style="text-align:center;" colspan="8"| Output

| style="background:white; color:black;"| Lights

style="background:silver;color:black"

| style="text-align:center;" colspan="8"| Input

| style="background:white; color:black;"| 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.[http://www.kenbakkit.com/manuals/KENBAK-Programming_Reference-07-Release1-Searchable.pdf "Programming Reference Manual KENBAK-l Computer"]

class="wikitable collapsible collapsed"

!colspan=9| Opcode matrix for the Kenbak-1 instruction set

rowspan=2| High octal digits ||colspan=18| Low octal digit
0|| 1|| 2|| 3|| 4|| 5|| 6|| 7
00

|HALT

|SFTR A1

|SET 0 b0 XXX

|ADD A #XXX

|ADD A XXX

|ADD A (XXX)

|ADD A XXX, X

|ADD A (XXX), X

01

|HALT

|SFTR A2

|SET 0 b1 XXX

|SUB A #XXX

|SUB A XXX

|SUB A (XXX)

|SUB A XXX, X

|SUB A (XXX), X

02

|HALT

|SFTR A3

|SET 0 b2 XXX

|LOAD A #XXX

|LOAD A XXX

|LOAD A (XXX)

|LOAD A XXX, X

|LOAD A (XXX), X

03

|HALT

|SFTR A4

|SET 0 b3 XXX

|STORE A #XXX

|STORE A XXX

|STORE A (XXX)

|STORE A XXX, X

|STORE A (XXX), X

04

|HALT

|SFTR B1

|SET 0 b4 XXX

|JPD A ≠0 XXX

|JPD A =0 XXX

|JPD A <0 XXX

|JPD A ≥0 XXX

|JPD A >0 XXX

05

|HALT

|SFTR B2

|SET 0 b5 XXX

|JPI A ≠0 XXX

|JPI A =0 XXX

|JPI A <0 XXX

|JPI A ≥0 XXX

|JPI A >0 XXX

06

|HALT

|SFTR B3

|SET 0 b6 XXX

|JMD A ≠0 XXX

|JMD A =0 XXX

|JMD A <0 XXX

|JMD A ≥0 XXX

|JMD A >0 XXX

07

|HALT

|SFTR B4

|SET 0 b7 XXX

|JMI A ≠0 XXX

|JMI A =0 XXX

|JMI A <0 XXX

|JMI A ≥0

|JMI A >0 XXX

10

|HALT

|ROTR A1

|SET 1 b0 XXX

|ADD B #XXX

|ADD B XXX

|ADD B (XXX)

|ADD B XXX, X

|ADD B (XXX), X

11

|HALT

|ROTR A2

|SET 1 b1 XXX

|SUB B #XXX

|SUB B XXX

|SUB B (XXX)

|SUB B XXX, X

|SUB B (XXX), X

12

|HALT

|ROTR A3

|SET 1 b2 XXX

|LOAD B #XXX

|LOAD B XXX

|LOAD B (XXX)

|LOAD B XXX, X

|LOAD B (XXX), X

13

|HALT

|ROTR A4

|SET 1 b3 XXX

|STORE B #XXX

|STORE B XXX

|STORE B (XXX)

|STORE B XXX, X

|STORE B (XXX), X

14

|HALT

|ROTR B1

|SET 1 b4 XXX

|JPD B ≠0 XXX

|JPD B =0 XXX

|JPD B <0 XXX

|JPD B ≥0 XXX

|JPD B >0 XXX

15

|HALT

|ROTR B2

|SET 1 b5 XXX

|JPI B ≠0 XXX

|JPI B =0 XXX

|JPI B <0 XXX

|JPI B ≥0 XXX

|JPI B >0 XXX

16

|HALT

|ROTR B3

|SET 1 b6 XXX

|JMD B ≠0 XXX

|JMD B =0 XXX

|JMD B <0 XXX

|JMD B ≥0 XXX

|JMD B >0 XXX

17

|HALT

|ROTR B4

|SET 1 b7 XXX

|JMI B ≠0 XXX

|JMI B =0 XXX

|JMI B <0 XXX

|JMI B ≥0 XXX

|JMI B >0 XXX

20

|NOOP

|SFTL A1

|SKP 0 b0 XXX

|ADD X #XXX

|ADD X XXX

|ADD X (XXX)

|ADD X XXX, X

|ADD X (XXX), X

21

|NOOP

|SFTL A2

|SKP 0 b1 XXX

|SUB X #XXX

|SUB X XXX

|SUB X (XXX)

|SUB X XXX, X

|SUB X (XXX), X

22

|NOOP

|SFTL A3

|SKP 0 b2 XXX

|LOAD X #XXX

|LOAD X XXX

|LOAD X (XXX)

|LOAD X (XXX)

|LOAD X (XXX), X

23

|NOOP

|SFTL A4

|SKP 0 b3 XXX

|STORE X #XXX

|STORE X XXX

|STORE X (XXX)

|STORE X XXX, X

|STORE X (XXX), X

24

|NOOP

|SFTL B1

|SKP 0 b4 XXX

|JPD X ≠0 XXX

|JPD X =0 XXX

|JPD X <0 XXX

|JPD X ≥0 XXX, X

|JPD X >0 XXX

25

|NOOP

|SFTL B2

|SKP 0 b5 XXX

|JPI X ≠0 XXX

|JPI X =0 XXX

|JPI X <0 XXX

|JPI X ≥0 XXX

|JPI X >0 XXX

26

|NOOP

|SFTL B3

|SKP 0 b6 XXX

|JMD X ≠0 XXX

|JMD X =0 XXX

|JMD X <0 XXX

|JMD X ≥0 XXX

|JMD X >0 XXX

27

|NOOP

|SFTL B4

|SKP 0 b7 XXX

|JMI X ≠0 XXX

|JMI X =0 XXX

|JMI X <0 XXX

|JMI X ≥0 XXX

|JMI X >0 XXX

30

|NOOP

|ROTL A1

|SKP 1 b0 XXX

|OR #XXX

|OR XXX

|OR (XXX)

|OR XXX, X

|OR (XXX), X

31

|NOOP

|ROTL A2

|SKP 1 b1 XXX

| —

| —

| —

| —

| —

32

|NOOP

|ROTL A3

|SKP 1 b2 XXX

|AND #XXX

|AND XXX

|AND (XXX)

|AND XXX, X

|AND (XXX), X

33

|NOOP

|ROTL A4

|SKP 1 b3 XXX

|LNEG #XXX

|LNEG XXX

|LNEG (XXX)

|LNEG XXX, X

|LNEG (XXX), X

34

|NOOP

|ROTL B1

|SKP 1 b4 XXX

|JPD UNC XXX

|JPD UNC XXX

|JPD UNC XXX

|JPD UNC XXX

|JPD UNC XXX

35

|NOOP

|ROTL B2

|SKP 1 b5 XXX

|JPI UNC XXX

|JPI UNC XXX

|JPI UNC XXX

|JPI UNC XXX

|JPI UNC XXX

36

|NOOP

|ROTL B3

|SKP 1 b6 XXX

|JMD UNC XXX

|JMD UNC XXX

|JMD UNC XXX

|JMD UNC XXX

|JMD UNC XXX

37

|NOOP

|ROTL B4

|SKP 1 b7 XXX

|JMI UNC XXX

|JMI UNC XXX

|JMI UNC XXX

|JMI UNC XXX

|JMI 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 US$750. 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. The 1975 Altair 8800 had expansion slots, in contrast.

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

{{Reflist|refs=

{{cite web

|url = https://archive.computerhistory.org/resources/access/text/2013/05/102702235-05-01-acc.pdf

|title = Oral History of John Blankenbaker

|publisher = Computer History Museum

|date = June 14, 2007}}

}}