anchor.diff:                      :new-piece (when promotion
                                    (piece-char->symbol promotion whitep)))))
     board)
  +
  +(defun make-move (move board whitep)
  +  "Destructively modifies the board for the given move. The move parameter
  +   should be a string in algebraic chess notation. PRECONDITION: The move is
  +   valid on the given board."
  +  (if (castling-move-p move)
  +      (make-castle-move move board whitep)
  +      (make-one-piece--move move board whitep)))
  
positive.code:   "([RNBQK])?([a-h])?([1-8])?(x)?([a-h])([1-8])(=[RNBQK])?([#+])?"
    "A regular expression that describes chess movement in standard
     algebraic notation")
  
  (defconstant +piece-chars+ '(#\R #\N #\B #\Q #\K #\P))
  
  
negative.code:                                  :origin-file origin-file
                                   :origin-rank origin-rank))
              (destination-square (get-square board final-file final-rank)))
          (and origin ; i.e. a piece exists in the right location
               (if capturep
                   (if whitep
                       (black-piece-p destination-square)
  