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

User Tag List

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

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

  1. #1
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    435
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    321
    Поблагодарили
    124 сообщений
    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
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    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
    Адрес
    г. Москва
    Сообщений
    435
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    321
    Поблагодарили
    124 сообщений
    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
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

    По умолчанию

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

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

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

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

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

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Это специфическое поведение кнопки СТОП похоже, процессор не причем
    Но для процессора это обычное прерывание по таймауту - кнопка СТОП в логику работы процессора не влезет

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

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Зачем-то получается прибавляется +2. Вот зачем?
    Это выглядит (выглядит!) как попытка организовать повторное выполнение прерванной команды - но фокус пройдет если только процессор прервался сразу после извлечения первого слова команды и ещё не начал её выполнять

  10. #8
    Master Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    590
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    115 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Это выглядит (выглядит!) как попытка организовать повторное выполнение прерванной команды - но фокус пройдет если только процессор прервался сразу после извлечения первого слова команды и ещё не начал её выполнять
    На самом деле там просто ошибка в микрокоде. В ситуации, когда прерывается вход в прерывание, вместо значения PC на момент начала исполнения команды сохраняется, действительно, значение, которое должно быть после выборки опкода.
    Надо проверить, но вроде это должно и на EMT срабатывать, например.

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

    BlaireCas (20.08.2023)

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

    По умолчанию

    Начал гуглить что такое может быть не так с клавишей "СТОП". И нагуглил текст Зальцмана

    Вот такой

    [свернуть]


    Собственно вся книжка: https://gid.pdp-11.ru/books/Zaltsman.html

    Вообщем БК это хитро, это странно Это даже интересно (радуют там слова "но не всё так просто!")
    Последний раз редактировалось BlaireCas; 20.08.2023 в 20:44.
    Шедевр портирования на УКНЦ - игра Highway Encounter
    Эмуляторы: UKNCBTL, EmuStudio (респект авторам)

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

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Сорри, ну смысл понятен - там -2 от содержимого стека. Зачем-то получается прибавляется +2. Вот зачем?
    Для коррекции адреса возврата по сигналу HALT. Описание 1801ВМ1 на гитхабе Vslav - https://github.com/1801BM1/cpu11/blo...oc/1801vm1.pdf.

    Описание процедуры входа в пультовые исключения


    Исключения и прерывания пультового режима выполняются следующим образом:
    • в начале обработки устанавливают бит 3 в регистре 1777168
    • сохраняют PSW по адресу 1776768
    • для исключений с кодом MCIR=0102 корректируют PС вычитая 2
    • сохраняют PС по адресу 1776748
    • читают новое значение PC по адресу вектор+0
    • читают новое значение PSW по адресу вектор+2


    Следующие прерывания и исключения будут обрабатываться процессором в пультовом режиме (с установкой бита 3 в регистре 1777168) по векторам:
    Инструкция HALT 1600028 PC
    Низкий уровень на входе nIRQ1 1600028 PC-2
    Тайм-аут шины МПИ, PSW10=1 и PSW11=0 1600028 PC
    Тайм-аут шины МПИ, К1801ВМ1А, PSW10=x и PSW11=1 1600028 PC-2
    Тайм-аут шины МПИ, К1801ВМ1Г, PSW10=x и PSW11=1 1600028 PC
    Двойной тайм-аут шины МПИ (повторный при попытке обработать первое исключение по зависанию) 1600068 PC
    Тайм-аут шины МПИ при получении вектора прерывания (в цикле nIAKO) 1600128 PC

    [свернуть]


    Нажатие СТОП - это низкий уровень на входе IRQ1. А так как ячеек с адресами 177674 и 177676 в БК нет, то возникает прерывание по вектору 4 и адрес ещё не успевает скорректироваться.
    Последний раз редактировалось Alex_K; 30.09.2023 в 20:07.

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

Ваши права

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