Слово "персональный" может значительно глубже отражать дух изобретательства. Персональным можно назвать проект, которому человек целеустремлённый дарит всю свою творческую энергию. А ещё "персональный" - это нечто глубоко личное, то, что люди проносят в себе через всю свою жизнь.
Именно так стоит охарактеризовать компьютер Kenbak-1 - устройство, которому крупнейшие компьютерные музеи отдают право именоваться "первым персональным".
И не только потому, что эта вычислительная машина одной из первых вышла на рынок персональной вычислительной техники. Kenbak-1 - настоящий "спектакль одного актёра" - проект всей жизни талантливого инженера Джона Бланкенбейкера.
1949 год. Рождение идеи
Идея, благодаря которой появился Kenbak-1, была продуктом... лени выпускника Орегонского государственного колледжа Джона Бланкенбейкера, который трудился ассистентом в местной лаборатории физики. В общем-то вполне обычное явление. Трудоёмкие расчёты, требовавшие многочасовых манипуляций с логарифмической линейкой, заставили начинающего физика задуматься об автоматизации этих рутинных операций. Однажды в одном из номеров Popular Science Бланкенбейкер читает о компьютерах-вычислителях размером с баскетбольную площадку, состоящих из десятков тысяч ламп, с лёгкостью "разгибающих" любые логарифмы. Вычислитель - это было именно то, что нужно! И неважно, сколько ламп у него внутри. Важно то, что в основе всех вычислений лежат всего два числа: ноль и единица.
Физик Бланкенбейкер с головой погружается в премудрости булевой алгебры, попутно решая инженерную проблему разработки аналога ламповых ЭВМ на основе механических реле. К началу пятидесятых инженер понимает, что придуманный им релейный компьютер вполне реализуем, но только не на зарплату лаборанта. А ещё Бланкенбейкер серьезно заболевает компьютерами и начинает интересоваться их возможностями при любом удобном случае.
В 1951 году один из таких счастливых случаев забрасывает его в Национальное бюро по стандартизации (NBS - National Bureau of Standarts), в котором в то время был установлен компьютер SEAС (Standarts Eastern Automatic Computer). Удача была на самом деле практически нереальная, поскольку на четыре доступных места операторов SEAC претендовало больше сотни человек.
Тогда Бланкенбейкер и увидел внушительный вычислитель, который круглосуточно был занят расчётами задач для различных государственных структур. Обычному человеку с его обычными задачами никогда не светило воспользоваться мощью SEAC. Впрочем, иногда на SEAC всё же можно было попрограммировать свободно. Например, во время грозы, когда работа компьютера считалась не особенно надёжной. Именно под раскаты грома Джон Бланкенбейкер и написал свою первую программу. Прекрасно работающий во время грозы код намертво заклинивал ламповые триоды SEAC при солнечной погоде, заставляя недоумевать остальных техников. Этот курьёз Бланкенбейкер запомнил на всю жизнь. А ещё опыт работы с SEAC сформировал у инженера простую мысль: по-настоящему хороший компьютер должен быть доступным любому человеку.
1952 год. Единственный триггер
Окончив в 1952 году колледж, Бланкенбейкер поступает на работу в авиационный концерн знаменитого Говарда Хьюза. Увлечённость компьютерами привела его в тогдашний IT-отдел, разрабатывающий табуляторы - специализированные железки, производящие бизнес-расчёты.
Начальник, под руководством которого трудился Бланкенбейкер, был помешан на оптимизации. Любимая присказка босса гласила о том, что каждый триггер, который инженер добавляет в схему табулятора, увеличивает его стоимость на пятьсот долларов.
Может, эта начальственная присказка, а может, просто неуёмный изобретательский пыл Бланкенбейкера приводит его к мысли о том, что идеальный компьютер может состоять всего из одного триггера. При условии, что он будет оборудован хранилищем данных, или, попросту, памятью. Свою идею молодой инженер описывает в статье "Логически программируемые компьютеры" и публикует в специализированном журнале Института радиоинженеров (Institute of Radio Engeneers) - прародителя знаменитого института IEEE (Institute of Electrical and Electronics Engineers), занимающегося ныне вопросами стандартизации в области электроники и электротехники.
Сам Бланкенбейкер вспоминает об этом времени так: "С идеей одного триггера и вдолбленной в меня мыслью моего босса об удорожании устройства на пятьсот долларов, при добавлении в него одного логического элемента, я размышлял о компьютере, который бы стоил не дороже пятисот долларов. Это стало моей навязчивой идеей".
1970 год. Рождение Kenbak-1
К реальному воплощению своей идеи фикс Бланкенбейкер приступает только осенью 1970 года, когда волею судеб временно становится безработным. Следуя давней изобретательской традиции, он располагается в гараже своего дома, разрабатывает вначале схему вычислителя, а затем и разводку печатной платы для него.
Травлением дорожек материнской платы для Kenbak-1 Бланкенбейкер занимался лично
Изобретатель не ставит перед собой грандиозных задач. Основными критериями, которыми он руководствуется при проектировании своего компьютера, являются низкая цена и простота освоения, позволяющая осилить мудрёную науку программирования любому желающему. Он прекрасно осознавал, что его детище никогда не сможет состязаться в скорости работы с настоящими мейнфреймами. Но этого и не нужно. Главное, чтобы принципы их работы совпадали. В этом смысле в основу своего компьютера Бланкенбейкер положил идею вычислителя фон Неймана с хранимой в памяти программой.
Стремясь к максимальной экономии, изобретатель лишает свой компьютер дорогостоящих устройств ввода-вывода. Ввод данных он реализует на переключателях, а в качестве устройства вывода использует линейку лампочек. Основной модуль вычислителя был сделан на транзисторно-транзисторной логике (TTL), представленной тогдашней новинкой - мелкомасштабными интегральными схемами. Фактически Бланкенбейкеру удалось реализовать TTL-вариант центрального процессора. На календаре был 1970 год, и до появления первого микропроцессора Intel 4004 оставался целый год. Кстати говоря, примерно в это же время на базе TTL свой игровой вычислитель создает другой талантливый изобретатель - Ральф Баер.
Аналог микропроцессора в Kenbak-1 был реализован на 132 элементах TTL
В 1971 году печатная плата для компьютера Бланкенбейкера была готова. Суммарная стоимость всех компонентов не превышала ста пятидесяти долларов - беспрецедентно мало, учитывая, что самый доступный компьютер в то время стоил несколько тысяч.
Технические характеристики гаражной ЭВМ были более чем скромными. TTL-эквивалент процессора обеспечивал скорость вычислений, соответствующую работе микропроцессора с тактовой частотой один мегагерц, а оперативная память составляла всего 256 байт и была реализована на двух регистрах сдвига, хранящих по 1024 бита каждый. Всего на материнской плате размещалось 132 TTL-элемента, для работы которых использовалось питание пять и двенадцать вольт. Чтобы регистры сдвига - самый горячий элемент компьютера - не перегревались, напротив них был установлен небольшой вентилятор.
Процессорный модуль компьютера был представлен тремя регистрами, два из которых, A и B, были главными регистрами арифметико-логического устройства, реализующими команды Load, Store, Add, Substract, And, Or, Shift и Rotate. Ещё один регистр Х использовался АЛУ при работе с индексной моделью памяти. В качестве счётчика команд использовался регистр P, а ещё два регистра.
Адреса памяти, по которым можно было обратиться к основным регистрам Kenbak-1
Процессорный модуль работал с восьмеричной системой счисления.
Формат инструкции, обрабатываемой процессорным модулем, был предельно прост. В двухбайтовой конструкции первый байт содержал команду, а во втором могла размещаться константа, адрес памяти или указатель на адрес.
При этом логика компьютера реализовывала несколько моделей адресации: непосредственную, косвенную, индексную и косвенно-индексную.
Разработанный набор инструкций был исчерпывающим для реализации полноценного языка ассемблера, специализированного под придуманный Бланкенбейкером процессорный модуль. В активе были инструкции проверки состояния регистров и логических условий, перехода, управления переключением битов в любой ячейке памяти, сдвига на несколько двоичных разрядов.
Для ввода данных в восьмеричном формате, а также очистки памяти, записи и сохранения в ней введённого числа, запуска и остановки программы пользователь применял набор переключателей. Результаты каждого шага промежуточных вычислений, а также конечный результат работы программы отображался с помощью лампочек.
Свою конструкцию Бланкенбейкер поместил в корпус "Grand Prix", который был отобран из нескольких предварительно закупленных вариантов. Он идеально подошёл для размещения в нём материнской платы и блоков питания. Передняя и задняя панели компьютера были самодельными.