Резкий, почти химический запах недавно натертого мастикой пола намертво въелся в пересушенный чугунными радиаторами воздух.
За спиной Алексея тяжело и глухо щелкнул ригель замка. Привычный многоголосый гул институтского коридора — торопливые шаги, металлическое дребезжание тележек с осциллографами, обрывки споров и приглушенные голоса лаборантов — мгновенно отрезало толстым слоем дверной звукоизоляции. Помещение встретило его давящей, искусственной тишиной, сквозь которую пробивался только низкий, тягучий гул электромагнитных дросселей в потолочных светильниках. Одна из люминесцентных трубок мелко подрагивала, раздражая глаза холодным лиловым мерцанием на периферии зрения.
Морозов отлично знал такие казенные, наспех подготовленные к особому режиму кабинеты. Четыре массивных двухтумбовых стола выстроились в центре комнаты строгим прямоугольником. На ближнем к двери краю стола лежал прошитый канцелярский журнал. Косая красная полоса пересекала его картонную обложку от угла до угла. Рядом с выверенной геометрической точностью покоились стопка чистых бланков с типографскими номерами в правом верхнем углу, металлическая коробочка штемпельной подушки и заточенный с обеих сторон карандаш.
У глухой стены замер тяжелый металлический сейф, выкрашенный тусклой мышиной эмалью. Замочную скважину перекрывала откидная дюралевая плашка, прижатая к потемневшему комку пластилина с четким оттиском номерной печати. Тяжелые светомаскировочные шторы на окнах были наглухо задернуты, чтобы полностью отсечь бледный февральский свет, оставляя комнату во власти электрического освещения.
Кремовая коробка аппарата спецсвязи занимала край стола. На ее корпусе отсутствовал диск номеронабирателя — связь устанавливалась только напрямую через коммутатор. Чуть выше аппарата к стене канцелярскими кнопками пришпилили отпечатанную на машинке инструкцию по допуску в помещение. Рядом висел строгий перечень правил сдачи рабочих черновиков. В углу, под столом, стояла специальная проволочная корзина с мелкими ячейками — исключительно для использованной копировальной бумаги, которую запрещалось выбрасывать в обычный мусор.
Седых, вошедший следом за Алексеем, остановился у края стола. Он достал из-под мышки картонную папку с красной диагональной полосой, перетянутую бумажной лентой.
— Распишитесь в карточке формы, Алексей Николаевич, — попросил он, протягивая автоматическую ручку.
Морозов поставил подпись в узкой графе. Седых проверил росчерк, сверил дату, убрал карточку обратно в папку и коротко кивнул присутствующим.
Люди за сдвинутыми столами терялись на фоне пустующих мест. На свободных столешницах аккуратными стопками лежали заведенные личные папки с напечатанными на машинках фамилиями. «Шрамов». «Чернов». «Егорова». «Петраковский». Самих инженеров еще не перевели в этот кабинет. Они завершали передачу текущих гражданских проектов, закрывали лабораторные журналы и проходили последние инструктажи.
Слева от Морозова расположился Горелов. Светлая рубашка тщательно выглажена, манжеты застегнуты на все пуговицы, перед ним на зеленом сукне — чистый номерной лист и разложенный чертеж. Он сидел собранно, готовый к предметной работе. Теперь это был жесткий, дотошный инженер, глубоко понимающий физику процессов на аппаратном уровне.
Прямо перед Гореловым лежал рабочий аппаратный узел. На куске желтоватого стеклотекстолита с рядами просверленных отверстий плотно сидели промышленные кнопки ПКН. От контактов тянулась густая косичка проводов в розовой фторопластовой изоляции МГТФ. В материал платы и стянутый жгут глубоко въелся остаточный запах мастерской — застарелый дух канифоли. Макет попал в закрытую комнату легально: на углу белела приклеенная бирка спецчасти с учетным номером и штампом допуска.
Макет был запитан. К нему аккуратно, через карболитовый клеммник, подключался увесистый лабораторный блок питания, выдающий стабилизированное низкое напряжение. Рядом лежала узкая контрольная планка с миниатюрными лампами накаливания. Горелов заранее согласовал пронос схемы через охрану и теперь методично проверял дребезг контактов, не дожидаясь общей сборки всей машины.
Напротив Ширяев тяжело опирался предплечьями на столешницу. Представитель заказчика перебирал края внутреннего документа с круглыми учетными печатями. От его плотного темного пиджака тянуло крепким табаком, запахом машинного масла и той застарелой канцелярской пылью, которая всегда присутствует в цеховых конторах крупных заводов.
Во главе стола сидел Кирсанов — местный представитель Первого отдела в строгом темно-сером костюме. Именно он лично заверил допуск гореловского макета в эту комнату, строго сверив сопроводительные бумаги. Иван Михайлович прошел к столу и устроился по правую руку от него, выкладывая свою папку на сукно.
— Присаживайтесь, Алексей Николаевич, — голос Кирсанова прозвучал глухо. Толстые стены, плотные жалюзи и отсутствие лишней мебели полностью поглощали звуковые волны, делая слова тяжелыми, лишенными привычного комнатного эха.
Морозов выдвинул свободный стул. Металлические ножки неприятно скрипнули по жесткому казенному линолеуму. Он сел, положив свою секретную папку перед собой, прямо на зеленое сукно. Не стал открывать завязки.
— Начнем с прямого назначения изделия, — Кирсанов раскрыл свою папку, аккуратно перелистнув страницу с перечнем приложений. — Требуется создать расчетно-оптимизационное рабочее место. Назначение сугубо прикладное: рассчитывать раскрой дефицитных материалов, прокладывать маршруты по цехам, проверять планы поставок и комплектовать особые партии. Заказчику не нужна вычислительная игрушка, ему нужен проверяемый производственный инструмент с жестким контролем. Важно четко фиксировать: кто именно сидел за пультом, какая версия алгоритма считала норму, на каком этапе расчёты разошлись с реальностью конвейера и чья подпись стоит под финальным документом.
Иван Михайлович сделал короткую пометку в своем блокноте, не поднимая глаз.
Ширяев шумно выдохнул. Деревянный стул натужно скрипнул. Отложив документ, он уперся широкими ладонями в край столешницы.
— Меня здесь интересует акт приемки и конкретная фамилия виноватого, — пробасил Ширяев. Густой бас заполнил глухую комнату, выдавая многолетнюю привычку перекрывать цеховой шум. — Вы мне тут можете рисовать передовые архитектуры и совместимость. Но у нас на Урале условия производства другие. В моем цеху кузнечный пресс через стенку бьет так, что побелка с потолка сыплется. Рядом сварочные посты гонят в силовую сеть такую высокочастотную помеху, от которой обычные приборы с ума сходят. А оператор стоит в промасленной спецовке.
Ширяев тяжело посмотрел на сидящих за столом, задержав взгляд на Морозове.
— Оператор вбивает цифры длины реза на вашей клавиатуре. Машина прокручивает алгоритм. Распечатывает сопроводительную ведомость на АЦПУ, а параллельно бьет управляющую перфоленту для станка с ЧПУ. Готовая лента уходит в цех, заряжается в оптический считыватель. Резак кромсает дорогую легированную сталь. Жесткие лимиты Госснаба. Если в логике сбой, получаем тридцать процентов брака. Тонны металла в утиль, план сорван. Я прихожу с актом списания. Кто ответит за испорченную партию?
Представитель заказчика постучал толстым пальцем по зеленому сукну.
— Цеховой скажет: я нажал правильные кнопки, это ваша коробка моргнула и добавила лишний разряд от вибрации. Разработчики ответят: аппаратура исправна, рабочий ошибся при вводе в конце тяжелой смены. Мне этот футбол не нужен. Требуется железобетонная гарантия, что ложная команда физически не проскочит на перфоратор. Бумажную распечатку мастер еще может глазами проверить, а перфолента идет прямиком в железо.
Горелов перестал крутить колпачок ручки. Пододвинул к себе кусок желтого текстолита с припаянными кнопками.
— Товарищ Ширяев обозначает абсолютно реальную аппаратную проблему, — произнес Горелов. Он придвинул тяжелый лабораторный блок питания и щелкнул тумблером. Внутри металлического кожуха низко загудел понижающий трансформатор. — Мы договорились о единой архитектуре, Алексей Николаевич. Общие порты ввода-вывода, штатное ПЗУ, базовая система команд. Но стандартная программная обработка прерываний в цеху не выживет. Смотрите.
Инженер взял со стола заранее подготовленную контактную гребенку — кусок жесткой медной проволоки с зачищенными выводами. Прижал один конец к шине питания на текстолитовом макете, а зубчатой стороной с микроскопическими паузами с силой провел по оголенной клемме ввода.
На длинной контрольной планке вспыхнула гирлянда ламп. Желтые, красные и зеленые огни заморгали в рваном ритме, фиксируя дикую, непредсказуемую серию ложных сигналов. Подключенный рядом осциллограф показал хаотичный забор из паразитных всплесков.
— Это имитация искрящего пускателя на соседнем станке и дрожащей руки оператора в плотной брезентовой рукавице, — пояснил Горелов под слабое искрение меди. — Цена вашей универсальности. Базовая МикроДОС честно попытается интерпретировать весь этот электрический хаос как нажатия клавиш. Одно случайное срабатывание, непредвиденный выход в командную строку — и универсальная подпрограмма воспримет системный мусор как новую вводную. Перфоратор послушно пробьет ложную комбинацию отверстий на ленте. Станок отработает команду. Резец въедет в шпиндель.
Лампы продолжали хаотично вспыхивать под рукой Горелова. Ширяев мрачно кивнул, глядя на пульсирующий свет.
— Чтобы исключить самодеятельность, мне нужна отдельная программно-аппаратная оболочка, — Горелов отложил гребенку в сторону. — Специализированная машина и свой загрузчик. Жесткие бланки ввода прямо на экране, разрешенные поля и глухие служебные режимы. Никаких ваших общих прерываний и циклов ожидания. Только целевой аппаратный фильтр и закрытый формат.
Морозов смотрел на медленно остывающие нити накаливания.
— Логика заказчика понятна, Андрей Витальевич, — ответил Морозов. В низкое гудение трансформатора вклинился шум приточной вентиляции. — Операторский контур цеха действительно требует жестких рамок. Специализированная оболочка нужна.
Ширяев с шумом выдохнул и тяжело оперся на стол, собираясь возразить против усложнения программы, но Морозов поднял ладонь, останавливая его.
— Но эта закрытая оболочка не должна превращать «82В» в несовместимую машину. Мы ставим вашу защиту, фиксируем формат бланков и аппаратно глушим лишние клавиши. Однако ваша надстройка должна работать исключительно поверх общего профиля, а не вместо него. Базовый опрос клавиатуры, стартовый тест памяти и вывод на экран остаются штатными.
Морозов коснулся пальцами края текстолитовой платы, очерчивая невидимую границу модулей.
— Векторы прерываний и системные вызовы не меняются. Мы закладываем на системной шине специальный управляющий сигнал блокировки. Вы получаете свое ПЗУ-82В на съемной кросс-плате. Вставили её в разъем — аппаратный дешифратор физически гасит выборку базового гражданского кристалла с МикроДОС и жестко подставляет процессору свои адреса. Машина стартует в вашей абсолютно глухой среде, даже не подозревая о существовании гражданской ОС.
Алексей перевел взгляд на Ширяева.
— Но ядро остается нашим. Вытащили вашу плату — машина снова стала стандартной. Если на станке произойдет глухой сбой, придет заводской электронщик. Он просто вынет вашу секретную плату из слота, подключит сервисный дисковод или загрузит общую диагностику со стендовой перфоленты. Машина штатно прогонит свои тесты и покажет, жива ли физически память, процессор и порты. Нам не нужно плодить зоопарк из десятка несовместимых материнских плат под каждый завод, мы делаем режимную надстройку поверх серийного железа.
Горелов прищурился, оценивая предложенный маршрут сигнала. Технически плата усложнялась, требовала дополнительных корпусов жесткой логики для перехвата шины, но изящно сохраняла абсолютную совместимость базового устройства.
— А кто за этот бутерброд из дополнительных плат распишется? — насупился Ширяев. Его совершенно не интересовали адреса портов и изящество дешифраторов, его интересовала юридическая ответственность. — И за чей счет банкет? Эти ваши платы аппаратного ключа стоят денег. У меня смета не резиновая.
Виктор Петрович Седых, до этого молчавший у края стола, немедленно открыл свою папку.
— Расчетная стоимость модуля ПЗУ-82В будет проведена по отдельной статье как средства производственной автоматизации, — ровным, бухгалтерским тоном пояснил Седых. — Завод оплачивает только специализированную надстройку и защищенный корпус, а саму базовую микро-ЭВМ мы проводим по унифицированному тарифу. Это сэкономит вам, товарищ Ширяев, минимум треть ведомственных фондов по сравнению с разработкой уникальной стойки ЧПУ с нуля.
Ширяев тяжело засопел, но цифры экономии явно смягчили его настрой.
— Допустим. Но где гарантия, что ваш аппаратный фильтр сам по себе не исказит расчет? Кто ответит за сбой?
Алексей посмотрел на пустующий край стола, затем перевел взгляд на Кирсанова.
Морозов притянул поближе толстый прошитый журнал с красной полосой. Жесткий картон обложки привычно шурхнул по зеленому сукну. Алексей открыл нужный раздел, пролистнув несколько уже заполненных листов, и нашел чистую строку.
— Для этого у нас есть Журнал отклонений, — сказал он. — Любое аппаратно-программное отличие от общего профиля вносится сюда до внедрения. Указываем суть, причину и способ отката назад. Контрольный набор докажет, что ваша закрытая оболочка решает проблему цеха, но не ломает базовую систему команд.
Иван Михайлович перестал писать в блокнот.
— Нашему КБ необходимо точно знать каждый узел, где расчетная машина расходится с базовой сборкой, — произнес он, поддерживая Морозова со стороны администрации. — Если пустить в цех индивидуальные поделки под каждую задачу, мы тут захлебнемся в их сопровождении. Журнал локализует такие места. Отклонение зафиксировано, проверено и привязано к конкретному блоку.
Кирсанов согласно кивнул.
Кирсанов сделал отметку в своем бланке.
— Согласовано. Аппаратные доработки фиксируются под роспись и проверяются контрольным набором.
Горелов подвинул к себе лист с наброском макета, чиркнул ручкой прямую линию на полях.
— Я принимаю процедуру. Сигнал от моей защелки пойдет через базовый порт. Но предупреждаю: если штатный алгоритм не выдержит ритма прерываний или не заметит обрыв линии при вибрации, я остановлю прогон. Потребую изменить цепь опроса, добавить аппаратный контрольный вход или полностью обойти вашу адресацию. И сделаю это строго по вашим правилам, Алексей Николаевич. Через следующую запись в журнале.
— Договорились, Андрей Витальевич. Готовьте макет к тестам.
— Каждое изменение интерфейса или формата обязано иметь режимную ссылку на страницу в этой книге, — веско добавил Кирсанов. — Самовольная смена системных вызовов без записи запрещена. Вечером бумаги сдаются в спецчасть или запираются в ваш сейф.
Ширяев тяжело засопел, разглядывая прошитый суровой ниткой корешок.
— Здесь будет стоять фамилия человека, который потребовал изменить штатный порядок под цех?
— Фамилия инициатора и подпись проверяющего, — подтвердил Морозов. — Плюс четкий контрольный набор тестов.
— Годится, — отрезал Ширяев. — Если машина выдаст брак на конвейер, я открою эту страницу и найду с кого спросить за ущерб. Запись делаем строго до вмешательства в код или схему.
Кирсанов невозмутимо закрыл толстую папку, подводя черту под многочасовым обсуждением.
— На этом организационная часть закончена. Товарищи, прошу сдать рабочие материалы.
Начался строгий, отработанный ритуал. Горелов выключил лабораторный блок питания, трансформатор гулко щелкнул и затих. Инженер аккуратно отсоединил провода, свернул их кольцом и уложил макет в специальный короб. Липатов передал Ивану Михайловичу свои выписки, которые тут же исчезли в недрах номерной папки с красной полосой.
Седых собрал бланки и подошел к сейфу. Кирсанов лично проконтролировал, как документы легли на стальную полку. Каждое отклонение от базового чертежа, каждый новый системный вызов отныне становились номерным документом, получающим свой децимальный номер в архивах спецчасти. Тяжелая дверца захлопнулась с лязгом, отдавшимся в полу пустой комнаты. Представитель первого отдела взял металлическую печать, подышал на нее и с силой вдавил в податливый комок пластилина поверх опущенной плашки.
— Свободны, товарищи.
Они выходили по одному. Морозов шагнул за порог, и толстая дерматиновая дверь тут же отсекла мертвую тишину спецкомнаты.
На Алексея мгновенно обрушилась привычная какофония института. Где-то на лестничной клетке громко спорили технологи, пронзительно трезвонил дисковый телефон, из открытой двери соседней лаборатории тянуло сладковатым дымом канифоли и доносился резкий, рваный визг перфоленты, прогоняемой через скоростной считыватель. После стерильного, пропитанного мастикой воздуха закрытого кабинета здесь было шумно, суетливо и по-настоящему живо.
Иван Михайлович поравнялся с Морозовым, когда они свернули в сторону лестницы. Старый инженер шел чуть ссутулившись, заложив руки за спину.
— Ты выстроил забор, Лёша, — негромко произнес Михалыч, глядя себе под ноги. — Хороший, крепкий забор. Журнал отклонений, съемное ПЗУ. Архитектуру ты сегодня отстоял. Ширяев с Кирсановым успокоились, потому что увидели понятные им бумажные рамки.
— Это не просто бумажные рамки, Иван Михайлович. Это единственный способ не дать растащить «Сферу» на удельные княжества.
— Знаю, — вздохнул Михалыч. — Только ты не обольщайся. Это по бумагам всё красиво. А на практике нам теперь под эти съемные платы ПЗУ-82В придется выделять отдельную линию сборки, перекраивать лимиты на разъемы и логику. И Горелов — мужик хваткий. Он твой забор теперь будет на прочность проверять каждый день. Любой сбой, любая наводка в цеху — и он будет требовать внести в журнал новую аппаратную защиту. Будет откусывать от базовой архитектуры по кусочку, совершенно легально, под подпись. Успеешь уследить?
— Успею, — жестко ответил Морозов. — Горелов проверяет на прочность не из вредности, а потому что железо в цеху должно выживать. Его дотошность нам только на пользу. Если базовая шина «Сферы-82» выдержит его издевательства с гребенкой и искрением, значит, гражданские машины в школах будут работать годами.
Они подошли к дверям своей лаборатории. За матовым стеклом угадывались силуэты: Олег Тимофеев опять что-то горячо доказывал Наташе у кульмана, размахивая линейкой.
Морозов взялся за холодную латунную ручку и толкнул дверь. Рабочий шум КБ окатил его с головой.
Громов, сидевший над сплошной простыней распечаток шестнадцатеричных кодов, мгновенно поднял голову. Под глазами программиста залегли глубокие тени, но взгляд оставался цепким.
— Ну как? — спросил Евгений, откладывая карандаш. В его голосе сквозило напряжение человека, ожидающего, что его код прямо сейчас заставят переписывать с нуля. — Расстреляли нашу архитектуру? Заставили делать им отдельную операционную систему под военную приемку?
— Нет, Женя, — Морозов прошел к своему столу и бросил на него пустую гражданскую папку. — Систему мы пишем одну. Просто мы выдали им отдельную песочницу со своими игрушками. Они получают приоритетный разъем расширения и пишут туда свой глухой код. А системные вызовы и порты остаются нашими.
Громов на секунду замер, переваривая услышанное, а затем лицо его расплылось в широкой, облегченной ухмылке. Модульность спасала его от написания двух разных веток системы.
— Блестяще, — выдохнул программист, возвращаясь к распечаткам. — Пусть городят в своих платах что хотят. Главное, что ядро останется чистым.
Алексей сел на стул. Единого монолита из «Сферы» больше не было, но и распада на несовместимые острова не случилось. Появилась система шлюзов. Тяжелая, бюрократическая, требующая кучи подписей, но она давала гражданской машине законное право на жизнь. Закрытая комната «82В» осталась позади, подчинившись общим правилам.