anchor.diff:        (warn "PS/2 identify failed: ~2,'0X~%" reason)
         (return-from ps/2-identify nil)))
     ;; Read up to two bytes.
  -  (let ((byte-one (ps/2-read port t)))
  +  (let ((byte-one (ps/2-read port)))
       (case byte-one
         (#x00 :standard-mouse)
         (#x03 :scroll-mouse)
         (#x04 :5-button-mouse)
  -      (#xAB (let ((byte-two (ps/2-read port t)))
  +      (#xAB (let ((byte-two (ps/2-read port)))
                 (case byte-two
                   ((#x41 #xC1) :mf2-keyboard-translated)
                   ((#x83) :mf2-keyboard)
  
positive.code:   (ps/2-read-fifo (ecase port
                      (:key *ps/2-key-fifo*)
                      (:aux *ps/2-aux-fifo*))
                    (if (eql timeout t) 10000 timeout)))
  
  (defun ps/2-flush-input (port)
    (ecase port
  
negative.code:   (ps/2-flush-input port)
    ;; Expecting ACK followed by Self-Test-Passed.
    (unless (ps/2-send-command port +ps/2-reset+)
      (warn "PS/2 keyboard reset failed.")
      (return-from init-keyboard))
    (unless (eql (ps/2-read port) +ps/2-self-test-passed+)
      (warn "PS/2 keyboard reset failed.")
      (return-from init-keyboard))
    (format t "Detected ~S on PS/2 ~S port.~%" (ps/2-identify port) port)
    ;; Switch to scancode set 1.
    (unless (ps/2-send-command port #xF0)
      (warn "PS/2 keyboard scancode change failed (1).")
      (return-from init-keyboard))
    (unless (ps/2-send-command port 1)
      (warn "PS/2 keyboard scancode change failed (2).")
      (return-from init-keyboard))
    (unless (ps/2-send-command port #xF4)
      (warn "PS/2 keyboard start reporting failed.")
      (return-from init-keyboard)))
  
  (defun ps/2-mouse-command (port command)
  