Наш общий знакомый рассказал про Пола Гилберта, студента университета по электротехнике; мы разыскали его в конце лета. Мы несколько раз встретились, и Пол построил рабочую схему машины – мы назвали ее (и наше партнерство) Traf-O-Data (много позже я спросил Билла, откуда он взял такое название; он ответил, что от «jack-o’-lantern» – фонаря-тыквы. Мне это показалось странным). Чувствуя себя предпринимателями, мы мечтали о том, как к нам потекут денежные реки. Ведь, имея на руках наши удобные таблицы данных о дорожном движении, муниципалитеты смогут решить, где устанавливать светофоры, а где в первую очередь ремонтировать дороги. Разве не пожелают департаменты общественных работ во всем мире приобрести машину Traf-O-Data?

Пол Гилберт как-то добился университетской скидки, и мы заказали 8008-й в местном магазине электроники. Мы с Биллом наскребли 360 долларов и поехали за чипом. Продавец протянул нам картонную коробочку, которую мы немедленно открыли – и впервые в жизни увидели микропроцессор. Завернутый в алюминиевую фольгу, вдавленный в маленькую пластину из черной резины, внутри покоился тонкий прямоугольник длиной в дюйм. Для двух парней, чья юность прошла среди громадных компьютеров, это было чудо.

– Кучу денег за такую фитюльку, – сказал Билл.

Но я понимал, о чем он думает: в этой коробочке умещается мозг целого компьютера. Мы отвезли чип Полу Гилберту на кафедру физики, и он принялся за работу.

Создавая программы для Traf-O-Data, мы столкнулись с проблемой. Мы знали, что будет мучительно и даже бессмысленно писать программы на самом 8008-м. Нужно было на пустом месте создавать средства разработки, включая адаптированный Ассемблер, программу, которая будет переводить команды Ассемблера в реальные байты. Хотя 8008-й мог адресовать 16 килобайт памяти, мы могли использовать на платах памяти только четверть этого объема – совершенно недостаточно для разработки.

Как же программировать такой ограниченный микропроцессор на еще не существующей машине? Для меня ответ был очевиден: нужно имитировать окружение 8008-го на большой машине. Описание симуляторов впервые появилось в литературе в середине 1960-х, когда инженер Дари Мосс разработал способ, позволяющий компьютеру IBM 360 «эмулировать» предыдущие модели компьютеров и выполнять программы, написанные для них. Работа Мосса продемонстрировала техническую идею, в теории сформулированную еще Аланом Тьюрингом в 1930-х: любой компьютер можно запрограммировать так, чтобы он вел себя как другой компьютер. Программа подчиняла «железо». Хотя мне не приходилось читать, чтобы кто-нибудь симулировал микропроцессор, я понял, что это будет несложно – просто нужно заставить большой компьютер действовать как маленький. При этом мы можем использовать громадную память мейнфрейма и развитые средства разработки.

Мы и представить не могли, сколько трудностей нас ждет. В университетской лаборатории Пол Гилберт конструировал жутко запутанный прототип: больше тысячи медных проводов вились вокруг десятков золоченых клемм на двух монтажных платах. Дизайн и разводка машины постепенно вырисовывались, но Полу потребовался год, чтобы заставить работать капризные чипы памяти. Все это время я, вернувшись в штат Вашингтон, бился над симуляцией на IBM 360. Отладка на компьютере «пакетной обработки» – буквально сизифов труд: два шага вперед – полтора назад.

В ту зиму Билл выбрался ко мне в Пуллман во время жуткого похолодания; мы пешком прошли две мили до университетского компьютерного центра; термометр на здании банка застыл на минус тринадцати. Воздух так обжигал, что говорить было больно. Когда добрались до цели, моя борода покрылась льдом. Билл, дрожа, спросил:

– В Пуллмане что – всегда так холодно?

Больше зимой он не приезжал.

На Рождество Биллу позвонил Бад Пемброк – тот, что нанимал нас делать расчетную программу для Information Services Inc. Затевался большой программный проект для Бонневильского энергетического управления, и Бад прочесывал местность в поисках программистов, понимающих в PDP-10. Мне еще не исполнилось 20, а Биллу было всего 17, но возраст не имел значения.

– И будете получать оклад, – добавил Бад.

– Сколько? – поинтересовался Билл.

– Сто шестьдесят пять долларов в неделю.

Четыре доллара в час – крохи для опытного программиста даже по тем временам, но мы с Биллом не верили своему счастью. Появилась возможность снова работать вместе на PDP-10, да еще и за деньги! Я был рад отдохнуть от штата Вашингтон. Билл закончил обязательные курсы в Лейксайде и получил разрешение работать над проектом последнего триместра вне стен школы. Мы ответили Баду, что участвуем.

Перейти на страницу:

Похожие книги