Затем нули и единицы вводились в память 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 – первый персональный компьютер
Я не из тех, у кого хватило бы смелости явиться на главное собрание «Клуба самодельных компьютеров», поднять руку и сообщить: «Эй, поглядите-ка, какой классный компьютер я собрал!» Нет, я не смог бы это сделать перед полным гаражом людей.
Но каждую среду после собрания я выставлял на стол свою аппаратуру и отвечал на вопросы. Я был рад всем, кто их задавал.
Как только компьютер, позже ставший известный под именем Apple I, заработал, я стал показывать его на каждом собрании. Я никогда не планировал выступление, а просто запускал демонстрацию и позволял всем задавать вопросы, на которые мне хотелось дать ответ. Я знал, что вопросы будут.
Я так гордился своим компьютером и так был уверен в важности нашего клуба для будущего компьютерной техники, что сделал, наверное, сотню копий с моих разработок (в том числе программы-монитора) и раздавал их всем желающим. Я надеялся, что они смогут собрать собственные компьютеры по моей схеме.
Я жаждал, чтобы все увидели эту замечательную разработку своими глазами. Ведь мой компьютер состоял всего из тридцати чипов – это просто шокировало народ. Примерно столько же было в «Альтаире» – вот только от «Альтаира» не было никакого толку, если не докупать к нему кучу дорогостоящего оборудования. Мой же компьютер был изначально недорогим. Его можно было подключить к обычному домашнему телевизору, а не выкладывать тысячи долларов за дорогой телетайп. Перед нами открывался целый новый мир.
И я не намерен был ограничиваться вводом нулей да единичек. Я еще со школы стремился иметь собственный компьютер, на котором можно было бы программировать. Хотя я тогда думал, что программировать буду на «Фортране».
Для моего компьютера еще не было никаких языков программирования. В 1975 году один парень – звали его Билл Гейтс – стал довольно популярен в наших кругах. Он написал интерпретатор языка «Бейсик» для «Альтаира». В нашем клубе была его копия на перфоленте, и ее можно было прочесть с помощью телетайпа. Это занимало около тридцати минут. А еще примерно тогда же вышла книга «Компьютерные игры на “Бейсике” для чайников». Я чувствовал, куда дует ветер.
(adsbygoogle = window.adsbygoogle || []).push({});