User Tag List

Показано с 141 по 150 из 262

Тема: Проект открытой реплики Союз-Неон ПК-11/16

Древовидный режим

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

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,415
    Спасибо Благодарностей отдано 
    1,713
    Спасибо Благодарностей получено 
    2,238
    Поблагодарили
    881 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от troosh Посмотреть сообщение
    Ну а далее видимо просто выбрали код максимально удаленный от значения 0xF (мышь неподключена), т.е. в любом направлении (инкремент/декремент) потребуется больше всего импульсов чтобы перейти из 8 в 0xF. Ну а потом в драйвере эту восьмёрку вычитают, чтобы получилось число со знаком...
    Тут все проще. Просто у этой мыши инвертированный знак. Таким образом, -8 - это нулевое смещение с отрицательным знаком. Т.е. если мышь подключена, но по X не перемещается, то смещение всегда равно 0. Инвертируем знак, получаем -8 (т.к. у нас 4-битный счетчик со знаком). Вот эту восьмерку при инициализации драйвер и проверяет.

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

    В общем, систематизировал особенности работы драйверов MSX-мыши и Корветовской мыши:

    Код:
    При инициализации мыши MSX:
    
    Первый опрос мыши MSX:
    Write word 0x00E0 to unrealized CPU register PPIA from location PC = 0x580 (строб 1)
    Read word from CPU register PPIC from location PC=0x588
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x58A (строб 0)
    Read word from CPU register PPIC from location PC=0x5A2
    Write word 0x00E0 to unrealized CPU register PPIA from location PC = 0x5A4 (строб 1)
    Read word from CPU register PPIC from location PC=0x5BC
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x5BE (строб 0)
    Read word from CPU register PPIC from location PC=0x5D6
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x5F0 (сброс строба перед опросом кнопок)
    
    Второй опрос мыши MSX:
    Write word 0x00E0 to unrealized CPU register PPIA from location PC = 0x580 (строб 1)
    Read word from CPU register PPIC from location PC=0x588
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x58A (строб 0)
    Read word from CPU register PPIC from location PC=0x5A2
    Write word 0x00E0 to unrealized CPU register PPIA from location PC = 0x5A4 (строб 1)
    Read word from CPU register PPIC from location PC=0x5BC
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x5BE (строб 0)
    Read word from CPU register PPIC from location PC=0x5D6
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x5F0 (сброс строба перед опросом кнопок)
    Код:
    При инициализации мышки Корвет:
    
    Write word 0x00E0 to unrealized CPU register PPIA from location PC = 0x546
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x54C
    Read word from CPU register PPIC from location PC=0x550				(X-смещение) ($8 - для стоячей мыши (-0))
    
    
    Опрос мышки Корвет:
    
    Read word from CPU register PPIC from location PC=0x580				(X-смещение)
    Write word 0x00E0 to unrealized CPU register PPIA from location PC = 0x582      (строб 1)
    Read word from CPU register PPIC from location PC=0x5B8				(Y-смещение)
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x5BA      (строб 0)
    Write word 0x0060 to unrealized CPU register PPIA from location PC = 0x600	(сброс строба перед опросом кнопок)
    Таким образом, можно выделить признаки, по которым со стороны эмулятора можно четко определить, какую мышь опрашивает драйвер:

    Для переключение на корветовскую мышь - это:
    Строб=1, затем строб=0, без промежуточных чтений порта C.
    (данное состояние происходит при инициализации Корветовской мыши)

    А переключение на MSX-мышь - это:
    Строб=0, затем строб=1, без промежуточных чтений порта C.
    (данное состояние происходит между двумя чтениями MSX-мыши)

    Есть еще и третье подобное состояние, которое встречается перед чтением кнопок для Корветовской мыши:
    Строб=0, затем строб=0, без промежуточных чтений порта C.
    Но оно ни на что не влияет, и отслеживать его не нужно.
    Последний раз редактировалось Titus; 19.09.2019 в 18:56.

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

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

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

Похожие темы

  1. Программирование для ПК 11/16 «Союз-Неон»
    от MacBuster в разделе ДВК, УКНЦ
    Ответов: 154
    Последнее: 30.12.2025, 18:47
  2. Эмулятор Союз-Неон ПК-11/16 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 335
    Последнее: 01.04.2024, 11:33
  3. ПК-11 'Союз-Неон'
    от Keeper в разделе ДВК, УКНЦ
    Ответов: 12
    Последнее: 16.10.2013, 05:07

Ваши права

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