(FILECREATED "18-Dec-85 21:04:21" {FLOPPY}TIMEPANEL.;1 3577   

      changes to:  (VARS TIMEPANELCOMS)
		   (FNS TIMEPANEL1 COUNTDOWN1)

      previous date: "18-Dec-85 20:56:38" {DSK}<USERFILES>LISPUSERS>TIMEPANEL.;15)


(PRETTYCOMPRINT TIMEPANELCOMS)

(RPAQQ TIMEPANELCOMS ((INITVARS (COUNTDOWNTONE 540)
				(COUNTDOWNBEEPLENGTH 2000)
				(CHIMEINTERVAL 0)
				(CHIMETONE 220)
				(CHIMELENGTH 500))
		      [ADDVARS (AFTERSYSOUTFORMS (RESTART.PROCESS (QUOTE TIMEPANEL)))
			       (AFTERLOGOUTFORMS (RESTART.PROCESS (QUOTE TIMEPANEL]
		      (* shouldn%'t be necessary, but it doesn%'t restart after logout.)
		      (FNS TIMEPANEL TIMEPANEL1 COUNTDOWN COUNTDOWN1 TIMEDIGITS)))

(RPAQ? COUNTDOWNTONE 540)

(RPAQ? COUNTDOWNBEEPLENGTH 2000)

(RPAQ? CHIMEINTERVAL 0)

(RPAQ? CHIMETONE 220)

(RPAQ? CHIMELENGTH 500)

(ADDTOVAR AFTERSYSOUTFORMS (RESTART.PROCESS (QUOTE TIMEPANEL)))

(ADDTOVAR AFTERLOGOUTFORMS (RESTART.PROCESS (QUOTE TIMEPANEL)))



(* shouldn%'t be necessary, but it doesn%'t restart after logout.)

(DEFINEQ

(TIMEPANEL
  [LAMBDA (TWELVEHRFLG)                                      (* M.Model "16-Oct-85 12:49")
    (ADD.PROCESS (BQUOTE (TIMEPANEL1 , TWELVEHRFLG))
		 (QUOTE NAME)
		 (QUOTE TIMEPANEL)
		 (QUOTE RESTARTABLE)
		 (QUOTE HARDRESET)
		 (QUOTE RESTARTFORM)
		 (BQUOTE (TIMEPANEL1 , TWELVEHRFLG])

(TIMEPANEL1
  [LAMBDA (TWELVEHRFLG)                                      (* M.Model "18-Dec-85 20:50")
    (while T bind TIME eachtime (SETQ TIME (TIMEDIGITS TWELVEHRFLG))
       first (SETMAINTPANEL (TIMEDIGITS TWELVEHRFLG))
	     [DISMISS (ITIMES 1000 (ADD1 (DIFFERENCE 59 (MKATOM (SUBSTRING (DATE)
									   17 18]
       do (SETMAINTPANEL TIME)
	  (COND
	    [[AND (FIXP CHIMEINTERVAL)
		  (ZEROP (IREMAINDER (IREMAINDER TIME 100)
				     (OR (AND (ZEROP CHIMEINTERVAL)
					      100)
					 CHIMEINTERVAL]
	      (BEEPON CHIMETONE)
	      (DISMISS (OR CHIMELENGTH 500))
	      (BEEPOFF)
	      (DISMISS (IDIFFERENCE 60000 (OR CHIMELENGTH 500]
	    (T (DISMISS 60000])

(COUNTDOWN
  [LAMBDA (N)                                                (* M.Model "16-Oct-85 12:20")
    (LET [(TIMEPROCESS (FIND.PROCESS (QUOTE TIMEPANEL]
      (AND TIMEPROCESS (SUSPEND.PROCESS TIMEPROCESS))        (* Redo to make restartable: save time at start, 
							     restart calls COUNTDOWN1 with N -
							     (savedtime -
							     currenttime).)
      (ADD.PROCESS (BQUOTE (COUNTDOWN1 , N , TIMEPROCESS))
		   (QUOTE NAME)
		   (QUOTE COUNTDOWN])

(COUNTDOWN1
  [LAMBDA (N TIMEPROCESS)                                    (* M.Model "18-Dec-85 20:53")
    (for CNT from N to 0 by -1
       do (SETMAINTPANEL CNT)
	  (DISMISS 60000)
       finally (BEEPON COUNTDOWNTONE)
	       (DISMISS COUNTDOWNBEEPLENGTH)
	       (BEEPOFF)
	       (WAKE.PROCESS TIMEPROCESS])

(TIMEDIGITS
  [LAMBDA (TWELVEHRFLG)                                      (* M.Model "14-Oct-85 00:14")
    (LET* [(DATESTR (DATE))
       (HOUR (MKATOM (SUBSTRING DATESTR 11 12]
      [COND
	(TWELVEHRFLG (COND
		       ((GREATERP HOUR 12)
			 (SETQ HOUR (DIFFERENCE HOUR 12)))
		       ((EQ HOUR 0)
			 (SETQ HOUR 12]
      (PACK* HOUR (SUBSTRING DATESTR 14 15])
)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1059 3555 (TIMEPANEL 1069 . 1414) (TIMEPANEL1 1416 . 2235) (COUNTDOWN 2237 . 2763) (
COUNTDOWN1 2765 . 3133) (TIMEDIGITS 3135 . 3553)))))
STOP