anchor.diff:             (char string 0)))
       (register-groups-bind (piece origin-file origin-rank capturep
                                    final-file final-rank promotion check)
  -        (+algebraic-move-re+ string-move)
  +        (+algebraic-move-re+ (string-trim (append +whitespace-chars+
  +                                                  '(#\! #\?))
  +                                          string-move))
         (list (if piece (string->char piece) #\P)
               (when origin-file
                 (file->index (string->char origin-file)))
  
positive.code:                  (valid-move-p move board whitep))
                 +all-moves+)))
  
  (defun move-origin (final-file final-rank pre-board piece-letter whitep
                      capturep &key origin-file origin-rank)
    "Selects from a piece's possible moves the starting location based on a
     destination. The pre-board variable gives the layout before the move."
    (loop for (file-scale rank-scale)
       in (piece-moves piece-letter whitep capturep final-rank)
       as candidate-file = (+ final-file file-scale)
       as candidate-rank = (+ final-rank rank-scale)
       when (and (in-board-p candidate-file candidate-rank)
                 (eq (get-square pre-board candidate-file candidate-rank)
                     (piece-char->symbol piece-letter whitep))
                 (or (can-jump-p piece-letter)
                     (not (pieces-between-p pre-board final-file final-rank
                                            candidate-file candidate-rank)))
                 (or (null origin-file) (= origin-file candidate-file))
  
negative.code:               '((0 -1))))))
  
  (defun can-jump-p (piece-char)
    "True for a knight, false for any other piece."
    (char-equal piece-char #\N))
  
  (defun can-promote-p (piece rank whitep)
    "Decides if a given piece may be promoted based on its type and position."
    (let ((final-rank (if whitep 0 +number-of-ranks+)))
      (and (char-equal piece #\P)
           (= rank final-rank))))
  
  (defun being-attacked-p (file rank board white-attacker-p)
    "Searches for any pieces that could capture a certain square."
  