home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 348.lha / chatterbox_v1.0 / sources / timer.c < prev    next >
C/C++ Source or Header  |  1990-02-14  |  1KB  |  73 lines

  1. #include <exec/devices.h>
  2. #include <functions.h>
  3. #include <devices/timer.h>
  4.  
  5. struct timerequest *timermsg;
  6. struct timerequest *CreateExtIO();
  7.  
  8. extern struct timerequest *tr;
  9.  
  10. extern int gab_interval;
  11.  
  12. struct timerequest *CreateTimer(unit)
  13. int unit;
  14. {
  15.     int error;
  16.  
  17.     register struct MsgPort *timerport;
  18.     register struct timerequest *timermsg;
  19.  
  20.     timerport = CreatePort(0L, 0L);
  21.  
  22.     if(!timerport)
  23.         return 0;
  24.  
  25.     timermsg =  CreateExtIO(timerport, (long)sizeof(struct timerequest));
  26.  
  27.     if (!timermsg) 
  28.     {
  29.         DeletePort(timerport);
  30.         return 0;
  31.     }
  32.     error = OpenDevice(TIMERNAME, (long)unit, timermsg, 0L);
  33.     if(error)
  34.     {
  35.         DeleteTimer(timermsg);
  36.         return 0;
  37.     }
  38.     return timermsg;
  39. }
  40.  
  41. DeleteTimer(tr)
  42. register struct timerequest *tr;
  43. {
  44.     register struct MsgPort *tp;
  45.  
  46.     if (tr) 
  47.     {
  48.         tp = tr->tr_node.io_Message.mn_ReplyPort;
  49.         if(tp)
  50.             DeletePort(tp);
  51.         CloseDevice(tr);
  52.         DeleteExtIO(tr, (long)sizeof(struct timerequest));
  53.     }
  54. }
  55.  
  56. TrashTimer()
  57. {
  58.     if (tr)
  59.     {
  60.         AbortIO(tr);
  61.         DeleteTimer(tr);
  62.     }
  63. }
  64.  
  65. InitTimer()
  66. {
  67.     tr = (struct timerequest *)CreateTimer((int)UNIT_MICROHZ);
  68.     if (tr == NULL) 
  69.         panic("can't create timer");
  70.  
  71.     add_cleanup(TrashTimer);
  72. }
  73.