#include
#include
unsigned char far * scr= (unsigned char far *)0x00400017; //Keyboard status byte
void interrupt (*oldint15) ( );
void interrupt newint15 (unsigned int BP, unsigned int DI, unsigned int SI, unsigned int DS, unsigned int ES, unsigned int DX, unsigned int CX, unsigned int BX, unsigned int AX, unsigned int CS, unsigned int IP,unsigned int flags);
void main ( )
{
oldint15 = getvect (0x15);
setvect (0x15, newint15);
keep (0, 1000);
}
void interrupt newint15( unsigned int BP, unsigned int DI, unsigned int SI, unsigned int DS, unsigned int ES, unsigned int DX, unsigned int CX, unsigned int BX, unsigned int AX, unsigned int CS, unsigned int IP, unsigned int flags)
{
if (_AH == 0x4F)
{
if ((_AL == 0x1F) && ((*scr) & 0x0c))
{
outport (0x43, 0xB4);
outport (0x42, 0xFF);
outport (0x42, 0x21);
outport (0x61, inport(0x61) | 3); //Connect to interval timer and and turn the speaker on
}
if (_AL == 0x1

{
outport (0x61, inport(0x61) & 0xFC); //Turn the speaker off
}
}
else
(*oldint15) ( );
}
Q1 's Answer is on Page#6