User Tag List

Страница 5 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 41 по 50 из 63

Тема: Режим совместимости БК-0011М с БК-0010

  1. #41

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Кстати, я вообще не очень жаждал вникать в низкий уровень. Просто приходится делать то, чего не сделало ваше сообщество - разбираться в низком уровне. Где библиотеки подпрограмм для БК и УКНЦ? Есть что-то такое
    О, знакомая песТня. Прощевайте, больше не потревожу.

  2. #42

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,713
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И Вам не хворать. Не больно-то и хотелось выяснять у кого потолще... знания PDP-11.

    С клавишми разобрался. Надо было запретить прерывания от клавиатуры командой MOVB $0100, @$0177660
    Что же никто об этом не сказал?

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

    Но, кстати, опрос клавиш работает только на БК10. Что надо подшаманить для 11(М) ?

  3. #43

    Регистрация
    18.01.2021
    Адрес
    п. Новый Ургал
    Сообщений
    145
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    С клавишми разобрался. Надо было запретить прерывания от клавиатуры командой MOVB $0100, @$0177660
    Что же никто об этом не сказал?
    Но, кстати, опрос клавиш работает только на БК10. Что надо подшаманить для 11(М) ?
    Ну, просто никто так не делает, вот и возникают непонятки. Если прерывание разрешено и программа обработки прерывания сама забирает код нажатой клавиши из регистра (первой, естественно, ведь она получает управление по прерыванию) то, само собой, основная программа уже не получит ни флагов ни кода. Тогда уже надо смотреть код клавиши в системных переменных, которые на БК10 и 11М вроде разные. Запрещать прерывание от клавы - зачем? Прерывание позволяет реагировать на все тогда, когда надо, занимаясь другими делами. Понятное дело, если идет какой-то критичный процесс, типа смены палитры на лету или запись на диск, тогда прерывание и длинный обработчик могут испортить всю малину. Куда проще сделать так, как я написал изначально:

    Код:
            mov  #v60,@#60     ;переписать прерывание от клавы по вектору 60
            mov  #v274,@#274 ;вектор 274 (клавиши с АР2)
            clr    @#key  ;начальный сброс буфера
            .....
    0:      tst    @#key  ;цикл ожидания или просто проверка когда надо. Код клавиши тут появится сам.
            beq  0
            ;делаем с кодом что надо и очищаем буфер
            clr   @#key
            .....
    
    v60:    mov  @#177662,@#key  ;взять код клавиши
            ;можно и тут сразу обработать какие-то клавиши, которые должны прерывать исполнение программы
            rti
    
    v274:   mov  @#177662,@#key
            bis   #200,@#key
            ;можно и тут сразу обработать какие-то клавиши, которые должны прерывать исполнение программы
            rti
    
    key:    .#0  ;код нажатой клавиши, если >200 то с АР2
    Последний раз редактировалось grf; 01.12.2021 в 06:17.
    Блог проекта "The Goonies для БК11М"
    БК-0011М, БК-0011М-01, SMK-512, AZ

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

    Oleg N. Cher(01.12.2021)

  4. #44

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Что же никто об этом не сказал?
    Видимо, подразумевали, что вектора прерываний уже перехвачены =) выше grf уже расписал, если подробнее - на Спектруме клаву опрашивает процедура в составе ПЗУшного RST#38, а тут надо "перехватить" прерывание, записав адрес своей процедуры по адресу вектора. Можно опрашивать и по кадровому прерыванию, а ля Спектрум, но его нет на БК10. Можно просто воткнуть заглушку, если реакция на клаву не требуется, либо да, запретить прерывания через регистр. На БК специфичная система прерываний, после Спектрума к этому трудновато привыкать, но в ней есть и свои плюсы.

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

    Oleg N. Cher(01.12.2021)

  5. #45

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,713
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от grf Посмотреть сообщение
    Куда проще сделать так, как я написал изначально
    Пока не попробовал, но сразу вопрос: а как правильно восстанавливать векторы 60 и 274 перед выходом из программы? У них есть какие-то стандартные адреса или лучше будет запомнить те, что были записаны в них на момент установки наших векторов? *Нужно, чтобы работало на БК10/11(М).

  6. #46

    Регистрация
    18.01.2021
    Адрес
    п. Новый Ургал
    Сообщений
    145
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Пока не попробовал, но сразу вопрос: а как правильно восстанавливать векторы 60 и 274 перед выходом из программы? У них есть какие-то стандартные адреса или лучше будет запомнить те, что были записаны в них на момент установки наших векторов? *Нужно, чтобы работало на БК10/11(М).
    Изначально прерывания от клавы обрабатывает монитор 10/11/11М - ведь должна же машина как-то на клавиши реагировать. Если просто запомнить какие были - можно восстановить при выходе.
    Блог проекта "The Goonies для БК11М"
    БК-0011М, БК-0011М-01, SMK-512, AZ

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

    Oleg N. Cher(01.12.2021)

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

  8. #47

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    а как правильно восстанавливать векторы 60 и 274 перед выходом из программы?
    А зачем? jmp @#100000 на БК10, или на БК11(М) из под всяких андос мкдос (что равнозначно работе на БК10), или jmp @#140000 на голой БК11(М) и всё само восстановится как надо.
    На БК ведь нет многозадачной ОС, чтобы заботиться о сохранности векторов.

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

    Oleg N. Cher(04.12.2021)

  9. #48

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я просто в начале своих программ сохраняю все системные ячейки, которые собираюсь изменять. А при выходе восстанавливаю.

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

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Пока что добиться работы опроса клавиш не удалось.
    Статья про то как правильно сделать опрос клавиатуры и джойстика одновременно: https://manwe.pdp-11.ru/?/programming/joystick
    manwe.pdp-11.ru

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

    Oleg N. Cher(04.12.2021)

  10. #49

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,713
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    Издревле повелось гарантированно различать БК10 и БК11, тем, что на БК10 регистр 177662 недоступен по записи.
    Кстати, а как это правильно сделать? При попытке записи в этот регистр БК10 вызывает какое-то аццкое прерывание?

  11. #50

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Кстати, а как это правильно сделать? При попытке записи в этот регистр БК10 вызывает какое-то аццкое прерывание?
    Примерно так. На 0010 при попытке записи туда возникает ошибка шины, что приводит к прерыванию по 4 вектору.

    Код:
    	clr @#is11m
    	mov @#4, @#save4
    	mov r6, @#savesp
    	mov #restor, @#4
    	clr @177662
    	mov #1, @#is11m
    restor:
    	mov (r7)+, r6
    savesp:
    	.word 1000
    	mov (r7)+, @(r7)+
    save4:
    	.word 100000, 4
    ....
    is11m:
    	.word 0
    Признаю, код немного хулиганский, но жаль тратить память просто так. Её у нас немного.
    Если неясно, я сохраняю указатель стека и предыдущее значение вектора 4 прямо в поле непосредственной константы команды mov, которая восстанавливает всё обратно.

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

    Oleg N. Cher(05.12.2021)

Страница 5 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор БК-0010-01, БК-0011 и БК-0011М
    от Doronetty в разделе Эмуляторы отечественных компьютеров
    Ответов: 245
    Последнее: 20.12.2025, 13:35
  2. Отличия БК-0011М от БК-0010(01)?
    от nzeemin в разделе БК-0010/0011
    Ответов: 22
    Последнее: 30.03.2021, 18:47
  3. Ответов: 0
    Последнее: 24.01.2010, 21:46
  4. О совместимости клонов с играми
    от ILoveSpeccy в разделе Несортированное железо
    Ответов: 1
    Последнее: 13.03.2008, 18:26

Ваши права

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