Kenbak-1 — модель компьютера, изобретенная Джоном Бланкенбейкером (род. 1929) из корпорации Kenbak в 1970 году и продававшаяся с 1971 года[1]. По мнению Музея компьютерной истории[2], Компьютерного музея Америки[англ.][3] и Американского компьютерного музея[англ.][4] является первым в мире персональным компьютером[5]. Всего было построено менее 50 машин, в них использовались корпуса от Bud Industries[6], стоимость единицы — $750[7]/ На сегодняшний день сохранилось 14 экземпляров[8][9].
Производство «Кенбак-1» прекратилось в 1973 году[10], когда компания Kenbak подверглась банкротству и была поглощена CTI Education Products, Inc. CTI провела ребрендинг инвентаря и переименовала модель в 5050, хотя продажи оставались малочисленными[11]
Поскольку «Кенбак-1» был изобретен до появления первого микропроцессора, машина не имела однокристального процессора, а была построена исключительно на малогабаритных интегральных микросхемах TTL[12]. 8-битная машина предлагала 256 байт памяти[13]. Реализована на сдвиговых МОП-регистрах Intel типа 1404A с кремниевым затвором.[14]. Период тактового сигнала составлял 1 микросекунду (что соответствует тактовой частоте 1 МГц), но скорость выполнения программ в среднем была ниже 1000 инструкций в секунду из-за большого количества тактов, необходимых для каждой операции и медленного доступа к последовательной памяти[12].
Машина была запрограммирована в чистом машинном коде с помощью набора кнопок и переключателей. Выходной сигнал состоял из ряда лампочек.
Внутри Kenbak-1 имеет архитектуру последовательного компьютера, обрабатывающего по одному биту за раз.[15][16]
Kenbak-1 был назван в честь компании Kenbak Corporation, основанной Джоном Блюкенбейкером для продажи этого устройства.
Технические характеристики
Регистры
Всего в Kenbak-1 девять регистров. Все они отображаются в памяти. В нем есть три регистра общего назначения: A, B и X. Регистр A является неявным адресатом некоторых операций. Регистр X, также известный как индексный регистр, превращает прямой и косвенный режимы в индексированный прямой и индексированный косвенный режимы. Кроме того, в нем есть программный счетчик, называемый регистром P, три регистра «переполнения и переноса» для A, B и X, соответственно, а также регистр ввода и регистр вывода[17].
Режимы адресации
Инструкции Add, Subtract, Load, Store, Load Complement, And и Or работают между регистром и другим операндом, используя пять режимов адресации:
- Immediate (операнд находится во втором байте инструкции)
- Memory (второй байт инструкции является адресом операнда)
- Indirect (второй байт инструкции является адресом адреса операнда)
- Indexed (второй байт инструкции прибавляется к X для формирования адреса операнда)
- Indirect Indexed (второй байт инструкции указывает на местоположение, которое добавляется к X для формирования адреса операнда)
Таблица с инструкциями
Инструкции кодируются в 8 битах, при этом второй байт может содержать непосредственное значение или адрес. Некоторые инструкции имеют несколько возможных кодировок.[18]
Матрица опкодов для набора инструкций Kenbak-1 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Старшие восьмеричные разряд | Младший восьмеричный разряд | |||||||||||||||||
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 |
См. также
- Datapoint 2200, был серийно выпускаемым программируемым терминалом
- Mark-8, разработанная аспирантом Джонатаном А. Титусом и анонсированная как «свободный набор» в июльском номере журнала Radio-Electronics за 1974 год
- Altair 8800, очень популярный микрокомпьютер 1975 года, обложка с ним стала источником вдохновения для создания Microsoft
- Gigatron TTL, 8-битный компьютер в ретро-стиле, с центральным процессором, реализованным на микросхемах TTL средней степени интеграции, создан в 2018 году.
Примечания
- ↑ The man who made 'the world's first personal computer' (6 ноября 2015). Дата обращения: 15 ноября 2024. Архивировано 27 декабря 2017 года.
- ↑ What was the First PC? Дата обращения: 25 октября 2022. Архивировано 2 марта 2021 года.
- ↑ PastExhibits - History of the PC . Дата обращения: 13 октября 2022. Архивировано 2 декабря 2024 года.
- ↑ The George R. Stibitz Computer Pioneer Award . Дата обращения: 5 августа 2008. Архивировано из оригинала 13 сентября 2008 года.
- ↑ Timeline of Computer History . Computer History Museum. Дата обращения: 22 июля 2008. Архивировано 23 сентября 2015 года.
- ↑ The man who made 'the world's first personal computer'. BBC News (англ.). 6 ноября 2015. Архивировано 27 декабря 2017. Дата обращения: 15 ноября 2024.
- ↑ Kenbak-1 The Training Computer. Computerworld. 1971-11-17. p. 43. Дата обращения: 2014-05-25.
- ↑ List of Extant Kenbak-1 Computers . Kenbak.com. Дата обращения: 13 октября 2022. Архивировано 17 июня 2024 года.
- ↑ Kenbak-1 . Computer Museum of Nova Scotia. Дата обращения: 19 ноября 2015. Архивировано 29 февраля 2024 года.
- ↑ p. 52, «The First Personal Computer», Popular Mechanics, January 2000.
- ↑ Robert R Nielsen, Snr. Inside the Kenbak-1 . YouTube (2005). Дата обращения: 8 ноября 2015. Архивировано 13 декабря 2021 года.
- ↑ 1 2 Erik Klein. Kenbak Computer Company Kenbak-1 . Old-computers.com. Дата обращения: 25 мая 2014. Архивировано 7 июня 2023 года.
- ↑ Bill Wilson. The man who made 'the world's first personal computer' . BBC News (6 ноября 2015). Дата обращения: 16 ноября 2024. Архивировано 23 марта 2018 года.
- ↑ Technical . www.kenbak-1.net. Дата обращения: 16 ноября 2024. Архивировано 17 января 2024 года.
- ↑ «Kenbak Theory of Operation Manual» Архивная копия от 16 июля 2024 на Wayback Machine. p. 16.
- ↑ «Official Kenbak-1 Reproduction Kit».
- ↑ LOS ANGELES, CA. 90049. Programming Reference Manual. Архивировано 16 июля 2024 года.
- ↑ "Programming Reference Manual KENBAK-l Computer" . Дата обращения: 16 ноября 2024. Архивировано 16 июля 2024 года.
Ссылки
- Kenbak.com Подробная история Kenbak-1 и техническая информация
- Компьютер KENBAK-1 Статья
- Компьютер KENBAK-1 — официальный сайт Kenbak-1 на www.kenbak-1.info
- Эмулятор Kenbak-1 — скачать эмулятор Kenbak-1
- Kenbak 1 — изображения и информация на сайте www.vintage-computer.com
- Документация Kenbak на сайте bitsavers.org
You must be logged in to post a comment.