Важная информация

User Tag List

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

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

  1. #11
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    435
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    321
    Поблагодарили
    124 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  2. #12
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    BlaireCas (20.08.2023)

  4. #13
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    435
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    321
    Поблагодарили
    124 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #14
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    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 - можно подумать, что была какая-то общая база микрокодов.

  6. #15
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #16
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    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? Зальцман этого не знал.

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

  9. #17
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    litwr (30.09.2023)

  11. #18
    Master
    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    538
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    136
    Поблагодарили
    105 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    litwr (30.09.2023)

  13. #19
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  14. #20
    Moderator Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    4,134
    Спасибо Благодарностей отдано 
    470
    Спасибо Благодарностей получено 
    519
    Поблагодарили
    412 сообщений
    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/ . В ЛС прошу не писать, все сообщения [email protected]

Страница 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

Ваши права

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