Сайт JELJAPAN

Ну и чтобы два раза не вставать, как говорится. Критика других — самый примитивный жанр, стараюсь таким не увлекаться, но раз уж начал, проработаю до конца.

До «СДЕКа» у меня был вариант заказать кронштейн из Японии. Неплохой вариант, там даже дешевле, чем везти из Великобритании. Заказать пытался через сайт «JELJAPAN». Сам сайт доверия не вызывает — похоже сделали его ещё в 90-е, когда ни у кого не было понимания как надо делать, да так и оставили.

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

Тем не менее, решил дать сайту ещё один шанс — написал сообщение, спросил что с моей заявкой не так. В ответ у меня спросили «скакова» я региона страны. И это как раз тот случай, который я описывал в заметке про прескриптивизм и дескриптивизм. Ощущение, что со мной общаются не профессионалы. «Скакова», серьёзно? «С» и «какова»?

Тут прослеживается чёткая тенденция — сайт сделан халтурно, заявку закрыли без уточняющего вопроса, да ещё и вопрос задают с детскими ошибками.

Понесу ли я сюда деньги? Конечно нет.

Михаил приветствует Евгения Степанищева и интересуется регионом страны. Евгений отвечает вопросом об отмене заявки №14254.

4 комментария

«MK-61s»: самомодифицирующиеся программы

У меня была давно идея попробовать сделать самомодифицирующуюся программу на программируемом калькуляторе «Электроника МК-61». Ничего готового для этого там нет, но я надеюсь, что используя различные недокументированные возможности, этого можно добиться.

Своей цели я ещё не достиг, хоть и продолжаю пытаться, а пока экспериментирую с командами доступа в область Ms — это недоделанные команды, которые я разблокировал в ретроконсоли «MK-61s».

Там всего две команды — одна обменивает Ms с содержимым памяти, вторая с регистрами. Таким образом вырисовывается путь — меняем что-то в регистрах, выгружаем в Ms, оттуда — в память. Так как в «MK-61s» на один регистр больше, то и Ms пришлось расширить — теперь там может храниться не 56 шагов программы, как в настоящем калькуляторе, а 63.

Выглядит просто, но есть особенности — калькулятор хранит числа в особом формате и при переносе в программную память этот формат создаёт проблемы. Байтами команд становятся не только цифры числа, но и его знак и порядок. Поэтому записать в регистр какое-нибудь число и получить из него произвольную последовательность команд не получится — приходится подбирать числа под нужный код, а иногда и сам код под представление чисел.

Например, число 690050,68 после такого переноса даёт последовательность кодов 68 50 00 69 50 00. Для калькулятора это уже программа: прочитать регистр 8, остановиться, ввести ноль, прочитать регистр 9, снова остановиться и ввести ноль. Кроме этих шести байтов у каждого блока есть ещё один служебный байт, который команда обмена с регистрами не меняет. Его можно заранее заполнить нужной командой.

Теперь самое интересное: если вычесть из этого число 10000,01, получим 680050,67, а в памяти — 67 50 00 68 50 00. Команды остались прежними, но оба номера регистров уменьшились на единицу. Продолжая вычитать ту же константу, можно получить целую серию похожих участков программы.

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

Для этого я взял игру «The Land of Psycho Lamers» и переставил её код так, чтобы повторяющиеся участки укладывались в вышеупомянутый шаблон. Получился распаковщик длиной всего двадцать байт: он берёт начальное число и шаг, заполняет девять регистров, а затем двумя обменами переносит результат в программную память. Так восстанавливаются 63 байта команд.

Правда, тут надо честно посчитать всё остальное: исходные числа, заранее расставленные служебные байты и код подготовки. С учётом этого выигрыш получился скромным — 75 загружаемых байт против 80 у исходной игры. Это если в обоих случаях не загружать нули. Сам текстовый файл стал даже больше, да и занимаемый диапазон программной памяти вырос. Так что до практичного архиватора далеко, но работающая игра, которая сама собирает часть своего кода из чисел, уже получилась.

Ниже можно пройти распаковку по шагам. Хорошо видно, как сначала исходные данные уходят в Ms, затем из чисел строятся будущие команды, а в конце они одним обменом появляются в основной памяти.

Ms

Оставить комментарий