Kenbak-1
| Kenbak-1 | |
|---|---|
![]() Кенбак-1 в Музее компьютерной истории | |
| Тип | Персональный компьютер |
| Разработчик | John Blankenbaker |
| Производитель | Kenbak Corporation |
| Дата выпуска | 1971 |
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, основанной Джоном Блюкенбейкером для продажи этого устройства.
Технические характеристики
Регистры
| 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 | () |
| Основные регистры | ||||||||
| A | A | |||||||
| B | B | |||||||
| X | X (Index) | |||||||
| P | Program Counter | |||||||
| Флаги | ||||||||
| 000000 | C | O | A flags | |||||
| 000000 | C | O | B flags | |||||
| 000000 | C | O | X flags | |||||
| Вход/выход | ||||||||
| Output | Lights | |||||||
| Input | Switches | |||||||
Всего в 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
