Kenbak-1 (Kenbak-1)
Kenbak-1 | |
---|---|
| |
Тип | Персональный компьютер |
Разработчик | John Blankenbaker[вд] |
Производитель | Kenbak Corporation |
Дата выпуска | 1971 |
Медиафайлы на Викискладе |
Kenbak-1 — по мнению Музея компьютерной истории,[1] Компьютерного музея Америки[2] и Американского компьютерного музея[3],является первым в мире «персональным компьютером»,[4]изобретенным Джоном Бланкенбейкером (род. 1929) из корпорации Kenbak в 1970 году и впервые проданный в начале 1971 года.[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 году.
Примечания
[править | править код]- ↑ What was the First PC? Дата обращения: 25 октября 2022.
- ↑ PastExhibits - History of the PC . Дата обращения: 13 октября 2022.
- ↑ The George R. Stibitz Computer Pioneer Award . Дата обращения: 5 августа 2008. Архивировано из оригинала 13 сентября 2008 года.
- ↑ Timeline of Computer History . Computer History Museum. Дата обращения: 22 июля 2008.
- ↑ The man who made 'the world's first personal computer' (6 ноября 2015).
- ↑ "The man who made 'the world's first personal computer'". BBC News (англ.). 2015-11-06. Дата обращения: 15 ноября 2024.
- ↑ "Kenbak-1 The Training Computer". Computerworld. November 17, 1971. p. 43. Дата обращения: 25 мая 2014.
- ↑ List of Extant Kenbak-1 Computers . Kenbak.com. Дата обращения: 13 октября 2022.
- ↑ Kenbak-1 . Computer Museum of Nova Scotia. Дата обращения: 19 ноября 2015.
- ↑ 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.
- ↑ Bill Wilson. The man who made 'the world's first personal computer' . BBC News (6 ноября 2015).
- ↑ Technical . www.kenbak-1.net.
- ↑ "Kenbak Theory of Operation Manual". p. 16.
- ↑ "Official Kenbak-1 Reproduction Kit".
- ↑ LOS ANGELES, CA. 90049. Programming Reference Manual.
- ↑ "Programming Reference Manual KENBAK-l Computer"
Ссылки
[править | править код]- 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