|
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#define VK_ESC 0x11b
#define TIMER 0x1c
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
int TimerCounter=0;
void interrupt ( *ldhandler)(__CPPARGS);/*看不明白,CPPARGS是什么来的,还有这个函数参数的定义*/
void interrupt newhandler(__CPPARGS)
{
TimerCounter++;
ldhandler();/*看不明白,这个函数跟上面有什么联系*/
}
void SetTimer(void interrupt (*IntProc)(__CPPARGS))/*看不明白参数的定久*/
{
ldhandler=getvect(TIMER);
disable();
setvect(TIMER,IntProc);
enable();
}
void KillTimer()
{
disable();
setvect(TIMER,ldhandler);
enable();
}
void main(void)
{
int key,time=0;
SetTimer(newhandler);
for (;;)
{
if (bioskey(1))
{
key=bioskey(0);
if (key==VK_ESC)
{
printf("User cancel!\n");
break;
}
}
if (TimerCounter>18)
{
TimerCounter=0;
time++;
printf("%d\n",time);
if (time==10)
{
printf(" rogram terminated normally!\n");
break;
}
}
}
KillTimer();
}
|
|