Пишу драйвер для клавиатуры... но вот проблема... нужно очистить буфер клавиатуры... только вот что-то не найду как это можно реализовать? Мне нужно для режима Long Mode... т. е. я как понимаю здесь только через порты... Где можно про это всё дело посмотреть?
Вот как раз обработчик и пишу... Я где-то слышал, что в Long Mode уже нельзя воспользоваться прерываниями Биоса... Да оно и понятно... я ведь IDT новый объявляю... да и к тому же разрядность поднял до 64 бит нужно очистить буфер клавиатуры... т. к. почему-то туда не поступают новые данные... я получаю скан-коды от первых 2 клавиш + их отпускание... а дальше NULL
Попробуйте. Код (Text): mov dx,$041a in al,dx mov dx,$041c out dx,al Устанавливаем указатель на хвост в указатель на голову.
Обрисую ситуацию: Обработчик прерывания 0х09, вот что делает: С новой строки в консольке должен вывести скан-код в формате: > #SCAN_CODE > Что имеется на деле: При нажатии клавиши, срабатывает прерывание и успешно что-то выводится на экран (будем считать это "сообщение №1") А так же при отпусканиее клавиши так же срабатывает прерывание и тоже выводит с новой строки "сообщение №2" Далее я нажимаю следующую кнопку, и успешно выводится сообщение №3, А вот сообщение №4 только делает отступ строки, и ничего не выводит... Дальнейшие нажатия клавиш, даёт по 2 сообщение(для нажатия, и отпускания), т. е. 2 отступа строки Уж теперь я в замешательстве... в чем же может быть баг?