Kenbak-1
Utvecklare | John Blankenbaker |
---|---|
Tillverkare | Kenbak Corporation |
Typ | Personlig dator |
Utgivningsdatum | 1971 |
Introduktionspris | 750 USD (motsvarande 5 020 USD 2021) |
Avvecklad | 1973 |
Enheter sålda | 44 |
Minne | 256 byte minne _ |
Kenbak -1 anses av Computer History Museum , Computer Museum of America och American Computer Museum vara världens första " persondator ", uppfann av John Blankenbaker (född 1929) från Kenbak Corporation 1970, och såldes först i tidigt 1971. Mindre än 50 maskiner har någonsin byggts med Bud Industries kapslingar som sitt hus. Systemet såldes först för US$ 750. Idag är det bara känt att 14 maskiner existerar över hela världen, i händerna på olika samlare och museer. Produktionen av Kenbak-1 avbröts 1973 när Kenbak misslyckades och togs över av CTI Education Products, Inc. CTI bytte namn på inventariet och döpte om det till 5050, även om försäljningen förblev svårfångad.
Eftersom Kenbak-1 uppfanns före den första mikroprocessorn , hade maskinen inte en enchips- CPU utan baserades istället enbart på småskalig integration av TTL - chips . 8-bitarsmaskinen erbjöd 256 byte minne , implementerad på Intels typ 1404A silicon gate MOS -skiftregister . Klocksignalperioden var 1 mikrosekund ( motsvarande en klockhastighet på 1 MHz ), men programhastigheten var i genomsnitt under 1000 instruktioner per sekund på grund av många klockcykler som behövs för varje operation och långsam åtkomst till seriellt minne.
Maskinen programmerades i ren maskinkod med hjälp av en rad knappar och omkopplare. Utgången bestod av en rad lampor.
Internt har Kenbak-1 en seriell datorarkitektur som bearbetar en bit i taget.
Teknisk beskrivning
Register
07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 | (bitposition) |
Huvudregister |
||||||||
A | A | |||||||
B | B | |||||||
X | X (index) | |||||||
P | P rogramräknare | |||||||
Flaggor |
||||||||
000 000 | C | O | A flaggor | |||||
000 000 | C | O | B flaggor | |||||
000 000 | C | O | X flaggor | |||||
Ingång/utgång |
||||||||
Produktion | Ljus | |||||||
Inmatning | Växlar |
Kenbak-1 har totalt nio register. Alla är minnesmappade. Det har tre allmänna register: A, B och X. Register A är den implicita destinationen för vissa operationer. Register X är också känt som indexregistret och förvandlar de direkta och indirekta lägena till indexerade direkta och indexerade indirekta lägen. Den har även programräknare, kallad Register P, tre "overflow and carry"-register för A, B respektive X samt ett Input Register och ett Output Register.
Adresseringslägen
Addera, subtrahera, ladda, lagra, ladda kompliment och och eller instruktioner fungerar mellan ett register och en annan operand med fem adresseringslägen:
- Omedelbar (operand är i den andra byten av instruktionen)
- Minne (andra byte av instruktion är adressen till operanden)
- Indirekt (andra byte av instruktion är adressen till operandens adress)
- Indexerad (andra byte av instruktion läggs till X för att bilda operandens adress)
- Indirekt indexerad (andra byte med instruktion pekar på en plats som läggs till X för att bilda operandens adress)
Instruktionstabell
Instruktionerna är kodade i 8 bitar, med en möjlig andra byte som ger ett omedelbart värde eller adress. Vissa instruktioner har flera möjliga kodningar.
Opcode-matris för Kenbak-1-instruktionsuppsättningen | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Höga oktala siffror | Låg oktal siffra | |||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||
00 | STANNA | SFTR A1 | SET 0 b0 XXX | LÄGG TILL EN #XXX | LÄGG TILL EN XXX | LÄGG TILL A (XXX) | LÄGG TILL EN XXX, X | LÄGG TILL A (XXX), X | ||||||||||
01 | STANNA | SFTR A2 | SET 0 b1 XXX | SUB A #XXX | SUB A XXX | SUB A (XXX) | SUB A XXX, X | SUB A (XXX), X | ||||||||||
02 | STANNA | SFTR A3 | SET 0 b2 XXX | LADDA EN #XXX | LADDA EN XXX | LADDA A (XXX) | LADDA A XXX, X | LADDA A (XXX), X | ||||||||||
03 | STANNA | SFTR A4 | SET 0 b3 XXX | LAGRA EN #XXX | LAGRA EN XXX | LAGRA A (XXX) | LAGRA A XXX, X | LAGRA A (XXX), X | ||||||||||
04 | STANNA | 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 | STANNA | 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 | STANNA | 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 | STANNA | 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 | STANNA | ROTR A1 | SET 1 b0 XXX | LÄGG TILL B #XXX | LÄGG TILL B XXX | LÄGG TILL B (XXX) | LÄGG TILL B XXX, X | LÄGG TILL B (XXX), X | ||||||||||
11 | STANNA | ROTR A2 | SET 1 b1 XXX | SUB B #XXX | SUB B XXX | SUB B (XXX) | SUB B XXX. X | SUB B (XXX), X | ||||||||||
12 | STANNA | ROTR A3 | SET 1 b2 XXX | LADDA B #XXX | LADDA B XXX | LADDA B (XXX) | LADDA B XXX, X | LADDA B (XXX), X | ||||||||||
13 | STANNA | ROTR A4 | SET 1 b3 XXX | BUTIK B #XXX | LAGA B XXX | BUTIK B (XXX) | BUTIK B XXX, X | BUTIK B (XXX), X | ||||||||||
14 | STANNA | 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 | STANNA | 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 | STANNA | 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 | STANNA | 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 | NEJ | SFTL A1 | SKP 0 b0 XXX | LÄGG TILL X #XXX | LÄGG TILL X XXX | LÄGG TILL X (XXX) | LÄGG TILL X XXX, X | LÄGG TILL X (XXX), X | ||||||||||
21 | NEJ | SFTL A2 | SKP 0 b1 XXX | SUB X #XXX | SUB X XXX | SUB X (XXX) | SUB X XXX. X | SUB X (XXX), X | ||||||||||
22 | NEJ | SFTL A3 | SKP 0 b2 XXX | LADDA X #XXX | LADDA X XXX | LADDA X (XXX) | LADDA X (XXX) | LADDA X (XXX), X | ||||||||||
23 | NEJ | SFTL A4 | SKP 0 b3 XXX | BUTIK X #XXX | BUTIK X XXX | BUTIK X (XXX) | BUTIK X XXX, X | BUTIK X (XXX), X | ||||||||||
24 | NEJ | 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 | NEJ | 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 | NEJ | 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 | NEJ | 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 | NEJ | ROTL A1 | SKP 1 b0 XXX | ELLER #XXX | ELLER XXX | ELLER (XXX) | ELLER XXX, X | ELLER (XXX), X | ||||||||||
31 | NEJ | ROTL A2 | SKP 1 b1 XXX | — | — | — | — | — | ||||||||||
32 | NEJ | ROTL A3 | SKP 1 b2 XXX | OCH #XXX | OCH XXX | OCH (XXX) | OCH XXX, X | OCH (XXX), X | ||||||||||
33 | NEJ | ROTL A4 | SKP 1 b3 XXX | LNEG #XXX | LNEG XXX | LNEG (XXX) | LNEG XXX. X | LNEG (XXX), X | ||||||||||
34 | NEJ | ROTL B1 | SKP 1 b4 XXX | JPD UNC XXX | JPD UNC XXX | JPD UNC XXX | JPD UNC XXX | JPD UNC XXX | ||||||||||
35 | NEJ | ROTL B2 | SKP 1 b5 XXX | JPI UNC XXX | JPI UNC XXX | JPI UNC XXX | JPI UNC XXX | JPI UNC XXX | ||||||||||
36 | NEJ | ROTL B3 | SKP 1 b6 XXX | JMD UNC XXX | JMD UNC XXX | JMD UNC XXX | JMD UNC XXX | JMD UNC XXX | ||||||||||
37 | NEJ | ROTL B4 | SKP 1 b7 XXX | JMI UNC XXX | JMI UNC XXX | JMI UNC XXX | JMI UNC XXX | JMI UNC XXX |
Se även
- Datapoint 2200 , en modern maskin med alfanumerisk skärm och tangentbord, lämplig för att köra icke-triviala applikationsprogram
- Mark-8 , designad av doktoranden Jonathan A. Titus och tillkännagavs som ett "löst kit" i julinumret 1974 av Radio-Electronics magazine
- Altair 8800 , en mycket populär mikrodator från 1975 som gav inspirationen till att starta Microsoft
externa länkar
- Kenbak.com Omfattande Kenbak-1-historik och teknisk information
- KENBAK-1 datorartikel
- KENBAK-1-dator – Officiell Kenbak-1-webbplats på www.kenbak-1.info
- KENBAK-1 Series 2 – Officiellt Kenbak-1 reproduktionssats på www.kenbakkit.com
- Kenbak-1 Emulator – Online Kenbak-1 Emulator
- Kenbak-1 Emulator – Ladda ner Kenbak-1 Emulator
- Kenbak 1 – Bilder och information på www.vintage-computer.com
- Kenbak dokumentation på bitsavers.org
- KENBAK-uino Hårdvarubaserad Kenbak-1 Emulator
- Återskapa den första PC -artikeln om KENBAK-uino på hackaday.com
- KENBAK-1 Emulator/Trainer , RetroWiki.es (Ogiltig, 2015-02-10)
- Kenbak-1-prototypen , officiell Kenbak-1-prototypwebbplats på www.thefirstpc.com