anchor.diff:    (list (make-instance 'cli-parser:cli-option
                          :abbr "s"
                          :full "server"
  -                       :requires-arguments t)
  +                       :requires-arguments :optional)
           (make-instance 'cli-parser:cli-option
                          :abbr "c"
                          :full "connect"
  
positive.code:                        :requires-arguments t)))
  
  (defun cli-get-mode (options)
    (let ((server (car (gethash "server" options)))
          (client (car (gethash "connect" options)))
          (port (car (gethash "port" options))))
      (or (when server (list :server server (parse-integer port)))
          (when client (list :client client (parse-integer port)))
          (list :normal nil nil))))
  
  ;;;
  ;;; Video modes
  
negative.code:   (assert (not (boundp '*mode*)))
    (ecase mode
      ((:server)
       (let* ((host (or host usocket:*wildcard-host*))
              (port (or port usocket:*auto-port*))
              (socket (usocket:socket-listen
                       host port :element-type '(unsigned-byte 8))))
         (setf *mode* :server
               *host* host *port* (usocket:get-local-port socket)
               *server-socket* socket)))
      (:client
       (setf *mode* :client *host* host *port* port))
      (:normal
  