Здравствуйте, делаю програму 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 совместимую, но у меня не выходит работа с портами(((
Debris Это потому что вы попутали контролёр 8042 который находиться в системном блоке и контролёр, который находиться внутри клавиатуры. Кстати на wiki тоже перепутано, ушёл править.
На какой вике? На осдевовской вроде как правильно было (я даже специально внимание потенциальных читателей обращал на то, что контроллер интерфейса PS/2 и контроллер клавиатуры -- совершенно разные вещи). ADD. Уже увидел, что таки на осдевовской, и выполнил откат. Статья корректна; если не умеете читать, то это уже Ваши проблемы. Более того, Вашу писанину читать невозможно -- уровень владения русским языком на 2 балла тянет с большой натяжкой.
SII Да оно самое но только что-то мне не разрешено править. Странно. Регистр данных Править Регистр данных доступен процессору для чтения и записи через порт 60h. Он используется для: считывания информации, поступившей от клавиатуры или мыши; передачи информации в клавиатуру; получения информации, возвращаемой контроллером в ответ на выданную ему команду; записи информации, необходимой для исполнения ранее выданной контроллеру команды. Тут описаны косвенные действия, а читатель может воспринять как прямые. Порт 60h читает данные из входного и выходного буфера. А вот как этими данными распоряжается контролёр интерфейса PS/2(8042). Определяет его внутреннее состояние. Которое управляется при помощи регистра команд контролёр интерфейса PS/2(8042).
Так надо всю статью читать, а не её клочок. Там с самого начала сказано: это описание контроллера интерфейса ПС/2, а не контроллера клавиатуры. Соответственно, и регистры описаны контроллера ПС/2. Про "косвенные действия" добавлю.
да вроде щас частично разобрался...., диоды заработали с раскладкой пока неразобрался при установке 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
Сколько-нибудь современные (десятилетней давности и моложе, грубо говоря) клавиатуры часто, если не всегда, не поддерживают никаких дополнительных таблиц скан-кодов, кроме стандартной (№2, кажись). Так что надо ориентироваться именно на неё: не пытаться выбрать таблицу, а работать с той, что установлена после сброса.
SII Уже обсуждалось. Насколько помню пришли к следующему. После сброса ставиться 1 таблица в виндоусе идёт работа со второй. Так что эти 2 таблицы поддерживаются.
Значит виндовс всётаки отключает преобразование таблицы клавиатуры контроллером PS/2 ... значит буду ориентироватся тоже на 2 "raw"
Набор 3 необязательный, поэтому его не следует использовать как основной. Набор 1 часто доступен только благодаря трансляции. Т.е. реально можно использовать набор 1, получаемый в результате трансляции или напрямую, или набор 2 (без трансляции). Теоретически возможно одновременное отсутствие набора 1 и трансляции, а также отсутствие набора 2, поэтому не лишены смысла проверки действительной установки выбранного набора и действительного включения трансляции. Но я к примеру этого не делаю, т.е. просто устанавливаю набор 2 и отключаю трансляцию.
Набора 2 нет только в очень древних клавиатурах/компьютерах, поэтому набор 2 без трансляции считаю оптимальным выбором.