Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
BlaireCas (20.08.2023)
Ладно, спасибо всем, но мое имхо в эмуляторе где-то косякс. Окей там рядом со СТОП есть кнопка СБРОС собственно почему-бы и не воспользоваться ей и не забивать себе голову с вектором 4
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Давно интересовался темой блокировки СТОП в БК0010 (в БК0011 такой проблемы нет). С вашей помощью вроде стало примерно всё понятно. Получается что в Сапоге просто привели кратчайший способ, который работает во многих случаях. Впечатляет трюк, когда значение 2 по адресу 4 используется в трех ипостасях, как опкод, как адрес и как число! Однако, если прерываемая команда состоит из 4 или 6 байт, то подозреваю, что трюк иногда не сработает. Даже однословная команда со сложной адресацией возможно этим трюком не поймается без побочного эффекта. Полностью надёжен только способ, предложенный Зальцманом с рестартом. Можно, конечно, пробовать ещё писать код, где происходит анализ прерванной команды, но похоже бкашники этого уже не сделают никогда.
Пробовал с эмулятором BK2010 - трюк обычно работает, но иногда не совсем. Похоже, что BK2010 до сих пор самый точный эмулятор.
И вроде всё объясняется без премyдростей работы с пультом - или что-то не понял?
CLR читает и на 68000 и вероятно на многих фирменных процессорах для PDP-11 - можно подумать, что была какая-то общая база микрокодов.
На реальной БК0010-01 ввел FOR-NEXT цикл, заблокировал СТОП
и запустил программу цикла, потом жал на СТОП в течении нескольких минут. Блокировка работала абсолютно. У dim33 аналогичные результаты. Похоже, что инструкция прерывается всегда после захвата первого слова и увеличения R7, но до каких-то других изменений в регистрах или памяти. Нужно бы проверить кодом на ассемблере с длинными и сложными адресациями, но пока не получилось.Код:POKE2,&He3ce POKE4,2
Вопрос скорее в том, чему может быть равно PC при прерывании команды? Верно ли, что это всегда адрес прерываемой инструкции + 2? Зальцман этого не знал.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
litwr (30.09.2023)
Такая блокировка применялась во многих играх. И мне удавалось успешно привести БК к зависанию, если очень быстро долго долбить по клавише СТОП. Потому что подозреваю, что при такой блокировке однословные команды типа INC Rn, DEC (Rn) и т.п. выполнялись дважды, что приводило к неопределённому поведению.
litwr (30.09.2023)
Может таки 177674 и 177676 ?
ТО 1801ВМ1 :
https://forum.pk-fpga.ru/viewtopic.php?f=43&t=5553
- - - Добавлено - - -
Вероятно, получился звон ( дребезг ) от кнопки и прерывание повторилось в момент его программной обработки.
Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения [email protected]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)