Добавил:
Mymnan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборка Часть2 / АВМиС / KLAVAL2
.CPP #include<dos.h>
#include<stdio.h>
#include<conio.h>
int flag=0;
void interrupt (far *old9);//save old intrrupt
void interrupt new9();//new interrupt
void far* readvect(int in);
void writevect(int in,void far* h);
union REGS rr;
struct SREGS sr;
void main()
{
old9=readvect(9);
writevect(9,new9);
int b=0,a=0,c=0,ind=5;
for(int i=0;i<20;i++)
{
ind=5;
if(!b) b=7;
do{
do{
a=inp(0x64);
a=a&2;
}while(a!=0);
outp(0x60,0x0ed);
flag=0;
while(flag==0) ;
ind--;
c=inp(0x60);
printf("\t\t%x",c);
if(!ind)
{
printf("ERROR");
return;
}
}while(c!=0x0fa);
ind=5;
do{
do{
a=inp(0x64);
a=a&2;
}while(a!=0);
outp(0x60,b);
flag=0;
while(flag==0) ;
ind--;
c=inp(0x60);
printf("\t\t%x",c);
if(!ind)
{
printf("ERROR");
return;
}
}while(c!=0x0fa);
b--;
sleep(1);
}
writevect(9,old9);
sleep(4);
}
void interrupt new9()
{
flag=1;
outp(0x20,0x20);
}
void far* readvect(int in)
{
rr.h.ah=0x35;rr.h.al=in;
intdosx(&rr,&rr,&sr);
return MK_FP(sr.es,rr.x.bx);
}
void writevect(int in,void far *h)
{
rr.h.ah=0x25;rr.h.al=in;sr.ds=FP_SEG(h);
rr.x.dx=FP_OFF(h);intdosx(&rr,&rr,&sr);
}