ЖАНРЫ

Стив Джобс и я: подлинная история Apple
Шрифт:

Также у меня была пара гнезд для чипов памяти PROM. В этих чипах можно было хранить данные в виде маленькой программы, которая не стиралась при выключении компьютера.

У меня в лаборатории было два чипа PROM, на которых могло храниться 256 байт данных. Их было достаточно для крохотной программы. (Сегодня-то программы весят в миллионы раз больше.) Это настолько малый объем памяти, что в текстовом редакторе его хватит лишь на одно предложение.

Я решил записать на эти чипы свою программу-монитор, позволяющую использовать клавиатуру вместо панели управления.

Что такое ARPANET?

Это сокращение от Advanced Research Projects Agency Network – «Сеть агентства передовых исследовательских проектов». ARPANET разрабатывалась Министерством обороны США и стала первой рабочей сетью на основе пакетной коммутации, способной связывать компьютеры по всему миру. Затем она превратилась в то, что сегодня известно под названием Интернет.

ARPANET и Интернет основаны на передаче данных по принципу «пакетной коммутации». Компьютер разбивает фрагмент данных на пакеты, которые можно отправлять по разным линиям связи и затем собирать воедино на другом конце. До этого основным методом была коммутация каналов. Это было похоже на старые телефонные системы начала XX столетия. Каждому звонку соответствовал отдельный канал, и весь сигнал шел только по нему.

Использование пакетной коммутации – феноменальный прорыв, благодаря которому и стал возможен Интернет.

* * *

Чтобы подключить чипы в компьютере – спаять все вместе, – мне потребовалась одна ночь. Еще несколько вечеров я писал 256-байтную программу – причем в буквальном смысле, ручкой на бумаге. У меня здорово получались компактные программы, но здесь была непростая задача даже для меня.

Это была моя первая программа для микропроцессора 6502. Тогда нормальные люди писали программы так: они платили за компьютерное время, за использование терминала и печатали программу. Терминал был подключен к дорогущему здоровенному компьютеру, стоявшему где-то еще. И вот этот компьютер распечатывал вашу программу в виде нулей и единиц, которые микропроцессор мог распознать.

Затем нули и единицы вводились в память RAM или PROM, и программа запускалась. Но я не мог позволить себе платить за компьютерное время и поэтому вынужден был писать программу на бумаге. К счастью, в руководстве к процессору 6502 описывались последовательности нулей и единиц для каждой инструкции, для каждого шага программы. MOS Technologies даже выдавала маленькую карточку, которую можно было носить с собой в кармане: на ней были записаны все нули и единицы для всех нужных инструкций.

Итак, я записал программу на языке машинных кодов на левой стороне страницы. К примеру, я писал «LDA #44», что означало: загрузить данные, соответствующие 44 (в шестнадцатеричной системе счисления) в регистр А микропроцессора.

На правой стороне страницы я с помощью карточки записывал ту же инструкцию в шестнадцатеричной системе счисления. Инструкция из приведенного выше примера записывалась бы как A9 44. Она занимала 2 байта данных и на процессор поступала в таком виде: 10101001 01000100.

Чтобы написать программу, мне понадобилось несколько листов бумаги.

Я еле смог втиснуть все, что нужно, в это крохотное пространство на 256 байт. Я написал две версии: одна позволяла прерывать нажатием клавиши любую запущенную программу, другая – только проверить, что за клавиша нажата. Второй вариант назывался «опросом клавиатуры».

Днем я отнес две эти программы и несколько чипов памяти PROM в другое здание HP, где было оборудование, позволяющее «прожечь» их на чипе.

Но я все еще не мог закончить – и тем более протестировать – эти чипы, не имея памяти. Компьютерной, конечно.

Самым распространенным типом компьютерной памяти в то время были чипы SRAM (статическая RAM). «Крем-сода», «Альтаир» и все остальные компьютеры того времени использовали такую память. Я позаимствовал у Майрона Таттла 32 чипа SRAM. Каждый мог хранить 1024 бита данных. В общей сложности это было 4 килобайта – в шестнадцать раз больше, чем у «Альтаира» (256 байт).

Я спаял отдельную плату SRAM с этими чипами в гнездах и воткнул ее в разъем на моей основной плате.

Итак, я был готов проверить, работает ли мой компьютер.

* * *

Первым делом надо было подключить питание. Я воспользовался розетками рядом с моей кабинкой и проанализировал сигнал на осциллографе. Примерно час я выяснял, что же мешает микропроцессору заработать. Оказалось, что две ножки микропроцессора случайно замкнуло, и сигнал с обеих превратился в бессмысленный шум. Еще одну ножку я погнул, вводя чип в гнездо.

Но я продолжал возиться. Дело в том, что решить проблему со сборкой электронного устройства – настоящий кайф. Именно это и побуждает работать дальше, хотя в процессе ты испытываешь разочарование, гнев, подавленность и усталость, повторяя одно и то же много раз подряд. Ведь в какой-то момент ты понимаешь: все, ты решил проблему!

И наконец такой момент наступил и у меня. Мой микропроцессор заработал, и дело пошло.

Но надо было еще во многом разобраться. Я смог быстро отладить – то есть найти и исправить ошибки – терминальную часть компьютера, опираясь на свой большой опыт разработки терминала. Когда терминал вывел курсор на девятидюймовый черно-белый телевизор, стало ясно: он работает.

Следующий шаг – отладить 256-байтную программу-монитор. Я пару часов пытался заставить работать версию программы с прерываниями, но ничего не выходило. Я не мог заново записать программу в чипы PROM – для этого надо было опять пойти в другое здание. Я изучил спецификации чипа, чтобы понять, в чем ошибся, но до сих пор так и не понял, в чем было дело. Как знает любой инженер, прерывания – хитрая штука. Они могут давать отличные результаты, но вот заставить их работать – задачка непростая.

Наконец я забросил эту затею и взялся за два других чипа, с программой, которая проводила «опрос клавиатуры». Я нажал несколько клавиш, и о чудо! На экране появились буквы!

Ужасно трудно описать это чувство – когда что-то заработало с первой попытки. Это как послать мяч в лунку одним ударом с пятнадцати метров.

Времени было всего 10 вечера. Еще пару часов я практиковался во вводе и выводе данных на экран, убеждался, что они действительно сохраняются в памяти. Я даже набрал несколько очень коротких и простых программ и запустил их. Среди них была программа, печатающая на экране случайные символы.

То воскресенье, 29 июня 1975 года, стало поворотным моментом в истории, хотя тогда я этого и не понимал. Впервые стало возможно печатать символы на клавиатуре и тут же видеть, как они выводятся на экран.

Глава 11

Apple I – первый персональный компьютер

Я не из тех, у кого хватило бы смелости явиться на главное собрание «Клуба самодельных компьютеров», поднять руку и сообщить: «Эй, поглядите-ка, какой классный компьютер я собрал!» Нет, я не смог бы это сделать перед полным гаражом людей.

Поделиться с друзьями: