home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 616.lha / Notify_v1.01 / NotifyTimer < prev   
Text File  |  1992-02-21  |  4KB  |  69 lines

  1. /* NotifyTimer 1.01 */
  2. /* Copyright © Michael Tanzer, 1991, 1992 */
  3. /* See additional notices in accompanying documentation */
  4. parse arg time thismsg .                   /* Get time and msg number      */
  5. now = time()                               /* Get the current time         */
  6. if upper(time)='NOW' then time = substr(now,1,5)
  7. cm = substr(now,1,2)*60+substr(now,4,2)    /* Get current time in minutes  */
  8. dm = substr(time,1,2)*60+substr(time,4,2)  /* Get desired time in minutes  */
  9.  
  10. do forever
  11.   mm = dm-cm                               /* Get minutes until time       */
  12.   if mm=0 then ss = 0                      /* If now not desired time...   */
  13.   else ss = substr(now,7,2)                /* ...get seconds into minute   */
  14.   if mm<0 then mm=mm+1440                  /* Handle midnight crossing     */
  15.   if mm<10 then leave                      /* Leave loop if <10 min        */
  16.   mm = mm*9%10                             /* Get 90% of minutes           */
  17.   call wait                                /* Go wait 90% of time          */
  18.   now = time()                             /* Get current time             */
  19.   cm = substr(now,1,2)*60+substr(now,4,2)  /* Get current time in minutes  */
  20.   end                                      /* Go handle remaining 10%      */
  21.  
  22. call wait                                  /* Wait for desired time        */
  23. message = subword(getenv('Notify.'thismsg),2) /* Get the message           */
  24. call delmsg                                /* Go delete msg from list      */
  25. if result=0 then exit                      /* Exit if deleted earlier      */
  26. if upper(word(message,1))='CMD' then do    /* Handle 'CMD' request         */
  27.   call pragma('S',4000)                    /*   Set stack size             */
  28.   address command subword(message,2)       /*   Issue the command to ADOS  */
  29.   exit                                     /*   No requester/announcement  */
  30.   end
  31. call screentofront()                       /* Bring Workbench to front     */
  32. if getenv('Notify.quiet')~=1 then          /* Handle noisy messages        */
  33.   address arexx 'NotifyNoise' time message
  34. twentyfour = getenv('Notify.twentyfour')   /* Get value from Notify        */
  35. if ~twentyfour then do                     /* Adjust for 12-hour clock     */
  36.   parse var time hh':'mm                   /*   Separate hour and minute   */
  37.   if hh<12 then suffix = 'am'              /*   Set for am...              */
  38.   else suffix = 'pm'                       /*   ...or pm                   */
  39.   hh = hh//12                              /*   Limit hour to 12           */
  40.   if hh=0 then hh = '12'                   /*   Handle 12                  */
  41.   time = hh':'mm||suffix                   /*   Rebuild time               */
  42.   end
  43. if words(message)=0 then prompt = 'It is now' time
  44. else prompt = 'It is now' time'\'message
  45. call request(0,0,prompt,,'OK',,)           /* Display time and message     */
  46. exit                                       /* Get out                      */
  47.  
  48. wait:                                      /* Wait for time to pass        */
  49.   ss = mm*60-ss                            /* Subtract seconds into minute */
  50.   signal on halt                           /* Disable halt interrupt       */
  51.   call delay(ss*50)                        /* Wait a while                 */
  52. halt:
  53.   signal off halt                          /* Enable halt interrupt        */
  54.   return
  55.  
  56. delmsg:                                    /* Delete message from list     */
  57.   call forbid()                            /* Hold other tasks             */
  58.   msglist = getenv('Notify.list')          /* Get list of msg numbers      */
  59.   w = find(msglist,thismsg)                /* Get word number of our msg   */
  60.   if w=0 then do                           /* If msg already deleted...    */
  61.     call permit()                          /*   Free other tasks           */
  62.     return 0                               /*   Indicate failure           */
  63.     end
  64.   msglist = strip(delword(msglist,w,1),'B')/* Delete our msg from list     */
  65.   call setenv('Notify.list',msglist)       /* Store new list               */
  66.   call permit()                            /* Free other tasks             */
  67.   call setenv('Notify.'thismsg)            /* Delete the message           */
  68.   return 1                                 /* Indicate success             */
  69.