Скачиваний:
26
Добавлен:
15.09.2014
Размер:
3.14 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>

int tag;
int answer;

void interrupt far (*oldh)(...); //ukazatel na staryj obrabotchik preryvanij

void interrupt far handler(...)//sozdayom svoj obrabotchik
{
	int j=0;
	tag = 1;
	/*while(inp(0x60)==0xFE&&j<3)
	{
		answer=0;
		printf("0x%X\n",inp(0x60));
		j++;
		delay(100);
	}   */
	if (inp(0x60) == 0xFA)   //proverka
	{
		answer = 1;
		printf("0x%X\n",inp(0x60));
	}
	else  if    (inp(0x60) == 0xFE)
	{
		answer = 0;
		printf("0x%X\n",inp(0x60));
	}
	outp(0x20, 0x20); //zavershenie obrabotki
	outp(0xA0, 0x20);   //preryvanija
	oldh();
}

void exit_my(char * message)
{
	printf("%s", message);
       //setvect(0x9, oldh);  //vozraschayen upravlenie staromy
	//exit(EXIT_SUCCESS);
	//return;

}

int main()
{
	int j=0,m=0;
	clrscr();
	printf("Program is working\n");
	char sign = 0x01;

	disable();
	oldh = getvect(0x9); //poluchaem vektor starogo obrabotchika preryvanija
	setvect(0x9, handler); //ustanavlivaem novuj vektor
	enable();

	for(int i=0;i<12;i++)
	{
	      //	delay(250);

		do{
			while(inp(0x64)&2);
			tag = 0;           //obnulyjaem dlya proverki dostupa k klaviature
			outp(0x60, 0xED);  //zazhigaem
			while(!tag);
			//for(int n=0;n<3||tag;n++);       //ozhidanije srabatyvanija obrabotchika
			if(!answer) exit_my("keyboard don't answer\n");
			j++;if(j==3)return 0;
		}while(answer==0&&j<3);
		j=0;m=0;
		do{
			if(!sign) sign= 0x04;//esli nichego ne gorit, to zazhech capslock
			while(inp(0x64)&2);
			tag = 0;
			outp(0x60, sign);   //menyaem ogonyok
			while(!tag);
			if(!answer) exit_my("keyboard don't answer\n");
			j++;if(j==3)return 0;
			delay(250);
		}while(answer==0&&j<3);
		j=0;m=0;
		sign = sign >> 1;
	}
	sign=0x05;
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, 0xED);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, sign);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	delay(1000);

	sign=0x06;
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, 0xED);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, sign);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	delay(1000);

	sign=0x03;
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, 0xED);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, sign);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	delay(1000);

	sign=0x07;
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, 0xED);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, sign);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	delay(1000);

	sign=0x00;
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, 0xED);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");
	while(inp(0x64)&2);
	tag = 0;
	outp(0x60, sign);
	while(!tag);
	if(!answer) exit_my("keyboard don't answer\n");

	return 0;
}
Соседние файлы в папке besov