Еггогология
Еггоголо́гия — изучение скрытых возможностей микрокалькуляторов.
Происхождение
Название происходит от сообщения об ошибке «ЕГГОГ» (англ. Error — ошибка), которую выдавали отечественные программируемые микрокалькуляторы второго поколения (Электроника Б3-34, МК-54, МК-56, МК-61, МК-52). Термин впервые появился в журнале «Техника — молодёжи» после цикла статей, посвященных программированию на микрокалькуляторах серии «Электроника Б3-34» и увлекательного фантастического путешествия с Луны на Землю (автор — Михаил Пухов) под общим названием «Кон-Тики: путь к Земле»[1]. В этом цикле, кроме игровых программ, описывались различные недокументированные возможности микрокалькуляторов и видеосообщения, многие из которых получались путем манипуляций с клавишами после появления сообщения об ошибке «ЕГГОГ» ().
Читатели журнала с огромным энтузиазмом откликнулись на рассказ об обнаруженных недокументированных возможностях микрокалькуляторов, стали искать новые, и по окончанию цикла «Кон-Тики…» появился небольшой раздел «Новости Еггогологии». С помощью опубликованных в нём недокументированных приёмов было написано множество новых игровых программ, большинство из которых просто не могло быть создано стандартными средствами, в силу ограниченности ресурсов калькуляторов семейства Б3-34.
Направления еггогологии
Одним из основных направлений еггогологии было расширение диапазона обрабатываемых чисел, и изучение реакции микрокалькулятора на попытки произвести операции с числами за пределами стандартного диапазона.
Другое направление еггогологии изучало реакцию микрокалькулятора на недокументированные последовательности нажатия программных клавиш и способы ввода недокументированных команд, а также исполнение микрокалькуляторами таких команд.
«Нестандартные» числа
Еггогология утверждает, что основание степени диапазона обрабатываемых микрокалькулятором чисел ограничено по модулю 1000 и делит этот диапазон на так называемые этажи или «ярусы»[2]. Каждый ярус — это сотня из диапазона от 0 до 999. То есть нулевой ярус — это числа с основанием степени от 0 до 99, первый ярус — числа с основанием степени от 100 до 199 и т. д. Всего ярусов десять, причем минус первый ярус эквивалентен девятому (то есть основание степени −80 в представлении микрокалькулятора эквивалентно основанию степени 920), минус второй — восьмому (например −180 эквивалентно 820) и т. д.
Документацией максимальное значение чисел, над которыми можно производить математические действия, ограничивалось значением ±9.9999999 × 10±99 (то есть нулевым и минус первым ярусами). В самом деле, если ввести в микрокалькулятор число 1 × 1050 (для чего достаточно последовательности нажатий клавиш 1 ВП 50) и возвести его в квадрат (нажать Fx²), то получаем сообщение на дисплее «ЕГГОГ». Такая индикация по документации является признаком сообщения об ошибке, так как число 1 × 10100 выходит за пределы «стандартного» диапазона. Оказывается, что это не сообщение об ошибке, а способ индикации чисел первого яруса, и с этим числом можно производить обычные операции: складывать, умножать, делить, вычислять значения функций, запоминать его в регистре памяти, вызывать из регистра. Таким же образом можно работать с числами второго яруса (например 1 × 10200, простейший способ получить такое число — возвести в квадрат число 1 × 10100). Чтобы выяснить реальные значения таких чисел, их нужно было разделить на 1 × 1099 или другие подобные числа для приведения к числу из нулевого яруса (по абсолютному модулю не более 9.9999999 × 1099).
Другими словами, давался способ расширения диапазона чисел, обрабатываемых стандартными действиями, до ±9.9999999 × 10299. Также было возможно с некоторыми ухищрениями (с помощью специально написанных программ) получать числа до ±9.9999999 × 10799 и анализировать их значение (то есть выяснить мантиссу и основание степени). С помощью таких «вычислений» доказывалось, что девятый ярус представляет собой числа с отрицательным значением основания степени (например, 1 × 10920 было эквивалентным представлением числа 1 × 10-80). Числа восьмого яруса (числа от ±1 × 10800 до ±9.9999999 × 10899 а также от ±1 × 10900 до ±9.9999999 × 10900) невозможно сохранить после их получения, так как они немедленно преобразовывались в обычный нуль, независимо от того, с какой стороны к ним «подбираться» (с седьмого или девятого яруса).
Классификация числовых ярусов
Числовой ярус | Название чисел | Диапазон чисел | Краткая характеристика числа из этого диапазона |
---|---|---|---|
Нулевой | Обычное число | От ±1 до ±9.9999999 × 1099 | Нет |
Первый | «Еггогы» | От ±1 × 10100 до ±9.9999999 × 10199 | Можно производить обычные вычисления, но отображаются на дисплее как |
Второй | «Зггогы» | От ±1 × 10200 до ±9.9999999 × 10299 | Можно производить обычные вычисления, но отображаются на дисплее как Файл:3rror.gif |
Третий | От ±1 × 10300 до ±9.9999999 × 10399 | Способны произвольно перевести микрокалькулятор в режим исполнения программы или привести к его зависанию | |
Четвертый | «ОС-оборотни» | От ±1 × 10400 до ±9.9999999 × 10499 | Копируют в искаженном виде структуру ярусов, применяются для анализа других чисел |
Пятый | «Тьма» | От ±1 × 10500 до ±9.9999999 × 10599 | При попытке вывода на дисплей приводят к зависанию микрокалькулятора, работоспособность восстанавливается после выключения и включения |
Шестой | «С-Еггогы» | От ±1 × 10600 до ±9.9999999 × 10699 | Искажают содержимое регистра С |
Седьмой | «Длинные монстры» | От ±1 × 10700 до ±9.9999999 × 10799 | Копируют в искаженном виде структуру ярусов, применяются для анализа других чисел |
Восьмой (минус второй) | «Нули» | От ±1 × 10800 до ±9.9999999 × 10900 или от ±1 × 10-200 до ±9.9999999 × 10-100 (зависит от способа получения) | Немедленно преобразовывается в обычный ноль |
Девятый (минус первый) | Обычные числа с минусовым показателем степени | От ±1 × 10-99 до ±9.9999999 × 10-1 | Можно производить обычные вычисления |
Недокументированные команды
Недокументированных команд в системе команд обсуждаемых микрокалькуляторов было несколько. Приведем пример одной.
На микрокалькуляторе БЗ-34 существует недокументированная команда КИП↑, которая работает с регистром 0, но, в отличие от команды КИП0, не уменьшает его значения. Этот способ использования регистра 0 в некоторых случаях упрощал вычисления в программах. На микрокалькуляторах МК-61 и МК-52 такая команда не работает, так как в архитектуре МК-61/52 добавлен регистр Е, и код недокументированной команды БЗ-34 КИП↑ совпадает с кодом документированной команды МК-61/52 КП→ХЕ. Здесь уместно отметить, что ИП, ↑ — обозначения клавиш в БЗ-34, а П→Х и Е — обозначения тех же клавиш в МК-61 и МК-52.
Этот раздел статьи ещё не написан. |
См. также
Примечания
- ↑ Первый из девяти рассказов про «Кон-Тики» появился в 1985 году в 8-м номере журнала «Техника — молодёжи».
- ↑ «Техника — молодёжи», январь 1986, стр. 54.