APTEM, а Вы попробуйте после опроса порта добавить еще
if KeyPressed then ReadKey;
Это будет очищать буфер клавиатуры и не даст ему переполняться.
Вообще не путайте работу с буфером клавиатуры и контроллером клавиатуны
Работа с буфером - это функции in16h (BIOS) либо напрямую 16 байт памяти + 2 слова-указателя, но навскидку не помню адресов. В этих 16 байтах организован FIFO стек. Если найду, то закину адреса.