Что это за существо? Этакий аналог Больцмановского мозга, который самозародился в моём компьютере? С этим объяснением можно бы было согласиться (конечно с кучей допущений), если бы каждый новый CPU создавался бы сразу включённым в работу и если бы каждая создаваемая ячейка памяти имела бы случайное значение. Но при построении компьютера это всё было не так: память создавалась заполненная нулями, процессоры запускались только моей программой.
С другой стороны, для Больцмановского мозга 2 в 128 степени ячеек и даже такое количество опытов — это, вероятно, слишком мало. И главное: все странности начались тогда, когда размер моего компьютера был в миллиарды раз меньше этого значения.
Что-то произошло и вместо коллапса, случилась ускоренная достройка компьютера до конца. В какой-то момент энергии этому процессу катастрофически не хватало, а затем она откуда-то взялась. Откуда?
Получить ответ на этот вопрос крайне интересно: раньше я думал, что из Сути я смогу набрать энергии и, таким образом, спасти планету, в случае если иные способы не дадут результатов. Но теперь снова нужно искать откуда можно взять огромное количество энергии.
Может быть под Сутью есть ещё какой-то слой и энергия поступила оттуда? Но как это узнать? Здесь нужны мозги не какого-то среднего инженеришки вроде меня, а учёного с солидным математическим аппаратом. Эх.
В общем, решив оставить это загадочное существо жить в нашем компьютере до тех пор, пока оно не станет ему мешать, мы посчитали необходимым дать ему имя.
Сперва выбрали незамысловатое — Компик (или Комп, если вырастет), но потом решили, что Космик и Компик — чересчур созвучно и я стал вспоминать названия первых компьютеров. Ничего в голову не приходило, а потом я вспомнил, что в какой-то старой компьютерной игре был такой персонаж — живой компьютер, которого звали Вектрон. В общем, мы решили, что Компик будет носить имя Вектрон.
Поскольку у меня сходу накопился список доработок, нужных для будущей операционной системы, я решил заняться ими, а заодно понять: помешает ли Вектрон дорабатывать аппаратуру Орион-128 или нет. Поэтому, для начала я добавил регистр-метку в каждый процессор и запустил программу, распространяющую эту модернизацию по всему Орион-128.
Смысл этого регистра только в том, что его значение наследуется тогда, когда CPU запускает какую-то работу на другом CPU. Когда процессор прекращает работу, то значение метки устанавливается в нулевое.
Поскольку все программы, которые запускал на компьютере я, мне известны, то расставить им метки оказалось несложно, а затем, я написал программу, которая отмаркировала все процессы Вектрона. Таким образом, взглянув на метку у любого CPU, я всегда могу понять это моё или Вектрона.
Добавление системы разметки процессоров прошло успешно, Вектрон не проявлял к этому никакой агрессивности, и заняло около часа процессорного времени Орион-128.
После того, как все процессы были отмаркированы, я запретил возможность изменять содержимое этих меток программно.
Интересно, что Вектрон не мешает (пока не мешает) моей программе, занимающейся аллокацией памяти. Однако скорее всего это связано с низкой вероятностью коллизий — в будущем всё не только может, но и обязано поменяться. Я задумался над вопросом: как можно его заставить использовать память так, чтобы он не мешал мне, а я не мешал ему. У меня уже есть идеи, как это решить, но прежде я решил доделать более важные дела.
Итак, у меня уже имелись: возможность сохранять файлы и возможность показывать их содержимое живому существу (то есть мне, Эт, Косму). Пока Этера и Космик доделывали систему печати символов, с целью довести до ума терминал, я занялся написанием парсера для создания первого компилятора: из ассемблера в коды.
Поскольку ещё на стадии проектирования процессора я сделал команды относительного перехода управления, то все программы, что мы пишем легко перемещаемы по адресному пространству.
Ввиду аппаратных особенностей, компилятор языка ассемблер получился сравнительно несложным: ему нужно просто пройти по тексту программы сверху вниз и преобразовать этот текст в коды, а затем во втором проходе — проставить адреса меток, ссылающихся вперёд.
Сделав минимальную версию такого компилятора, я вручную создал файл с текстом этого компилятора с тем, чтобы компилировать его этим же компилятором. К тому моменту, как я к этому пришёл, Этера и Косм доделали какое-то подобие редактора файлов и наша разработка вышла на новый уровень.
— Гляди, что происходит! — однажды отвлекла меня от работы Этера, направляя моё внимание на то место, которое некогда было нашим пляжем.