Клавиатура через порты

Тема в разделе "WASM.BEGINNERS", создана пользователем Debris, 5 ноя 2011.

  1. Debris

    Debris New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    33
    Здравствуйте, делаю програму PE, без ОС, появился ряд вопросов на которые никак не могу найти ответы помогите:
    - mov al, 0EDh
    out 60h, al
    а: in al, 60h
    cmp al, 0FAh
    jnz а
    mov al, 7
    out 60h, al
    Эта программа никак не хочет зажигать светодиоды на панели, хотя код не зацикливается и ответ подтверждения АСК, приходит,
    -скан коды стоят по таблице 1 (http://www.computer-engineering.org/ps2keyboard/scancodes1.html), запись команды 60 в 64 порт, как с включеным перобразованием кода так и с выключеным (бит 6), никак на скан коды не влияет, команда переключения скан кодов контроллера клавиатуры F0, также ничего не меняет (АСК коды приходят как после записи команды так и после записи номера таблицы - код идёт дальше),
    -подумать что, что-то неправильно и ничего не работает - так нет, команда котроллера PS/2 AD, записуемая в порт 64, исправно выключает клавиатуру.
    Клавиатура SVEN slim 300 (давно не новая PS/2), мать P4P800SE. Помогите мне нужно свою аски таблицу (абсолютно русскую), привязать к номерам клавиш (чтоб меньше делать преобразований потом), использовать таблицу 1 скан кодов, нехочется так как везде написано, что стандартом является таблица 2, также хотелось бы избавится от дурацких последовательностьей типа PAUSE/BREAK.
    Оптимальный вариант таблица 3 http://www.computer-engineering.org/ps2keyboard/scancodes3.html без преобразования в PS совместимую, но у меня не выходит работа с портами(((
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Debris
    Это потому что вы попутали контролёр 8042 который находиться в системном блоке и контролёр, который находиться внутри клавиатуры.

    Кстати на wiki тоже перепутано, ушёл править.
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    На какой вике? На осдевовской вроде как правильно было (я даже специально внимание потенциальных читателей обращал на то, что контроллер интерфейса PS/2 и контроллер клавиатуры -- совершенно разные вещи).

    ADD. Уже увидел, что таки на осдевовской, и выполнил откат. Статья корректна; если не умеете читать, то это уже Ваши проблемы. Более того, Вашу писанину читать невозможно -- уровень владения русским языком на 2 балла тянет с большой натяжкой.
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    SII
    Да оно самое но только что-то мне не разрешено править. Странно.

    Регистр данных Править

    Регистр данных доступен процессору для чтения и записи через порт 60h. Он используется для:
    считывания информации, поступившей от клавиатуры или мыши;
    передачи информации в клавиатуру;
    получения информации, возвращаемой контроллером в ответ на выданную ему команду;
    записи информации, необходимой для исполнения ранее выданной контроллеру команды.


    Тут описаны косвенные действия, а читатель может воспринять как прямые.
    Порт 60h читает данные из входного и выходного буфера.
    А вот как этими данными распоряжается контролёр интерфейса PS/2(8042). Определяет его внутреннее состояние. Которое управляется при помощи регистра команд контролёр интерфейса PS/2(8042).
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Так надо всю статью читать, а не её клочок. Там с самого начала сказано: это описание контроллера интерфейса ПС/2, а не контроллера клавиатуры. Соответственно, и регистры описаны контроллера ПС/2.

    Про "косвенные действия" добавлю.
     
  6. Debris

    Debris New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    33
    да вроде щас частично разобрался...., диоды заработали с раскладкой пока неразобрался при установке 3 таблицы скан коды получаются по 1, при установке 4 таблицы её вроде как неможет и быть скан коды только нажатия и непонятно какой таблицы, при установке 2ой, скан коды тоже непонятно откуда, видать надо отключить преобразование к типу PS, в регистре состояния .
    А в диодах была ошибка выдержки, порядок работы должен быть такой:
    a: in al,64 ожидание опустошения входного буфера
    test al,2
    jnz a
    mov al, 0EDh команда управления диодами
    out 60h, al
    b: in al,64 ожидание опустошения входного буфера после записи команды
    test al,2
    jnz b
    с: in al, 60h ожидание срабатывания конторллера код FA
    cmp al, 0FAh
    jnz с
    mov al, 7 запись номеров диодов
    out 60h, al
    d: in al,64 ожидание опустошения входного буфера после установки диодов
    test al,2
    jnz d
    e: in al, 60h отзыв контроллера код FA
    cmp al, 0FAh
    jnz e
     
  7. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Сколько-нибудь современные (десятилетней давности и моложе, грубо говоря) клавиатуры часто, если не всегда, не поддерживают никаких дополнительных таблиц скан-кодов, кроме стандартной (№2, кажись). Так что надо ориентироваться именно на неё: не пытаться выбрать таблицу, а работать с той, что установлена после сброса.
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    SII
    Уже обсуждалось. Насколько помню пришли к следующему. После сброса ставиться 1 таблица в виндоусе идёт работа со второй. Так что эти 2 таблицы поддерживаются.
     
  9. Debris

    Debris New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    33
    Значит виндовс всётаки отключает преобразование таблицы клавиатуры контроллером PS/2
    ... значит буду ориентироватся тоже на 2 "raw"
     
  10. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Набор 3 необязательный, поэтому его не следует использовать как основной. Набор 1 часто доступен только благодаря трансляции. Т.е. реально можно использовать набор 1, получаемый в результате трансляции или напрямую, или набор 2 (без трансляции). Теоретически возможно одновременное отсутствие набора 1 и трансляции, а также отсутствие набора 2, поэтому не лишены смысла проверки действительной установки выбранного набора и действительного включения трансляции. Но я к примеру этого не делаю, т.е. просто устанавливаю набор 2 и отключаю трансляцию.
     
  11. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Набора 2 нет только в очень древних клавиатурах/компьютерах, поэтому набор 2 без трансляции считаю оптимальным выбором.
     
  12. Debris

    Debris New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    33
    Спасибо