#include
"dos.h"
#include
"iostream.h"
void
interrupt myfunc_8();
void
interrupt myfunc_9();
void
interrupt (*prev_8)();
void
interrupt (*prev_9)();
int
vdustate=1,savestate=0,tickctr=0,ticklimit=182;
//ticklimit(for
10 sec)assuming the clock has fequency of 18.2 Mhz
unsigned
ax,dx,si,es;
int
adapter=0x3d8; //type of monotor VGE,EGA,CGA etc.
main()
{
unsigned long far *intkbd;
unsigned long far *intclock;
intkbd=(unsigned long far*)(9*4);
prev_9=(void (interrupt far*)())*intkbd;
*intkbd=(unsigned long)myfunc_9;
intclock=(unsigned long far*)(8*4);
prev_8=(void (interrupt far*)())*intclock;
*intclock=(unsigned long)myfunc_8;
keep(0,2500);
return 0;
}
void
interrupt myfunc_9()
{
void putvduon();
cout<<"\ninto mufunc_9";
ax=_AX;
enable();
savestate=0;
if(vdustate==0)
putvduon();
_AX=ax;
disable();
(*prev_9)();
return;
}
void
interrupt myfunc_8()
{
void putvduoff();
ax=_AX;
if(savestate==0)
{
tickctr++;
if(tickctr>=ticklimit)
{
tickctr=0;
savestate=1;
putvduoff();
}
}
_AX=ax;
(*prev_8)();
return;
}
void
putvduon()
{
disable();
cout<<"\ninto putvduon";
ax=_AX;
dx=_DX;
si=_SI;
es=_ES;
_AL=peekb(0x40,0x65);
_ES=es;
_SI=si;
outportb(adapter,_AL);
vdustate=1;
_DX=dx;
_AX=ax;
enable();
return;
}
void
putvduoff()
{
ax=_AX;
dx=_DX;
disable();
cout<<"\ninto putvduoff";
outportb(adapter,0x25);
vdustate=0;
_DX=dx;
_AX=ax;
enable();
return;
}