Функції АН=00
- 02h переривання 16h BIOS покладені в основу функції
bioskey() бібліотеки Turbo С. Далі слідує опис цієї функції.
#include <bios.h>
int bioskey (int cmd)
повертається в
залежності від значення в cmd до функцій АН=00 - 02h переривання 16h.
Що повертається функцією значення повторює значення
регістру АХ при виході з переривання.,
Наведемо
приклад використання bioskey(2) для визначення стану шіфт - і тригерных клавіш. Вихід з програми відбувається при натиску
символьного клавіші 'q\
/*L7_7. C*/:
#include <bios.h>
#include <conio.h>
#include <stdio.h>
void main(void){
char BIOS_key_cur, BIOS_key_old, BIOS_key;
char* icons[]={"Right Shift:",”LeftShift:", "Ctrl :",”Alt
:", "ScrollLock:",”NumLock:", "CapsLock:”, "Ins :",NULL};
};
int index = 0, x, y;
clrscr (); //Початкове
формування екрану.
while(icons[index]) puts(icons[index++]);
BIOS_key_old= bioskey(2);
BIOS_key_old =~BIOS_key_old;//iнверсія бiтiв
//Цикл очікування нажапшя будь-який клавіші
while(!((bioskey(1) & 0xff00)== 0х1000)){
y=1;
BIOS_key_cur=BIOS_key=bioskey(2);
//цикл інтерпритації бітів байту стану
for( index=0; index<8; index++){
x=14;gotoxy(x,y);
if((BIOS_key&0x01)!=(BIOS_key_old&0x01))
if(BIOS_key&0x01){
textattr(BLACK |(LIGHTGRAY<<4));
cputs(“включена”);
}
else{
textattr(LIGHTGRAY |(BLACK <<4));
cputs(“виключена”);
}
BIOS_key>>=1; BIOS_key_old>>=1; y++;
}
BIOS_key_old=BIOS_key_cur;
}
![]() |
![]() |
![]() |