home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 3 Comm
/
03-Comm.zip
/
MCOMM530.ZIP
/
WATCHDOG.C
< prev
Wrap
C/C++ Source or Header
|
1990-06-22
|
2KB
|
53 lines
/** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* W A T C H D O G F U N C T I O N F O R M S C *
* Mike Dumdei, 6 Holly Lane, Texarkana TX 75503 *
* Requires ASM module --> WDOGHOOK.ASM *
* *
* IF YOU USE THE TICKHOOK FUNCTION IN COMMx.LIB AND THIS FUNC- *
* TION IN THE SAME PROGRAM YOU MUST UNINSTALL THE HOOKS IN THE *
* REVERSE ORDER THAT THEY WERE INSTALLED !!!!!!!!!!!! *
* ------------------------------------------------------------- *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
#include <dos.h>
#if defined (__TURBOC__)
#define _dos_getvect getvect
#define _dos_setvect setvect
#endif
#define uint unsigned int
#define TIMER 0x1C /* timer tick interrupt vector */
/* these are in the ASM module */
void interrupt far watchdoghook(void);
extern void (interrupt far *oldtimerint)();
extern uint msrportadrs;
int watchdogset(int flag, uint combase)
{
if (flag) /* enabling watchdog */
{
if (msrportadrs != 0)
return (-1); /* error if already enabled */
/* else set pointers and hook into the timer interrupt */
msrportadrs = combase + 6; /* point to modem status register */
oldtimerint = _dos_getvect(TIMER);
_dos_setvect(TIMER, watchdoghook); /* hook the timer */
return (0);
}
else /* disabling watchdog */
{
if (msrportadrs == 0)
return (-1); /* error if not enabled */
/* else set timer back to original vector & reset comchip var */
_dos_setvect(TIMER, oldtimerint); /* reset vector to original */
msrportadrs = 0;
return (0);
}
}