Доброе время суток, господа. Имеется трабл следующего содержания. Все по порядку. "Вхожу" в r0 ч-з модификацию \Device\PhysicalMemory(прописывания своего CallGat-а в GDT). В "R0Func" есть следующий код: Код (Text): in al, 0x64 and al, 0xFD out 0x64, al//bit 1 is set to 0 that means that input buffer doesn't contain any data mov al, 0xF5 out 0x60, al//send the command "turn off a keyboard" in al, 0x64 or al, 0x02 out 0x64, al//bit 1 restoring и Код (Text): in al, 0x64 and al, 0xFD out 0x64, al//bit 1 is set to 0 that means that input buffer doesn't contain any data mov al, 0xF4 out 0x60, al//send the command "turn on a keyboard" in al, 0x64 or al, 0x02 out 0x64, al//bit 1 restoring Так вот, первый фрагмент кода ведет себя как и ожидается - disabl-ит клаву, однако второй не restor-ит. Два вопроса, как обычно: почему и как сделать, чтобы работало? =)) ЗЫ. Проверял второй фрагмент "сразу"(без запуска первого перед этим) - как ни странно, клава вырубается! Т.е action прямо противоположен expectation-у... ЗЗЫ. Не пинайте сильно, если была продемонстрирована ламерность в достаточно больших количествах =))
а тебя не смущает, что при чтении порт 64 возвращает флаги, а при записи воспринимается как команда т.е. изменять флаги через него НЕЛЬЗЯ!