Проект «Сфера-80»: в поисках юности — Станислав Миков

До свидания.

Петя Снегирев

Я усмехнулся. Липатов бы сейчас удавился от комментария про кнопку «Ввод» — он клялся своим инженерным дипломом, что стальные скобы из 65Г полностью исключают перекос длинных клавиш. Надо будет ему показать, пусть страдает.

Под текстом письма шла собственно программа. Тот самый примитивный код, написанный прямо на бумаге, в столбик, с проставленными номерами строк.

Я пододвинул листок поближе к свету настольной лампы с зеленым абажуром и начал вчитываться.

Сначала всё было тривиально. Мальчишка, используя наш вшитый в ПЗУ простенький интерпретатор команд, методично вырисовывал геометрию.

ЯЧЕЙКА(10,10) = «*»

Это, видимо, кончик левого уха…

ЯЧЕЙКА(11,10) = «|»

ЯЧЕЙКА(12,10) = «»

Строк тридцать текста представляли собой сплошной массив формул, раскладывающих символы по координатам экрана, чтобы собрать силуэт кота в ASCII-арте. Пацан явно сидел с тетрадкой в клеточку, где размерность соответствовала разрешению нашего экрана, и высчитывал каждую точку. Каторжный труд. В 2026 году нейросеть сгенерировала бы 3D-модель кота с трассировкой лучей за две секунды. Здесь семиклассник Петя Снегирев потратил, вероятно, несколько дней, чтобы просто нарисовать статичный контур из белых букв и звездочек на сером фоне.

Но мой взгляд зацепился за то, что шло дальше.

Я прищурился, не веря своим глазам.

…тогда я почитал приложение в конце книжки, где таблица памяти, и сделал по-своему…

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

C000: 3E 20 (загрузить код «пробел»)

C002: 32 FA F0 (записать пробел в ячейку глаза)

C005: 01 FF FF (загрузить в регистр число для задержки)

C008: 0B (уменьшить счетчик)

C009: 78 B1 C2 08 C0 (крутиться в пустом цикле)

C00E: 3E 2A (загрузить код «звездочка»)

C010: 32 FA F0 (записать звездочку обратно)

Я замер, ощущая, как по спине пробежал холодок профессионального восторга. Число 61690. В шестнадцатеричной системе это 0xF0FA. Я прекрасно знал, что находится по этому адресу. Это был не кусок оперативной памяти для пользовательских переменных. Это была середина видеобуфера. Та самая область памяти, которая аппаратно напрямую считывалась видеоконтроллером и выплевывалась на экран телевизора «Юность» в виде светящихся символов.

Ребенок не стал перерисовывать кота формулами. Он не стал использовать штатные подпрограммы системного монитора, которые мы с Громовым вылизывали неделями. Он открыл карту распределения памяти, высчитал на бумажке точный байт, отвечающий за физическое расположение «глаза» своего нарисованного кота, и записал туда код пробела. Звездочка исчезла — кот «закрыл» глаз.