ЕГГОГ

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску
Fatal eггог

ЕГГОГ (англ. error, русск.-простонародн. ЕГОР) — на советских программируемых микрокалькуляторах (ПМК) типа «Электроника Б3-34» и «МК-54/-56/-61/-52» — ошибка. Встречается и по сей день на домофонах Cyfral CCD-2094. По сути — искорёженное английское «ERROR», ибо на 7-сегментых индикаторах заглавную букву «R» не отобразить, поэтому изображается «r».

Еггогология[править]

Лулз с зависанием

Еггогология является побочным продуктом более тяжёлой формы задротства, а именно программирования калькуляторов серии Б3-34. Ограниченная база управляющих инструкций, помноженная на крайне ограниченные ресурсы памяти при необходимости решать реальные задачи практически из всех областей — точных наук, инженерии, экономики, статистики, прогнозирования и т. д. — делали этот процесс весьма нетривиальным. С точки зрения современного быдлокодера, код на языке ПМК выглядит не менее мозговыносящим, чем Brainfuck и Malbolge. Пример — вычисление функции Аккермана:

П1 <-> П0 ПП 06 С/П ИП0 x=0 13 ИП1 1 + В/О ИП1 x=0 24 ИП0 1 П1 - П0 ПП 06 В/О ИП0 П2 ИП1 1 - П1 ПП 06 П1 ИП2 1 - П0 ПП 06 В/О

Но, в отличие от упомянутой эзотерики, это было вполне штатное вычислительное средство, активно использовавшееся даже школьниками. Этот факт при упоминании особенно сильно подогревает анусы впечатлительных кодеров-прогеров.

Новый интерес к теме возник в 2012 году, когда был считан код ПЗУ процессоров этих калькуляторов и написан эмулятор. Любители еггогологии воодушевились, рассчитывая в ближайшее время вскрыть все тайны еггогологии. Однако машинный язык этих процессоров даже по сравнению с кодом для ПМК оказался таким леденящим душу пиздецом, что до сих пор никто толком не может предположить даже, каким образом выводится то самое сообщение ЕГГОГ, не говоря уже о том, чтобы понять глубинные корни еггогологии (хотя на тему потрохов ПМК в своё время была написана целая книга). Сумрачность во многом является следствием того, что этот «самый программируемый» советский калькулятор явно делался на базе древнего монстра с памятью на линии задержке из мотка стальной проволоки(!). В итоге цепочка сдвиговых регистров в потрохах калькулятора имитировала ту самую 1-битную шину задержки, по которой кружились битики информации, и сумрачный однобитный процессор для обработки такой однобитной хтони при тактовой частоте в 100 кГц выполнял большинство операций за 0.3-1 секунду.

Итак, еггогология — изучение и использование недокументированных возможностей ПМК. Началось всё с возведения ЕГГОГа в квадрат (и получения ЗГГОГа), отсюда название. Кто сказал «деление на ноль»? Благодатными были сообщения об ошибках, вызванные возведением космических чисел типа 1×1050 в квадрат. Zero division давало совершенно неюзабельный ЕГГОГ*.

  • Примечание ЕГГОГолога:

Вобще-то у математического процессора есть 3 состояния ошибки:

  1. Переполнение(результат операции превышает 9Е+99). НеКлассический ЕГГОГ. Имеет знак и НЕ прерывает вычисления, хотя драйвер дисплея такое значение вывести уже не может. Теоретически если такой ЕГГОГ на что-то поделить - знак можно получить.
  2. Зависание (Результат деления на 0, tg(90º) и т.п.). Классический ЕГГОГ. Знака не имеет и матпроцессор просто уходит в специализированное прерывание.
  3. Двойное зависание (Юзер охомел!) ЗГГОГ. Принудительное повешение. Которое вылезает если со значением 9Е+99 что-то попытаться сделать в сторону его увеличения. Принудительный стоп-кран для вычислений. Именно поэтому ЗГГОГ можно получить из возведения в степень, но нельзя из деления на 0. После ЗГГОГа никакие операции уже не выполняются.

[Авотхрень]. Не знаю какой "математический процессор" поминается в строках выше, у Б3-34 и его семейства "ЗГГОГ" вполне себе отрабатывался даже вручным вводом, от разных хитростей, создающих инопланетные символы на экране, или позволяющих увидеть и мантиссу и показатель такого "суперчисла", и до банального возведения в квадрат. Постэффекты появлялись уже потом, при выводе полученной жути на экран. Уж не говоря о том, что в режиме работы программы всё это воспринималось как обычные числа. "ЕГГОГ" же вообще был с точки зрения простых вычислений вполне обычным, просто не отображаемым числом.

Впоследствии эта фича перекочевала и в компучерный матпроцессор, от чего в первом случае(только на превышение уже 9E+128) матпроцессор просто поднимал флажок переполнения(регистр с) основному камушку, а в двух остальных вызывал соответствующие прерывания, вполне годные для повешения на них пользовательских функций. Именно возможность повешения User API на событие "деление на 0" и породило соответствующие мемуёчки про атсральную суть этого деления и её годное использование. Поскольку стандартное сообщение пользователю о сем радостном факте двойного зависания было выпилено ещё где-то в переходе с XT на AT, вместе с текстовой консолью, где оно ещё было, а повесить на соответствующее IRQ что-нибудь повменяемей разработчики как-то не почесались.

...Ну, а "компучерных матпроцессоров" была целая куча, с совершенно разными создателями и, соответственно, глюками. По большей части менее эпичными чем те глубины "ЕГГОГологии".

Сообщения об ошибках обладали огромным количеством недокументированных свойств. Свойства эти яростно отрицались предприятием-изготовителем, а произношение «еггог» презрительно высмеивалось. Но недокументированные возможности широко использовались советскими хакерами 1980-х ради:

  • лулзов («зависание» калькулятора: дисплей не светится, машина на нажатия кнопок не реагирует, но переключатель находится в состоянии «ВКЛ»);
  • расширения вычислительных возможностей калькуляторов (например, работы с числами больше 10100 и меньше 10−100);
  • хранение чисел в скрытых (недокументированных) областях памяти;
  • сокращение кода на несколько байт за счёт недокументированных команд. Если вспомнить, что под запись кода программы отводилось порядка 100 байт, 2-3 лишних байта — это уже не хрен собачий!
  • визуализации (вывод на дисплей НЕХ вместо цифр);
  • игр.

Возможно, еггогология является первым задокументированным случаем задрачивания чего-либо как минимум в нерушимом Союзе.

Вестник ЕГГОГологии[править]

Дывысь, школота! В этом калькуляторе нет фотика. С него даже звонить нельзя! Зато он функциональнее айфони

Благодаря православному советскому журналу «Техника — молодежи», а также еще более православному «Наука и жизнь», можно было узнавать о новых находках в области программирования калькуляторов ежемесячно. В каждом номере журнала публиковалась фантастическая повесть-с-продолжением о нелегкой и полной событиями жизни космических людей. После очередной главы читателю предлагалось повторить некоторые моменты истории на своем калькуляторе. Например, попробовать перегнать маленький космический корабль с лунной орбиты в точку либрации (написал сие чудо Михаил Пухов, называется «Путь к Земле»). Также на калькуляторе можно было поиграть в экономические стратегии («Кооперативное кафе»), убежать от Минотавра в лабиринте, поучаствовать в Куликовской битве и т. п. Некоторые же выпуски были посвящены православным ЕГГОГам, ЗГГОГам и прочим таинственным тварям, исследовались их повадки и особенности анатомии. Например, доподлинно известно, что ЗГГОГ невозбранно наследует положение десятичной точки числа, бывшего сверху в стеке памяти, если его поменять местами со ЗГГОГом.

Moar задрачивания[править]

Как известно, чем сложнее электронное устройство, тем слабее в нём реализована защита от дурака. Именно благодаря слабой защите ПМК и возникла возможность изучать их недокументированные возможности. Но некоторые фокусы можно было проделывать и на обычных калькуляторах типа МК-42. К примеру, одновременное нажатие двух цифровых клавиш (скажем, 8 и 5) при вводе числа давало сумму соответствующих чисел в шестнадцатиричной форме. В нашем примере это число hex(13), то есть D, занимавшее одно знакоместо и отображавшееся на дисплее как минус. Но если этот минус, к примеру, умножить на 2, just as planned получаем 26.

Копипаста[править]

Основная статья: ЕГГОГ/Копипаста

Программирование МК-61 имеет глубокий философский подтекст.

Ограниченность ресурсов и доступного инструментария, добровольно принимаемая программистом, отражает собой многовековой опыт аскетических духовных практик. Сложнейшая многоуровневая иерархия программ управления калькулятором – от кода, вводимого человеком, до микрокоманд и микроприказов, отражает собой необычайную сложность божественного мироздания, все глубины и уровни материи – от крупномасштабных структур вселенной до элементарных частиц, от сознания до неживой материи, от социума до первозданного хаоса и небытия.

Сам микрокод, прошитый в ПЗУ калькулятора, предстаёт объектом благоговейного созерцания, ибо никто не может в полной мере постичь принципы его работы, структуру или как-либо повлиять на его работу, склоняя нас к агностицизму и мыслям об иллюзорности свободы воли. Тройственность структуры микрокода – команды, синхропрограммы и микрокоманды, и три процессора калькулятора отсылают нас к вытекающей из христианского представления о Боге как о Троице троичности бытия, к естественной (троичной) аристотелевой логике и к концепции триединой русской нации.

Программа, подаваемая человеком калькулятору, с одной стороны представляет собой низкоуровневый автокод, составленный из элементарных команд, с другой же – высокоуровневые инструкции, исполняемые прошивкой ПЗУ, демонстрирует нам диалектический закон единства и борьбы противоположностей. Исполнение же программы, когда, пройдя 105 шагов программной памяти, калькулятор возвращается в начало и продолжает исполнение кода, есть образ колеса сансары, а получение решения задачи становится подобием нирваны, достигнутой в результате правильно написанной и выполненной программы.

См. также[править]

Ссылки[править]

  • Эмулятор еггогологии на примере МК-61 и его сородичей.
Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++Scala
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёзды
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворк
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3D
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард Сноуден
Прочее++i + ++iDeadline%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодач