Литмир - Электронная Библиотека
A
A

Мигнул снова. Новый текст.

ПРОКРУТИТЬ ФАЙЛ К СЕРЕДИ□Е

СМЕЩЕ□ИЕ: ПРИМЕР□О 50% ОТ РАЗМЕРА

Антон не понял. Вернее — понял, но не поверил. Галлюцинация давала команды.

Он перескочил примерно на середину файла. На шестом мегабайте шёл нормальный код, читаемые строки, операторы верстки. Прямоугольник мигнул:

ДАЛЬШЕ

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

Прямоугольник мигнул. Резко, как затвор.

СТОП

ОТКАТИТЬ: СМЕЩЕ□ИЕ 0x009A1200

Антон остановился. Откатил на указанное смещение. И увидел:

00 00 00 00 00 00 00 00
— ровные, мёртвые строки нулей вместо кода.

Он пролистал мимо. Не заметил. А оно — заметило.

ПОВРЕЖДЕ□ИЕ ОБ□АРУЖЕ□О

РАЗМЕР: □ЕСКОЛЬКО СЕКТОРОВ

ПРИЧИ□А: СБОЙ ЗАПИСИ □А ДИСК

РЕКОМЕ□ДАЦИЯ: ЗАМЕ□ИТЬ ИЗ РЕЗЕРВ□ОЙ КОПИИ

Антон перестал дышать.

Оно читало быстрее, чем он. Антон пролистал нули, не остановившись. Оно — остановилось. Засекло. Дало команду.

Такое Антон видел на чужих винтах: до нулей всё читается нормально, дальше несёт чушь. Шестнадцать страниц до нулей — чистые. После — мусор.

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

Вчерашний номер, та же вёрстка. Только телефоны в рекламе и слоган на первой полосе — старые.

Антон посмотрел на утилиту на мониторе. Курсор моргал — настоящий, зелёный. Потом — на синий прямоугольник в голове. Другой курсор. Невозможный. Два интерфейса — один на экране, другой внутри.

Он мог бы не делать ничего. Встать, уйти, захлопнуть дверь. Но два часа до срока, и Михалыч, и серьёзные люди, и двенадцать мегабайт, которые без подсказки он ковырял бы трое суток.

Антон сидел перед монитором. Лампа гудела. Принтер на стеллаже за спиной мигал оранжевым. Во рту пересохло.

Данные на входе — правильные. На выходе — то, что надо. Формула работала. Только подсказка пришла из синего прямоугольника в голове.

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

Запустил экранный просмотрщик — старый, корявый, зато показывал файл для печати насквозь, без долгой подготовки. Полоска загрузки поползла: десять процентов. Шрифты грузились — один за другим, все на месте. Нормальные шрифты, не кракозябры. Двадцать процентов. Растры раскладывались. Серые прямоугольники начали проявляться — контуры, полутона, детали. Лица. Тридцать процентов.

Антон не дышал. Считал проценты, как ступеньки. Каждый процент — кусок файла, который прошёл через интерпретатор и не сломался. Сорок. Пятьдесят. Шестьдесят — порог: здесь должна была начаться семнадцатая страница, та, что час назад уходила в мусор.

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

Девяносто. Сто.

Антон открыл превью. Страница первая — чистая. Вторая. Десятая. Шестнадцатая — и семнадцатая: лицо кандидата на месте, шрифты ровные, логотип партии в углу. Дальше — восемнадцатая, двадцатая, тридцать вторая. Все на месте. Номера телефонов в рекламном блоке на двадцать третьей странице были старые, из прошлой версии, — но это Антон поправит за пять минут в текстовом редакторе.

Тираж восстановлен.

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

Рубашка на спине была мокрая — не от жары, от пота, который успел остыть. Руки дрожали. Кофе в кружке с трещиной подёргивался по кругу.

И — на полсекунды, не дольше — благодарность.

К кому?

К синему прямоугольнику. К дырявому тексту без буквы Н. К чему-то, что жило у него в голове и знало, где в двенадцати мегабайтах прячутся мёртвые байты.

Полсекунды. Потом — холод. Не от бетона, не от сырости. Изнутри. Благодарить штуку, которая залезла тебе в голову через модемную линию, — всё равно что обрадоваться, что битый файл вдруг открылся. А потом понять, что чинят уже не файл, а тебя. Страницы на месте, тираж спасён, серьёзные люди не оторвут голову.

Кроме одного.

Файл в порядке. Можно ставить в работу.

Модем лежал мёртвый. Часы на стене показывали 5:37. Лампа гудела. За перегородкой молчали станки. Всё вокруг было тем же, чем было два часа назад, но что-то сдвинулось. Словно в конфигурационном файле переставили один символ: всё работает, но не так.

Синий прямоугольник не уходил.

Текст сменился.

ФАЙЛ ВОССТА□ОВЛЕ□

ПЕРЕХОД К ОС□ОВ□ОМУ ЗАДА□ИЮ

СУБЪЕКТ, ПОДТВЕРДИТЕ ПОЛУЧЕ□ИЕ

ОЖИДА□ИЕ

Основному.

Починка файла была не заданием. Разминкой.

Внизу прямоугольника мигал курсор — тонкая синяя полоска, как в командной строке. Вверх-вниз. Вверх-вниз. Терпеливо. У курсора было всё время мира.

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

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

Но прямоугольник будет с ним в кровати. Он это уже знал.

Катя. Дома. Наверное, спит. Или не спит — сидит на телефоне с подружками, шепчет и смеётся, и Антон каждый раз хочет сказать что-нибудь взрослое, правильное, братское. «Ложись спать, мелкая. Школа завтра». Но не говорит. Потому что сам не спит. Сам не ест. Сам сидит в подвале и чинит чужие файлы.

Антон остановился у двери. Положил руку на ручку. Металл холодный.

Прямоугольник висел перед глазами. Курсор мигал. Терпеливый.

Он закрыл глаза.

Синие буквы. Дырки вместо Н. Курсор.

Открыл.

Посмотрел на руки. Длинные пальцы, сбитые костяшки, чернила от картриджа под ногтями. Свои. Те самые, которые только что починили файл по подсказке штуки, которая жила у него внутри и звала его «субъект».

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

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

Прямоугольник ждал ответа. Антон не отвечал.

Антон убрал руку с дверной ручки. Вернулся к столу. Сел на пол, спиной к системному блоку. Бетон холодный. Линолеум продавленный.

Он сидел и смотрел на стеллаж напротив — пачки бумаги, банки с химией, рулон плёнки. Обычные вещи. Мёртвые, молчаливые, предсказуемые. Ничего в них не мигало. Ничего не ждало ответа.

3
{"b":"967108","o":1}