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