Августовская ночь во Владимире пахла не яблоками и медом, как положено в приличных романах, а остывающим асфальтом, пылью и — самую малость — безнадежностью. В лаборатории КБ-3 этот букет дополнялся ароматами перегретого текстолита, дешевого табака и крепкого, настоявшегося до состояния гудрона чая.
Евгений Громов сидел перед «Сферой» номер один, как пианист перед первым концертом. Спина прямая, пальцы занесены над клавиатурой, лицо выражает смесь скепсиса и торжественности.
Это был момент истины. Железо собрано. Видеосигнал, благодаря конденсатору Любы и лаку Олега, стоял как влитой. Оставалось самое простое: ввести команду.
Громов глубоко вздохнул, задержал дыхание, словно собираясь нырнуть в прорубь, и набрал:
`ТЕСТ`
На темно-сером экране, выдранном из распиленного кинескопа, высветилось:
`ТТЕЕССТТ`
Евгений моргнул. Потер глаза. Может, это от усталости двоится? Третьи сутки без нормального сна способны превратить инженера в сюрреалиста.
Он осторожно, одним пальцем, нажал клавишу «А».
На экране появилось:
`ААА`.
— Твою мать, — сказал Громов очень отчетливо и спокойно.
В тишине лаборатории этот звук прозвучал как выстрел.
Сергей Липатов, дремавший на составленных в ряд стульях, вздрогнул и сел, поправляя съехавшие на нос очки.
— Что? Что случилось? Блок питания? — спросил он хрипло.
— Хуже, — Евгений откинулся на спинку стула и закурил, хотя в помещении и так можно было вешать топор. — Твоя хваленая «вечная» клавиатура заикается, Сережа.
Липатов встал, разминая затекшую шею, и подошел к столу. Его вид — мятый костюм, щетина, красные глаза — вызывал жалость пополам с уважением.
— Не может быть, — отрезал он. — Там герконы КЭМ-2. Золотое напыление контактов. Ресурс — десять миллионов нажатий. Это военная приемка, Женя. Они не ломаются.
— Скажи это букве «А», которая решила размножаться почкованием, — Громов кивнул на экран. — Я нажимаю один раз. Машина видит три. Твои кнопки дребезжат, как старая телега на брусчатке.
Липатов обиделся. По-настоящему, как художник, которому сказали, что его картина висит вверх ногами. Он подошел к машине, оттеснил Громова бедром и сам нажал пробел.
Курсор прыгнул на две позиции вперед.
— Это ты как-то криво настроил циклы чтения, — заявил конструктор, уперев руки в боки. — У меня механика идеальная. Ход клавиши — четыре миллиметра. Там магнитное поле, там нет механического износа!
— Там есть физика, Сергей Дмитриевич, — ядовито заметил Громов. — Контакты внутри стеклянной колбы — это пружины. И прежде чем замкнуться намертво, они делают «дзынь». Микроскопический такой дребезг. Для тебя это мгновение. А для ЦУБа, который молотит на двух мегагерцах, это вечность. Он успевает прочитать этот «дзынь» как серию из десяти разных нажатий. Твоя идеальная механика для моей логики — это пулеметная очередь.
Липатов насупился, глядя на клавиатуру как на предателя.
— И что делать? Менять герконы? У нас их нет.
— Тащи осциллограф, — вздохнул Громов. — Будем смотреть твой «идеальный» сигнал.
Через полчаса диагноз был подтвержден. Валера, которого разбудили ради такого случая (он спал в макетной на куче поролона), держал щупы, а Громов и Липатов гипнотизировали маленький круглый экранчик старого С1-19.
При каждом нажатии клавиши зеленая линия, вместо того чтобы сделать четкую ступеньку вверх, превращалась в «расческу». В течение десяти-пятнадцати миллисекунд напряжение скакало вверх-вниз, пока контакты геркона, спружинив, наконец не успокаивались.
— Дребезг контактов, — констатировал Громов, выпуская дым в потолок. — Классика НТР. Раньше механика ломалась просто так, а теперь она не работает по науке, с красивой осциллограммой. Твои герконы слишком упругие, Сережа. Они вибрируют при ударе.
— Это лечится? — спросил Валера, зевая. — Может, конденсаторы повесить параллельно каждой кнопке? Цепочка сгладит пульсации.
— Пятьдесят кнопок, — напомнил Липатов упавшим голосом. — Умножить на пятьдесят машин. Две с половиной тысячи конденсаторов. И столько же резисторов. И все это паять навесным монтажом, потому что на платах места нет.
В лаборатории повисла тишина. Представить себе объем работы было страшно. Две с половиной тысячи паек. В тесном корпусе. За два дня до сдачи.
— Мы не успеем, — тихо сказал Липатов. — Это конец.
Он опустился на стул и закрыл лицо руками. Его плечи поникли. Вся эта эпопея — поездка в Калугу, ночная работа напильником, стертые в кровь пальцы — все это разбилось о проклятую физику упругих тел.
Евгений смотрел на него, и в груди шевельнулось что-то странное. Обычно он презирал «железячников» за их зависимость от материи. Программа идеальна, она живет в мире чистой логики. А железо — это всегда компромисс, грязь, сопротивление материалов.
Но сейчас ему стало жалко этого педанта в очках. Липатов сделал невозможное. Он дал машине тело. А Громов… Громов должен дать ей душу. Или хотя бы мозги, способные игнорировать недостатки тела.
— Отставить панику, — сказал Евгений, туша окурок в переполненной консервной банке. — Конденсаторы — это для слабаков. Мы решим это программно.
Липатов поднял голову. В его глазах блеснула надежда.
— Как?
— Элементарно, Ватсон. Я научу «Сферу» терпению.
Громов пододвинул к себе пачку перфокарт, перевернул их чистой стороной и вытащил из кармана огрызок карандаша.
— Смотри. Сейчас программа видит первый импульс и сразу орет: «Кнопка нажата!». А потом видит второй импульс от дребезга и орет снова.
Он быстро набросал блок-схему.
— Мы сделаем так. Процессор видит нажатие. И… ничего не делает. Он ждет.
— Чего ждет? — не понял Валера.
— Ждет, пока твои чертовы пружинки успокоятся. Двадцать миллисекунд. Для человека это мгновение, мы даже не заметим задержки. А для дребезга это вечность. Через двадцать миллисекунд процессор снова смотрит на порт. Если сигнал все еще есть — значит, это было нажатие. Если нет — значит, помеха.
Липатов смотрел на схему как на икону.
— То есть… перепаивать не надо?
— Не надо, — усмехнулся Громов. — Надо всего лишь переписать подпрограмму опроса клавиатуры в ПЗУ.
— Фух… — выдохнул Валера. — Ну, ты голова, Женька. Я уж думал, опять за паяльник.
— Рано радуетесь, — голос Громова стал жестким. — ПЗУ у нас — 573РФ1. С ультрафиолетовым стиранием.
Он обвел взглядом заставленную коробками лабораторию.
— Чтобы изменить код, мне нужно вытащить микросхемы из всех пятидесяти машин. Стереть их под кварцевой лампой. Это минут двадцать на партию. Потом запрограммировать заново на программаторе. Потом вставить обратно.
Он посмотрел на часы. Было три часа ночи.
— У нас пятьдесят машин. В каждой надо перепрошить по микросхеме ПЗУ. Итого пятьдесят корпусов. Если мы организуем конвейер прямо сейчас… к утру послезавтра закончим. Может быть.
Липатов встал. Усталость с него слетела, как шелуха.
— Я найду лампу. В медпункте была кварцевая, «Солнышко». Я замок вскрою, если надо.
— Я подготовлю программатор, — кивнул Громов. — Валера, буди Пашку. Пусть выковыривает микросхемы из плат. Аккуратно! Ноги не погните, у нас запасных нет.
— А я? — спросил Валера.
— А ты, Левша, ищи вентилятор. Потому что когда мы включим кварц, здесь будет пахнуть озоном так, что мы все сдохнем от счастья.
Лаборатория превратилась в филиал ада, только вместо котлов здесь были столы, а вместо грешников — инженеры.
В углу, за ширмой из куска брезента, зловещим фиолетовым светом горела медицинская лампа ДРТ-240, добытая Липатовым (история умалчивала, пришлось ли ему взламывать дверь медпункта, но вид у него был решительный).
Запах озона был густым, сладковатым и металлическим. Он першил в горле и вызывал странную, пьянящую легкость в голове.
— Не смотреть! — командовал Громов. — Глаза сожжете!
Громов старался не смотреть в сторону ширмы, но фиолетовое зарево все равно пробивалось сквозь щели, отражаясь от полированных панелей осциллографа. Он знал, что завтра за это придется платить — веки опухнут, а в глаза словно насыплют битого стекла. Это называлось «поймать зайчиков», и в КБ-3 это считалось профессиональной травмой.
— Люба, — шепнул он, когда очередная РФ-ка встала в программатор. — Ты хоть не смотри.
— Я в сварочных очках, Женя, — отозвалась она, поправляя тяжелую оправу. — Иди лучше чай попей, у тебя уже руки синие от этого света.
Он сидел за самодельным программатором, подключенным к макетной плате. Рядом с ним, на высоком табурете, устроилась Люба Ветрова.
Они работали в четыре руки, и это был странный, почти интимный танец.
Люба, надевшая свои очки поверх темных солнцезащитных (где она их взяла ночью — загадка, возможно, у кого-то из водителей), пинцетом доставала из кассетницы «чистую», стертую микросхему.
— Готова, — тихо говорила она, вставляя чип в панельку программатора и защелкивая рычажок.
Евгений, не глядя на нее, а только на светодиоды, нажимал кнопку «ЗАПИСЬ».
Программатор тихо гудел, мигая красным глазом. По байтам, по битам в кремниевую память вливался новый код. Код, который умел ждать. Код, который прощал несовершенство материи.
— `0F`… `A3`… `C0`… — бормотал Громов, сверяясь с листингом. Ему не нужно было смотреть на бумагу, он помнил этот патч наизусть, но привычка брала свое.
Две минуты на микросхему.
— Готово, — программатор щелкал реле, подтверждая верификацию.
Люба мгновенно открывала замок, подхватывала горячую микросхему пинцетом и бросала её в коробку с надписью «ПРОШИТО». И тут же вставляла новую.
Их руки постоянно соприкасались. Пальцы Громова были холодными и влажными от напряжения, пальцы Любы — сухими и теплыми.
— У тебя глаза красные, — сказала она в какой-то момент, когда они ждали окончания цикла записи.
— Это от любви к искусству, — огрызнулся Евгений, протирая веки тыльной стороной ладони. Песок в глазах становился невыносимым. — Как там партия в солярии?
— Липатов говорит, еще пять минут.
За ширмой слышалось шуршание. Липатов и Пашка переворачивали микросхемы под лампой, стараясь не подставлять кожу под жесткий ультрафиолет. Они напоминали жрецов какого-то техногенного культа, совершающих ритуал очищения.
— Знаешь, Жень… — Люба замялась. Она редко называла его по имени. — То, что ты придумал… С задержкой. Это красиво.
Громов фыркнул.
— Это костыль, Люба. Это грубая заплатка на дырявую реальность. В идеальном мире кнопки не дребезжат.
— В идеальном мире люди не работают по ночам и не воруют детали, — возразила она, вставляя очередной чип. — А мы живем здесь. И твой код делает это «здесь» рабочим. Это важнее, чем идеальность.
Она посмотрела на него сквозь двойные очки, и Евгений вдруг увидел за этой нелепой конструкцией усталый, но очень теплый взгляд.
— Ты философ, Ветрова, — буркнул он, нажимая «ЗАПИСЬ». — Подай мне лучше чаю. Если там еще остался чифирь в термосе.
К утру время стало тягучим, как эпоксидная смола.
Громов уже не чувствовал пальцев. Он был просто придатком к программатору, биологическим механизмом, нажимающим кнопки.
— Пятьдесят первая, — голос Любы звучал глухо, как из бочки. — Последняя запасная.
— Пишем, — Евгений нажал кнопку.
Красный светодиод мигнул и погас. Зеленый загорелся ровным светом.
— Все, — сказал он. И это слово показалось ему самым прекрасным словом в русском языке.
— Теперь самое главное, — Громов вытащил из кармана рулон черной изоленты. — Заклеиваем окошки. Если на кристалл попадет прямой свет, наша задержка в двадцать миллисекунд превратится в тыкву через пару недель.
Он аккуратно нарезал маленькие квадратики и лепил их на кварцевые окошки микросхем, словно ставил печати на конверты с секретными донесениями. Пятьдесят черных меток. Пятьдесят «мозгов», защищенных от внешнего мира.
Он откинулся на спинку стула, чувствуя, как хрустнул каждый позвонок.
За ширмой выключили лампу. Стало непривычно темно — фиолетовое сияние исчезло, оставив только серый, пыльный свет занимающегося утра.
Липатов вышел из-за брезента, держа в руках лоток с микросхемами. Лицо у него было цвета вареной свеклы — «загар» сварщика.
— Стерты, — доложил он.
— Прошиты, — отозвался Громов. — Пашка, тащи корпуса. Будем вставлять мозги обратно.
Сборка заняла еще два часа. Руки дрожали, микросхемы не хотели лезть в панельки, ножки гнулись. Пашка ругался шепотом, используя такие загибы, что даже бывалый водитель Коля-Хромой покраснел бы.
Но они справились.
В семь утра, когда за окном уже вовсю орали вороны и гремели трамваи, пятьдесят «Сфер» стояли рядами на столах, на полу, на подоконниках.
Громов подошел к ближайшей. Включил тумблер.
Экран мигнул, прогрелся. Появилось приглашение: `>`
Евгений занес палец над клавишей «А».
Вся лаборатория замерла. Липатов перестал дышать. Люба сжала край стола так, что побелели костяшки. Даже Пашка, который, казалось, мог спать стоя, открыл глаза.
Нажатие. Легкий, сухой щелчок геркона.
На экране появилась буква: `А`.
Одна.
Одинокая, четкая, прекрасная буква «А».
Евгений нажал еще раз. `АА`.
Набрал: `ПОБЕДА`.
На экране высветилось: `ПОБЕДА`. Никаких лишних букв. Никакого дребезга. Программная ловушка сработала безупречно, глотая «грязь» и оставляя только чистый смысл.
— Работает, — выдохнул Липатов. Он снял очки и потер лицо. — Работает, черт возьми!
— А ты сомневался? — Громов попытался усмехнуться, но губы потрескались и плохо слушались. — Программное обеспечение, Сергей Дмитриевич, это душа. А душа может исправить любые увечья тела.
Он встал, покачнулся и едва не упал. Люба подхватила его под локоть.
— Тебе надо поспать, Жень. Хоть пару часов.
— Нам всем надо, — пробормотал Морозов, появляясь в дверях. Он выглядел так, будто вернулся с фронта, но в глазах его светилось что-то, похожее на гордость. — Ложитесь прямо здесь. На столах, на полу. Плевать. Сдаем завтра. Сегодня… сегодня мы просто выжили.
Громов посмотрел на свои руки. На подушечках пальцев отпечатался рельеф кнопок программатора. Глаза жгло так, будто в них насыпали битого стекла — привет от кварцевой лампы. Но внутри было тихо и спокойно. Он посмотрел на ряд светящихся мониторов. Пятьдесят светящихся глаз смотрели на него с благодарностью. Они больше не заикались. Они научились говорить.
— Спокойной ночи, малыши, — прошептал он, сползая по стене на кучу телогреек, которые заботливо притащил Пашка.
Через минуту лабораторию КБ-3 огласил дружный храп команды, совершившей очередной маленький, никому не заметный подвиг.