инструкций.
Итак, я записал программу на языке машинных кодов на левой стороне страницы. К примеру, я писал «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 – первый персональный компьютер
Я не из тех, у кого хватило бы смелости явиться на главное собрание «Клуба самодельных компьютеров», поднять руку и сообщить: «Эй, поглядите-ка, какой классный компьютер я собрал!» Нет, я не смог бы это сделать перед полным гаражом людей.
Но каждую среду после собрания я выставлял на стол свою аппаратуру и отвечал на вопросы. Я был рад всем, кто их задавал.
Как только компьютер, позже ставший известный под именем Apple I, заработал, я стал показывать его на каждом собрании. Я никогда не планировал выступление, а просто запускал демонстрацию и позволял всем задавать вопросы, на которые мне хотелось дать ответ. Я знал, что вопросы будут.
Я так гордился своим компьютером и так был уверен в важности нашего клуба для будущего компьютерной техники, что сделал, наверное, сотню копий с моих разработок (в том числе программы- монитора) и раздавал их всем желающим. Я надеялся, что они смогут собрать собственные компьютеры по моей схеме.
Я жаждал, чтобы все увидели эту замечательную разработку своими глазами. Ведь мой компьютер состоял всего из тридцати чипов – это просто шокировало народ. Примерно столько же было в «Альтаире» – вот только от «Альтаира» не было никакого толку, если не докупать к нему кучу дорогостоящего оборудования. Мой же компьютер был изначально недорогим. Его можно было подключить к обычному домашнему телевизору, а не выкладывать тысячи долларов за дорогой телетайп. Перед нами открывался целый новый мир.
И я не намерен был ограничиваться вводом нулей да единичек. Я еще со школы стремился иметь собственный компьютер, на котором можно было бы программировать. Хотя я тогда думал, что программировать буду на «Фортране».
Для моего компьютера еще не было никаких языков программирования. В 1975 году один парень – звали его Билл Гейтс – стал довольно популярен в наших кругах. Он написал интерпретатор языка «Бейсик» для «Альтаира». В нашем клубе была его копия на перфоленте, и ее можно было прочесть с помощью телетайпа. Это занимало около тридцати минут. А еще примерно тогда же вышла книга «Компьютерные игры на “Бейсике” для чайников». Я чувствовал, куда дует ветер.
Вот почему я решил, что подходящим языком для Apple I и его микропроцессора 6502 будет «Бейсик». И если бы я написал для него «Бейсик», то мог бы оказаться первым. Я мог бы стать знаменитым. Обо мне говорили бы: «О, Стив Возняк, это он сделал “Бейсик” для 6502-го!»
В любом случае достаточно было одного взгляда на мой компьютер, чтобы узреть будущее. И пути назад уже не было.
Когда я в первый раз демонстрировал свой компьютер, он был основан на статических микросхемах памяти (SRAM) того же типа, что в моем компьютере «Крем-сода». Но в журналах по электронике, которые я читал, писали о новом чипе «динамической» памяти (DRAM). На одном таком чипе могло быть установлено 4 килобита памяти.
Журналы восхваляли эту разработку: впервые полупроводниковая память стала дешевле памяти на магнитных сердечниках. И во всех основных моделях компьютеров, например у IBM и Data General, все еще использовалась старая память.
4 килобита памяти – а меньше я использовать не мог, – это всего лишь 8 чипов вместо 32 чипов SRAM, которые мне пришлось позаимствовать у Майрона. Я со школы всегда старался использовать как можно меньше чипов, так что это было то, что доктор прописал.
Самое важное различие между SRAM и DRAM в том, что чипам DRAM нужна постоянная регенерация, иначе их содержимое будет стираться. Иными словами, микропроцессору нужно электрически подзаряжать примерно 128 разных ячеек памяти каждую двухтысячную долю секунды, чтобы чип не забыл, что на нем записано.
Я подключил DRAM, остановив тактовый сигнал чипа и передачу информации и привязав их к «горизонтальной развертке» телевизора.