(FILECREATED "18-Jan-85 13:29:23" {ERIS}<LISP>HARMONY>PATCHES>PROMPTTIMEOUTPATCH.;1 2796   

      changes to:  (VARS PROMPTTIMEOUTPATCHCOMS))


(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT PROMPTTIMEOUTPATCHCOMS)

(RPAQQ PROMPTTIMEOUTPATCHCOMS ((FNS \PROMPTFORWORDBIN)))
(DEFINEQ

(\PROMPTFORWORDBIN
  [LAMBDA (INSTREAM DISPLAYECHOSTREAM URGENCY.OPTION TIMER)
                                                             (* JonL " 9-Nov-84 22:35")
                                                             (* Takes in one character from the KEYBD.CHANNEL)
    (DECLARE (USEDFREE TERMINCHARS.LST TIMELIMITEXPIRED? BELLBEENHEARD?))
    (PROG ((WAITINTERVAL.secs 15)
	   (TTYWAITLIMIT (if URGENCY.OPTION
			     then (if BELLBEENHEARD?
				      then 30000
				    else 0)))
	   [BROADURGENCY? (AND URGENCY.OPTION (NOT (FIXP URGENCY.OPTION]
	   CHAR READABLE)
      NEXTROUND
          [if BROADURGENCY?
	      then (SETQ TIMER (SETUPTIMER WAITINTERVAL.secs TIMER (QUOTE SECONDS]
      LP  (if (SETQ READABLE (OR INSTREAM (WAIT.FOR.TTY TTYWAITLIMIT)))
	      then                                           (* Ready to read)
		   (if (SETQ CHAR (if (NULL INSTREAM)
				      then (\GETSYSBUF)
				    elseif (READP INSTREAM T)
				      then (BIN INSTREAM)
				    elseif (\EOFP INSTREAM)
				      then (CAR TERMINCHARS.LST)))
		       then (RETURN CHAR))
		   (if DISPLAYECHOSTREAM
		       then                                  (* \TTYBACKGROUND so that a caret will flash)
			    (\TTYBACKGROUND)
		     else (BLOCK)))
          (if (AND TIMER (TIMEREXPIRED? TIMER (QUOTE SECONDS)))
	      then (if (AND URGENCY.OPTION (NOT BROADURGENCY?))
		       then (SETQ TIMELIMITEXPIRED? T)
			    (RETURN))
	    else (SETQ TTYWAITLIMIT 30000)
		 (AND READABLE (GO LP)))
          (if (NULL BELLBEENHEARD?)
	      then (SETQ BELLBEENHEARD? T)
		   (SELECTQ (MACHINETYPE)
			    (DANDELION (RINGBELLS))
			    NIL))
          (FLASHWINDOW DISPLAYECHOSTREAM NIL 350)
          [if (AND BROADURGENCY? (TTY.PROCESSP))
	      then (SETQ WAITINTERVAL.secs (IMIN (LLSH WAITINTERVAL.secs 1)
						 (TIMES 2 60]
                                                             (* Double the wait interval time 
							     (the time between "flashings") up to about 2 minutes, 
							     so that it doesn't become obnoxious)
          (GO NEXTROUND])
)
(PUTPROPS PROMPTTIMEOUTPATCH COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (320 2707 (\PROMPTFORWORDBIN 330 . 2705)))))
STOP