Добавил:
Mymnan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборка Часть2 / АВМиС / besov / L2
.CPP#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;
}