anchor.diff:  
   (defun lem-mainloop-thread (debug-p)
     (flet ((body ()
  -               (window-maybe-update)
  +               (bt:with-lock-held (*mainloop-lock*)
  +                 (window-maybe-update))
                  (case (catch 'abort
                          (main-step)
                          nil)
  
positive.code: (defun lem-input-key-thread ()
    (loop :for c := (cl-charms/low-level:wgetch (window-win)) :do
      (unless (= -1 c)
        (input-enqueue c))
      (when *exit*
        (return))))
  
  
negative.code: 
  (let ((queue (make-growlist)))
    (defun getch (&optional (abort-jump t))
      (let* ((code (loop
                     (bt:with-lock-held (*mainloop-lock*)
                       (unless (grow-null-p queue)
                         (return (grow-rem-left queue))))
                     (sleep 0.01)))
             (char (code-char code)))
        (queue:enqueue *input-history* char)
  