/***************************************************************************
 *  Файл объявлений для работы с клавиатурой на  низком уровне.            *
 *  Технический университет. Кафедра прикладной математики.                *
 *  Совместно с кафедрой прикладной математики новосибирского  строитель-  *
 *  ного института.                                                        *
 ***************************************************************************/
#ifndef  KEY
#define MAX_BUF  9           //Максимальная длина буфера клавиатуры
#define KEY unsigned int     //Определяем тип для работы с символами
// Макроопределения
#define Point_Key_Start  0x041A  //Адрес-указатель на начало буфера BIOS
#define Point_Key_End    0x041С  //Адрес-указатель на конец  буфера BIOS
#define Get_Key_BIOS       0x00  //Функция BIOS считывания кода нажатой клав.
#define Chack_Key_BIOS     0x02  //Функция BIOS проверки состояния клавиш
// СИМВОЛИЧЕСКИЕ ОПИСАНИЯ КЛАВИШ
#define PSEUDO    0xffff
#define START   0x0001
#define LEFT    0x4b00
#define RIGHT   0x4d00
#define ESC     0x001b
#define DOWN    0x5000
#define UP      0x4800
#define PAGE_UP 0x4900
#define PAGE_DO 0x5100
#define HOME    0x4700
#define END     0x4F00
#define INS     0x5200
#define DEL     0x5300
#define CTRL_F1 0x5E00
#define ALT_F1  0x6800
#define F1      0x3B00
#define F2      0x3C00
#define F3      0x3D00
#define F4      0x3E00
#define F5      0x3F20
#define F6      0x4000
#define F7      0x4100
#define F8      0x4200
#define F9      0x4300
#define ALT_F10  0x7100
#define CTRL_F10 0x6700
#define F10     0x4400
#define TAB     0x0009
#define ENTER   0x000D
#define CTRL_UP 0x8400
#define CTRL_DO 0x7600
#define S_TAB   0x0F00
#define S_BAR   0x0020
#define BS      0x0008
#define ALT_A   0x1E00
#define ALT_B   0x3000
#define ALT_C   0x2E00
#define ALT_D   0x2000
#define ALT_E   0x1200
#define ALT_F   0x2100
#define ALT_G   0x2200
#define ALT_H   0x2300
#define ALT_I   0x1700
#define ALT_J   0x2400
#define ALT_K   0x2500
#define ALT_L   0x2600
#define ALT_M   0x3200
#define ALT_N   0x3100
#define ALT_O   0x1800
#define ALT_P   0x1900
#define ALT_Q   0x1000
#define ALT_R   0x1300
#define ALT_S   0x1F00
#define ALT_T   0x1400
#define ALT_U   0x1600
#define ALT_V   0x2F00
#define ALT_W   0x1100
#define ALT_X   0x2D00
#define ALT_Y   0x1500
#define ALT_Z   0x2C00
// Прототипы функций
KEY  Get_Key( void );            // Подпрограмма для чтения клавиатуры на
				 // уровне BIOS
void Set_Key( KEY, ... );        // Подпрограмма для записи символов в буфер
				 // BIOS
void Set_Insert_Key( KEY, ... ); // Подпрограмма для записи символов в буфер
				 // BIOS, начиная с конца, т.е. эти символы
				 // будут прочитаны первыми
void Clear_Buf (void);           // Очистка буфера клавиатуры
void Clear_Buf_My (void);  
KEY Hit_Key (void);              // Любая клавиша 
#endif
///////////////////////////////////////////////////////////////////////
#define min(a,b) ((a<b)?(a):(b))
#define max(a,b) ((a>b)?(a):(b))
