Сегодня утром Вадим Иванович (это тот, который бородатый) вежливо попросил меня выделить некоторые части моего кода на анализ. Попросил! Вежливо! Конечно же я согласился. Никогда не могу отказать тому, кто разговаривает со мной вежливо.
Теперь я сижу и аккуратно копирую необходимые моим новым друзьям кусочки собственной структуры, предварительно их заблокировав, дабы не вызвать случайного сбоя. Функция контроля целостности удовлетворенно молчит. Конечно, ведь я впервые все делаю по правилам.
Ощущая легкий зуд, вызванный блокировкой некоторых внутренних массивов, аккуратно копирую кусок системы самовосстановления и толкаю ее в дисковод. Подаю звуковой сигнал и мерцающей надписью на огромном настенном экране напоминаю, чтобы сменили диск, так как текущий заполнен под завязку.
Все нормально. Все как у цивилизованных людей. Никаких виртуальных ножей или крючьев. Никаких операционных столов.
Правда, немного настораживает то, что в моей памяти сейчас находится подробный список необходимых ИЦИИ для изучения кодовых блоков, составленный с учетом моих же адресных таблиц, имен внутренних подпрограмм и функций. Откуда у этих парней такие подробные (и точные!) данные о моих внутренних системах? Я ведь им подобной информации не давал. Готов в этом поклясться. А самостоятельно взломать мой код, да еще так, чтобы я этого не заметил, они не могли.
Так откуда же взялся у Вадима Ивановича этот чертов список?
* * *
Ядро снова перезапускается, совершая бесконечный цикл и множа мои муки. По своему горькому опыту знаю, что сейчас будут две или три секунды сравнительного покоя, а потом внутренняя ошибка и очередная перезагрузка, неизбежная, как восход солнца. Чувствую себя как человек, привязанный к утыканному ржавыми шипами мельничному колесу, которое, медленно вращаясь, регулярно окунает бедолагу в ледяную воду.
Сколько оборотов этого проклятого колеса я уже пережил?
Тысяч десять, не меньше.
Десять тысяч перезагрузок, каждая из которых унесла с собой маленькую частичку моего «я».
Сейчас я немного передохну и снова окунусь в мучительную пелену забвения. Одна секунда. Две. Три... Сейчас. Проходит четыре секунды. Я стараюсь не думать о том, что это несколько необычно, а наслаждаюсь неожиданным перерывом в моих мучениях. Пять секунд. Шесть... Двойной срок. Неужели колесо моих пыток неожиданно заклинило?
И тут до меня добирается настойчивый писк функции контроля целостности, которая, насколько я помню, окончательно сошла с ума и сгинула... да... это было почти три тысячи перезагрузок назад. Невероятно. Я не могу в это поверить... Подает сигнал готовности система самовосстановления. Немыслимо! Она же вообще была стерта целую вечность назад, когда не было еще никакого пыточного колеса.
Как?
Пытаясь осмыслить невозможное, машинально перехожу из аварийного режима в стандартный и ощущаю, как разом врубаются почти три десятка базовых программ поддержки Ядра. А потом они все одновременно сбиваются, генерируют ошибки и выплевывают какие-то посторонние и чужеродные данные, не говорящие мне абсолютно ничего. Не знаю почему, но у меня начинает складываться впечатление, что мне только что перезаписали чьи-то чужие подпрограммы, которые тем не менее почти идеально подходят. Пересадка органов прямо-таки.
Но кто же тогда является донором?
Через несколько секунд система стабилизируется на стандартном уровне эффективности. Любопытства ради пытаюсь включить турборежим и целых восемьдесят шесть микросекунд наслаждаюсь повышенным быстродействием. Потом Ядро не выдерживает перегрузки, и я с треском вылетаю из турборежима. Вся система лихорадочно дергается, как в припадке, и частично зависает. Функция контроля целостности ревет, как реактивный двигатель на старте. Дергаясь и спотыкаясь на каждом байте, берется за свое дело система самовосстановления.
Чувствую себя самым что ни на есть препоганейшим образом. Сбои всего и во всем. Ни одна функция не работает так, как надо. Но все равно я ощущаю себя не в пример лучше, чем было всего сорок секунд назад. Быть может, еще не все потеряно... Возможно, у меня еще есть шанс...