anchor.diff:    "Buffer 100 characters of output to reduce calls across the sub-process to Tk"
     (setf (output-buffer user-stream)
       (format nil "~A~A" (output-buffer
  -                         user-stream) string))
  -  (when (> (length (output-buffer user-stream)) 100)
  -    (flush user-stream)))
  +			user-stream) string))
  +  (let* ((timestamp (get-internal-real-time))
  +	 (elapsed (- timestamp (wrstamp user-stream))))
  +    (when (or (> elapsed 200;internal-time-units-per-second
  +		 )
  +	      (> (length (output-buffer user-stream)) 100))
  +      (flush user-stream)
  +      (setf (wrstamp user-stream) timestamp))))
   
   (defmethod flush ((user-stream user-stream))
     (output *listener* (output-buffer user-stream))
  
positive.code:       (command-history listener) 0))
    (prompt listener))
  
  (defmethod prompt ((listener listener) &key (prompt ">") (clear nil))
    (when clear
      (let ((start-of-line (text-row-add (repl-insert-point listener) 0)))
        (ltk::delete-text (inferior-win listener) start-of-line "end")
        (setf (repl-insert-point listener) (ltk::get-cursor-pos (inferior-win listener)))))
    (output listener (format nil "~%~a " prompt) "prompt"))
  
  (defmethod get-user-input ((listener listener))
    (trim-code (ltk::get-text-range (inferior-win listener)
  
negative.code:      :accessor output-buffer
       :initform "")
     (index
      :accessor index
      :initform -1)
     (wrstamp
      :accessor wrstamp
      :initform 0))
    
    (:documentation "Provides a bi-directional stream to act as a conduit
      for the user input and output in the listener. Typically bind an
      instance of this to all interesting streams during evaluation."))
  