Глава 41. Алексей

Сентябрьский дождь хлестал в огромные, в одну нитку остекленные окна лаборатории КБ-3 с монотонностью плохо настроенного метронома. Вода струилась по мутному стеклу, искажая желтые пятна уличных фонарей во внутреннем дворе завода «Электронмаш», превращая их в растекающиеся кляксы акварели. За окном была глухая советская осень тысяча девятьсот семьдесят восьмого года. Внутри, в тесном помещении, заставленном кульманами, осциллографами С1-65, мотками проводов и остовами старых телевизоров, царила густая, почти осязаемая тишина.

Я сидел за центральным верстаком один. Вся команда ушла час назад. Михалыч отправился домой к жене, оставив на доске роковую цифру «5000», выведенную жирным, крошащимся мелом. Липатов, так и не смыв до конца калужскую заводскую копоть с лица, уехал отсыпаться после своего героического марш-броска с рюкзаками, набитыми стальными скобами. Пашка ускакал в общагу, прихватив с собой остатки сушек. Громов и Люба, наверное, где-то в недрах машинного зала продолжали спорить о том, как лучше переразвести ту самую варварски припаянную микросхему, чтобы она влезла в жесткие рамки промышленных Технических Условий.

А я остался. Мне нужно было это время. Время тишины, когда стихает бесконечный производственный гул, прекращаются крики из коридора, замолкают телефонные звонки из Бюро снабжения, и можно просто посмотреть на то, что мы, черт возьми, натворили.

Передо мной, в центре освобожденного от мусора стола, освещенный единственной настольной лампой, стояла «Сфера-80».

В официальных документах это устройство проходило под зубодробительным названием «Учебно-демонстрационный вычислительный комплекс». Бюрократия требовала маскировки. Мы не могли назвать это «персональным компьютером», потому что в парадигме Госплана персональным мог быть только автомобиль или пенсия, а ЭВМ — это монстр, занимающий этаж и обслуживаемый жрецами в белых халатах.

Я протянул руку и провел кончиками пальцев по корпусу.

Мои пальцы легли на клавиатуру. Это была гордость Липатова. Двойное литье клавиш — буквы не нарисованы краской, которая сотрется через месяц активной печати, а отлиты из пластика другого цвета. Вечная маркировка.

Я нажал на пробел.

Клац.

Звук был сочным, механическим, с легким металлическим отзвуком. Сталь 65Г, та самая пружинная проволока, ради которой Сергей Дмитриевич Липатов пожертвовал своим безупречным внешним видом, работала идеально. Никакого перекоса. Никакого заклинивания, даже если нажать на самый край длинной клавиши. Пятьдесят грамм усилия на срабатывание.

Я усмехнулся своим мыслям. В моем будущем, там, в 2026 году, откуда меня выдернуло в это тело инженера Алексея Морозова, гики на форумах могли часами обсуждать преимущества переключателей «Cherry MX Blue» перед «Red», спорить о смазке стабилизаторов и прокладывать корпуса шумоизоляционной пеной. А я бы, наверное, тогда всё отдал, чтобы они оказались здесь, в семьдесят восьмом, и попробовали выбить из завода хотя бы ровную штамповку, чтобы клавиша просто возвращалась на место, а не западала навсегда, замыкая геркон.

Здесь не было абстракций. Здесь инженерия была живой, кровоточащей, пахнущей канифолью, машинным маслом и потом. Если ты хочешь, чтобы твой код работал быстрее, ты не скачиваешь новую версию фреймворка. Ты берешь паяльник, режешь дорожки на текстолите и перекидываешь сигналы напрямую, минуя дешифратор, как это сделали Люба с Громовым.

Я щелкнул тумблером питания на задней панели.

Тумблер был тугой, военный, с четким щелчком, способным, кажется, перерубить гвоздь. Внутри массивного корпуса утробно загудел трансформатор блока питания. Никаких импульсных миниатюрных блоков — честный, тяжелый Ш-образный сердечник, намотанный медью с запасом по мощности.

Следом я потянулся к ВКУ — видеоконтрольному устройству, стоявшему рядом. По сути, это был распотрошенный телевизор «Юность», лишенный радиоблока, зато снабженный прямым видеовходом, который так виртуозно спаяла наша Наташа Рогова. Я нажал кнопку на его передней панели.

Раздался характерный, пробирающий до костей высокочастотный писк строчного трансформатора. Кинескоп начал прогреваться. Это не происходило мгновенно. Сначала экран был глубоко, мертвенно черен. Затем в центре появилось тусклое серое пятно, которое медленно, лениво расползлось по краям прямоугольного экрана, превращаясь в светящийся растр. Люминофор загорелся приятным, чуть зеленоватым светом.

На экране мигнул мусор — случайные символы, остатки статического заряда в микросхемах ОЗУ, которые еще не инициализировались. И через полсекунды, когда блок сброса отработал задержку, экран очистился.

В левом верхнем углу появился одинокий, ровный, пульсирующий прямоугольник курсора. И надпись, выведенная знакогенератором, который мы прошивали вручную, пережигая перемычки в микросхемах ПЗУ:

`СФЕРА-80. ВЕРСИЯ 1.4`

`ОЗУ: 16 КБАЙТ`

`ГОТОВ`

Шестнадцать килобайт. Я смотрел на эту цифру, и меня накрывало сложным коктейлем эмоций. В моем прошлом-будущем одна иконка на рабочем столе весила в сто раз больше. Фотография кота, отправленная в мессенджере, сожрала бы эту память и даже не поперхнулась. А здесь, в этих шестнадцати килобайтах, умещалась вся наша вселенная. Операционная система (если этот примитивный монитор машинных кодов можно было так назвать), видеобуфер, рабочие переменные и пространство для кода пользователя. И мы бились за каждый байт, как за сталинградскую землю. Громов неделями не спал, переписывая подпрограммы вывода символов на экран, чтобы сэкономить пару десятков байт и пару тактов процессорного времени.

Я выдвинул ящик стола. Там, среди россыпи резисторов МЛТ, кембриков и пустых пачек от «Явы», лежал обычный бытовой магнитофон «Электроника-302». И рядом с ним — стопка аудиокассет.

Перфоленты, этот проклятый рудимент вычислительной эры, я ненавидел всеми фибрами души. Они рвались, они путались, они превращали программирование в наказание. Моей личной, маленькой вендеттой против отсталости этого времени было создание кассетного интерфейса. Чтобы программы можно было грузить с обычной аудиокассеты МК-60 производства шосткинского комбината «Свема».

Я выбрал одну кассету. Она была без полиграфии, просто черная пластмассовая коробочка с белой бумажной наклейкой. На наклейке моим почерком, шариковой ручкой было выведено одно слово:`TEST_T.BIN`.

Я вставил кассету в магнитофон, с усилием нажал тугую клавишу «Воспроизведение» и одновременно набрал на клавиатуре «Сферы» директиву загрузки: `L`.

Магнитофон зашипел. Пленка, покрытая магнитным слоем диоксида железа, поползла по магнитной головке. Через динамик магнитофона тихо, на минимальной громкости, полился до бли привычный звук данных.

Сначала это был ровный, высокий, сверлящий мозг писк — пилот-тон, который синхронизировал нашу примитивную схему фазовой автоподстройки частоты. Схема «ловила» ритм. А затем писк сменился рваным, агрессивным скрежетом. Белый шум, состоящий из нулей и единиц, закодированных частотной модуляцией. 1200 герц для нуля, 2400 герц для единицы. Это звучало как крик умирающего кибернетического насекомого.

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

Загрузка четырех килобайт кода занимала почти полторы минуты.

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

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

Писк оборвался. Я остановил магнитофон. На экране «Сферы» мигнула надпись:

`ЗАГРУЗКА ЗАВЕРШЕНА. ОК.`

Я набрал команду запуска и нажал Липатовский пробел из стали 65Г.

Экран очистился. На долю секунды кинескоп потускнел — процессор перестраивал адресацию видеопамяти. А затем в центре экрана, нарисованный с помощью псевдографики — тех самых специальных символов с рамками и квадратиками, которые я заставил Громова вшить в знакогенератор вопреки всем стандартам ЕС ЭВМ, — появился «стакан». Прямоугольная шахта шириной в десять клеток и высотой в двадцать.

Сверху, медленно, подчиняясь прерываниям таймера, начала падать фигура, состоящая из четырех квадратиков, сложенных буквой «Г».

Я написал Тетрис.

Я сделал это в тайне от всех, по ночам, когда лаборатория пустела. Алексей Пажитнов придумает эту игру в Вычислительном центре Академии наук СССР только в 1984 году, на «Электронике-60». До этого события оставалось еще целых шесть лет. Но я не мог ждать. Мне нужно было что-то свое. Что-то из моего времени, из моего детства, перенесенное сюда, на это примитивное железо, собранное из деталей, выменянных на спирт и шоколадки в Бюро снабжения.

Я нажал клавишу со стрелкой. Фигура послушно сдвинулась вправо. Нажал пробел — фигура перевернулась вокруг своей оси.

Логика игры была написана на чистом ассемблере. Это был тот еще вызов. У нас не было сопроцессоров, не было аппаратных спрайтов или аппаратного ускорения графики. Каждое смещение фигуры означало, что процессор должен был стереть четыре символа в старых координатах видеопамяти и нарисовать четыре символа в новых. Нужно было проверять коллизии — не вышла ли фигура за границы «стакана», не наткнулась ли она на уже упавшие блоки. Если наткнулась — остановить её, перенести в массив статического поля, запустить цикл проверки заполненных линий. Если линия заполнена — сдвинуть весь массив блоков сверху вниз на одну строку.

И всё это — укладываясь в миллисекунды между циклами обновления телевизионного кадра, чтобы картинка не мерцала. Громов бы удавился от зависти, увидев, как я оптимизировал цикл сдвига памяти, используя индексные регистры и прямую адресацию.

Я играл. Падала длинная «палка», закрывая сразу четыре ряда. Экран мигал, линии исчезали, счетчик очков, выведенный справа от «стакана», прибавлял цифры. Падал квадрат. Падала «зюка».

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

Клац-клац. Клац.

Я смотрел на падающие пиксельные блоки, и меня накрывало. Не гордость инженера, нет. Меня накрывала чудовищная, всепоглощающая тоска по дому.

Я прагматик. Я давно принял правила игры этого мира. Я научился не выделяться, говорить правильные слова на партсобраниях, чтобы не дразнить гусей. Я научился решать проблемы шаг за шагом: нет процессора — соберем на рассыпухе, нет клавиатуры — заставим Липатова выжать из завода максимум, нет мониторов — припаяем разъемы к бытовым телевизорам. Я научился бороться с бюрократией, выкручивая формулировки ТЗ так, чтобы они удовлетворяли всех начальников.

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

Там я не был ни кем особенным. Просто хорошим сеньор-разработчиком. Винтиком в огромной корпоративной машине.

А здесь…

Я отвлекся, фигура упала криво, перегородив доступ к нижним пустым ячейкам. Я попытался исправить ситуацию, но темп игры вырос. Фигуры сыпались всё быстрее. Это была классическая ошибка в балансировке сложности — я слишком сильно уменьшил задержку в цикле таймера на высоких уровнях. Экран быстро заполнялся. Последняя прямая фигура не успела перевернуться и уперлась в потолок «стакана».

Игра замерла. В центре экрана появилась надпись:

`КОНЕЦ ИГРЫ`.

Я убрал руки с клавиатуры и потер уставшие глаза.

А здесь я создавал историю.

Без пафоса, без лозунгов про спасение СССР от технологического отставания. Я не питал иллюзий, что моя «Сфера-80» магическим образом изменит экономику огромной, тяжеловесной страны, зависящей от нефтяной иглы и плановых абсурдов. Но я знал одно: этот компьютер реально работает.

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

Я сдвинул историю на один крошечный, но очень важный миллиметр.

И это стоило того, чтобы сидеть здесь, слушать вой строчного трансформатора и дышать пылью.

Взгляд снова упал на доску с цифрой «5000».

Пять тысяч штук в год. Седых был прав, и Михалыч был прав. Одно дело — собрать пятьдесят штук в подвале, вылизывая каждую пайку, героически преодолевая трудности, отправляя гонцов в электричках в Калугу и Москву, договариваясь за спирт с термистами. Это партизанщина. Это романтика стартапа, выражаясь языком моего времени.

Но пять тысяч — это промышленность. Это конвейер. Это тетки в синих халатах на заводе «Мираж», которым плевать на эстетику кода Громова и на гениальную разводку Любочки. Им нужно, чтобы плата вставлялась в пазы, а провода обжимались стандартным инструментом. Если мы не напишем идеальные Технические Условия, если мы не создадим дуракоустойчивую систему, завод просто пережует нашу «Сферу» и выплюнет мертворожденный кусок текстолита.

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

Я улыбнулся. Что ж, вызов принят.

Я протянул руку и щелкнул тумблером питания ВКУ. Экран мгновенно погас, оставив в центре яркую белую точку, которая медленно, неохотно угасала в течение нескольких секунд, пока высокое напряжение стекало с анода кинескопа. Писк трансформатора стих.

Затем я нажал тумблер на самом системном блоке «Сферы». Тяжелый щелчок, и гул блока питания прекратился. Машина уснула.

В лаборатории снова стало тихо, только дождь продолжал барабанить по карнизам.

Я аккуратно нажал кнопку выброса на магнитофоне, достал кассету с Тетрисом и убрал её на место. Никому пока не нужно это видеть. Пусть Громов думает, что вершина интерактивной графики — это его программа расчета баллистических траекторий. Время для игр еще придет.

Я встал со стула, чувствуя, как затекли спина и плечи. Окинул взглядом лабораторию. Кульманы, чертежи, разбросанные детали. Хаос творческого процесса, который завтра с утра нам придется начать превращать в строгие рамки ГОСТов.

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

Я выключил настольную лампу. Тень поглотила «Сферу», оставив лишь смутный серый силуэт на столе.

Я был готов. Пора было идти домой.

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

Загрузка...