Ох уж эта загадочная клавиша Pause... и не только!

Тема в разделе "WASM.HARDWARE", создана пользователем Jin X, 19 июн 2018.

  1. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Всем привет!

    Клавиша Pause под чистым DOS'ом генерирует сразу 6 скан-кодов при нажатии (E1,1D,45, E1,9D,C5). При удержании же, как и при отпускании не генерирует ничего.
    Однако под Windows (включая DOSBox и VMware с DOS) нажатие на Pause генерирует скан-коды E1,1D,45 при нажатии (которые повторяются при удержании, как и для любой другой клавиши) и E1,9D,C5 при отпускании.
    Вопрос: что такого нужно сделать, чтобы в чистом DOS'е заставить клавишу Pause работать как все остальные, т.е. как под Windows?

    Ну и второй вопрос (смежный, поэтому пишу здесь же): мультимедийные клавиши (Home, Mail, Calc, Play, Stop, Prev, Next) работают только из-под Windows, в DOS они не генерируют IRQ 1. Почему? И как заставить их работать в DOS?
     
  2. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    а с акой магии они там работать должны ??? :) си клавиши обычно делаются производителями акь эдакий бонус и работают они опосля установки дравера фирменного :grin: вот напиши дравер под дос и тамо тожь начнут пахать :)
     
  3. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    У меня они работают со стандартным драйвером.
    Каким образом он их читает? Если даже IRQ 1 не вырабатывается!
     
  4. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
  5. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    UbIvItS, Windows именно это использует?

    Оданко ж при чтении из порта 60h сканы мультимедийных клавиш получить не удаётся. Т.е. даже без привязки к IRQ...
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    сейчас любая ось мси пользует == слишком толстовато выделять отдельный канал на прерывание.
    а у тебя что за клава?
     
  7. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Logitech K290 (USB)
     
  8. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Это на стационарном. На ноуте генерится IRQ1 при нажатии на ММ-клавиши, но скан-код из 60-го порта получается всегда один и тот же для любой ММ-клавиши.
    Что-то типа E0 31 (точно не помню).
     
  9. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    коцепция ирк-ов не предусматривала такого зоопарка периферии, тч придётся тебе либо дравера под дос лабать, либо забыть про него :) но ежель забывать не хочешь, вот тебе ссыль http://ww1.tssc.de/products/tools/pciscope/pcitool.htm
     
    Jin X нравится это.
  10. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Да нет, уж до такой степени, чтобы так заморачиваться, мне это не нужно :)
    Но за инфу спасибо.
    Просто непонятно, почему нельзя было использовать IRQ для ММ, раз всё равно для остальных клавиш он юзается.
    История с Pause, видимо, тоже связана с этой темой?
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    генерация ирк-а в данном случае мб эдаким атавизмом == тут уж нужно смотреть акь дравер под вынью обрабатывает эту клаву.
     
    Jin X нравится это.
  12. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Пишут, что MSI поддерживается на Windows Vista+, интересно потестить Pause и ММ-клавиши на XP. Неужели ММ в XP не работают?
    upd: Хотя пишут, что в XP работают эти клавиши...
     
  13. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    хз, но на 3ем сервис паке, по идее, должен.
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Jin X,

    > Logitech K290 (USB)

    О каком порте 60 и прерываниях речь идёт. Это же протокольный обмен, каждый обмен с устройством происходит через соответствующий драйвер. Это общий физически интерфейс, но сам механизм обработки определяется конкретным драйвером. Когда уже наконец этот дос забудут.. архитектура нт построена на абстракциях. Прерывания и обмен с железом даже для штатных драйверов, которые такие железки обслуживают, не нужны. В драйвер приходит виртуальный запрос(IRP), который фильтруется всей кучей драйверов. Такие запросы могут формировать драйвера уровня абстракций от железа(hal). Это всё устроено иначе, чем в дос.
     
  15. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Это и ответ на ваш вопрос USB. USB эммулирует PS/2 только для BIOS'а протокол boot. А БИОСу мультимедийные клавиши не к чему.
    http://www.usb.org/developers/hidpage/Hut1_12v2.pdf
    Стр. 56 колонка Boot
    Как видно мультимедийных клавиш там нет.

    Он тут не причем.

    Если быть точным то не USB эммулирует PS/2, а БИОС. Через прерывание SMI процессор переводится в режим SMM. Где биос вычитывает код с USB и записывает в контроллер 8042 и выставляет ваш IRQ.

    Подробнее стр. 204 глава "USB Legacy Keyboard Operation"
    https://www.intel.com/content/www/us/en/io/i-o-controller-hub-7-datasheet.html


    Можете изучить ещё исходники БИОСа
    https://xakep.ru/2013/04/06/60404/

    Потому что USB придумали Индусы. А так ДОС никому не нужен.
     
    _edge и Jin X нравится это.
  16. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    upload_2018-7-13_11-10-36.png
    Pavia а вот тут с Вами позволю себе не согласиться: на более-менее современных тачках установить "чистый" дос невозможно, тч он бегает под эмулями а-ля DosBox иль это ваще freedos.
     
  17. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Почему невозможно и чем FreeDOS хуже мелкомягкого?
     
  18. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    в режиме эмуляции прямого доступа к железу нет, тч досовские прожки могут работать лишь чисто в софтварном режиме и "format a:\" ужо делается не самим досом, а хостовой осью.
     
  19. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    В каком режиме эмуляции?
    Вот я установил, например, FreeDOS на хард или на флеху. Загрузился. Почему у меня не будет доступа к железу?
     
  20. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    фридос != дос, он обладает совместимостью с досом. То бишь создаётся слой абстракции, где дос проги могут запускаться. но сам фридос работает ужо по другим принципам == он заточен под современные железки..
    upload_2018-7-16_11-49-42.png
    в сущности это жОоЗЪткий оверкил делать отдельную ось для запуска досовских прожек :)