Системное программное обеспечение персональных ЭВМ


Пример 5



Пример 5

/*== ПРИМЕР 7.5 ==*/ /*============= Прерывание BIOS 16 ============*/ #include <dos.h>

main() { union REGS rr; int i; printf("\nПрерывание 0x16, функция 1 >"); /* Ожидание нажатия клавиши */ do { rr.h.ah=1; int86(0x16,&rr,&rr); } while((rr.x.flags&0x0040)!=0); printf("%02x %02x",rr.h.ah,rr.h.al); /* Прием клавиши */ rr.h.ah=0; int86(0x16,&rr,&rr); /* Здесь выведется то же, что и в предыдущей строке, т.к. клавиша, код которой прочитан по функции 1 из клавиа- туры не удалена. */ printf(" %02x %02x\n",rr.h.ah,rr.h.al); /* Прием новой клавиши с ожиданием */ printf("\nПрерывание 0x16, функция 0 >"); rr.h.ah=0; int86(0x16,&rr,&rr); printf("%02x %02x\n",rr.h.ah,rr.h.al); printf("\nПрерывание 0x16, функция 2 >"); /* Теперь надо нажимать клавиши состояний и смотреть, что выводится */ do { rr.h.ah=2; int86(0x16,&rr,&rr); printf("%02x ",rr.h.al); delay(300); /* Проверка нажатия любой (кроме переключателя) клавиши. Цикл продолжается до нажатия клавиши "пробел" */ rr.h.ah=1; int86(0x16,&rr,&rr); } while(rr.h.al!=13); /* Очистка буфера клавиатуры */ poke(0x40,0x1a,peek(0x40,0x1c)); }

7.3. Функции стандартного ввода DOS

В DOS нет функций, ориентированных непосредственно на клавиатуру. Функции ввода DOS работают с файлом стандартного ввода, который по умолчанию связан с клавиатурой. Но при переназначении стандартного ввода функции DOS будут успешно работать и с другим источником.

Коротко перечислим функции DOS.