anchor.diff:                                                  (mezzano.gui.compositor:width window)
                                                   (mezzano.gui.compositor:height window))
             (unwind-protect
  -               (loop
  -                  (sys.int::log-and-ignore-errors
  -                   (with-simple-restart (abort "Return to IRC top-level")
  -                     (reset-input irc)
  -                     (let ((line (read-line (input-pane irc))))
  -                       (multiple-value-bind (command rest)
  -                           (parse-command line)
  -                         (let ((fn (gethash (string-upcase command) *top-level-commands*)))
  -                           (if fn
  -                               (funcall fn irc rest)
  -                               (error "Unknown command ~S." command))))))))
  +               (progn
  +                 (funcall (gethash "HELP" *top-level-commands*) irc "")
  +                 (loop
  +                    (handler-case
  +                        (progn
  +                          (reset-input irc)
  +                          (let ((line (read-line (input-pane irc))))
  +                            (multiple-value-bind (command rest)
  +                                (parse-command line)
  +                              (let ((fn (gethash (string-upcase command) *top-level-commands*)))
  +                                (if fn
  +                                    (funcall fn irc rest)
  +                                    (error "Unknown command ~S." command))))))
  +                      (error (c)
  +                        (format (display-pane irc) "~&Error: ~A" c)))))
               (when (irc-connection irc)
                 (close (irc-connection irc)))))))))
   
  
positive.code:   (format (display-pane irc) "~&Available commands:")
    (maphash (lambda (name help)
               (declare (ignore name))
               (format (display-pane irc) "~&/~:(~A~)" help))
             *top-level-command-doc*)
    (format (display-pane irc) "~&To connect, first set your nickname with the NICK command, then connect to a server with CONNECT."))
  
  (defclass irc-client ()
    ((%fifo :initarg :fifo :reader fifo)
  
negative.code: (define-command connect (irc text)
    "CONNECT <server or address>
    Connect to a server. Addresses use the address:port format, with port defaulting to 6667."
    (cond ((zerop (length text))
           (format (display-pane irc) "~&Known servers:")
           (loop for (name address port) in *known-servers*
              do (format (display-pane irc) "~&  ~:(~A~)  ~A:~D" name address port)))
          ((not (nickname irc))
           (error "No nickname set. Use /nick to set a nickname before connecting."))
          ((irc-connection irc)
           (error "Already connected to ~S." (irc-connection irc)))
          (t (multiple-value-bind (address port)
                 (resolve-server-name text)
               (format (display-pane irc) "~&Connecting to ~A (~A:~A)." text address port)
  