Глава 42. Письмо

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

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

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

Цифра «5000», которую Иван Михайлович тогда так драматично вывел мелом на доске, больше не казалась абстракцией. Она обрела плоть. Она превратилась в стопки папок с Техническими Условиями, которые Наталья Сергеевна Рябинина, наша богиня бюрократии, с ледяным спокойствием штамповала, переводя наши гениальные (и не очень) инженерные заплатки на сухой язык нормативных документов. Мы больше не были партизанским отрядом, собирающим чудо-машину на коленке из того, что удалось выменять за спирт. Мы стали винтиками конвейера. И это было больно.

Каждое утро теперь начиналось не с радости открытий, а с рутины.

Я потянулся к кружке. Внутри плескалась мутная коричневая жидкость, которую в местном буфете оптимистично называли «кофейным напитком „Летний“». Судя по вкусу, желуди для этого напитка собирали в год смерти Сталина, а цикорий перемалывали вместе с корнями и землей. В моем родном 2026 году бариста в хипстерской кофейне сделал бы харакири темпером, если бы ему предложили сварить такое. Я же, тяжело вздохнув, сделал большой глоток. Горячо. Горько. Кофеин там если и был, то исключительно в виде гомеопатии, но ритуал есть ритуал.

Часы над дверью, заключенные в карболитовый корпус, показывали десять утра. Лаборатория пока пустовала — Громов с Любой опять застряли в машинном зале, воюя с перфокартами ЕС ЭВМ для расчета какой-то новой разводки, Липатов ругается по телефону с цехом пластмасс из-за усадки полистирола, а Михалыч был на совещании у Седых.

Тишину разорвал скрип открывающейся двери. На пороге появилась секретарь Людочка. Как всегда, безупречно накрашенная, с начесом, которому позавидовала бы любая солистка ВИА, она несла в руках картонную папку-скоросшиватель. От нее пахло духами «Красная Москва» и свежей типографской краской.

— Алексей Николаевич, доброе утро, — пропела она, грациозно огибая остов разобранного осциллографа С1-65, который кто-то бросил прямо на проходе. — Вам тут почта. И на подпись от Виктора Петровича.

Она положила папку на край моего стола.

— Спасибо, Людочка, — я выдавил из себя вежливую улыбку, косясь на папку. В ней наверняка лежала очередная директива о повышении социалистических обязательств или требование сократить расход припоя ПОС-61 на пятнадцать процентов в рамках экономии цветных металлов.

— И вот еще, — Людочка извлекла из кармана своей строгой юбки небольшой, изрядно помятый бумажный конверт. Он был не казенный, коричневый, а обычный, почтовый, бледно-голубого цвета, с наклеенной маркой за четыре копейки. — Это не по линии министерства. Пришло на адрес заводоуправления, в экспедицию, с пометкой «В конструкторское бюро, инженерам, которые сделали ЭВМ „Сфера“». Девчонки на вахте не знали, куда девать, отдали мне. А я вам несу.

Я удивленно приподнял бровь и взял конверт. Бумага была дешевой, рыхлой. Адрес написан синей шариковой ручкой. Почерк был странным: буквы скакали по строкам, то увеличиваясь в размерах, то скукоживаясь, нажимы были неравномерными, из-за чего в паре мест бумага чуть не прорвалась. Так пишут люди, которые редко держат в руках ручку, или…

— От кого это? — спросил я, разглядывая обратный адрес.

— Да школьник какой-то, наверное, — хихикнула Людочка, поправляя прическу. — Там школа номер тринадцать указана. Ладно, Алексей Николаевич, я побежала, у Петровича сегодня настроение — просто туши свет, требует сводки по соцсоревнованию.

Она упорхнула, оставив после себя шлейф парфюма.

Я повертел конверт в руках. Школа № 13. Одна из пилотных школ, где мы три недели назад устанавливали класс из двенадцати «Сфер».

Внутри шевельнулось забытое, почти детское любопытство. В моем будущем обратная связь от пользователей сыпалась из всех щелей: баг-репорты в Jira, гневные отзывы в App Store, треды на Reddit. Пользователь был абстрактной, часто токсичной массой, которая всегда была недовольна тем, что кнопка недостаточно круглая, а анимация подтормаживает на старом андроиде.

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

Я подцепил край конверта и аккуратно вскрыл его. Внутри лежал один-единственный тетрадный лист в клеточку, вырванный из середины — виднелись следы от скрепок.

Я развернул его, разгладив ладонью сгибы.

Текст был написан все той же синей пастой, с несколькими зачеркиваниями и кляксами.

«Здравствуйте, уважаемые инженеры завода Электронмаш!

Пишет вам ученик 7 „Б“ класса школы № 13 Снегирев Петя. Наша учительница физики Елена Михайловна разрешила мне и еще двум мальчикам оставаться после уроков в новом кабинете, где стоят ваши машины „Сфера“. Я хочу сказать вам большое спасибо. Это очень интересно. Я раньше хотел стать космонавтом, а теперь хочу стать программистом, как те люди, про которых пишут в журнале „Наука и жизнь“.

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

Спасибо вам за ЭВМ. Она хорошая, только кнопка „Ввод“ иногда заедает, если нажимать не по центру.

До свидания. Петя Снегирев.»

Я усмехнулся. Липатов бы сейчас удавился от комментария про кнопку «Ввод» — он клялся своим инженерным дипломом, что стальные скобы из 65Г полностью исключают перекос длинных клавиш. Надо будет ему показать, пусть страдает.

Под текстом письма шла собственно программа. Тот самый примитивный код, написанный прямо на бумаге, в столбик, с проставленными номерами строк.

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

Сначала всё было тривиально. Мальчишка, используя наш вшитый в ПЗУ простенький интерпретатор команд, методично вырисовывал геометрию.

ЯЧЕЙКА(10,10) = «*» (это, видимо, кончик левого уха)

ЯЧЕЙКА(11,10) = «|»

ЯЧЕЙКА(12,10) = «\»

Строк тридцать текста представляли собой сплошной массив формул, раскладывающих символы по координатам экрана, чтобы собрать силуэт кота в ASCII-арте. Пацан явно сидел с тетрадкой в клеточку, где размерность соответствовала разрешению нашего экрана, и высчитывал каждую точку. Каторжный труд. В 2026 году нейросеть сгенерировала бы 3D-модель кота с трассировкой лучей за две секунды. Здесь семиклассник Петя Снегирев потратил, вероятно, несколько дней, чтобы просто нарисовать статичный контур из белых букв и звездочек на сером фоне.

Но мой взгляд зацепился за то, что шло дальше.

Я прищурился, не веря своим глазам.

«…тогда я почитал приложение в конце книжки, где таблица памяти, и сделал по-своему…»

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

C000: 3E 20 (загрузить код «пробел»)

C002: 32 FA F0 (записать пробел в ячейку глаза)

C005: 01 FF FF (загрузить в регистр число для задержки)

C008: 0B (уменьшить счетчик)

C009: 78 B1 C2 08 C0 (крутиться в пустом цикле)

C00E: 3E 2A (загрузить код «звездочка»)

C010: 32 FA F0 (записать звездочку обратно)

Я замер, ощущая, как по спине пробежал холодок профессионального восторга. Число 61690. В шестнадцатеричной системе это 0xF0FA. Я прекрасно знал, что находится по этому адресу. Это был не кусок оперативной памяти для пользовательских переменных. Это была середина видеобуфера. Та самая область памяти, которая аппаратно напрямую считывалась видеоконтроллером и выплевывалась на экран телевизора «Юность» в виде светящихся символов.

Ребенок не стал перерисовывать кота формулами. Он не стал использовать штатные подпрограммы системного монитора, которые мы с Громовым вылизывали неделями. Он открыл карту распределения памяти, высчитал на бумажке точный байт, отвечающий за физическое расположение «глаза» своего нарисованного кота, и записал туда код пробела. Звездочка исчезла — кот «закрыл» глаз.

Затем он написал машинный цикл, чтобы ЦУБ потратил такты впустую — это была примитивная, но абсолютно рабочая задержка.

А затем засунул в тот же байт шестнадцатеричный код 2A. Звездочка загорелась снова.

И замкнул это в бесконечный цикл.

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

Это был не просто код. Это был манифест.

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

— Леша, это звездец, — мрачно возвестил он, плюхаясь на стул напротив меня и стряхивая пепел прямо в пустую банку из-под майонеза, заменявшую нам пепельницу. — Эти дуболомы из первого отдела завернули нам алгоритм контрольной суммы на перфоленте. Говорят, не соответствует отраслевому стандарту. Какой, к черту, стандарт? Мы его сами придумали позавчера! Я сейчас убью кого-нибудь. Дай спирту.

— Спирт у Липатова в сейфе, а Липатов в цеху, — спокойно ответил я. — Жень, иди сюда. Посмотри на это.

Я подвинул к нему тетрадный листок.

Громов сфокусировал мутный взгляд на бумажке. Вытащил сигарету изо рта.

— Что это? Очередная кляуза? Седых требует, чтобы мы комментарии к коду писали по-русски, а не транслитом?

— Это письмо от пользователя, — я с удовольствием произнес это слово, которое здесь, в этом времени, звучало почти как неологизм. В СССР были «потребители», были «эксплуатанты», но «пользователь» — это из другой, моей эры. — Из тринадцатой школы. Пацан, седьмой класс. Написал программу.

Громов фыркнул, выпуская струю сизого дыма.

— Ой, да ладно. Ну заполнил ячейки символами по координатам. Молодец, возьми с полки пирожок, положи на место.

Он пододвинул листок ближе. Его глаза, красные от недосыпа, пробежали по строчкам с координатами. Губы презрительно кривились.

А затем он дошел до пятисотой строки.

Я наблюдал за ним с почти садистским удовольствием. Я видел, как остановился его взгляд. Как медленно, словно у робота, у которого заело сервопривод, приоткрылся рот. Как сигарета в его руке замерла в миллиметре от майонезной банки.

Громов был гениальным системным программистом. Он мыслил адресами и прерываниями. Ему не нужно было переводить `61690` в шестнадцатеричный код — он знал эту область памяти наизусть, он сам ее размечал.

— Погоди-ка, — хрипло произнес Евгений. Он бросил сигарету в банку (раздалось тихое шипение) и схватил листок двумя руками. Наклонился так низко, что чуть не коснулся бумаги носом. — Прямая запись? Машинным кодом в буфер видеоконтроллера?

— Ага, — я кивнул, не скрывая улыбки.

— Он… он не использовал подпрограмму отрисовки. Он просто сунул байт прямо в память, — Громов поднял на меня ошарашенный взгляд. — Минуя прерывания. Минуя проверки границ экрана.

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

— Котик моргает, — эхом отозвался Громов. Он вдруг нервно рассмеялся, откинувшись на спинку стула и хлопнув себя ладонью по колену. — Ты понимаешь, что этот мелкий пионер сделал? Я специально спрятал адреса видеопамяти в конец руководства, чтобы туда никто не лез, чтобы систему не повесили! А он прочитал, посчитал смещение для конкретных знакомест на экране и вкорячил туда данные напрямую!

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

— Леша, это же… это же охренеть можно! Ему тринадцать лет! У нас инженеры в вычислительном центре полгода не могут понять, как стек работает, а этот пацан сидит с тетрадкой в клеточку и высчитывает физические адреса видеобуфера!

— И жалуется, что клавиша «Ввод» заедает, если жать сбоку, — заметил я, подкидывая дровишек.

— Да хрен с ней, с клавишей! Пусть Липатов сам свои железки облизывает! — Громов остановился напротив меня, его глаза горели тем самым сумасшедшим огнем, который я видел, когда он переписывал загрузчик. — Ты понимаешь, что это значит? Мы дали им инструмент. Не игрушку. Не учебное пособие по вычислению синусов для уроков алгебры. Мы дали им микроскоп, которым можно забивать гвозди, и они уже поняли, как им забивать гвозди!

Он подошел к столу, снова посмотрел на листок, словно проверяя, не привиделось ли ему это.

— Я хочу к ним поехать, — вдруг совершенно серьезно сказал Евгений. — Серьезно, Морозов. Я хочу поехать в эту тринадцатую школу. Я готов лично учить таких малолетних гениев. Если им показать ассемблер… Господи, если этому Пете показать, как работают индексные регистры, он через год нам весь системный монитор перепишет так, что код будет просто летать.

Я смотрел на Громова и чувствовал, как внутри меня разжимается какая-то тугая, ледяная пружина, которая держала меня в напряжении все эти месяцы.

Ради чего мы всё это делали?

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

Но история — это не только макроэкономика. Это люди.

В моем, 2026 году, ИТ-индустрия стояла на плечах гигантов. На плечах тех, кто в гаражах собирал первые Apple, тех, кто писал ядро Linux, тех, кто создавал культуру хакеров — в исконном, светлом значении этого слова. Людей, которым было интересно, как устроена система, и которые хотели заставить ее делать то, для чего она не предназначалась.

Здесь, в Советском Союзе образца 1978 года, мы только что посадили семя этой культуры. Петя Снегирев, семиклассник, который хотел заставить кота моргать, не побоялся сломать систему. У него было незашоренное мышление. Он не знал, что «так не принято». Он просто видел задачу и нашел изящное, грязное, хакерское решение.

Вот он. Смысл.

Появился первый «юзер-креатор». Первый человек извне, который взял наше творение и сделал его своим.

Я улыбнулся. Широко, искренне, не пытаясь скрыть эту улыбку за привычной маской циничного профессионала.

Я встал из-за стола. Подошел к своему системному блоку «Сферы-80», стоявшему на краю, включил его и ВКУ. Раздался знакомый, успокаивающий писк строчного трансформатора. На темно-сером экране появилась белая надпись ГОТОВ.

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

Громов стоял за моим плечом, шумно дыша.

Я нажал пресловутую клавишу ввода.

Экран мигнул. В центре появилась угловатая белая физиономия. А через секунду внутри этой физиономии погасли и снова загорелись две точки.

Кот моргал.

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

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

Это стоило всего. Стоило бессонных ночей в прокуренном вагоне электрички на Москву. Стоило унизительных разговоров с чиновниками. Стоило выклянчивания деталей на складах. Стоило моих фантомных болей по интернету и смартфону.

Я выключил компьютер. Экран погас, оставив лишь медленно тающую белую точку в центре кинескопа.

Затем я взял со стола листок с кодом Пети Снегирева. Оглянулся. На стене, рядом с доской, висел кусок пробкового покрытия, куда Липатов педантично прикалывал графики усадки пластика и таблицы допусков. На столе у Липатова, в пластиковом органайзере, лежали канцелярские кнопки — ровно, одна к одной, отсортированные по цветам. Сергей Дмитриевич ненавидел, когда кто-то брал его вещи.

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

— Что ты делаешь? — хмыкнул Громов. — Липатов тебя сожрет. Это же не по уставу.

— Это, Жень, наш первый коммит в открытый исходный код, — сказал я, зная, что он не поймет и половины этих слов. — Это наша главная спецификация. Чтобы мы не забывали, для кого мы пишем ТУ и ради кого вылизываем корпуса.

Громов посмотрел на листок, затем на меня. Почесал небритый подбородок.

— Звучит как тост. Жаль, спирт у Липатова.

Я посмотрел на письмо. Корявый синий почерк казался мне сейчас самым красивым шрифтом на свете. Круг замкнулся. Мы сделали машину. Машина нашла своего человека. Пользователь родился.

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

Я глубоко вдохнул запах пыли и канифоли.

— Ну что, Громов, — сказал я, возвращаясь за свой стол. — Пора работать. У нас пять тысяч машин, которые нужно сделать дуракоустойчивыми. Потому что, как мы только что выяснили, наши пользователи — гении. А значит, сломать они смогут всё что угодно.

Громов радостно оскалился, вытаскивая из пачки новую сигарету.

— Точно. Пойду перепишу обработчик прерываний, пока эти малолетние вундеркинды не спалили нам ЦУБ прямыми запросами к шине.

В лаборатории КБ-3 начинался новый рабочий день.

На этом второй том цикла завершён, спасибо за внимание! Также обратите внимание на другой мой цикл — «Радиокороль» (https://author.today/work/545118) — в котором простой советский инженер устраивает маготехническую революцию в фентези-мире на магическом Урале

Загрузка...