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