Часть 13. Компик
Пустые метания
– Мы не утащим этот артефакт вдвоём с Корой. Перемещаться в Хано слишком накладно. А действовать нужно быстро. – возразил я.
– И что вы предлагаете? Хотите чтобы мы самостоятельно провели войсковую операцию?
– Нет, нам просто нужно человек шесть чтобы поднять эту штуку и внести её в телепорт.
– Но мы именно потому и вынесли все войска в Хано, чтобы отодвинуть возможные военные действия от Юрбэ. – продолжил Инроргн.
– Им может не быть интересна военная победа. Мы с Корой только что наблюдали, как все жители города, который был немногим меньше Юрбэ, были просто преобразованы в синеву. Я хочу лишить их артефакта, с помощью которого они могут проделывать подобные штуки.
– Итак, давайте по порядку. Используя артефакт, они усыпили всех жителей города, а затем собрали их и убили, так?
– Да.
– Вы считаете, что лишив их этого артефакта, вы устраните угрозу подобной атаки на Юрбэ?
– Именно так.
– Но это смешно!
– Что же тут такого смешного? – возмутился я.
– Основа этой атаки – неожиданность. Благодаря вашему предупреждению мы теперь будем к ней готовы. Спасибо вам за него! Но считать, что весь город можно усыпить строго одним артефактом и ничем другим – большая ошибка.
Вы говорили, что магические способности открыли в себе недавно? Уверен, что, если пораскинете мозгами, то сможете придумать способ усыпить всё население такого города как Юрбэ.
Да, конечно, вам будет проще, если у вас будет этот артефакт, но не более того. Если же в вашем распоряжении будет армия магов, то эту задачу вы сможете решить в любом случае.
– Хм. – осёкся я. – А может быть вы и правы.
– Думаю, вам необходимо знать, – Инроргн сменил тему разговора, – что фактически эльфы начали новую войну: они захватили наших послов. Однако пока что эта война без военных действий: торговлю они не прекратили. Вероятнее всего, они планируют использовать торговцев как живой щит при обороне и надеются, что войны вовсе не будет.
Мы ожидаем нападения с их стороны с целью отбить или убить пленников, что мы сейчас допрашиваем. Видящие держат это под контролем. Пока что, мы думаем, что дальше этого ситуация не ухудшится.
– Пленники? Их несколько?
– Не знаю кому повезло больше: нам или гномам, но в плену у гномов находится король эльфов.
– Да вы, я смотрю, развернулись не на шутку! – удивился я.
– Не мы, а вы. Короля эльфов доставила гномам ваша ученица.
– Сома? Хм… Похоже ей пошла на пользу самостоятельная жизнь. Но вернёмся к нашим э… – я попытался подобрать термин. – делам. Вы считаете, что Юрбэ и Хано готовы к возможному нападению при помощи такого артефакта?
– Я считаю, что кража этого артефакта не повлияет на нашу безопасность. Мы стараемся быть готовы, но, сами понимаете, война может проходить по разным сценариям.
Могу и я задать вам несколько вопросов?
– Конечно, уж коль мы всё равно потратили телепорт на бесполезный приход сюда, то почему бы и не поговорить. Что вы хотите спросить?
– Почему эльфы называют вас Великим?
– Хм. Потому что я на него похож и они эм… путают. На самом деле Великого больше нет в живых.
– Нет в живых?
– Да, он мёртв. А откуда у вас возник вопрос о нём?
– Вы наследили, пытаясь уничтожить телепорт. Почти никакое астральное прикрытие не работает, если видящий будет задействован сразу же по горячим следам, либо если он будет иметь прямой контакт с наблюдаемым.
Ваши опыты с телепортом привели к тому, что сразу после них, у врат, собралась целая толпа видящих. Все, кроме одного, опознали в вас Великого.
– Хм… Возможно тогда пусть они считают, что я и есть Великий.
– Это очень плохой вариант. Они считают Великого самой серьёзной угрозой для себя и своих планов. Великий – это тот фактор, который сводит на нет концепцию неприемлемого ущерба. Потерять планету с Великим вместе для них является подходящим вариантом.
– Я начинаю жалеть, что Великий мёртв. Какой-то сегодня нехороший день: сплошные неудачи и плохие новости…
– Я тогда добавлю ещё одну новость: – вклинилась Арзана, – мы провели эксперимент с растениями и животными.
– Убежища не смогут нам помочь?
– Не смогут. И это логично: если бы было иначе, то внутри них нельзя было бы применять магию. Есть мнение, что и жизнь невозможна там, где невозможна магия.
– Ох. – посетовал я – У вас больше ничего плохого не осталось? А то давайте уже сразу соберём всё в одну кучу.
– Лучше вы расскажите нам о Великом.
– Увы, я почти ничего о нём не знаю. У Великого и эльфов было нечто вроде договора: он поставляет им синеву, а они его не трогают. Это очень странно, но это так: у него даже охрана была из эльфов.
И он и эльфы, вместе, уничтожали магов в моём мире. Я воспринимал его как одного из их руководителей, для меня он был врагом номер один.
Представился случай его убить и я его убил. По правде говоря, иных вариантов спастись у меня было немного: я был у него в плену. Если бы вместо пыточной, он предложил вместе с ним воевать против эльфов, то я бы очень задумался над его предложением. Всё-таки, то, что я остался жив – во многом его заслуга.
– То есть?
– Став магом я поначалу не имел никакого представления о том, кто такие видящие и что такое астральный поиск. По мере расширения нашей партизанской войны, множество вещей сходило нам с рук безнаказанно. Мы предполагали, что это от того, что мы такие умные, а оказалось… В общем, позже, выяснилось, что Великий астрально прикрывал нас от видящих.
Потом, когда мы попали к нему в плен, он говорил, что теперь мы будем работать с ним вместе. Но с его стороны не предполагалось никакой формы договора – только магическая клятва, принесённая ему. Я не знаю что это такое, поэтому решил не рисковать. Подозреваю, что это изощрённый формат рабства.
– Поэтому я и был удивлён этому. – Инроргн указал на мою коленку.
– Мы договаривались, что вы не касаетесь этой темы.
– Извините. Хорошо, а почему они считают Великим вас?
– Потому, что я и есть Великий. То есть я занимаю его тело. У меня был только один способ его победить – отобрать у него его тело, пожертвовав своим.
– Это результат действия какого-то артефакта? В наших древних книгах упоминаются подобные вещи.
– Нет, это то, что вы называете умениями. Магия без плетений. Именно из за этих умений Великий и прикрывал нас астрально: он посчитал, что мы сможем быть полезны в его войне.
Предложи он нормальный договор, сотрудничество, но… Увы, что вышло то вышло.
– Иногда, оглядываясь назад мы понимаем: это и можно и лучше было сделать по другому. – Инроргн криво улыбнулся.
– Ага, я помню: вы это уже говорили. В обоих случаях не лучшим выбором было принимать решения втёмную. – улыбнулся я в ответ.
– А дальше? Какие у вас планы дальше? – спросила Арзана.
– Вернёмся на побережье и попробуем исследовать что там у эльфов за острова в океане. Может быть узнаем что-то новое.
– Возьмёте артефакт связи? Вдруг нам или вам потребуется что-либо сообщить друг другу?
– Вероятно, надо было так поступить с самого начала.
Метеор
– Громыхает! – приостановилась Лиелла, – это ваш Хано?
– Нет, Хано давно уже тихий. – ответил Маас и попытался прислушаться.
За шумом нескольких десятков повозок услышать звуки, доносящиеся из города было невозможно.
– Может послышалось. – пожала она плечами.
Однако впереди действительно происходили какие-то события: что-то с визгом и скрежетом пронеслось вдруг по небу и скрылось за горизонтом. А через минуту, громыхающие звуки стали слышны не только от того, что караван полностью остановился, но и потому, что их громкость существенно возросла.
– Война! Там идёт война! – закричал кто-то.
Встав на борт и схватившись за крышу фургона, Маас попытался с высоты разглядеть что происходит впереди. Увы, с такого расстояния это было невозможно.
– До Хано ещё часа три езды, но теперь все будут ждать, пока там всё не успокоится. – проговорил Маас, спрыгивая на землю.
– Собираешься что-то предпринять? – спросила его Лиелла.
– Да, я хочу поехать вперёд…
Если со мной что-то случится, то вот возьми список, продашь эти товары в Цехине? Только заедь сперва к Араргу, когда доберёшься до Хано.
– Вот так просто всё мне оставишь?
– Только если умру. – улыбнулся Маас, отвязывая лорга.
Времени возиться с седлом не было, поэтому, освободив лорга от тележной упряжи, Маас вскочил ему на спину, немного пошатнулся и собрался было ускакать вперёд, но был остановлен окриком Лиеллы.
– Погоди! Возьми заготовку.
– Что это?
– Тень. Спрячешься под ней и тебя не увидят.
– Спасибо.
Пустив лорга в галоп, Маас потратил около двадцати минут на то, чтобы добраться до места, откуда уже можно было разобраться в том, что происходит.
Было ясно, что нападающие пока не смогли преодолеть барьер за которым демоны собирали дань от Хано. Вулкан, город и вся окружающая территория были накрыты огромным, многокилометровым куполом защиты. Купол подпитывался энергией Хано и Маас знал, что он может стоять очень долго.
Спешившись, внимательно следя за происходящим, Маас начал украдкой приближаться к месту боевых действий.
По границе купола, на равных расстояниях от него, было рассыпано множество фигурок нападающих, вокруг каждой из которых так же светилось то или иное защитное плетение. Ситуация выглядела как безнадёжная для обоих сторон: нападающие не могут продвинуться вперёд, защищающиеся не могут что-либо изменить.
Вдруг, откуда-то сзади и сверху вновь послышался протяжный низкий звук: Маас поднял голову и увидел здоровенный светящийся камень, летящий на Хано. Огромная скорость, с которой он перемещался, говорила о катастрофе, что прямо сейчас произойдёт.
Упав на землю и прикрыв голову руками, Маас во все глаза наблюдал за происходящим.
С оглушительным шумом камень врезался в защитную сферу города и пробил её. Пробив купол, этот метеор врезался прямо в центр одной из пирамид на окраине и на её месте теперь зияла огромная воронка, края которой дымились.
Полусфера, накрывавшая город, материализовалась, превратившись в вулканическое стекло. По ней побежали трещинки, а затем она начала медленно осыпаться, разваливаясь на сотни и тысячи мелких кусочков, засыпая город потоком каменных обломков.
Маас приготовил несколько заготовок, собираясь атаковать наступающих сзади, но разглядев, что происходит, остановился: нападающие открывали телепорты и покидали поле боя.
Дождь из каменных осколков, образованных пробитым куполом, продолжал идти ещё несколько минут. Уши закладывало от оглушительного треска бьющихся кусков. Помимо производимого шума, падая на землю, потоки камней и стекла поднимали столбы пыли и скоро весь Хано был укрыт её плотным слоем. Разглядеть, что происходит в городе, стало невозможно.
Если бы процессы были предоставлены сами себе, то, очевидно, пыль оседала бы очень долго, однако внезапно налетело несколько вихрей и тёмно-серое облако стало быстро смещаться в сторону.
Приглядевшись, Маас с удовольствием подметил, что вокруг жилой зоны Хано уже мерцает новый слой защиты, а большинство упавших обломков находятся за его границей: обороняющиеся успели организовать новый купол до того, как основной начал представлять опасность.
Вернувшись к лоргу, Маас снова забрался на него и поскакал к городу.
– Они ушли! – крикнул он подъезжая на расстояние достаточное для общения с защищавшимися магами.
– А ты кто такой? – спросил его чей-то голос.
– Я пришёл с караваном, он здесь тут неподалёку. Увидев светопреставление, рванул сюда: я местный.
– Местный? Кто твой прямой руководитель?
– Арарг.
– Хорошо. Стой там, сейчас разберёмся.
Потянулись минуты ожидания. От нечего делать, Маас осматривал, насколько позволяло расстояние, уничтоженную пирамиду. Если это всё, что смогли сделать нападавшие, то жертв должно быть немного.
Но почему они ушли, сразу после того, как им удалось пробить купол? Именно после этого события им и нужно было развивать наступление! Выходит, что уничтожение пирамиды и было их целью?
– Маас? – послышался знакомый голос.
– Они все ушли. Я собирался ударить им в спину, но, уничтожив эту пирамиду, они посчитали свою задачу выполненной.
– Заходи, поговорим.
– Я везу к вам гостя, у которого есть много чего вам рассказать. Сейчас я должен вернуться в караван.
– Что, ещё один пленник? – удивился Арарг.
– Гость. Почему пленник?
– В последнее время нам везёт на пленников. Хорошо поезжай. Вернёшься – приходи ко мне. Нападений больше не будет.
– А что было в той пирамиде?
– Не что, а кто. Архимаг эльфов. Мы специально разместили его на окраине, чтобы избежать больших потерь в этом нападении.
– Ого! – удивился Маас. – Ладно, это и правда лучше обсуждать в спокойной обстановке.
Он развернул лорга и поскакал к каравану.
Кавардак
– Всё! Возвращаемся на наш пляж! Нафиг! – говорил я, открывая телепорт, – Чем тратить время впустую, лучше доделаем ещё одну шину между CPU и запустим компьютер в работу! По крайней мере отвлечёмся.
– Почему ты так расстроился?
– Потому что я балбес! Надо было самому догадаться, а не прискакивать к ним с глупыми просьбами.
– Я ведь тоже так же думала. Сотни тысяч человек разом – то ещё зрелище! Я тоже считала, что нужно лишить эльфов этого артефакта.
– Да, кстати, о тебе! Нам нужно решить что делать дальше!
– Что обо мне? – удивилась Эт.
– Он сказал, что магическая клятва – изощрённый формат рабства.
– Это ты так сказал.
– Да, а он подтвердил. Затем он указал на мою коленку.
– И что?
– Получается, что эта коленка может заставить тебя или меня что-то сделать не по своей воле!
– Выбери! – усмехнулась Этера.
– Что выбрать? – удивился я.
– Ты сказал: “Заставить тебя или меня”. Выбери: тебя или меня.
– Неважно какой там ответ, это плохо в любом случае!
– А что плохо?
– Принуждение. Желание принуждать.
– А оно у нас есть?
– А вдруг появится?
– Ну что же, будем с этим жить. – философски сказала Этера.
– Но это неправильно!
– А как правильно?
– А кто ж его знает? – хмыкнул я. – Запутала ты меня. Хоть скажи кто, кого и к чему может принудить. Ты явно должна это знать!
– Когда потребуется – ты разберёшься с этим.
– То есть именно я могу тебя принудить… – сделал я вывод.
– Ты же знаешь, что я могу соблазнить любого мужчину. Ну может только тебя не получилось. Это ведь тоже принуждение. Только вопрос: хочу ли я так поступать? Знаешь, сколько я их всего соблазнила?
– Это не важно.
– Троих, за всю жизнь. Включая тебя.
– Так! – остановил её я, – Это беспредметный разговор! Ты понимаешь, что если я, по какой-то причине, решу тебя принудить к чему-то, то из за этой клятвы ты не сможешь от этого отказаться?
– Но ведь я сама так решила. Если к этому придёт, то стало быть так тому и быть. Помнишь, когда ты говорил об общем бюджете, то ты говорил, что “это показатель уровня взаимного доверия”. Здесь то же самое.
– Чёрт знает что! Это совсем другое! На общий бюджет человек всё-таки может плюнуть. Общий бюджет не ограничивает свободу воли!
– Лучше расскажи что ещё за шину нужно приделать к CPU.
– Нужно понимать, какие CPU в работе, а какие свободны. Не в памяти же это хранить и не перебором искать свободный. Тьфу! Ты мне зубы заговариваешь?
– Первого я принудила, когда была ещё очень юной, почти девочкой. Мне очень хотелось обладать одним никчемным артефактом.
– Зачем ты мне это рассказываешь? – возмутился я.
– Ты же попросил не заговаривать тебе зубы.
– Хгм, ну раз ты решила вспоминать что у тебя было и с кем, то и я расскажу тебе о таком же.
Хм… У меня всё наоборот. Я никогда ничего не предпринимал сам. Я всегда сидел и “ждал у моря погоды”. Все женщины, что были около меня, прочно держали инициативу в своих руках. Правда, если это сваливалось на меня, то я считал это даром и дальше старался его как-то оправдать.
– Считал даром и старался оправдать. В каком смысле?
– Считал, что это моя судьба, и пытался строить дальнейшую жизнь, исходя из этого.
– А почему расходились?
– Разошлись только с одной. Она очень быстро разобралась во мне и решила, что я никчемный ботаник и сказала: “Только не считай происходившее между нами чем-либо серьёзным”.
– Но ты сказал что их было три. Что с двумя другими?
– С ними разрывов не было. Одна из них – Светлана, у меня осталось её сознание, а другая – ты.
– А Сома?
– Была бы Сома несколько агрессивнее в этом вопросе, то я бы таскался всюду с зелёной орчанкой, а не с белокожей демонессой.
– А теперь?
– Что теперь? – спросил я.
– Если теперь она будет агрессивнее?
– Поздно, место занято. Может быть это изъян воспитания, но как есть так есть. Хгм, мы уклонились от вопроса принуждения. Принуждение – это самое плохое что может встретиться в жизни. Его можно оправдать, только как ответ на агрессию.
– Вот эти изъяны мне в тебе и нравятся. Ты живёшь в каком-то, отчасти выдуманном, мире. Вернее всё время пытаешься внешний мир подстроить под свои представления о нём: “Это однозначно хорошо, а вон то – плохо”. Это и сильная и слабая твоя сторона. Сегодня я заглядывала тебе в голову и видела, что ты и правда искренне жалеешь, что убил Великого.
– Хм… А мы что-то ещё сделали, исходя из однозначно сделанного неоднозначного выбора? Я где-то решал при тебе: “это однозначно плохо”?
– Ну… – Эт немного замялась, – например, мы спасли всех пленников, поскольку это однозначно хорошо. Мы не стали разбираться с каждым, просто вытащили их всех скопом.
– Думаешь, там мог оказаться страшный мировой злодей?
– Почему бы и нет? – пожала плечами Эт.
– А ещё?
– Ещё, мы собираемся посадить кмэл. Ровно по такому же предположению: помочь несчастному дереву – однозначно хорошо.
– Считаешь, Косм может нас обманывать? – задумчиво спросил я. – Хгм… Если всё так неоднозначно вышло с Великим, то почему бы и с Космом не получилось бы иначе чем мы думаем? А что же ты молчала? Это клятва на тебя так действует?
– Нет, я подумала об этом только теперь, когда мы стали говорить о тебе.
– Роха сказала: “Он сможет защищаться”. Она говорила это так уверено, что звучало как: “Ни у кого не получится преодолеть его защиту”. То есть кмэл сможет укокошить любого мага. А после возьмёт и захватит всю Рею! И что нам теперь делать?
– Мы же его пока не посадили!
– Погоди! Что дальше? Не сажать его? Из за наших домыслов? А вдруг и у меня есть свой план по уничтожению всего живого на Рее? А ты, получается, мне помогаешь! Нет уж, эта парадигма такая же ущербная как и моя.
– Какая парадигма?
– Подход: никому не доверять, пока не будешь гарантированно убеждён, что доверять можно. Всё равно рано или поздно, а от недостатка информации придётся когда-то положиться на свои чувства.
Если говорить о кмэле, то я не чувствую, что посадить его чревато какими-то большими неприятностями. И в линии будущего я заглянул.
Предположим, что Роха ведёт свою игру с нами. Мало того, я думаю, что это так и есть, ведёт! Ну и пусть себе! Главное чтобы это не была игра против нас. Узнать об этом наверняка мы сможем только сколько-то пройдя у неё на поводу. С её помощью мы уже получили довольно много важных данных, и, если считать, что, помогая ей, мы создаём себе союзника, то кмэл, как наш союзник, возможно будет очень полезен нам в борьбе с эльфами. Если же кмэл окажется врагом, то так тому и быть: будем воевать и с ним.
Если в плену у эльфов находилось вселенское зло, то, освободив его, мы обеспечили себя и мир проблемами на будущее. Великий тоже мог быть нашим союзником, но я его убил. Кмэл может оказаться врагом, а может оказаться союзником. Всюду выбор!
Вероятность того, что мы всё время делаем что-то неправильное, в любом случае есть, но она по совокупности мала. Кроме того, то, на что мы делаем ставки ведь тоже никуда не девается.
– А что такое вероятность? – всплыл в наших мыслях Косм.
– А ты чего подслушиваешь?! – выругался я. – Мы тут вместо того, чтобы делом заниматься, в какие-то дебри ушли! Препарируем вопросы доверия друг к другу! Непонятно зачем!
– Но ведь это ты начал! – укорила меня Эт.
– Это Инроргн! Чёрт бы его побрал! Так, заканчиваем болтовню, тащите все свои сознания в класс, будем… будем… будем дальнюю связь разрабатывать!
– Дальнюю связь? – хором переспросили Этера и Косм.
– Да. Я вообще не понимаю, почему вы не используете астрал для связи друг с другом?! Например, я нахожусь на другом конце планеты, хочу пообщаться с тобой. Я в астрале прихожу в наше убежище, ты тоже в него приходишь и мы общаемся. Почему это не используют?
– Потому что после такого разговора ты не сможешь определить с кем ты общался: со мной реальной или с твоим представлением обо мне.
– Хгм. А как отличить? – озадачился я.
– Встретиться позднее, в живую, и поговорить.
– Не, это нам не подходит. Нужно придумать способ как разобраться кто перед тобой: человек или представление.
– И что это может быть за способ?
– Хм… Например, пароль, который гарантировано никто не запомнит. Мы пишем тысячу различных чисел на листе бумаги. Делаем два одинаковых таких листа. Потом при встрече в астрале проверяем друг друга. Начинаем со случайного: я говорю тебе: десять, ты берёшь десятое число от начала блокнота и смотришь что в этой клетке написано. Например шесть. Смотришь шестнадцатое и говоришь мне: восемь. Я отсчитываю восемь клеток от шестнадцатого… И так далее. Шага три-четыре сверяемся: одинаковое ли у нас с тобой число или нет.
– А если не одинаковое?
– Это значит, что или произошла ошибка или перед тобой тот, кто не владеет такой же табличкой.
– А как проверить этот метод?
– Экспериментально, как же ещё?
– Давай лучше к шине CPU вернёмся!
Коллапс
Уже начав писать программу саморепликации для Орион-128 я понял, что здесь нужен реестр свободных CPU. Иначе никак не понять: есть ли в доступе свободные CPU и какой CPU выбрать для того, чтобы его запустить в работу.
Помимо такого реестра, ещё пришлось реализовать ассемблерную команду, выполняющую атомарный запуск CPU в работу.
Устранив эти недоработки, завершить программу саморепликации оказалось очень просто: программа плетения одного ядра, каждый раз, как доделает свою работу, заглядывала в список свободных CPU и запускала на них себя же.
Этот алгоритм продолжается, пока количество CPU не станет равно 2 в степени 128. Причём тот CPU что уже начал плестись, считается готовым, чтобы программа гарантировано могла остановиться.
Загрузив счётчик CPU начальным значением близким к 2 в 128 степени, мы сделали множество тестовых прогонов и сплели таким образом шестьдесят четыре стартовых ядра. Все произведённые тесты убедили нас, что всё работает и готово к запуску.
– “Помолясь усердно богу он отправился в дорогу” – процитировал я фразочку из детского стихотворения.
– Начинаем? – спросила Эт.
– Осталось два маленьких штриха.
– Какие?
– Подпустить огоньку и водичкой разбавить. Это же твоя идея.
– О, я и забыла!
– Я добавлю искорку, а ты льдинку?
– Ага!
Завершив все подготовительные работы, мы перезапустили Орион-128 и шестьдесят четыре ядра начали плести новые шестьдесят четыре ядра.
Итоговая сложность каждого CPU получилась довольно высокой: на плетение одного ядра тратится около двух часов процессорного времени. Из за того, что сложность некоторых шин по мере их построения растёт нелинейно, то плетение новых слоёв будет происходить всё медленнее и медленнее. В конечном итоге, каждое ядро, по расчётам, будет изготавливаться около пяти часов, а на изготовление всех 128 слоёв Орион-128 уйдёт около двадцати дней.
Запустив репликацию в работу, мы прождали два часа и убедились, что седьмой слой ядер доплёлся и их стало сто двадцать восемь.
Я забрал одно ядро на нужды индикации и запустил на нём программку, показывающую сколько CPU уже сделано в виде этакого прогресс-бара, путешествующего от единицы до 128.
– А чем мы займёмся теперь? – спросила Эт.
– Таблицей символов. Нужно перестать разрабатывать программы в кодах и хотя бы писать их на ассемблере. Для этого будем учить наш компьютер выводить цифры и буквы.
– А куда он их будет выводить?
– В плетение связи. С его помощью я уже умею рисовать линии перед глазами. Нам нужны шрифты со всеми демонскими буквами, цифрами, а ещё с моим родным русским алфавитом. Заодно и алфавит древних нужно поддержать.
– Алфавит древних?
– Ага, я зря что ли рисунки их символов коллекционирую и переписываю все найденные тексты?
В общем, база символов будет первой базой данных нашего компьютера. По номеру символа из неё можно будет извлечь список, описывающих его линий.
– И как это делать?
– Смотри. – я взял лист бумаги. – Делим лист на клеточки, затем рисуем на нём букву. А потом описываем её считая, что компьютер умеет рисовать только прямые линии. Например: начало в клетке 20,30, толщина 4, прямая до клетки 25,45. И так далее. Такое надо прорисовать для каждого символа и сложить в память компьютера.
– Каждый символ вот так рисовать? Это же очень муторно и долго!
– У нас примерно двадцать дней впереди. Косм нам тоже поможет, он же хотел участвовать. На самом деле, хоть работа и однообразная, но нам надо нарисовать всего около пары сотен символов. Вот увидишь: уже к послезавтра мы всё доделаем. И, кстати, здесь можно загрузить конструкты: ты рисуешь, а он описывает нарисованное.
Как я и предполагал, на следующий день, когда Орион-128 добрался до двадцатого слоя CPU, мы уже сделали большую часть работы. У меня были описания для всех цифр и значительной части букв, включая буквы древних.
В кодах символов я решил выделить часть бит, чтобы можно было использовать их как биты признаков: например если вдруг захочется поставить ударение, то взяв символ с кодом 10, установив в единицу бит ударения, можно будет получить ударную букву. Да, таким образом, можно ставить ударения и над согласными, но пока что не до жиру: будем решать эти проблемы на более высоком уровне.
Главное, из за чего я взялся за эти биты, необходимость различать цифры и буквы. Выделив целых восемь бит под признак цифры и ещё шестнадцать бит под признак языка я получил возможность кодировать цифры на разных языках. Можно написать цифру 2
, поставив ей во флагах признак “десятичная система” и язык “арабский”. Та же цифра 2
, записанная в демонском написании будет иметь тот же код символа, но другие флаги. А изображение символа можно рисовать для любого сочетания флагов.
Если древние манипулировали двадцатеричным счислением, как я до сих пор считаю, то их первые десять цифр будут совпадать с нашими. В результате, если вдруг попадётся какая-то база данных древних, выгруженная в текстовый формат, то, думаю, что я смогу её адаптировать к хранению в Орион-128.
На самом деле, хоть это сперва и показалось нудным, но и Этера и Косм увлечённо рисовали символы, иногда даже споря о том, как красивее сделать то или другое, а я, как только этих символов скопилось около десятка, взялся модифицировать плетение связи, чтобы их показывать.
Удивительно, но факт: на Земле, когда появились первые кинескопы, то люди долгое время не использовали понятие “растровая развёртка” для вывода изображений на экран. Вместо этого они гоняли луч по экрану кинескопа по замысловатым траекториям, строя на ходу различные фигуры, в том числе буквы и цифры.
Приблизительно таким же методом пришлось воспользоваться и мне. Связано это не с тем, что я прохожу те же стадии развития, что и наше человечество, а с тем, что плетение связи даёт мне такую возможность.
Как подступиться к выводу растровых изображений у меня пока даже предположений нет. В плетение связи я очень легко могу показать изображение, но… из своей головы. Как это сделать при помощи воздействия на плетение я пока не знаю.
В общем, я сделал так, что ядро компьютера берёт описание символа в виде линий и проводит их при помощи плетения в нужном месте. Линия проводится только в восприятии человека, и нигде в другом месте не существует.
Для человека получается, будто в воздухе, неподалёку от него, он видит цифру или букву.
Поскольку, я совершенно не понимаю, как работает плетение связи, то пришлось “оцифровать” воздействия на него и разбить на кванты всё ощущаемое вокруг пространство. Выбрав кванты, окружающие меня на расстоянии приблизительно 50 сантиметров я, практически опытным путём (при помощи конструктов), собрал статистику воздействий на плетение связи так, чтобы символ можно было нарисовать в любом месте этой воображаемой сферы.
Решив начать с символов размером около одного сантиметра, я смог нарисовать около трёхсот их штук по самой большой окружности вокруг себя.
Первый, созданный нами шрифт, был аляповат, некрасив. Некоторые линии, из которых состояли буквы, были избыточно тонкие или наоборот – жирные. Этера и Косм всё время порывались его переделать, но я останавливал их: впереди ещё такое количество работы, что подобные мелочи можно отложить на более позднее время. Текст получается разборчивым и ладно!
К концу пятого дня, когда плетение репликации дошло до реализации сорокового слоя CPU (у меня уже почти триллион процессоров!) я доделал некоторое подобие терминала: я могу выводить текст из памяти, на виртуальный экран. Курсора нет, интерактивности нет, но текст уже можно читать!
Чтобы двигаться дальше, мне нужна файловая система. Файл – это единица, инкапсулирующая в себе какой-то связанный набор данных.
Замкнутый круг: мне нужны файлы, чтобы хранить в них программы, а чтобы их реализовать мне нужно написать программу, поддерживающую файлы.
В общем, я пришёл к тому, что уже пора заняться операционной системой. В моём случае, поскольку очень большое количество её функций поддержано аппаратурой, операционная система представляет пока что просто список функций, которые может вызывать кто угодно. О пользователях я решил подумать попозже.
Первая функция, которую я сделал – выделение памяти по запросу от программы. Чтобы не возиться со сложными алгоритмами, я выбрал самую простую систему аллокации: слаб-аллокатор. Изначально, вся память всего компьютера размещается в одном слаб-блоке. Когда пользователь запрашивает кусок, то первый найденный свободный блок делится на два до тех пор, пока такие деления можно производить. Затем один из полученных блоков возвращается пользователю. При освобождении памяти, смежные пары слаб-блоков объединяются в более крупные, если оказываются свободными.
Всё использованное – это, разумеется, неидеальные решения, но проблема в том, чтобы вырваться из замкнутого круга написания программ в кодах, мне нужно набрать некую критическую массу решённых задач. Приходится пока приносить жертвы в угоду простоте реализации.
Со всей этой вознёй я составляю список аппаратных доработок, который я планирую доделать в первую очередь: аппаратная поддержка примитивов синхронизации, аппаратная поддержка системы выделения памяти без блокировок и так далее.
В результате, к десятому дню от запуска программы репликации, когда компьютер построил уже около семидесяти слоёв CPU, я доделал наконец функции управления памятью и реализовал простейшую базу данных: ключ-значение. Ключ – это имя файла или каталога, а значение – это его содержимое. Если в записи хранится каталог, то содержимое это такая же база данных.
В таком, радикально упрощённом, виде у меня появилась файловая система. Производительность её крайне мала, поскольку и для выделения памяти и для работы с именами используются блокировки, но пользователей пока очень мало и для старта нас всё это устроит.
В ходе всех этих работ, а так же наших с ним занятий, у Косма наконец получилось использовать два сознания и он начал помогать нам с Этерой более активно.
К пятнадцатому дню от запуска проекта мы занимались созданием интерактивного терминала, показывающего текстовые файлы на виртуальном экране. Находясь в состоянии глубокого погружения в Суть и астрал, мы мало обращали внимание на то, что происходит вокруг и, возможно, если бы мой Драко не пожаловался на происходящее, так бы и погибли.
– Драко говорит, что ему не хватает энергии. – сообщил я Эт, глядя в терминал.
– Ну и что? Возьми из Сути! – буркнула она, пытаясь наладить обратную связь между положением виртуального курсора на экране и мысленным управляющим воздействием.
– Кажись мы вляпались. – пожаловался я. – Не получается остановить процесс!
– Что-о? – воскликнула Эт и тоже выскочила в обычную реальность.
Мы валялись на нашей кровати, а рядом с нами висело Оно. Чёрное, втягивающее в себя всё вокруг, нечто. Это нечто пожирало энергию из окружающей среды, висело почти рядом с нами и, кстати, оно уже сожрало крышу нашего импровизированного домика.
– Не останавливается! – сокрушённо повторил я ещё раз.
– Это что, врата? Как они здесь оказались? – спросила Эт.
– Нет, это наш компьютер. – ответил я, продолжая попытки остановить процесс репликации.
– А что с ним происходит?
– Он растёт, но ему не хватает энергии Сути. Получается, что он начал забирать её из окружающего пространства. Похоже, эльфы не смогут уничтожить Рею! – мрачно пошутил я.
– Почему?
– Потому, что её уничтожим мы. 2 в 92 степени ядер делают новые ядра. Через три с половиной часа их количество удвоится. Через семь часов – учетверится. Думаю, что если процесс не остановить, то планета ухнет в эту чёрную дыру уже к сегодняшнему вечеру.
Я считал, что в Сути бесконечное количество энергии, а оказалось это не так. Когда мы исчерпали энергию Сути поблизости от Орион-128, то он стал забирать её и из нашего пространства.
Вот так вот могло бы выглядеть уничтожение Реи эльфами.
– Что делать?
– Пытаться остановить его!
Я написал программу, проходящую по списку занятых процессоров, останавливающую их работу и перезапускающую себя. Таким образом, программа размножения сигнала “стоп” стала распространяться по ядрам.
– Почему ты такой спокойный?
– Драко удаляет адреналин. Без этого у меня не получалось даже вздохнуть, так страшно стало! – ответил я. – Так! Получается, агрессивность распространения программы репликации значительно выше, чем программы “стоп”, ещё бы: репликацией занимается два в девяносто второй степени процессоров!
Эт, – попросил я, продолжая попытки обуздать происходящее, – погода теперь позволяет, ты пока наведи телескоп на острова Косма, здесь уже скоро всё будет в чёрной дыре. Прыгнем и будем пытаться остановить это оттуда.
У нас уже было такое число ядер, что задача доставить до них информацию о том, что требуется остановиться оказалась не простой! Этера взяла меня за руку, завела в телепорт, а я всё пытался решить этот ребус.
– Ты собирался исследовать Слёзы чтобы ускорять время? – напомнила она мне.
– Ага, только надо было с этого начинать! Теперь уже поздно с этим возиться, не успеем. Так, я немного исправил программу, посмотрим что теперь получится…
– Получается, что тот способ, что ты придумал для борьбы с голодом кмэла нерабочий?
– Ага. Если мы будем брать энергию для него из Сути, то это ничего не изменит… Хм. Он не позволяет мне изменить программу!
– Кто?
– Компьютер! Я начал исправлять ячейки собственно программы репликации: меняю их, а они восстанавливаются обратно!
Чёрт! Шина управления CPU показывает все они заняты! Всё, я полностью потерял над ним контроль!
Я выпал в реальность и заглянул в телескоп, который Этера направила на то, что некогда было нашим пляжем: чёрная дыра была уже несколько километров в диаметре, она захватывала в себя часть гор у берега и значительное количество воды. Вода, попадая в дыру, видимо, пропадала, поэтому сильнейшее течение превратило море в этакую бурную реку, летящую в бездну.
– Что нам теперь делать? – спросила Эт.
– Доступа к управлению больше нет. Остаётся только наблюдать. Девяносто третий слой. – прокомментировал я.
– Как программа могла сама восстанавливаться?
– Не знаю… Смотри, оно загорелось!
Чёрная дыра засветилась: сперва в её центре зажглась искорка, затем её яркость плавно увеличилась, она выросла в размерах и через несколько секунд всё это превратилось в этакую яркую звезду, диаметром километров шесть, наполовину погружённую в толщу земли.
– Что это?
– Не знаю, но это утешает. – сдерживать эмоции, даже при помощи Драко, было всё труднее и труднее.
– Утешает, почему?
– Ему не хватает энергии и оно растёт не только количественно, но и меняется качественно. Была чёрная дыра, теперь этакое солнышко. Качественные изменения говорят нам, что процесс может привести к иному результату, чем мы думаем. Может апокалипсис не случится? Может всё как-то само остановится?
– Гляди! Теперь оно покрывается льдом!
Огромный, огненный шар вдруг стало затягивать в лёд. Огонь совершенно не мешал льду, не плавил его: каким-то образом они отлично сосуществовали.
Сперва на светящейся поверхности шара появились отдельные льдинки, затем они стали расти в размерах, соединяясь между собой в большие куски льда, а после весь шар застыл в этакий огромный снежный комок, диаметром около двадцати километров.
– Сто шестой слой. – прокомментировала Этера показания наших индикаторов.
– Какую-то чушь он показывает! Не может такого быть! Хм… А размер в Сути тоже растёт!
– Сто семнадцатый. – почти сразу выдала она новое измерение.
– Если это правда, то сейчас построена одна тысячная Орион-128.
– Тысячная?
– Ага… Тысячная. Два в десятой степени это приблизительно тысяча и есть. – проговорил я не отводя глаз от шара.
– Индикатор показывает, что процесс завершён.
Мы во все глаза смотрели на то что получилось. Взаимодействие с внешним миром прекратилось, лавинообразное нарастание размеров в Сути тоже закончилось.
– Элементаль? Мы опять создали элементаля? Что за фигня?
Я смотрел на появившуюся в Сути вокруг Орион-128 ауру, содержащую обычные структурные ячейки. Его характеристическое число было небольшим: 4-4-5. При этом, помимо ауры, я видел и те блоки, что проектировали и делали мы.
– Рита, принеси нам его! – скомандовала Этера, отправляя конструкт в центр огромного ледяного айсберга.
– Я ничего не понимаю! – пожаловался я. – Что произошло? У него теперь аура, как у живого существа! Но и компьютерные функции доступны.
Эта магия такая нелогичная, что иногда хочется стукнуться головой о камень!
– Катастрофы не случилось, а это главное.
– Откуда взялась энергия на всё это? Почему в конце процесс пошёл с огромной скоростью? Смотри, а у него больше половины ядер продолжает выполнять какую-то программу!
– Понемногу успокаивается, количество активных процессов снижается. Мы можем понять что они делают?
– Исполняют какие-то программы. Память, которая должна быть заполнена нулями, почему-то что-то в себе содержит.
Планы на будущее
– Итак, что в итоге получилось? – спросил Илли.
– Тиар уничтожен. Потерь при операции нет вовсе. А вот с Тогом всё плохо: его держат в гномьих подземельях, в которых никто кроме гномов никогда не бывал.
По слухам, там они выращивают какое-то огромное существо, но что это или кто это никто не знает. Проработка видящими атаки туда ни разу не дала какого-либо результата.
– Интересно, если они спланировали пару масштабных акций против нас, с похищением короля и архимага, то может быть и нам стоит попробовать пройти по той же дороге?
Похитим архимага гномов и допросим его. Что думаешь, Нэл?
– С гномами этот вариант крайне затруднителен, по той же причине, что и атака. У демонов там вообще не органы власти, а не пойми что: непонятно кого похищать. Возможно, нам удалось бы захватить Молора, но мне не ясно: что мы будем с ним делать.
Я предлагаю оставить всё как есть. Пусть Тог остаётся в плену у гномов.
– Хорошо, тогда давай займёмся коронацией Элорна. – задумчиво сказал Илли.
– Элорна? Но ты говорил… – Нэл осёкся.
– Я думаю, что лучше всего будет готовить к коронации Элорна. Пусть он всё и организовывает: назначает дату, готовит обряд, а самое главное – разбирается с противниками. В самый последний момент мы заменим его на тебя. Чем больше препятствий на этой дороге мы устраним его руками, тем легче её пройти.
Я сегодня был у него и сообщил ему о том, что дальше оставаться без короля мы не можем. Затем я предложил начать подготовку к коронации. Он считает меня самым преданным из всех возможных его помощников.
Нам нужно сегодня к нему зайти и я представлю ему тебя.
– А как мы объясним остальным, когда королём окажется не тот, кого они ожидали?
– Король должен пройти сквозь Врата Власти. Кто вышел оттуда – тот и король. Кто посмеет задавать вопросы королю? А пройти через них сможет только тот, над кем совершён обряд. В ходе этого обряда, кстати, король клянётся разделять с архимагом сферы влияния и не соваться в его дела.
Если контролировать эту клятву буду я, то её смысл мы изменим. Кстати возьми оригинальный текст, ты должен знать его наизусть. – Илли протянул другу небольшую книжечку.
– А после того, как врата откроются?
– К тому моменту нам не должны уже мешать ни Элорн ни Галетт, ни какой-либо другой кандидат. На это у нас полно времени. Кстати, ты мог бы уже заняться Галеттом.
– На синеву его?
– Тебе мало что ли того, что ты получил в Дейле и Рамене? Собирая синеву в накопитель, десятая её часть осела в наших аурах. Я до сих пор не могу привыкнуть к своему уровню.
– Если не убить, то что ты предлагаешь с ним сделать?
– Откуда у нас, эльфов, берутся телепорты, ты знаешь?
– Мы покупаем их у Элорна и Галетта.
– А кто их делает? Думаешь они? Нет! Ты, видимо, ещё не все записи в книге прочитал. На восьмом уровне у нас специально выделена зона для тех, кто трудится на этой ниве. Раз уж и Галетт и Элорн такие большие специалисты в вопросе производства телепортов, то пусть и приносят пользу, создавая их. Хе-хе.
– Хгм. Честно говоря, я все политические записи в книге пропустил.
– Настоящий король, Нэл, это – болван. Болван, который ничего не о чём не знает. Разве ты хотел бы быть таким? Рано или поздно, такого короля меняют на другого. Думаю, что он идёт на подкормку тому или иному кмэлу.
Да и жизнь у него скучная: Тог вон с утра до вечера жрал пыльцу. Так что почитал бы ты эти записи, полезно бы было. – улыбнулся Илли.
– Да я их пропустил-то не потому, что это не интересно, а потому что времени пока что не было. Мы готовили операции в Дейле, Хано и так далее. Ты, кстати, что-то понял из тех книжек что мы забрали у тёмных?
– Почти ничего нового. Они – наши конкуренты. Цели у них такие же, методы примерно наши, обряд пополнения тот же. Разве что у них по другому построены отношения с местными. Но и у нас эти отношения со временем меняются.
Сейчас я думаю, что тёмные – это просто резервный вариант достижения поставленной кем-то цели. По крайней мере в этом мире у нас с ними конкуренции больше не будет.
А ответа на вопрос: “В чём цель?” – я пока не нашёл.
– И что будем делать, если ответа на этот вопрос нет ни у кого?
– Не знаю, Нэл. Продолжать искать. Ещё можно, наверное, повеситься. – усмехнулся Илли, – правда я к такому пока не готов. Настоящим архимагам, вероятно, здесь и труднее и легче. Легче – потому, что клятва ограничивает их в действиях, а труднее – потому, что знания из головы не выбросишь.
Тиар был видящим. В какой-то момент он вдруг поднял меня, приблизил и выделил мне кабинет по соседству. Может быть он сделал это, потому что знал, что я прочитаю его книгу без клятвы?
– А что будем делать после того как откроется телепорт?
– Официально ты – король в трёх мирах: здесь, на Земле и на Тефии. Ещё с одним миром вопрос открыт: удастся проложить туда дорогу, значит будет и четвёртый.
Хоть дорога на Землю пока и закрыта, но с Тефией можно поработать. Будем решать задачи по мере их поступления.
– Я ещё не король.
В дверь постучали и Илли сделал знак, что беседу стоит прекратить.
– Очень скоро мы исправим этот мелкий недочёт, Нэл, очень скоро!
– К вам Эйгр.
– Впустите.
– Я к вам с новостями: сын хранителя родился. Мы можем переместиться туда и посмотреть. – проговорил видящий заходя в кабинет.
– Боевую группу, живо! – крикнул Илли вдогонку уходящему охраннику.
В последнее время Илли требовал, чтобы группа всегда была готова выдвинуться по первому приказанию, однако как бы быстро и слаженно все ни работали – первый маг, смог перейти через открытый им телепорт только через пол часа.
Первое, что почувствовал Илли, пройдя телепорт – холод. Хотя последствия обморожения давно позади, но они оставили в памяти такой отпечаток, что рефлекторно он даже взял левую руку в правую.
Помимо воспоминаний о холоде, лес, в котором они очутились, почему-то тоже казался знакомым. Глядя на огромный снежный ком, нависающий над деревьями, он временами оглядывался, пытаясь понять: почему ему кажется, что здесь он уже был? Вспомнив уроки Эйгра, Илли прикрыл глаза и, сосредоточившись, понял: Рамен. Это были окрестности города Рамен.
– Что это? – спросил Нэл, трогая рукой холодный снег.
– Место рождения сына эльфийки и хранителя. – ответил видящий.
– В снегу?
– Думаю, снегом здесь всё засыпали для того, чтобы видящие не смогли найти что-то конкретное. Когда вся эта масса растает, то все следы будут смыты.
– А что ты ещё можешь об этом сказать?
– Незадолго до его рождения они наблюдали за нашей операцией в Рамене. Эти наблюдения сподвигли эльфийку провести рождение сына раньше.
– Но это ведь не роды! – возразил Илли, – Сын хранителя существовал до этого и существует теперь. Значит здесь было что-то иное. Возможно, применение большого количества синевы?
– Да, всё указывает именно на это. Лес, который был на месте этого снега полностью уничтожен, а у того, что всё-таки сохранился – сильнейшее энергетическое голодание.
– Так, – подытожил Илли, – придя сюда, мы пока ничего полезного не узнали. Давайте уберём этот снег и посмотрим что под ним.
– Для этого нужен стихийник, но, насколько я понимаю, у нас в команде такого нет. – возразил Нэл.
– Думаю, наших магических способностей должно хватить, чтобы просто растопить этот кусок льда. – Илли огляделся – Что находится за этой снежной горой?
– Море.
– Тогда давайте переместимся туда, где его видно. Нэл, отправь кого-нибудь вперёд на разведку…
Вектрон
Несостоявшаяся катастрофа конечно улучшила наше настроение, однако то, что под конец процесс происходил сам по себе, доставило мне массу негативных эмоций и первое чем я занялся – расчётами и экспериментами.
Картина мира, которую я себе до этого рисовал, оказалась поломана: я считал Суть бесконечным источником энергии, а на деле выходит, что Суть имеет всего-навсего на порядок-два большую энергетическую насыщенность, нежели наше пространство.
Я создал с десяток материализаторов в Сути и запустил их все разом. Не понимаю, почему я этот опыт не провёл ранее, но в результате быстро обнаружилось, что с какого-то момента увеличение числа материализаторов в одном месте не приводит к увеличению количества поступающей оттуда энергии.
А ещё эти опыты убедили меня в том, что всё-таки можно найти корреляцию между положением объекта в обычном пространстве и его положением в Сути: строить Орион-128 мы начали на пляже, а когда он выбрал всю энергию Сути, то чёрная дыра появилась именно на пляже.
Но, конечно, самое непонятное в произошедшем – появившаяся у Орион-128 аура. Кроме этого нет никаких отличий того что мы делали от того, что мы сделали. Хотя нет, второе отличие – постоянно работающие ядра. Общее количество ядер, на которых исполняется какой-то непонятный код в целом небольшое. В периоды, которые можно назвать спокойствием, это количество может падать до двух десятков, но иногда, от чего это зависит непонятно, количество задействованных ядер измеряется миллиардами.
Попытки воздействовать на эту активность почему-то проваливаются и, при этом, влияют на цвет ауры этого существа. Выглядит это так: я останавливаю используемое ядро CPU, даже могу удалить всю программу (посмотрев, куда указывает регистр адреса), которую выполняет это CPU. В результате такого воздействия аура краснеет, затем эти неведомые программы как-то реагируют, количество задействованных ядер увеличивается, а спустя некоторый срок времени всё стабилизируется в старое состояние.
Разбираясь с этим, я придумал каким образом можно убить эту активность: нужно написать программу, забирающую на себя огромное количество ядер, а потом по определённому сигналу, все эти ядра “набросятся” на потоки исполнения этого существа и остановят их.
Однако, поскольку наличие ауры намекает, что это существо живое, то, хоть у меня и нет никаких предположений о том, что это или кто это, но я подумал-подумал и решил постараться оставить его живым.
Что это за существо? Этакий аналог Больцмановского мозга, который самозародился в моём компьютере? С этим объяснением можно бы было согласиться (конечно с кучей допущений), если бы каждый новый CPU создавался бы сразу включённым в работу и если бы каждая создаваемая ячейка памяти имела бы случайное значение. Но при построении компьютера это всё было не так: память создавалась заполненная нулями, процессоры запускались только моей программой.
С другой стороны, для Больцмановского мозга 2 в 128 степени ячеек и даже такое количество опытов – это, вероятно, слишком мало. И главное: все странности начались тогда, когда размер моего компьютера был в миллиарды раз меньше этого значения.
Что-то произошло и вместо коллапса, случилась ускоренная достройка компьютера до конца. В какой-то момент энергии этому процессу катастрофически не хватало, а затем она откуда-то взялась. Откуда?
Получить ответ на этот вопрос крайне интересно: раньше я думал, что из Сути я смогу набрать энергии и, таким образом, спасти планету, в случае если иные способы не дадут результатов. Но теперь снова нужно искать откуда можно взять огромное количество энергии.
Может быть под Сутью есть ещё какой-то слой и энергия поступила оттуда? Но как это узнать? Здесь нужны мозги не какого-то среднего инженеришки вроде меня, а учёного с солидным математическим аппаратом. Эх.
В общем, решив оставить это загадочное существо жить в нашем компьютере до тех пор, пока оно не станет ему мешать, мы посчитали необходимым дать ему имя.
Сперва выбрали незамысловатое – Компик (или Комп, если вырастет), но потом решили, что Космик и Компик – чересчур созвучно и я стал вспоминать названия первых компьютеров. Ничего в голову не приходило, а потом я вспомнил, что в какой-то старой компьютерной игре был такой персонаж – живой компьютер, которого звали Вектрон. В общем, мы решили, что Компик будет носить имя Вектрон.
Поскольку у меня сходу накопился список доработок, нужных для будущей операционной системы, я решил заняться ими, а заодно понять: помешает ли Вектрон дорабатывать аппаратуру Орион-128 или нет. Поэтому, для начала я добавил регистр-метку в каждый процессор и запустил программу, распространяющую эту модернизацию по всему Орион-128.
Смысл этого регистра только в том, что его значение наследуется тогда, когда CPU запускает какую-то работу на другом CPU. Когда процессор прекращает работу, то значение метки устанавливается в нулевое.
Поскольку все программы, которые запускал на компьютере я, мне известны, то расставить им метки оказалось несложно, а затем, я написал программу, которая отмаркировала все процессы Вектрона. Таким образом, взглянув на метку у любого CPU, я всегда могу понять это моё или Вектрона.
Добавление системы разметки процессоров прошло успешно, Вектрон не проявлял к этому никакой агрессивности, и заняло около часа процессорного времени Орион-128.
После того, как все процессы были отмаркированы, я запретил возможность изменять содержимое этих меток программно.
Интересно, что Вектрон не мешает (пока не мешает) моей программе, занимающейся аллокацией памяти. Однако скорее всего это связано с низкой вероятностью коллизий – в будущем всё не только может, но и обязано поменяться. Я задумался над вопросом: как можно его заставить использовать память так, чтобы он не мешал мне, а я не мешал ему. У меня уже есть идеи, как это решить, но прежде я решил доделать более важные дела.
Итак, у меня уже имелись: возможность сохранять файлы и возможность показывать их содержимое живому существу (то есть мне, Эт, Косму). Пока Этера и Космик доделывали систему печати символов, с целью довести до ума терминал, я занялся написанием парсера для создания первого компилятора: из ассемблера в коды.
Поскольку ещё на стадии проектирования процессора я сделал команды относительного перехода управления, то все программы, что мы пишем легко перемещаемы по адресному пространству.
Ввиду аппаратных особенностей, компилятор языка ассемблер получился сравнительно несложным: ему нужно просто пройти по тексту программы сверху вниз и преобразовать этот текст в коды, а затем во втором проходе – проставить адреса меток, ссылающихся вперёд.
Сделав минимальную версию такого компилятора, я вручную создал файл с текстом этого компилятора с тем, чтобы компилировать его этим же компилятором. К тому моменту, как я к этому пришёл, Этера и Косм доделали какое-то подобие редактора файлов и наша разработка вышла на новый уровень.
– Гляди, что происходит! – однажды отвлекла меня от работы Этера, направляя моё внимание на то место, которое некогда было нашим пляжем.
Поверхность снежного кома светилась, на нём образовалась этакая канавка, которая, очевидно, была горячей. Лёд плавился и жидкость уходила в море, проходя через нечто, похожее на магическое сито. Было понятно, что этот процесс – дело рук магов, которые что-то там затеяли.
Я поводил объективом телескопа из стороны в сторону и совершенно не удивился, наткнувшись на эльфов, которые были виновниками происходящего.
– Мюллер! И кто это с ним? Всё тот же эльф.
Мюллер и второй эльф вдвоём держали какое-то плетение, медленно, но верно расплавляющее ледяной шар, разрезающее его пополам.
– Интересно, а что они хотят найти? – спросила Эт.
– Думаю, они и сами не знают. – предположил я. – Попробуй аккуратненько понаблюдать за ними астрально.
– Не выходит. У них очень мощные артефакты прикрытия. Такие применялись эльфами только во время войны.
– А Инроргн говорил, что при прямой видимости очень сложно прикрываться. Ладно, давай посмотрим хотя бы на их артефакты. – ответил я, отправляя исследовательский конструкт.
В общем, эльфы вели раскопки в леднике, оставленном нами, мы же вели наблюдение за ними. Исследуя эльфов, мы сделали несколько крайне интересных открытий:
Во-первых: и Мюллер и его сообщник теперь являются магами очень высокого уровня. Характеристическое число Мюллера – около двухсот пятидесяти, а его товарища – около двухсот двадцати.
Подробнее изучив ауру второго эльфа, я понял, что он мне знаком ещё с Земли, поэтому поразмыслив, я пришёл к тому, что его тоже как-то необходимо называть и решил звать его Холтоффом.
Во-вторых: Почему-то моё проклятие в ауре Мюллера сдохло, хотя лечащий конструкт был на месте. Это обстоятельство заставило меня задуматься: а нет ли нового вида элементаля, появившегося из моего проклятия? На эту мысль меня буквально наталкивал Драко, ставший элементалем, когда моя аура радикально перестроилась в другую структуру. Ауры Мюллера и Холтоффа тоже испытали значительные воздействия, поэтому, может быть моё проклятие находится где-то рядом с элементалями?
Если это так, то оно, вероятно, может представлять страшную опасность для того, кто попробует с ним пообщаться как с элементалем. В общем, я решил, что этот вопрос надо как-то сперва пообмозговать прежде чем экспериментировать.
В-третьих: ни у Мюллера, ни у Холтоффа, ни у какого другого эльфа, прибывшего сюда, не было в заготовках телепорта. В последнее время мы потратили слишком много этих плетений и, увидев эльфов, мы сперва было обрадовались, что за их счёт можно будет поживиться этим ценным ресурсом. Но, увы, телепортов у них не было. А каким тогда способом они собирались возвращаться домой? Совершенно неясно.
Артефакты, создающие помехи для астрального наблюдения, нашлись в аурах и Мюллера и Холтоффа. Это какие-то штуковины, совершенно точно произведённые древними. Удалённо разобраться в том, как они работают, пока не представлялось возможным: нужно воровать и исследовать. Увы, артефакт – не заготовка, просто так не украдёшь. Впрочем нужно поисследовать этот вопрос: почему бы не начать изымать плетения из артефактов?
А остальные артефакты и плетения, которые Мюллер или его спутники, принесли с собой были очень простыми: телепортов среди них не было.
Пронаблюдав за ними почти целый день, мы было решили, что эльфы ожидают, что за ними кто-то придёт. Я даже вывел целую теорию: раз телепорты у них постоянно воруют полтергейсты, то самой лучшей тактикой для них будет – открывать переходы из защищённого места вместо того, чтобы таскать их с собой.
Но на второй день, когда они закончили копаться в снегу, Холтофф меня крайне озадачил: он открыл телепорт и все они ушли. Вот так вот: не было телепорта в его ауре, а потом он откуда-то взялся. Загадка!
Новые союзники
– Получается, что даже захватив архимага, вам не удалось узнать ничего полезного? – спросила Лиелла
– Ну почему же? – ответил Арарг. –
Да, к сожалению, многие вещи ему мешала рассказать магическая клятва. Допрашивая его, приходилось очень тщательно взвешивать вопросы, чтобы не убить его раньше времени.
Но всё равно, мы получили много данных. Теперь нам, например, известно название планеты, где они собирают синеву для операции. Известны подробности того, как и что они собираются сделать.
Практически всё, что мы от него узнали, пересекается с тем, что рассказываете вы. Теперь, собрав всю эту информацию воедино, мы будем разрабатывать план нейтрализации этой угрозы.
Печальный опыт Келпа, о котором вы рассказали, конечно удручает: получается что нужно исходить из того, что уничтожить врата нет никакой возможности. Но мы будем думать. – Арарг помолчал. –
Поскольку ваша группа не из нашего мира, то хочу всё-таки ещё раз предложить вам действовать совместно. С сегодняшнего дня мы в любом случае будем рассматривать вас, как самостоятельную силу, государство, представителей иного мира.
Да, вы говорили, о вашем решении прекратить борьбу. Однако, если кто-нибудь, всё же, захочет в ней поучаствовать, либо просто появятся какие-либо идеи: смело приходите сюда, здесь вас примут, выслушают, постараются помочь.
– У врат есть артефакт управления. – продолжил набрасывать мысли Маас, – может быть можно, воздействуя на него, каким-то способом отключить их? Может быть можно сломать именно этот артефакт?
– Врата частично разбираются. – ответила Лиелла, подумав, – Из артефакта управления можно извлечь ключ. Вернее что это – никто не знает, но принято называть его ключом. Его можно вынуть и врата перестанут работать. Однако это такая же временная мера, как и утопление их в толще земли.
Мы расследовали его свойства. Функциональное назначение ключа очень похоже на накопление энергии, но какая энергия в нём накапливается и энергия ли – нам неизвестно. Если использовать два ключа от разных врат по очереди, то, меняя их, можно делать более частые перемещения из мира в мир. Получается, что ключ, использованный для перемещения, тратит время на восстановление своей работоспособности. Именно поэтому мы считаем, что это накопитель какого-то неизвестного вида энергии.
Если из врат удалить ключ, то через несколько месяцев они накопят этот неизвестный ресурс и у них появится новый ключ, а старый, если его не использовать, плавно растворится в пространстве.
Ещё несколько, подобных ключу механизмов, есть в самих вратах: поворачивая колесо, устанавливая его в определённые позиции, эти части можно вынимать из телепорта. Однако, потом они так же восстановятся, как и ключ.
В общем, идею вывести врата из строя можно оставить: мы перепробовали всё. Вряд ли вы придумаете что-то новое. Кроме того, пока врата восстанавливаются, что-либо делать с ними невозможно.
– Хорошо, давайте прекратим мозговой штурм о том, как сломать телепорт. Предлагаю обсудить насущные планы на ближайшее будущее. – Арарг поднял руку, призывая всех к тишине.
– Вы что-то хотите предложить? – спросил Маас.
– Мы хотим чтобы вы помогли нам проложить стационарный телепорт в Цехин. Ведь вы оба направляетесь туда?
– Стационарный телепорт? – удивилась Лиелла.
– Да. Стационарный телепорт. Необходимо, чтобы вы подобрали там хорошее, незаметное помещение, куда будет вести этот телепорт, а затем разместили там артефакт, который позволит нам построить это плетение.
– Вам известна схема этого плетения? – удивлённо переспросила Лиелла.
– Да. Если вы готовы рассматривать нас как союзника, то в будущем мы можем поделиться этим плетением. Но, чтобы говорить об этом, сперва необходимо установить с вами какие-то, хотя бы формальные, отношения.
– Я передам эту информацию нашим.
До этого, нам удавалось разве что украсть такой телепорт. Мы снаряжали целую разведывательную миссию на Землю, с целью заполучить этот секрет, но пока безуспешно. Если это не является тайной: откуда у вас это плетение?
– Из того, что вы говорите, я делаю заключение, что на Земле было возможно получить знание о нём?
– Да, на Земле, есть раса или скорее сообщество магов, которых эльфы не смогли уничтожить. Они владеют этим секретом.
– Получается, что плетение нами получено из того же источника, где пытаетесь добыть его вы: схема этого плетения предоставлена нам магом с Земли.
– Очень интересно! Говорите, чтобы вы им поделились, нужно заключить с вами формальные отношения?
– Хотя бы формальные, но обязательно союзнические. – улыбнулся Арарг. – Кстати, вы сказали, что вам удавалось украсть такие телепорты. Что это значит? Его можно украсть?
– Для таких телепортов существует плетение перемещения любой из его сторон. Перемещение работает, как короткий телепорт. Организовывая похищение телепорта, приходилось проводить операции с одновременным набегом на обе его стороны и затем длительным пошаговым сдвижением обоих его частей в нужные места. Насколько я знаю, подобную операцию удалось произвести всего дважды.
– Я планировал приобрести жильё в Цехине, – задумчиво сказал Маас, – но для такого дела, лучше всего купить несколько вариантов. И тот, где будет размещён переход не использовать вовсе. Но это всё детали.
Меня волнует другой вопрос: когда их кмэл защищает город, то все его жители, а может быть только гости, теряют сознание. По крайней мере я терял. Я так же опрашивал других людей – с ними было то же самое.
То есть телепорт внутрь Цехина может оказаться не самой хорошей идеей. Возможно лучше рассмотреть размещение телепорта где-то в непосредственной близости от города, но не в самом городе?
– Мы рассматриваем все варианты, но мы хотим, чтобы вы помогли разместить телепорт именно в Цехине. Возьмётесь?
– Конечно. – ответил Маас.
– Я, разумеется, тоже приму в этом участие. – добавила Лиелла.
– Отлично! – резюмировал Арарг.
Заборостроение
Произошедшее с Орион-128 я пока объясняю проснувшимся инстинктом самосохранения в появившемся существе.
Я пока не считаю, что у него есть разум, но наличие инстинктов может объяснить некоторые вещи.
Если подумать над произошедшим, то вырисовывается следующая картинка:
Появилось некое существо. Что отличает живое существо от неживого? Наличие инстинкта самосохранения! Если таковой отсутствует, то живое существо быстро становится неживым.
Появившись на свет, оно вдруг поняло или ощутило, что события развиваются для него фатально, и, действуя инстинктивно, каким-то образом оно изыскало ресурсы. Ему удалось откуда-то взять необходимую энергию и остаться в живых.
Сейчас, ретроспективно, я нашёл тысячу и один способ, как я мог прервать лавинообразно развивающиеся процессы. Даже, когда свободных процессоров не осталось, у меня были варианты действий! Прежде всего, у меня была возможность остановить тактовый генератор. Да, он тоже достраивался по мере создания компьютера, но это была та самая ручка, которую можно было потянуть, чтобы всё прекратить!
“Русский мужик силён задним умом!” – почему-то эта пословица всё время оказывается подходящей ко мне. “Ладно, хоть обошлось.” – другая фраза, которую я избыточно часто теперь применяю.
Итак, вспомнив о генераторе, я взял и просто остановил его. Аура Вектрона погасла. Подождав несколько минут, я запустил генератор в работу и всё, включая ауру, восстановилось. Судя по активности, Вектрон и не заметил факта временного отключения. Этот опыт окончательно подтвердил то, что Вектрон – существо, живущее в Орион-128.
Решив, пока по крайней мере, что слаб-аллокатор останется со мной навсегда, я придумал как разделить Орион-128 с Вектроном так, чтобы мы даже теоретически не мешали друг другу.
Я занялся добавлением аппаратной поддержки управления слаб-блоками на уровне ассемблера. Поскольку выделение и освобождение слаб памяти – рекурсивные операции, то я сделал ассемблерную команду, которая выполняет один цикл разделения слаба пополам и, если дальше делить не требуется – возвращает его адрес, а иначе – возвращает ошибку. И такой же подход применил для возврата памяти в систему.
Таким образом, когда нужно выделить память, программа в цикле вызывает одну и ту же ассемблерную инструкцию, пока не получит результат. Слаб помечается как “занятый” тоже аппаратно. Аппаратно же в него попадает идентификатор процессора, метка программы, которая запросила память и собственно статус блока памяти “занят/свободен”.
С одной стороны получилась система выделения памяти в конкурентной среде, а с другой, я иду к возможности построения “забора” между моей памятью и памятью Вектрона.
Поскольку теперь известно какой процессор занял какой слаб, то в каждом процессоре я добавил регистр, указывающий на список запрошенной им памяти. Таким образом, удалось разделить память на “своя-чужая”.
Реализовав шифратор, входами которого является выбираемый процессором адрес, а так же список привязанных к нему слабов, я смог сгенерировать исключение “доступ к чужой памяти” – если процессор обращается к памяти, которую запрашивал процесс с иной меткой.
Пока что это исключение я генерирую только для конфликта между моей памятью и памятью Вектрона, а в будущем, я планирую доработать этот механизм, чтобы разделять процессы внутри операционной системы.
Но как научить Вектрона пользоваться этим? Чтобы решить эту проблему, я исходил из того, что считал Вектрон не имеющим разума, то есть сразу отбросил пути как-то с ним договориться. А так же из того, что он – живое существо, а потому может трансформироваться под действием влияющих на него внешних обстоятельств.
Выждав когда у Вектрона будет период спокойствия, я просто взял и включил построенную систему защиты памяти, основанную на метках процессов. Сейчас этих меток всего две: 1 - Мои программы, 2 - Вектрон. Включив защиту памяти, я стал внимательно наблюдать за его аурой.
Рассуждал я так: Ему понадобится память, он возьмёт любой из доступных кусков и… внезапно получит исключение. При этом у него под рукой теперь есть две ассемблерные инструкции для выделения и освобождения памяти. Попав в жёсткие рамки ограничивающие его в доступе к такому важному ресурсу, он перепробует различные варианты, в том числе и эти инструкции.
Дальше это или приведёт его к тому, что он перестроится на их использование, либо он умрёт. О его состоянии я могу судить по цвету его ауры, если что, то смогу отключить систему защиты, не давая ему умереть.
Пока я возился со всем этим, Этера и Косм написали простенький дизассемблер и перевели все программы, написанные нами в кодах в текстовый формат. Теперь мы можем вносить в них изменения.
Я периодически включал и выключал систему защиты памяти, но почему-то Вектрон никак не мог придти к тому, что для работы с памятью ему нужно использовать специально предназначенные для этого инструкции.
Выход из ситуации мне подсказала Этера.
– Если это маг, то…
– Он точно маг, ты же видела! – перебил я её.
– Если это маг, то он должен быть как-то связан и с астралом. Наши учёные считают, что астрал всегда отражает всю существующую в мире информацию.
– И что ты предлагаешь?
– Я думаю, что можно подсказать ему, собрав для него какую-то астральную картинку.
– Хгм… – сказал я, и мы стали пробовать.
Я представил Вектрона как этакого червячка, питающегося памятью. У червячка внутри было много органов, но все они состояли из наших процессоров. Вокруг Вектрона была питательная среда, которая могла поглощаться нашими процессорами.
Иногда эта среда становилась токсичной и кушать её можно было через одну инструкцию, а выводить отходы жизнедеятельности – через другую.
Мы нарисовали несколько страшных картинок о том, что будет, если не выводить отходы, надеясь, что помимо запросов на выделение памяти, от него будут приходить и запросы на её освобождение.
Проделав эту работу, мы вернулись к экспериментам.
Пока что, при включении аппаратной защиты памяти между метками процессов, никакой возможности обхода её нет. Когда у меня будет операционная система, то какой-никакой супервизор мне понадобится, но сейчас, пока мы занимаемся помещением Вектрона в клетку, я специально не стал реализовывать эту возможность, чтобы он случайно не нашёл иную дорогу, чем мне требуется.
Включая защиту, мы смотрели на то, как аура Вектрона плавно становится из зелёной жёлтой, потом краснеет, а потом защиту приходилось отключать.
Чего-то не хватало, но мы не понимали чего. Выключив генератор у Орион-128, я исследовал процессы Вектрона и убедился, что астральные картинки помогли и какое-то количество памяти, запрошенное правильным способом у него есть. Но полностью переходить на её использование он почему-то не хотел.
Поняв, что мне очень неудобно наблюдать за процессом выделения памяти, я добавил несколько аппаратных индикаторов и запустил программу их размножения.
Это часто так бывает: пока у тебя нет системы мониторинга, то у тебя ничего не получается, а когда она появляется, то всё начинает работать так, что она вроде как и не нужна.
Когда у нас появилась аппаратная индикация кто сколько памяти использует, то при первом же включении защиты памяти, аура Вектрона чуть пожелтела, а затем вернулась к привычному голубовато-зелёному цвету.
– У него получилось? – удивилась Эт.
– Похоже, что да. – прошептал я.
Я оценил расходы Вектрона на себя: ему и нужно-то было всего около десятка миллиардов ячеек памяти, да от десятка до миллиарда процессоров.
Моя система пока ограничивает только перекрёстное использование памяти, но не вводит какие-либо квоты.
На всё это заборостроение между нашей и Вектрона памятью мы убили около трёх месяцев времени.
Руки к небу!
Где-то в самом начале этого пути, я пришёл к тому, что программирование на ассемблере – это очень сложно и решил, что нам нужен другой язык программирования. Более высокого уровня. Но написать на ассемблере компилятор языка высокого уровня – это крайне сложная задача.
Я долго не решался подступиться к ней: даже простой язык, вроде какого-нибудь Lua выглядел, как нечто неподъёмное. А однажды меня осенило: LISP! Этот язык считается одним из самых мощных в мире не только потому, что абсолютно все современные технологии пришли из него, но и потому, что базовый его интерпретатор очень простой, поскольку весь его синтаксис базируется на одинаковых s-выражениях.
В моём мире когда-то даже устраивали соревнования: кто напишет самый короткий интерпретатор LISP и победители укладывались в несколько десятков строк. В общем, похоже пришла, наконец, и моя очередь поучаствовать в этом процессе и, засев за реализацию односвязных списков, я реализовал очередной диалект этого языка. Я не помнил до конца, какой набор функций является для этого языка минимальным, впрочем, это не является принципиальным.
В результате моих усилий, Орион-128 стал включать в себя средства разработки на трёх языках:
Попутно со всеми этими занятиями, мы разбирались с вопросами открытия дополнительных сознаний. В результате, мы довольно далеко продвинулись в исследовании этого вопроса. Ещё раньше я установил, что если человек хочет открыть в себе новое сознание, то он должен выполнять умственные упражнения, вроде “рассматривания вещи или проблемы с разных сторон”.
Теперь же, дополнительно нам удалось выяснить, что, выделив одно сознание под такие упражнения, можно открыть третье, четвёртое сознания и так далее. Есть ли тут какие-то ограничения пока непонятно.
Мы открыли у Косма и у Эт по четыре сознания и решили на этом пока остановиться. “Хорошо, но хорошего не до слёз.” – вспомнил я старую пословицу.
Успешное строительство забора между нашим софтом и Вектрона привело нас в себя. Мы вдруг задумались: “А зачем мы здесь находимся?”. А ведь на эти острова мы прибыли, чтобы посадить Космика, а не для того, чтобы без остановки заниматься своими делами! А ещё ведь есть и более важная цель – эльфы!
В общем, в один прекрасный момент, я понял, что если мы не вернёмся к делам сейчас, то не вернёмся уже никогда. Волевым усилием я отложил в сторону возню с переменными окружения процессов нашего, уже вырисовывающегося на горизонте, UNIX и вскочил, доставая зёрнышко Космика из кармана.
– Ну всё, пора! – сказал я. – Пришло время тебя прорастить!
– Я останусь один?
– Ты же умеешь приходить в наше убежище, кроме того, доступ к Орион-128 у тебя тоже есть. Чат, что мы сделали, пока не очень удобный, но его достаточно, чтобы гарантировать, что в астрале ты общаешься не со своим представлением, а с кем-то из нас. Какая тебе разница: лежишь ты в моём кармане или растёшь здесь?
– Нам нужно двигаться дальше. – подтвердила Эт, – засиделись мы здесь!
Решительным движением я скатился с кровати на песок, уложил зёрнышко кмэла в небольшую ямку, а потом чуть присыпал его сверху. Почему-то я знал, что искать хорошую почву для него совершенно необязательно.
– Подождите, мы не попрощались! – прислал жалобную мысль Косм.
– Прощаются, когда расстаются. – строго сказал я. – А мы не расстаёмся, и не собираемся это делать!
Прилетел мой конструкт, собиравший и хранящий синеву, и я, продолжая всё тот же порыв, перелил все его запасы в Космика.
– Нужно было уйти подальше от берега. – задумчиво сказала Эт.
– Хм… И правда. – сказал я. – Пока ничего не происходит, может ещё успеем?
Я зачерпнул в ладони горсть песка вместе с зёрнышком, встал и мы начали удаляться вглубь острова. Поскольку ничего не происходило, мы шли довольно спокойным шагом, не спеша. А потом, я вдруг понял, что … не чувствую свои руки!
– Косм, остановись! – попросил я. – Это ведь моё тело!
Косм не отвечал. Он не был без сознания: я чувствовал его мысли, но в них был хаос. Я попытался навести в нём порядок, но у меня не особо получалось. Выглядело так, будто Косм занят попыткой открыть ещё одно сознание и для этого разбирается с форматом хранения строк в Орион-128.
На горке песка, лежащей на моих ладонях, показался маленький зелёный росток. Будто маленькие ручонки, он тянул два лепестка к небу, к свету.
Я хотел было положить его на землю но не мог. Мои руки парализовало, паралич плавно продвигался от них через плечи в остальное тело.
– Этера, помогай! – закричал я мысленно.
Она не нашла ничего лучше, чем ударить меня по рукам, выбив и сбросив на землю мою ношу. Песок осыпался, я мельком увидел свои руки: почему-то они были в крови.
Моё тело потеряло всякую чувствительность и я начал заваливаться вперёд. Пытаясь удержать меня или хотя бы сместить траекторию моего падения в сторону от Косма, Эт подставила под меня плечо. Что было дальше память моя не сохранила, сознания мои выключились.