Как называется изучение недокументированных возможностей микрокалькуляторов
ЕГГОГ
Еггоголо́гия — изучение скрытых возможностей микрокалькуляторов.
Содержание
Происхождение
Читатели журнала с огромным энтузиазмом откликнулись на рассказ об обнаруженных недокументированных возможностях микрокалькуляторов, стали искать новые, и по окончанию цикла «Кон-Тики…» появился небольшой раздел «Новости еггогологии». С помощью опубликованных в нём недокументированных приёмов было написано множество новых игровых программ, большинство из которых просто не могло быть создано стандартными средствами, в силу ограниченности ресурсов калькуляторов семейства Б3-34.
Направления еггогологии
Одним из основных направлений еггогологии было расширение диапазона обрабатываемых чисел, и изучение реакции микрокалькулятора на попытки произвести операции с числами за пределами стандартного диапазона.
Другое направление еггогологии изучало реакцию микрокалькулятора на недокументированные последовательности нажатия программных клавиш и способы ввода недокументированных команд, а также исполнение микрокалькуляторами таких команд.
«Нестандартные» числа
Классификация числовых ярусов
Подробное описание
«ОС-оборотни»
«С-ЕГГОГ-оборотни»
Меры предосторожности при работе с «С-ЕГГОГ-оборотнями»:
«Длинные монстры»
Другое название — «К-числа»
От ±1 × 10 700 до ±9.9999999 × 10 799
На индикаторе при появлении «Длинного монстра» появляется следующее число:
1,2345678*10 735 = [50.12345678 3] Где первая цифра 5 на индикаторе это третья цифра порядка, а последняя цифра 3 на индикаторе это вторая цифра порядка. А сам «Длинный монстр» записывается на 73 адрес программы, что соответствует первым двум цифрам порядка числа.
Недокументированные команды
Команды «со стре́лками» в Б3-34
На микрокалькуляторе Б3-34 (и совместимых с ним МК-54, МК-56) существуют недокументированные команды КИП↑, КП↑ и др., которые обеспечивают косвенный доступ к регистру 0, но, в отличие от соответствующих команд КИП0, КП0 и др., не уменьшают его значения. Этот способ использования регистра 0 в некоторых случаях упрощал вычисления в программах. На микрокалькуляторах МК-61 и МК-52 такая команда не работает, так как в архитектуре МК-61/52 добавлен регистр Е, и коды недокументированных команд Б3-34 «со стрелками» совпадают с кодами соответствующих документированных команд МК-61/52 для косвенного доступа к регистру Е [4] (см. табл.). Заметим, что обозначениям клавиш в Б3-34 П, ИП и ↑ соответствуют Х→П, П→Х и Е в МК-61 и МК-52.
Коды команд | Команды Б3-34 | Команды МК-61, МК-52 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7E | Kx≠0↑ | Kx≠0E | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8E | КБП↑ | КБПЕ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9E | Kx≥0↑ | Kx≥0E | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-E | КПП↑ | КППЕ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LE | КП↑ | КX→ПЕ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CE | Кх Некорректные операции с клавишей К На микрокалькуляторе Б3-34 большинство недокументированных операций с клавишей К вызывает сообщение ЕГГОГ. Это команды К3—К9, К+, К−, К×, К÷, КХ↔У, К↑, К/−/, КВП, КСх и К десятичная запятая. Команды К1 и К2 эквивалентны операции КНОП. На МК-61 и МК-52 к сообщению ЕГГОГ приводят только команды К−, К×, К÷. Команды К1 и К2 также эквивалентны операции КНОП. Коды остальных команд документированы и используются для преобразования временны́х и угловых мер, определения модуля и знака числа, целой и дробной частей числа, бо́льшего из двух чисел, логических операций и генерации случайного числа. Сообщение ЕГГОГ, полученное с помощью недокументированных операций с клавишей К, не является «сверхчислом» первого «яруса» и не может быть сохранено в регистре памяти, но может быть использовано для вывода на индикатор символов 16-ричных цифр, например: 1 К− (высвечивается ЕГГОГ) ВП ВП ↑ (высвечивается буква Е). Полученную букву Е можно сохранять в регистрах памяти и извлекать оттуда, а с помощью регистров 0—3 также и преобразовывать в символы других 16-ричных цифр: П0 КИП0 ИП0 КНОП (Г) КИП0 ИП0 КНОП (С) КИП0 ИП0 КНОП (L) КИП0 ИП0 КНОП (-) КИП0 ИП0 КНОП (9) и т.д. Подобные приёмы использовались для формирования видеосообщений, например, в игровых программах. Получение видеосообщения, начинающегося с цифры F (изображается как пустое место) может нарушить нормальную работу микрокалькулятора (искажение программы и данных, самопроизвольный переход в режим счёта и т.п.). Избежать этого можно, сразу же «изгнав» его командой ↑, подаваемой не менее четырёх раз [4] (по другим данным — семь раз [5] ),не пытаясь проводить какие-либо другие операции. Искусственный ввод кодов команд
Коды 55 и 56 использовались во входных языках малосерийных аналогов МК-52. [7] Данный приём неприменим для ввода остальных 30 недокументированных кодов команд, содержащих 16-ричную цифру F (изображаемую на индикаторе как пустое знакоместо), поскольку на клавиатуре микрокалькулятора нет клавиши для ввода цифры F (не путать с префиксной клавишей F). Некоторые способы ввода таких кодов будут рассмотрены в следующем подразделе. Ввод кодов команд, содержащих цифру FНедокументированное применение десятичной запятой в программеНедокументированные способы диагностики ошибокПри возникновении сигнала ЕГГОГ при счёте по программе существует два недокументированных способа определить, в результате какой операции произошёл останов [4] : Второй способ не работает после первого, и наоборот. Чтобы применить обе диагностики, необходимо дважды запустить программу с одинаковыми исходными данными. (В режиме ручных вычислений это также работает, но обычно не требуется, поскольку и так ясно, в результате какой операции возникла ошибка.) Команда В/0 вне подпрограммыКоманда В/0, предназначенная для завершения подпрограмм, при использовании в основной программе, как правило, осуществляет переход на адрес 01. Этим иногда пользуются для сокращения программы, заменяя две команды БП 01 одной В/0. Особенно часто эта особенность используется при нестандартном использовании адресного пространства программы (см. Главная и побочные ветви). Однако иногда использование этой особенности приводит к неправильному результату. Причина этой особенности в том, что адреса, с которых вызываются подпрограммы, записываются в пятирегистровый стек возврата, а по команде В/0 извлекаются из него и происходит возврат на адрес, на единицу больший. Если в стек возврата ничего не было записано, в нём хранятся нули и по команде В/0 происходит переход на адрес 01. То же самое произойдёт, если в стек возврата заносилось не более четырёх адресов при вызовах подпрограмм и все они были извлечены при возвратах — следующий извлекаемый адрес будет нулём. Однако если в стек возврата занесено пять адресов, при извлечении первого из них в последнем регистре формируется «адрес-диверсант», обе цифры которого совпадают с последней цифрой адреса, находившегося там ранее. По мере извлечения остальных адресов из стека возврата, «адрес-диверсант» заполняет все его регистры, и затем, в случае использования команды В/0 вне подпрограммы, переход будет осуществлён неправильно. [4] Очистить стек возврата можно с помощью ЗГГОГа с нулевой мантиссой: Сх В↑ ÷ ВП Fх 2 Сх ↔ Сх Косвенное обращение к регистру, содержащему число вне допустимого диапазонаЕсли в каком-либо из регистров 7—Е находится число, по модулю меньшее единицы, то при косвенном обращении к нему формируется адрес перехода, определяемый мантиссой и последней цифрой порядка [4] (см. табл., МN — N-я цифра мантиссы)
ПСЧ-режимНедокументированные особенности команды ВПКоманда ВП превращает 0 в 1. Это используется в программе вычисления факториала для её сокращения, заменяя три команды Fx=0 03 1 одной ВП. [12] Ошибки в микрокалькуляторахКроме недокументированных возможностей, некоторые микрокалькуляторы содержали ошибки. Ошибки в Б3-21 некоторых выпусковВ первых выпусках микрокалькулятора Б3-21 возникала ошибка при сложении числа, содержащего семь девяток в мантиссе и цифру более 4 в восьмом (неиндицируемом) разряде мантиссы, с бо́льшим по порядку числом; например, при сложении 9,9999999 и 10 получалось 120. Также в некоторых Б3-21 при вычислении сложных операций (например, синуса) могло исказиться содержимое одного из регистров кольцевого стека. Некоторые Б3-21 неправильно выполняли оператор вызова подпрограммы ПП, если он находился по одному из адресов 55, 65, 70, 80, 91 или 92. Вместо перехода к подпрограмме в них выполнялся оператор, код которого равен адресу подпрограммы. [13] Ошибки в Б3-34 некоторых выпусковВ некоторых микрокалькуляторах Б3-34 операция возведения в степень Fx y выполнялась с ошибкой, если предыдущая операция была двухместной (кроме возведения в степень) и в её результате получилось число, имеющее в восьмом разряде мантиссы цифру 5 или 7. Этой ошибки можно избежать, если перед выполнением операции Fx y нажать дополнительно клавиши F1/x F1/x [14] (что заменяет результат двухместной операции таким же результатом одноместной, на котором эта ошибка не возникает). Другие «взаимоисключающие» операции (например, Fx 2 F√ или Fe х Fln) для этой цели менее пригодны, так как могут привести к переполнению. В ранних выпусках микрокалькуляторов нельзя было заканчивать подпрограмму командами одноместных операций Fsin, Flg, F√ и др., а также производить смену знака результата вычислений клавишей /−/ [15] Ошибки в МК-61 и МК-52Операция Kmax в МК-61 и МК-52 считает нуль самым большим числом. Эта ошибка использовалась в некоторых программах [16] При некоторых операциях, например, определении дробной части отрицательного числа, возникает «отрицательный нуль» (изображается на индикаторе как «−0»), который при условных переходах ведёт себя как отрицательное число. [17] Ошибки и нерациональные решения в блоках расширения памяти БРП-3 и БРП-4В блоке БРП-4 в «лунолётной» игровой программе «Космическая посадка» физическая модель совершенно ошибочна, что может приводить к бессмысленным результатам. Например, при свободном падении космического аппарата на Луну с большой высоты глубина кратера может составлять менее 8 мм, хотя скорость в момент соприкосновения с лунной поверхностью превышает 3000 м/с. В том же блоке микрокалькулятор «нарушает правила» в игровых программах «Жизнь» и «Магараджа». Целый ряд программ составлен нерационально и поддаётся значительным сокращениям. Например, программа для отыскания минимальной поверхности Smin или минимальной длины сварных швов Lmin цилиндрической банки заданного объёма V может быть сокращена на 15 шагов при использовании более простых формул. [19] ЕггогологияЕггоголо́гия — изучение недокументированных возможностей микрокалькуляторов. СодержаниеПроисхождениеЧитатели журнала с огромным энтузиазмом откликнулись на рассказ об обнаруженных недокументированных возможностях микрокалькуляторов, стали искать новые, и по окончании цикла «Кон-Тики…» появился небольшой раздел «Новости еггогологии». С помощью опубликованных в нём недокументированных приёмов было написано множество новых игровых программ, большинство из которых просто не могло быть создано стандартными средствами, в силу ограниченности ресурсов калькуляторов семейства Б3-34. Направления еггогологииОдним из основных направлений еггогологии было расширение диапазона обрабатываемых чисел, и изучение реакции микрокалькулятора на попытки произвести операции с числами за пределами стандартного диапазона. Другое направление еггогологии изучало реакцию микрокалькулятора на недокументированные последовательности нажатия программных клавиш и способы ввода недокументированных команд, а также исполнение микрокалькуляторами таких команд. «Нестандартные» числаКлассификация числовых ярусов
Подробное описание«ОС-оборотни»От ±1 × 10 400 до ±9.9999999 × 10 499 «С-ЕГГОГ-оборотни»От ±1 × 10 600 до ±9.9999999 × 10 699 Меры предосторожности при работе с «С-ЕГГОГ-оборотнями»: «Длинные монстры»Другое название — «К-числа» Недокументированные командыКоманды «со стре́лками» в Б3-34На микрокалькуляторе Б3-34 (и совместимых с ним МК-54, МК-56) существуют недокументированные команды КИП↑, КП↑ и др., которые обеспечивают косвенный доступ к регистру 0, но, в отличие от соответствующих команд КИП0, КП0 и др., не уменьшают его значения. Этот способ использования регистра 0 в некоторых случаях упрощал вычисления в программах. На микрокалькуляторах МК-61 и МК-52 такая команда не работает, так как в архитектуре МК-61/52 добавлен регистр Е, и коды недокументированных команд Б3-34 «со стрелками» совпадают с кодами соответствующих документированных команд МК-61/52 для косвенного доступа к регистру Е [4] (см. табл.). Следует заметить, что обозначениям клавиш П, ИП и ↑ в Б3-34 соответствуют Х→П, П→Х и Е в МК-61 и МК-52.
|