User Tag List

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

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

  3. #2

    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    600
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    BlaireCas(20.08.2023)

  4. #3

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,249
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    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.

  5. #4

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

    По умолчанию

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

  6. #5

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

    По умолчанию

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

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

    BlaireCas(20.08.2023)

  7. #6

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

    По умолчанию

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

    Вот такой

    [свернуть]


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

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

  8. #7

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

    По умолчанию

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

Страница 2 из 2 ПерваяПервая 12

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

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

Эту тему просматривают: 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

Ваши права

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