User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 21

Тема: БК-0010 и клавиша СТОП

  1. #11

    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    484
    Спасибо Благодарностей отдано 
    139
    Спасибо Благодарностей получено 
    391
    Поблагодарили
    146 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Нажатие СТОП - это низкий уровень на входе IRQ1.
    Алексей, эти железные штуки они ну для программиста как будто вот "на тебе припаяй атмегу.. ну.."
    Мне-бы простое решение - хочется определить нажатие клавиши СТОП (поскольку на УКНЦ я ей останавливаю игру, и в порте это тоже хотелось-бы сделать). А тут такая засада непонятная.
    Шедевр портирования на УКНЦ - игра Highway Encounter
    Эмуляторы: UKNCBTL, EmuStudio (респект авторам)

  2. #12

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Алексей, эти железные штуки они ну для программиста как будто вот "на тебе припаяй атмегу.. ну.."
    Мне-бы простое решение - хочется определить нажатие клавиши СТОП (поскольку на УКНЦ я ей останавливаю игру, и в порте это тоже хотелось-бы сделать). А тут такая засада непонятная.
    Проверяете разряд 2 в 177716, что это точно произошло исключение, в книге Зальцмана описано. Далее уже переходите на процедуру остановки, надо почистить стек, установить правильный указатель.

    Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    BlaireCas(20.08.2023)

  3. #13

    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    484
    Спасибо Благодарностей отдано 
    139
    Спасибо Благодарностей получено 
    391
    Поблагодарили
    146 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ладно, спасибо всем, но мое имхо в эмуляторе где-то косякс. Окей там рядом со СТОП есть кнопка СБРОС собственно почему-бы и не воспользоваться ей и не забивать себе голову с вектором 4
    Шедевр портирования на УКНЦ - игра Highway Encounter
    Эмуляторы: UKNCBTL, EmuStudio (респект авторам)

  4. #14

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Вроде всегда думал что нажатие клавиши "СТОП" на БКшке (10-й) просто генерирует прерывание и как-бы да и пофиг с ним.
    Но тут прочитал газету "САПОГ-3" и там мол такое...
    А как-бы смущает то что вот ну зачем делать sub (PC),(SP) (это 161716), там что недостаточно просто поставить RTI?
    Будто клавиша СТОП что-то на реальной БК заносит еще и в стек лишнее?
    Давно интересовался темой блокировки СТОП в БК0010 (в БК0011 такой проблемы нет). С вашей помощью вроде стало примерно всё понятно. Получается что в Сапоге просто привели кратчайший способ, который работает во многих случаях. Впечатляет трюк, когда значение 2 по адресу 4 используется в трех ипостасях, как опкод, как адрес и как число! Однако, если прерываемая команда состоит из 4 или 6 байт, то подозреваю, что трюк иногда не сработает. Даже однословная команда со сложной адресацией возможно этим трюком не поймается без побочного эффекта. Полностью надёжен только способ, предложенный Зальцманом с рестартом. Можно, конечно, пробовать ещё писать код, где происходит анализ прерванной команды, но похоже бкашники этого уже не сделают никогда.
    Пробовал с эмулятором BK2010 - трюк обычно работает, но иногда не совсем. Похоже, что BK2010 до сих пор самый точный эмулятор.
    И вроде всё объясняется без премyдростей работы с пультом - или что-то не понял?
    Цитата Сообщение от BlaireCas Посмотреть сообщение
    это уже не говоря о том что я прочитал что на ВМ1 команда CLR зачем-то ЧИТАЕТ
    CLR читает и на 68000 и вероятно на многих фирменных процессорах для PDP-11 - можно подумать, что была какая-то общая база микрокодов.

  5. #15

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    И вроде всё объясняется без премyдростей работы с пультом - или что-то не понял?
    Премудрости состоят в том, что в БК нет ячеек 176674 и 176676, в которых сохраняются PC и PSW при исключениях. При попытке сохранить PSW в 176676 срабатывает TRAP4 и процессор не успевает скорректировать PC. Смотрите алгоритм прерывания при исключениях.

  6. #16

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На реальной БК0010-01 ввел FOR-NEXT цикл, заблокировал СТОП
    Код:
    POKE2,&He3ce
    POKE4,2
    и запустил программу цикла, потом жал на СТОП в течении нескольких минут. Блокировка работала абсолютно. У dim33 аналогичные результаты. Похоже, что инструкция прерывается всегда после захвата первого слова и увеличения R7, но до каких-то других изменений в регистрах или памяти. Нужно бы проверить кодом на ассемблере с длинными и сложными адресациями, но пока не получилось.
    Цитата Сообщение от Alex_K Посмотреть сообщение
    Премудрости состоят в том, что в БК нет ячеек 176674 и 176676, в которых сохраняются PC и PSW при исключениях. При попытке сохранить PSW в 176676 срабатывает TRAP4 и процессор не успевает скорректировать PC. Смотрите алгоритм прерывания при исключениях.
    Вопрос скорее в том, чему может быть равно PC при прерывании команды? Верно ли, что это всегда адрес прерываемой инструкции + 2? Зальцман этого не знал.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Нужно бы проверить кодом на ассемблере с длинными и сложными адресациями, но пока не получилось.
    Внешнее прерывание посреди команды не выполняется. Так что если команда из трёх слов, то все они будут выбраны из памяти. Посреди команды может прервать только внутреннее прерывание TRAP4.

    Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    litwr(30.09.2023)

  9. #18

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    135 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Такая блокировка применялась во многих играх. И мне удавалось успешно привести БК к зависанию, если очень быстро долго долбить по клавише СТОП. Потому что подозреваю, что при такой блокировке однословные команды типа INC Rn, DEC (Rn) и т.п. выполнялись дважды, что приводило к неопределённому поведению.

    Этот пользователь поблагодарил gid за это полезное сообщение:

    litwr(30.09.2023)

  10. #19

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    Такая блокировка применялась во многих играх. И мне удавалось успешно привести БК к зависанию, если очень быстро долго долбить по клавише СТОП. Потому что подозреваю, что при такой блокировке однословные команды типа INC Rn, DEC (Rn) и т.п. выполнялись дважды, что приводило к неопределённому поведению.
    Ну на реале это можно проверить длинной последовательностью команд, например INC R0. В начале последовательности R0 очищается, а в конце сравнивается с ожидаемым значением.

  11. #20

    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    4,246
    Спасибо Благодарностей отдано 
    498
    Спасибо Благодарностей получено 
    557
    Поблагодарили
    436 сообщений
    Mentioned
    42 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    ячеек 176674 и 176676
    Может таки 177674 и 177676 ?
    ТО 1801ВМ1 :
    https://forum.pk-fpga.ru/viewtopic.php?f=43&t=5553

    - - - Добавлено - - -

    Цитата Сообщение от gid Посмотреть сообщение
    если очень быстро долго
    Вероятно, получился звон ( дребезг ) от кнопки и прерывание повторилось в момент его программной обработки.
    Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения MMTEMA@MAIL.RU

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 5
    Последнее: 21.06.2021, 16:33
  2. Загадочная клавиша СУ/С
    от Arix в разделе ДВК, УКНЦ
    Ответов: 8
    Последнее: 21.10.2018, 23:04
  3. Различия БК 0010 БК 0010Ш БК 0010-01
    от Mad Killer/PG в разделе БК-0010/0011
    Ответов: 12
    Последнее: 16.10.2011, 13:37
  4. СТОП
    от svofski в разделе БК-0010/0011
    Ответов: 3
    Последнее: 15.05.2010, 00:42
  5. Нужна клавиша
    от BYTEMAN в разделе Барахолка (архив)
    Ответов: 6
    Последнее: 20.12.2009, 20:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •