home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / MCOMM530.ZIP / WATCHDOG.C < prev   
C/C++ Source or Header  |  1990-06-22  |  2KB  |  53 lines

  1.  
  2. /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  3. *                                                                           *
  4. *             W A T C H D O G   F U N C T I O N   F O R   M S C             *
  5. *               Mike Dumdei, 6 Holly Lane, Texarkana TX 75503               *
  6. *                    Requires ASM module --> WDOGHOOK.ASM                   *
  7. *                                                                           *
  8. *       IF YOU USE THE TICKHOOK FUNCTION IN COMMx.LIB AND THIS FUNC-        *
  9. *       TION IN THE SAME PROGRAM YOU MUST UNINSTALL THE HOOKS IN THE        *
  10. *       REVERSE ORDER THAT THEY WERE INSTALLED  !!!!!!!!!!!!                *
  11. *       -------------------------------------------------------------       *
  12. *                                                                           *
  13. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
  14. #include <dos.h>
  15.  
  16. #if defined (__TURBOC__)
  17.   #define    _dos_getvect    getvect
  18.   #define    _dos_setvect    setvect
  19. #endif
  20.  
  21. #define uint    unsigned int
  22. #define TIMER   0x1C                        /* timer tick interrupt vector */
  23.  
  24. /* these are in the ASM module */
  25. void interrupt far watchdoghook(void);
  26. extern void (interrupt far *oldtimerint)();
  27. extern uint msrportadrs;
  28.  
  29. int watchdogset(int flag, uint combase)
  30. {
  31.     if (flag)                                         /* enabling watchdog */
  32.     {
  33.         if (msrportadrs != 0)
  34.             return (-1);                       /* error if already enabled */
  35.         /* else set pointers and hook into the timer interrupt */
  36.         msrportadrs = combase + 6;       /* point to modem status register */
  37.         oldtimerint = _dos_getvect(TIMER);
  38.         _dos_setvect(TIMER, watchdoghook);               /* hook the timer */
  39.         return (0);
  40.     }
  41.     else                                             /* disabling watchdog */
  42.     {
  43.         if (msrportadrs == 0)
  44.             return (-1);                           /* error if not enabled */
  45.         /* else set timer back to original vector & reset comchip var */
  46.         _dos_setvect(TIMER, oldtimerint);      /* reset vector to original */
  47.         msrportadrs = 0;
  48.         return (0);
  49.     }
  50. }
  51.  
  52.         
  53.