Ввод с клавиатуры для сборки x86 без INT - PullRequest
0 голосов
/ 12 ноября 2009

Мне нужно сделать анимацию, которая будет ускоряться, когда пользователь удерживает нажатой клавишу, и возвращаться к нормальной скорости, когда клавиша отпущена. Я не могу «ждать», когда пользователь введет ключ, как это делают большинство прерываний DOS и BIOS, поскольку он остановит анимацию.

Я попытался использовать опцию 01H INT 16H, которая работает без остановки программы, но также не очищает буфер клавиатуры; таким образом, анимация будет ускоряться, даже если ключ отпущен, поскольку ключ остается в буфере.

Я думаю, что если я смогу получить доступ к ячейке памяти буфера клавиатуры вручную, я смогу извлечь и стереть ее сам. Но, к сожалению, я не знаю, как это сделать. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

используйте порт 060h, получите нажатие клавиши и отпустите статус

0 голосов
/ 02 августа 2017

Есть несколько проблем с этим.Вы просто не можете сканировать порт 0x60 в основном потому, что тот же порт ОБЩАЯ с помощью мыши.Сначала вам нужно отсканировать порт 0x64, определить, клавиатура это или мышь.И это даже не настройка интерфейса PS / 2 и инициализация каждого отдельного драйвера клавиатуры (может не требоваться, но это делает процесс более плавным)

Просто следуйте BIOS, если вы не смотрите Инструкции OSDev

...