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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 21

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    439
    Спасибо Благодарностей отдано 
    111
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    125 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию БК-0010 и клавиша СТОП

    Вроде всегда думал что нажатие клавиши "СТОП" на БКшке (10-й) просто генерирует прерывание и как-бы да и пофиг с ним.
    Но тут прочитал газету "САПОГ-3" и там мол такое...

    Скрин с газеты

    [свернуть]


    А как-бы смущает то что вот ну зачем делать sub (PC),(SP) (это 161716), там что недостаточно просто поставить RTI?
    Будто клавиша СТОП что-то на реальной БК заносит еще и в стек лишнее?

    На эмуляторе от gid такое не прокатывает (вылет идет). Где тут вранье? В газете?
    Шедевр портирования на УКНЦ - игра Highway Encounter
    Эмуляторы: UKNCBTL, EmuStudio (респект авторам)

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

  3. #2
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,003
    Спасибо Благодарностей отдано 
    287
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прерывание по V4 - на стек кладется PSW и PC. Извлекается V4, адрес обработки (2) заносится в PC. По адресe 2 - команда SUB (PC),(SP). Начинаем выполнять (В PC 4, а по адресу 4 - 2) - вычитаем 2 из адреса возврата из прерывания. Переход к выполнения команды по адресу 4, а там - 2 (RTI). То есть мы вернемся на команду, предшествующую команде, на которой произошло прерывание по V4 прерыванию.

    А вот дальше надо внимательно смотреть описание ВМ1 - чего там он делает, когда при выполнении команды происходит прерывание по V4 и как организовано прерывание по V4 от клавиши СТОП

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

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Будто клавиша СТОП что-то на реальной БК заносит еще и в стек лишнее?
    Он не из указателя стека вычитаем (и кстати - это как - положить что-то в стек) - он из содержмого на вершине стека вычитает

  4. Эти 2 пользователя(ей) поблагодарили Hunta за это полезное сообщение:

    BlaireCas (20.08.2023), MM (20.08.2023)

  5. #3
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    439
    Спасибо Благодарностей отдано 
    111
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    125 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Прерывание по V4 - на стек кладется PSW и PC
    Либо в реальной БК добавляется +2 на адрес возврата, либо я ничего не понимаю.

    Тут возможно действительно что-то связано с тем как БК обрабатывает СТОП и добавляет-ли оно туда +2 при заносе в стек адреса.
    Банальный занос 2, 2 по адресам (2-4) в эмуляторе решает проблему СТОПа, но люди зачем-то вот это писали и кто-ж их знает-то. Одно дело эмуляция, а тут вон похоже подводные камни.

    (это уже не говоря о том что я прочитал что на ВМ1 команда CLR зачем-то ЧИТАЕТ
    Последний раз редактировалось BlaireCas; 20.08.2023 в 19:55.
    Шедевр портирования на УКНЦ - игра Highway Encounter
    Эмуляторы: UKNCBTL, EmuStudio (респект авторам)

  6. #4
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,003
    Спасибо Благодарностей отдано 
    287
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Либо в реальной БК добавляется +2 на адрес возврата
    Прерывание по V4 - это критические ошибки (наиболее распространённая - по таймауту), которые могут прерывать выполнение команды даже в середине (попытались извлечь содержимое источника, скажем, в двухоперандной команде - а адрес не откликается) (PC может указывать на второй операнд или след команду) и вот именно этот и кладётся в стек. Я, конечно, наверняка не скажу - но врят ли 1801ВМ1 СПЕЦИАЛЬНО добавляет +2 к адресу возврата - скорей он может положить уже увеличенный на 2 PC (типа подготовились дальше что то через PC извлекать). Но в целом - надо смотреть описание и экспериментировать на реальной БК

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

    А насчёт поведение эмуляторов - я бы не стал сильно ориентироваться на их поведение - кто их знает, какие там ошибки есть. Единственный нереальный БК, который будет вести себя идентично - сделанный в FPGA на основе реверса Vslav-а - никакие другие для меня не показатель

  7. #5
    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 - можно подумать, что была какая-то общая база микрокодов.

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

    По умолчанию

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

  9. #7
    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? Зальцман этого не знал.

  10. #8
    Moderator Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    4,135
    Спасибо Благодарностей отдано 
    471
    Спасибо Благодарностей получено 
    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]

  11. #9
    Moderator Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    4,135
    Спасибо Благодарностей отдано 
    471
    Спасибо Благодарностей получено 
    519
    Поблагодарили
    412 сообщений
    Mentioned
    42 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    ВМ1 - чего там он делает
    Переходит в пультовый режим, записывает какой-то бит в 177716 - регистр-коммутатор банков памяти ВМ1, пытается записать в пультовые регистры 177670, 177672 ( уточнить адрес ) - но в заводской БКшке нет этих регистров и происходит прерывание по ошибке МПИ по 4 вектору.
    В ТО 1801ВМ1А Вслав г. Киев писал, что есть возможность программно как-то заблочить кнопку Стоп, для некотрых программных ситуаций.
    Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения [email protected]

  12. #10
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    439
    Спасибо Благодарностей отдано 
    111
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    125 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    он из содержмого на вершине стека вычитает
    Сорри, ну смысл понятен - там -2 от содержимого стека. Зачем-то получается прибавляется +2. Вот зачем?

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

    Цитата Сообщение от Hunta Посмотреть сообщение
    врят ли 1801ВМ1 СПЕЦИАЛЬНО добавляет +2 к адресу возврата
    Это специфическое поведение кнопки СТОП похоже, процессор не причем

    Нужен кто-то с реальной БК проверить вообщем.
    Шедевр портирования на УКНЦ - игра Highway Encounter
    Эмуляторы: UKNCBTL, EmuStudio (респект авторам)

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  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

Ваши права

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