Kenbak-1 — компьютер, продававшийся корпорацией Kenbak начиная с 1971 года. Разработанный Джоном Бланкенбейкером (род. 1929) в 1970 году, компьютер целым рядом организаций, среди которых Музей компьютерной истории, и Музей американской компьютерной и робототехники, признан первым в мире персональным компьютером. Всего было собрано менее 50 машин, первые экземпляры были в самодельных корпусах, для остальных использовались корпуса фирмы Bud Industries. Цена компьютера составляла 750 $. На сегодняшний день сохранилось 14 экземпляров. Производство Kenbak-1 прекратилось в 1973 году, когда компания Kenbak подверглась банкротству и была поглощена CTI Education Products, Inc. CTI провела ребрендинг и переименовала компьютер в H-5050, хотя продажи оставались незначительными
Компьютер был предназначен для обучения программированию. В комплект с компьютером входил сборник из 30 упражнений, помогавших понять принципы работы компьютера и создания программ. Компьютер можно было программировать только в машинном коде, вводя его с помощью набора кнопок и переключателей. Результат работы программы мог быть отображен с помощью ряда из 8 лампочек.
Техническое описание В Kenbak-1 нет микропроцессора, так как микропроцессоры на момент его разработки еще не производились. Машина построена на интегральных микросхемах TTL малой степени интеграции и сдвиговых МОП-регистрах Intel типа 1404A, выполняющих роль оперативной памяти. Объем памяти составляет 256 байт.
Архитектурно Kenbak-1 является последовательным компьютером, обрабатывающим данные по одному биту за такт«Kenbak Theory of Operation Manual» . p. 16.«Official Kenbak-1 Reproduction Kit» .. С точки зрения программиста компьютер является 8-битным — регистры имеют разрядность 8 бит, а память представлена как набор 8-битных ячеек. Период тактового сигнала составляет 1 микросекунду — это соответствует тактовой частоте 1 МГц (1 миллион тактов в секунду). Однако реальная скорость выполнения программ не превышает 1000 инструкций в секунду. Это связано как с необходимостью последовательной обработки битов байта, так и с использованием сдвиговых регистров в качестве памяти. Использованный тип сдвиговых регистров не позволяет непосредственно обращаться к ячейкам памяти. Чтобы получить значение выбранной ячейки, необходимо ждать, пока ее содержимое появится на выходе регистра.
Регистры +Регистры Kenbak-10706050403020100()Основные регистрыAABBXX (Index)PProgram CounterФлаги000000COA flags000000COB flags000000COX flagsВвод/выводOutputLightsInputSwitches Всего в Kenbak-1 имеется девять регистров. Они не являются аппаратными устройствами и отображаются на память. Регистры A, B и X играют роль регистров общего назначения. Регистр A является неявным адресатом некоторых операций. Регистр X является индексным регистром и используется в режимах индексированной и косвенной индексированной адресации. Регистр P является счётчиком команд. Также имеются три регистра, содержащие флаги переполнения и переноса для регистров A, B и X, соответственно. Регистр ввода позволяет осуществлять ввод данных с переключателей на передней панели, а регистр вывода — производить вывод данных на индикаторные лампы.
Режимы адресации Инструкции Add, Subtract, Load, Store, Load Complement, And и Or являются двухадресными. Один операнд находится в регистре, а второй в памяти. При обращении к памяти могут использоваться пять режимов адресации:
Непосредственный (Immediate, операнд находится во втором байте инструкции) Прямой (Memory, второй байт инструкции является адресом операнда в памяти) Косвенный (Indirect, второй байт инструкции является адресом ячейки памяти, в которой хранится адрес операнда) Индексированный (Indexed, второй байт инструкции прибавляется к регистру X для формирования адреса операнда) Косвенный индексированный (Indirect Indexed, второй байт инструкции является адресом ячейки памяти, значение которой прибавляется к регистру X для формирования адреса операнда)
Таблица инструкций Код инструкции занимает 8 бит. Инструкции могут иметь длину 1 или 2 байта, при этом второй байт содержит непосредственное значение или адрес. Некоторые инструкции имеют несколько возможных кодировок.
Матрица кодов операций для набора инструкций Kenbak-1Старшие восьмеричные разрядыМладший восьмеричный разряд0123456700HALTSFTR A1SET 0 b0 XXXADD A #XXXADD A XXXADD A (XXX)ADD A XXX, XADD A (XXX), X01HALTSFTR A2SET 0 b1 XXXSUB A #XXXSUB A XXXSUB A (XXX)SUB A XXX, XSUB A (XXX), X02HALTSFTR A3SET 0 b2 XXXLOAD A #XXXLOAD A XXXLOAD A (XXX)LOAD A XXX, XLOAD A (XXX), X03HALTSFTR A4SET 0 b3 XXXSTORE A #XXXSTORE A XXXSTORE A (XXX)STORE A XXX, XSTORE A (XXX), X04HALTSFTR B1SET 0 b4 XXXJPD A ≠0 XXXJPD A =0 XXXJPD A <0 XXXJPD A ≥0 XXXJPD A >0 XXX05HALTSFTR B2SET 0 b5 XXXJPI A ≠0 XXXJPI A =0 XXXJPI A <0 XXXJPI A ≥0 XXXJPI A >0 XXX06HALTSFTR B3SET 0 b6 XXXJMD A ≠0 XXXJMD A =0 XXXJMD A <0 XXXJMD A ≥0 XXXJMD A >0 XXX07HALTSFTR B4SET 0 b7 XXXJMI A ≠0 XXXJMI A =0 XXXJMI A <0 XXXJMI A ≥0JMI A >0 XXX10HALTROTR A1SET 1 b0 XXXADD B #XXXADD B XXXADD B (XXX)ADD B XXX, XADD B (XXX), X11HALTROTR A2SET 1 b1 XXXSUB B #XXXSUB B XXXSUB B (XXX)SUB B XXX, XSUB B (XXX), X12HALTROTR A3SET 1 b2 XXXLOAD B #XXXLOAD B XXXLOAD B (XXX)LOAD B XXX, XLOAD B (XXX), X13HALTROTR A4SET 1 b3 XXXSTORE B #XXXSTORE B XXXSTORE B (XXX)STORE B XXX, XSTORE B (XXX), X14HALTROTR B1SET 1 b4 XXXJPD B ≠0 XXXJPD B =0 XXXJPD B <0 XXXJPD B ≥0 XXXJPD B >0 XXX15HALTROTR B2SET 1 b5 XXXJPI B ≠0 XXXJPI B =0 XXXJPI B <0 XXXJPI B ≥0 XXXJPI B >0 XXX16HALTROTR B3SET 1 b6 XXXJMD B ≠0 XXXJMD B =0 XXXJMD B <0 XXXJMD B ≥0 XXXJMD B >0 XXX17HALTROTR B4SET 1 b7 XXXJMI B ≠0 XXXJMI B =0 XXXJMI B <0 XXXJMI B ≥0 XXXJMI B >0 XXX20NOOPSFTL A1SKP 0 b0 XXXADD X #XXXADD X XXXADD X (XXX)ADD X XXX, XADD X (XXX), X21NOOPSFTL A2SKP 0 b1 XXXSUB X #XXXSUB X XXXSUB X (XXX)SUB X XXX, XSUB X (XXX), X22NOOPSFTL A3SKP 0 b2 XXXLOAD X #XXXLOAD X XXXLOAD X (XXX)LOAD X (XXX)LOAD X (XXX), X23NOOPSFTL A4SKP 0 b3 XXXSTORE X #XXXSTORE X XXXSTORE X (XXX)STORE X XXX, XSTORE X (XXX), X24NOOPSFTL B1SKP 0 b4 XXXJPD X ≠0 XXXJPD X =0 XXXJPD X <0 XXXJPD X ≥0 XXX, XJPD X >0 XXX25NOOPSFTL B2SKP 0 b5 XXXJPI X ≠0 XXXJPI X =0 XXXJPI X <0 XXXJPI X ≥0 XXXJPI X >0 XXX26NOOPSFTL B3SKP 0 b6 XXXJMD X ≠0 XXXJMD X =0 XXXJMD X <0 XXXJMD X ≥0 XXXJMD X >0 XXX27NOOPSFTL B4SKP 0 b7 XXXJMI X ≠0 XXXJMI X =0 XXXJMI X <0 XXXJMI X ≥0 XXXJMI X >0 XXX30NOOPROTL A1SKP 1 b0 XXXOR #XXXOR XXXOR (XXX)OR XXX, XOR (XXX), X31NOOPROTL A2SKP 1 b1 XXX—————32NOOPROTL A3SKP 1 b2 XXXAND #XXXAND XXXAND (XXX)AND XXX, XAND (XXX), X33NOOPROTL A4SKP 1 b3 XXXLNEG #XXXLNEG XXXLNEG (XXX)LNEG XXX, XLNEG (XXX), X34NOOPROTL B1SKP 1 b4 XXXJPD UNC XXXJPD UNC XXXJPD UNC XXXJPD UNC XXXJPD UNC XXX35NOOPROTL B2SKP 1 b5 XXXJPI UNC XXXJPI UNC XXXJPI UNC XXXJPI UNC XXXJPI UNC XXX36NOOPROTL B3SKP 1 b6 XXXJMD UNC XXXJMD UNC XXXJMD UNC XXXJMD UNC XXXJMD UNC XXX37NOOPROTL B4SKP 1 b7 XXXJMI UNC XXXJMI UNC XXXJMI UNC XXXJMI UNC XXXJMI UNC XXX
См. также Datapoint 2200 — серийно выпускаемый терминал, выпущенный в 1971 году и пригодный для запуска программ Mark-8 — самодельный микрокомпьютер, разработанный аспирантом Джонатаном А. Титусом и представленный в июльском номере журнала Radio-Electronics за 1974 год Altair 8800 — очень популярный микрокомпьютер 1975 года, ставший источником вдохновения для создания компании Microsoft Gigatron TTL — 8-битный компьютер XXI века без микропроцессора, реализованный на микросхемах TTL и СБИС ОЗУ и ПЗУ
Примечания
Ссылки 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
Категория:8-разрядные компьютеры Категория:Ранние микрокомпьютеры