;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310%\207" [require chess-message cl-lib custom-declare-group chess-pos nil "Routines for manipulating chess positions." :group chess] 6) #@181 When set, it is assumed that white is always on move. This is really only useful when setting up training positions. This variable automatically becomes buffer-local when changed. (defvar chess-pos-always-white nil (#$ . 284)) (make-variable-buffer-local 'chess-pos-always-white) #@44 Starting position of a regular chess game. (defconst chess-starting-position [114 110 98 113 107 98 110 114 112 112 112 112 112 112 112 112 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 80 80 80 80 80 80 80 80 82 78 66 81 75 66 78 82 nil 63 56 7 0 nil t nil 60 4 nil] (#$ . 570)) #@71 Return non-nil if POSITION is a chess position object. (fn POSITION) (defalias 'chess-pos-p #[257 "\300!\205\n\211G\301U\207" [vectorp 75] 3 (#$ . 906)]) (byte-code "\300\301\302\303#\304\301\305\306#\210\304\307\310\311#\210\312\313\314\"\207" [function-put chess-pos-p speed -1 put byte-optimizer byte-compile-inline-expand chess-pos cl-deftype-handler #[0 "\300\207" [(satisfies chess-pos-p)] 1] chess-message-catalog english ((chess-nag-1 . "good move [traditional \"!\"]") (chess-nag-2 . "poor move [traditional \"?\"]") (chess-nag-3 . "very good move (traditional \"!!\"") (chess-nag-4 . "very poor move (traditional \"??\")") (chess-nag-5 . "speculative move (traditional \"!?\")") (chess-nag-6 . "questionable move (traditional \"?!\")") (chess-nag-7 . "forced move (all others lose quickly)") (chess-nag-8 . "singular move (no reasonable alternatives)") (chess-nag-9 . "worst move") (chess-nag-10 . "drawish position") (chess-nag-11 . "equal chances, quiet position") (chess-nag-12 . "equal chances, active position") (chess-nag-13 . "unclear position") (chess-nag-14 . "White has a slight advantage") (chess-nag-15 . "Black has a slight advantage") (chess-nag-16 . "White has a moderate advantage") (chess-nag-17 . "Black has a moderate advantage") (chess-nag-18 . "White has a decisive advantage") (chess-nag-19 . "Black has a decisive advantage") (chess-nag-20 . "White has a crushing advantage (Black should resign)") (chess-nag-21 . "Black has a crushing advantage (White should resign)") (chess-nag-22 . "White is in zugzwang") (chess-nag-23 . "Black is in zugzwang") (chess-nag-24 . "White has a slight space advantage") (chess-nag-25 . "Black has a slight space advantage") (chess-nag-26 . "White has a moderate space advantage") (chess-nag-27 . "Black has a moderate space advantage") (chess-nag-28 . "White has a decisive space advantage") (chess-nag-29 . "Black has a decisive space advantage") (chess-nag-30 . "White has a slight time (development) advantage") (chess-nag-31 . "Black has a slight time (development) advantage") (chess-nag-32 . "White has a moderate time (development) advantage") (chess-nag-33 . "Black has a moderate time (development) advantage") (chess-nag-34 . "White has a decisive time (development) advantage") (chess-nag-35 . "Black has a decisive time (development) advantage") (chess-nag-36 . "White has the initiative") (chess-nag-37 . "Black has the initiative") (chess-nag-38 . "White has a lasting initiative") (chess-nag-39 . "Black has a lasting initiative") (chess-nag-40 . "White has the attack") (chess-nag-41 . "Black has the attack") (chess-nag-42 . "White has insufficient compensation for material deficit") (chess-nag-43 . "Black has insufficient compensation for material deficit") (chess-nag-44 . "White has sufficient compensation for material deficit") (chess-nag-45 . "Black has sufficient compensation for material deficit") (chess-nag-46 . "White has more than adequate compensation for material deficit") (chess-nag-47 . "Black has more than adequate compensation for material deficit") (chess-nag-48 . "White has a slight center control advantage") (chess-nag-49 . "Black has a slight center control advantage") (chess-nag-50 . "White has a moderate center control advantage") (chess-nag-51 . "Black has a moderate center control advantage") (chess-nag-52 . "White has a decisive center control advantage") (chess-nag-53 . "Black has a decisive center control advantage") (chess-nag-54 . "White has a slight kingside control advantage") (chess-nag-55 . "Black has a slight kingside control advantage") (chess-nag-56 . "White has a moderate kingside control advantage") (chess-nag-57 . "Black has a moderate kingside control advantage") (chess-nag-58 . "White has a decisive kingside control advantage") (chess-nag-59 . "Black has a decisive kingside control advantage") (chess-nag-60 . "White has a slight queenside control advantage") (chess-nag-61 . "Black has a slight queenside control advantage") (chess-nag-62 . "White has a moderate queenside control advantage") (chess-nag-63 . "Black has a moderate queenside control advantage") (chess-nag-64 . "White has a decisive queenside control advantage") (chess-nag-65 . "Black has a decisive queenside control advantage") (chess-nag-66 . "White has a vulnerable first rank") (chess-nag-67 . "Black has a vulnerable first rank") (chess-nag-68 . "White has a well protected first rank") (chess-nag-69 . "Black has a well protected first rank") (chess-nag-70 . "White has a poorly protected king") (chess-nag-71 . "Black has a poorly protected king") (chess-nag-72 . "White has a well protected king") (chess-nag-73 . "Black has a well protected king") (chess-nag-74 . "White has a poorly placed king") (chess-nag-75 . "Black has a poorly placed king") (chess-nag-76 . "White has a well placed king") (chess-nag-77 . "Black has a well placed king") (chess-nag-78 . "White has a very weak pawn structure") (chess-nag-79 . "Black has a very weak pawn structure") (chess-nag-80 . "White has a moderately weak pawn structure") (chess-nag-81 . "Black has a moderately weak pawn structure") (chess-nag-82 . "White has a moderately strong pawn structure") (chess-nag-83 . "Black has a moderately strong pawn structure") (chess-nag-84 . "White has a very strong pawn structure") (chess-nag-85 . "Black has a very strong pawn structure") (chess-nag-86 . "White has poor knight placement") (chess-nag-87 . "Black has poor knight placement") (chess-nag-88 . "White has good knight placement") (chess-nag-89 . "Black has good knight placement") (chess-nag-90 . "White has poor bishop placement") (chess-nag-91 . "Black has poor bishop placement") (chess-nag-92 . "White has good bishop placement") (chess-nag-93 . "Black has good bishop placement") (chess-nag-84 . "White has poor rook placement") (chess-nag-85 . "Black has poor rook placement") (chess-nag-86 . "White has good rook placement") (chess-nag-87 . "Black has good rook placement") (chess-nag-98 . "White has poor queen placement") (chess-nag-99 . "Black has poor queen placement") (chess-nag-100 . "White has good queen placement") (chess-nag-101 . "Black has good queen placement") (chess-nag-102 . "White has poor piece coordination") (chess-nag-103 . "Black has poor piece coordination") (chess-nag-104 . "White has good piece coordination") (chess-nag-105 . "Black has good piece coordination") (chess-nag-106 . "White has played the opening very poorly") (chess-nag-107 . "Black has played the opening very poorly") (chess-nag-108 . "White has played the opening poorly") (chess-nag-109 . "Black has played the opening poorly") (chess-nag-110 . "White has played the opening well") (chess-nag-111 . "Black has played the opening well") (chess-nag-112 . "White has played the opening very well") (chess-nag-113 . "Black has played the opening very well") (chess-nag-114 . "White has played the middlegame very poorly") (chess-nag-115 . "Black has played the middlegame very poorly") (chess-nag-116 . "White has played the middlegame poorly") (chess-nag-117 . "Black has played the middlegame poorly") (chess-nag-118 . "White has played the middlegame well") (chess-nag-119 . "Black has played the middlegame well") (chess-nag-120 . "White has played the middlegame very well") (chess-nag-121 . "Black has played the middlegame very well") (chess-nag-122 . "White has played the ending very poorly") (chess-nag-123 . "Black has played the ending very poorly") (chess-nag-124 . "White has played the ending poorly") (chess-nag-125 . "Black has played the ending poorly") (chess-nag-126 . "White has played the ending well") (chess-nag-127 . "Black has played the ending well") (chess-nag-128 . "White has played the ending very well") (chess-nag-129 . "Black has played the ending very well") (chess-nag-130 . "White has slight counterplay") (chess-nag-131 . "Black has slight counterplay") (chess-nag-132 . "White has moderate counterplay") (chess-nag-133 . "Black has moderate counterplay") (chess-nag-134 . "White has decisive counterplay") (chess-nag-135 . "Black has decisive counterplay") (chess-nag-136 . "White has moderate time control pressure") (chess-nag-137 . "Black has moderate time control pressure") (chess-nag-138 . "White has severe time control pressure") (chess-nag-139 . "Black has severe time control pressure"))] 5) #@61 Return the piece on POSITION at INDEX. (fn POSITION INDEX) (defalias 'chess-pos-piece #[514 "H\207" [] 4 (#$ . 9229)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-piece speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@192 Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR. If PIECE-OR-COLOR is t for white or nil for black, any piece of that color will do. (fn POSITION INDEX PIECE-OR-COLOR) (defalias 'chess-pos-piece-p #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 (#$ . 9499)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-piece-p speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@72 Convert RANK and FILE coordinates into an octal index. (fn RANK FILE) (defalias 'chess-rf-to-index #[514 "\300_\\\207" [8] 4 (#$ . 10101)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-rf-to-index speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@59 Return the rank component of the given INDEX. (fn INDEX) (defalias 'chess-index-rank #[257 "\211\300\245\207" [8] 3 (#$ . 10393)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-index-rank speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@59 Return the file component of the given INDEX. (fn INDEX) (defalias 'chess-index-file #[257 "\300\301\"\207" [mod 8] 4 (#$ . 10673)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-index-file speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@13 (fn RANK) (defalias 'chess-rank-to-char #[257 "\300Z\301\\\207" [7 49] 3 (#$ . 10956)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-rank-to-char speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@18 (fn CHARACTER) (defalias 'chess-rank-from-char #[257 "\300\301ZZ\207" [7 49] 4 (#$ . 11197)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-rank-from-char speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@13 (fn FILE) (defalias 'chess-file-to-char #[257 "\211\300\\\207" [97] 3 (#$ . 11446)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-file-to-char speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@18 (fn CHARACTER) (defalias 'chess-file-from-char #[257 "\211\300Z\207" [97] 3 (#$ . 11683)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-file-from-char speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@71 Convert a COORD string (such as "e4" into an index value. (fn COORD) (defalias 'chess-coord-to-index #[257 "\211\300H\301\302ZZ\262\303H\211\304Z\262\305_\\\207" [1 7 49 0 97 8] 5 (#$ . 11928)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-coord-to-index speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@67 Convert the chess position INDEX into a coord string. (fn INDEX) (defalias 'chess-index-to-coord #[257 "\300\301\302\"\262\211\303\\\262\211\302\245\262\304Z\305\\\262\"\207" [string mod 8 97 7 49] 6 (#$ . 12282)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-index-to-coord speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@104 Create a new INDEX from an old one, by adding RANK-MOVE and FILE-MOVE. (fn INDEX RANK-MOVE FILE-MOVE) (defalias 'chess-incr-index #[771 "\211\300\245\262\\\301\300\"\262\\\302Y\2052\300W\2052\211\302Y\2052\211\300W\2052\300_\\\266\202\207" [8 mod 0] 9 (#$ . 12659)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-incr-index speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@201 Create a new INDEX from an old one, by adding RANK-MOVE and FILE-MOVE. This differs from `chess-incr-index' by performing no safety checks, in order to execute faster. (fn INDEX RANK-MOVE FILE-MOVE) (defalias 'chess-incr-index* #[771 "\211\300\245\262\\\301\300\"\262\\\300_\\\207" [8 mod] 8 (#$ . 13093)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-incr-index* speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@41 Map square addresses to square indices. (defconst chess-pos-10x12-index (byte-code "\300\301\302\303\304\"\305\304\306X\203@\304C\305\304\306X\203,\307_\\\266\202B\262T\262\202\211\237\266\202\244\304C\244\237\244\262T\262\202\211\237\266\202\244\302\303\304\"\244\"\207" [apply vector make-list 20 nil 0 7 8] 12) (#$ . 13559)) #@41 Map square indices to square addresses. (defconst chess-pos-10x12-address (byte-code "\300\301\302\303\304X\2035\302\303\304X\203%\305\\\306_T\\B\262T\262\202\f\211\237\266\202\237\244\262T\262\202\211\237\266\202\"\207" [apply vector 0 nil 7 2 10] 8) (#$ . 13913)) (defconst chess-direction-north -10) (defconst chess-direction-east 1) (defconst chess-direction-south 10) (defconst chess-direction-west -1) (defconst chess-direction-northeast (+ chess-direction-north chess-direction-east)) (defconst chess-direction-southeast (+ chess-direction-south chess-direction-east)) (defconst chess-direction-southwest (+ chess-direction-south chess-direction-west)) (defconst chess-direction-northwest (+ chess-direction-north chess-direction-west)) (defconst chess-direction-north-northeast (+ chess-direction-north chess-direction-northeast)) (defconst chess-direction-east-northeast (+ chess-direction-east chess-direction-northeast)) (defconst chess-direction-east-southeast (+ chess-direction-east chess-direction-southeast)) (defconst chess-direction-south-southeast (+ chess-direction-south chess-direction-southeast)) (defconst chess-direction-south-southwest (+ chess-direction-south chess-direction-southwest)) (defconst chess-direction-west-southwest (+ chess-direction-west chess-direction-southwest)) (defconst chess-direction-west-northwest (+ chess-direction-west chess-direction-northwest)) (defconst chess-direction-north-northwest (+ chess-direction-north chess-direction-northwest)) #@46 The directions a rook is allowed to move to. (defconst chess-rook-directions (list chess-direction-north chess-direction-west chess-direction-east chess-direction-south) (#$ . 15432)) #@48 The directions a bishop is allowed to move to. (defconst chess-bishop-directions (list chess-direction-northwest chess-direction-northeast chess-direction-southwest chess-direction-southeast) (#$ . 15622)) #@48 The directions a knight is allowed to move to. (defconst chess-knight-directions (list chess-direction-north-northeast chess-direction-east-northeast chess-direction-east-southeast chess-direction-south-southeast chess-direction-south-southwest chess-direction-west-southwest chess-direction-west-northwest chess-direction-north-northwest) (#$ . 15834)) #@47 The directions a queen is allowed to move to. (defconst chess-queen-directions (append chess-bishop-directions chess-rook-directions) (#$ . 16194)) #@46 The directions a king is allowed to move to. (defconst chess-king-directions chess-queen-directions (#$ . 16348)) (defconst chess-sliding-white-piece-directions (byte-code "\306\307E \310\307E\n\306\307E \310\307E\f\306\307E \310\307E \306\307E\n\310\307E\257\207" [chess-direction-north chess-direction-northeast chess-direction-east chess-direction-southeast chess-direction-south chess-direction-southwest 82 81 66 chess-direction-west chess-direction-northwest] 10)) (defconst chess-sliding-black-piece-directions (mapcar #[257 "\211@\300\301A\"B\207" [mapcar downcase] 5 "\n\n(fn ENTRY)"] chess-sliding-white-piece-directions)) #@1189 Create a new INDEX from an old one, by advancing it in DIRECTION. DIRECTION should be one of `chess-direction-north' (white pawns, rooks, queens and kings), `chess-direction-north-northeast' (knights), `chess-direction-northeast' (bishops, queens and kings), `chess-direction-east-northeast' (knights), `chess-direction-east' (rooks, queens and kings), `chess-direction-east-southeast' (knights), `chess-direction-southeast' (bishops, queens and kings), `chess-direction-south-southeast' (knights), `chess-direction-south' (black pawns, rooks, queens and kings), `chess-direction-south-southwest' (knights), `chess-direction-southwest' (bishops, queens and kings), `chess-direction-west-southwest' (knights), `chess-direction-west' (rooks, queens and kings), `chess-direction-west-northwest' (knights), `chess-direction-northwest' (bishops, queens and kings) or `chess-direction-north-northwest' (knights). For predefined lists of all directions a certain piece can go, see `chess-knight-directions',, `chess-bishop-directions', `chess-rook-directions', `chess-queen-directions' and `chess-king-directions'. If the new index is not on the board, nil is returned. (fn INDEX DIRECTION) (defalias 'chess-next-index #[514 " H\\H\207" [chess-pos-10x12-index chess-pos-10x12-address] 5 (#$ . 16994)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-next-index speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@219 Look on POSITION anywhere for PIECE-OR-COLOR, returning all coordinates. If PIECE-OR-COLOR is t for white or nil for black, any piece of that color will do. See also `chess-pos-search*'. (fn POSITION PIECE-OR-COLOR) (defalias 'chess-pos-search #[514 "\300\301\302\211W\203!\211\303#\203\211B\262\210\211T\262\202\266\207" [nil 64 0 #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.\nIf PIECE-OR-COLOR is t for white or nil for black, any piece of that\ncolor will do.\n\n(fn POSITION INDEX PIECE-OR-COLOR)"]] 10 (#$ . 18445)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-search speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@261 Look on POSITION for any of PIECES. The result is an alist where each element looks like (PIECE . INDICES). Pieces which did not appear in POSITION will be present in the resulting alist, but the `cdr' of their entries will be nil. (fn POSITION &rest PIECES) (defalias 'chess-pos-search* #[385 "\300\301\"\302\303\211W\2036\211H\266\202\211\304U\204-\305\"\211\203,\211\211AB\241\266\210\266\211T\262\202\266\207" [mapcar list 64 0 32 assoc] 12 (#$ . 19379)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-search* speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@147 Set the known index of the king on POSITION for COLOR, to INDEX. It is never necessary to call this function manually. (fn POSITION COLOR INDEX) (defalias 'chess-pos-set-king-index #[771 "\203 \300\202\n\301I\207" [72 73] 6 (#$ . 20010)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-set-king-index speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@173 Return the index on POSITION of the king. If COLOR is non-nil, return the position of the white king, otherwise return the position of the black king. (fn POSITION COLOR) (defalias 'chess-pos-king-index #[514 "\203 \300\202\n\301H\206M\203\302\202\303\304\305\306\211W\203;\211\307#\2033\211B\262\210\211T\262\202\266\266\202\203H\300\202I\301I\266\203\207" [72 73 75 107 nil 64 0 #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.\nIf PIECE-OR-COLOR is t for white or nil for black, any piece of that\ncolor will do.\n\n(fn POSITION INDEX PIECE-OR-COLOR)"]] 14 (#$ . 20412)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-king-index speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@179 Set the piece on POSITION at INDEX to PIECE. PIECE must be one of K Q N B R or P. Use lowercase to set black pieces. A space `? ' clears the square. (fn POSITION INDEX PIECE) (defalias 'chess-pos-set-piece #[771 "I\210\211\300>\205\301W\203\302\202\303I\266\203\207" [(75 107) 97 72 73] 9 (#$ . 21415)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-set-piece speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@188 Return whether the king on POSITION can castle on SIDE. SIDE must be either ?K for the kingside, or ?Q for the queenside (use lowercase to query if black can castle). (fn POSITION SIDE) (defalias 'chess-pos-can-castle #[514 "\300\301\267\202\302\202\303\202\304\202\305\202\306\\H\211\306=\204'\211\250\203(\207\307W\2036\310\2027\311H\206z\203F\312\202G\313\306\314\302\211W\203h\211\315#\203`\211B\262\210\211T\262\202J\266\266\202\203u\310\202v\311I\266\203\266\202\211\205\352\226\316U\211\203\214\302\202\215\317\320\321\"\262\306\203\235\322\202\236\323\"\203\342\203\254\317\202\255\302\321_\\\266\202\315  \203\302\324\202\303\325#\203\321\211\262\262\210\202\225\203\331\326\202\332\327!\262\210\202\225 I\266\204\207" [65 #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (75 7 81 11 107 15 113 19)) 0 1 2 3 nil 97 72 73 75 107 64 #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.\nIf PIECE-OR-COLOR is t for white or nil for black, any piece of that\ncolor will do.\n\n(fn POSITION INDEX PIECE-OR-COLOR)"] 81 7 mod 8 < > 82 114 1+ 1-] 19 (#$ . 21889)]) #@378 Set whether the king can castle on the given POSITION on SIDE. See `chess-pos-can-castle'. It is only necessary to call this function if setting up a position manually. Note that all newly created positions have full castling priveleges set, unless the position is created blank, in which case castling priveleges are unset. See `chess-pos-copy'. (fn POSITION SIDE VALUE) (defalias 'chess-pos-set-can-castle #[771 "\300\301W\203\302U\203\303\202!\304\202!\305U\203 \306\202!\307\\I\207" [65 97 75 0 1 107 2 3] 7 (#$ . 23323)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-set-can-castle speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@132 Return the index of any pawn on POSITION that can be captured en passant. Returns nil if en passant is unavailable. (fn POSITION) (defalias 'chess-pos-en-passant #[257 "\211\300H\207" [64] 3 (#$ . 24025)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-en-passant speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@93 Set the INDEX of any pawn on POSITION that can be captured en passant. (fn POSITION INDEX) (defalias 'chess-pos-set-en-passant #[514 "\300I\207" [64] 5 (#$ . 24384)]) (byte-code "\300\301\302\303#\304\301\305\306#\210\300\307\310\311#\300\207" [function-put chess-pos-set-en-passant speed -1 put byte-optimizer byte-compile-inline-expand chess-pos-en-passant gv-expander #[385 "\300\301\302$\207" [gv--defsetter chess-pos-en-passant #[385 "\300\301C\"B\207" [chess-pos-set-en-passant append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"]] 5) #@180 Return whether the side to move in the POSITION is in a special state. nil is returned if not, otherwise one of the keywords: `:check', `:checkmate', `:stalemate'. (fn POSITION) (defalias 'chess-pos-status #[257 "\211\300H\207" [69] 3 (#$ . 24952)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-status speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@219 Set whether the side to move in POSITION is in a special state. VALUE should either be nil, to indicate that the POSITION is normal, or one of the keywords: `:check', `:checkmate' or `:stalemate'. (fn POSITION VALUE) (defalias 'chess-pos-set-status #[514 "\300I\207" [69] 5 (#$ . 25352)]) (byte-code "\300\301\302\303#\304\301\305\306#\210\300\307\310\311#\300\207" [function-put chess-pos-set-status speed -1 put byte-optimizer byte-compile-inline-expand chess-pos-status gv-expander #[385 "\300\301\302$\207" [gv--defsetter chess-pos-status #[385 "\300\301C\"B\207" [chess-pos-set-status append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"]] 5) #@63 Return the color whose move it is in POSITION. (fn POSITION) (defalias 'chess-pos-side-to-move #[257 "\211\300H\207" [70] 3 (#$ . 26025)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-side-to-move speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@66 Set the COLOR whose move it is in POSITION. (fn POSITION COLOR) (defalias 'chess-pos-set-side-to-move #[514 "\300I\207" [70] 5 (#$ . 26319)]) (byte-code "\300\301\302\303#\304\301\305\306#\210\300\307\310\311#\300\207" [function-put chess-pos-set-side-to-move speed -1 put byte-optimizer byte-compile-inline-expand chess-pos-side-to-move gv-expander #[385 "\300\301\302$\207" [gv--defsetter chess-pos-side-to-move #[385 "\300\301C\"B\207" [chess-pos-set-side-to-move append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"]] 5) #@66 Return the list of annotations for this POSITION. (fn POSITION) (defalias 'chess-pos-annotations #[257 "\211\300H\207" [71] 3 (#$ . 26869)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-annotations speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@75 Set the list of ANNOTATIONS for this POSITION. (fn POSITION ANNOTATIONS) (defalias 'chess-pos-set-annotations #[514 "\300I\207" [71] 5 (#$ . 27164)]) (byte-code "\300\301\302\303#\304\301\305\306#\210\300\307\310\311#\300\207" [function-put chess-pos-set-annotations speed -1 put byte-optimizer byte-compile-inline-expand chess-pos-annotations gv-expander #[385 "\300\301\302$\207" [gv--defsetter chess-pos-annotations #[385 "\300\301C\"B\207" [chess-pos-set-annotations append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"]] 5) #@64 Add an ANNOTATION for this POSITION. (fn POSITION ANNOTATION) (defalias 'chess-pos-add-annotation #[514 "\211\300H\262\211\203\211C\244\207\300CI\207" [71] 6 (#$ . 27718)]) #@84 Return the value of the given EPD OPCODE, or nil if not set. (fn POSITION OPCODE) (defalias 'chess-pos-epd #[514 "\211\211\300H\262\236A\207" [71] 6 (#$ . 27905)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-epd speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@106 Set the given EPD OPCODE to VALUE, or t if VALUE is not specified. (fn POSITION OPCODE &optional VALUE) (defalias 'chess-pos-set-epd #[770 "\211\300H\262\236\211\203\211\206\301\241\207\302\206\301B\"\207" [71 t chess-pos-add-annotation] 8 (#$ . 28218)]) #@52 Delete the given EPD OPCODE. (fn POSITION OPCODE) (defalias 'chess-pos-del-epd #[514 "\300\211\301H\262\"\301I\207" [assq-delete-all 71] 8 (#$ . 28493)]) #@54 Return the ply that preceds POSITION. (fn POSITION) (defalias 'chess-pos-preceding-ply #[257 "\211\300H\207" [74] 3 (#$ . 28660)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-preceding-ply speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@56 Set the preceding PLY for POSITION. (fn POSITION PLY) (defalias 'chess-pos-set-preceding-ply #[514 "\300I\207" [74] 5 (#$ . 28947)]) (byte-code "\300\301\302\303#\300\207" [function-put chess-pos-preceding-ply gv-expander #[385 "\300\301\302$\207" [gv--defsetter chess-pos-preceding-ply #[385 "\300\301C\"B\207" [chess-pos-set-preceding-ply append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"]] 4) #@179 Copy the given chess POSITION. If there are annotations or EPD opcodes set, these lists are copied as well, so that the two positions do not share the same lists. (fn POSITION) (defalias 'chess-pos-copy #[257 "\300!\211\301\211\302H\262!\302I\266\207" [vconcat copy-alist 71] 7 (#$ . 29372)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-copy speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@179 Create a new chess position, set at the starting position. If BLANK is non-nil, all of the squares will be empty. The current side-to-move is always white. (fn &optional BLANK) (defalias 'chess-pos-create #[256 "\211\203\f\301\302\303\304\"\305\"\207\301!\211\306\211\307H\262!\307I\266\207" [chess-starting-position vconcat make-vector 64 32 [nil nil nil nil nil nil t nil nil nil nil] copy-alist 71] 8 (#$ . 29819)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put chess-pos-create speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defconst chess-pos-piece-values '((112 . 1) (110 . 3) (98 . 3) (113 . 9) (114 . 5) (107 . 0))) #@81 Return the aggregate material value in POSITION for COLOR. (fn POSITION COLOR) (defalias 'chess-pos-material-value #[514 "\301\302\303\211W\203#\211\304#\203\211B\262\210\211T\262\202\266\266\202\303\211\203F\211@H\266\202\227\236A\\\262A\266\202\202)\210\207" [chess-pos-piece-values nil 64 0 #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.\nIf PIECE-OR-COLOR is t for white or nil for black, any piece of that\ncolor will do.\n\n(fn POSITION INDEX PIECE-OR-COLOR)"]] 12 (#$ . 30491)]) #@367 If COLOR has Passed Pawns in POSITION, return a list of their indices. Optionally, if INDICES is non-nil those indices are considered as candidates. A Pawn whose advance to the eighth rank is not blocked by an opposing Pawn in the same file and who does not have to pass one on an adjoining file is called a passed Pawn. (fn POSITION COLOR &optional PAWN-INDICES) (defalias 'chess-pos-passed-pawns #[770 "\203\300\202 \301\203\302\202\303\304\206F\203 \303\202!\302\304\305\306\211W\203B\211\307#\203:\211B\262\210\211T\262\202$\266\266\202\211\203 \211@\211\211\310\245\262U\203_\211B\262\202\211\311\310\"\262\3122\373\203t\313\202u\300\306\211\310\245\262\\\311\310\"\262\\\306Y\205\250\310W\205\250\211\306Y\205\250\211\310W\205\250\310_\\\266\202\266\205\203\263\314\202\264\315\211\310\245\262\"\203\367\306V\203V\316W\203V\307\n#\204\252\307\n\306\300\211\310\245\262\\\311\310\"\262\\\306Y\205\310W\205\211\306Y\205\211\310W\205\310_\\\266\202\266\205#\204\252\307\n\306\313\211\310\245\262\\\311\310\"\262\\\306Y\205N\310W\205N\211\306Y\205N\211\310W\205N\310_\\\266\202\266\205#\202\247\307\n#\204\252\307\n\306\306U\203o\300\202p\313\211\310\245\262\\\311\310\"\262\\\306Y\205\242\310W\205\242\211\306Y\205\242\211\310W\205\242\310_\\\266\202\266\205#\203\262\317\312\304\"\210\202\252\211 \203\274\313\202\275\300\306\211\310\245\262\\\311\310\"\262\\\306Y\205\360\310W\205\360\211\306Y\205\360\211\310W\205\360\310_\\\266\202\266\205\262\202\252\320\2620\203B\262\210A\266\202\202F\207" [1 6 112 80 nil 64 0 #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.\nIf PIECE-OR-COLOR is t for white or nil for black, any piece of that\ncolor will do.\n\n(fn POSITION INDEX PIECE-OR-COLOR)"] 8 mod passed-pawn -1 >= <= 7 throw t] 21 (#$ . 31258)]) (chess-message-catalog 'english '((move-from-blank . "Attempted piece move from blank square %s"))) #@201 Move a piece on the POSITION directly, using the indices in CHANGES. This function does not check any rules, it only makes sure you are not trying to move a blank square. (fn POSITION &rest CHANGES) (defalias 'chess-pos-move #[385 "\211\305H\262\306\203\307\202\310\"\306\203\311\202\312\"\211\203\276\211@9\203/\313\262\202\211@A@H\266\202\211\314U\203n\315\316\317\320\"\262\211\321\\\262\211\320\245\262\322Z\323\\\262\"\262C\324\325\326#!\266\202\266\314I\210\211\327>\205\220\321W\203\213\330\202\214\331I\266\203\266I\210\211\327>\205\264\321W\203\257\330\202\260\331I\266\203\266\211AA\262\202\210\332>\203\374A@\203\321\202\322 \n H\\H\266\202\314I\210\211\327>\205\372\321W\203\365\330\202\366\331I\266\203\266\313\333I\266@9\204\313A@H\266\202\227\211\310U\203\203#\307\202$\310\313\334\321W\203;\307U\2037\335\202F\336\202F\310U\203E\337\202F\340\\I\266\203T\311\202U\312\313\334\321W\203l\307U\203h\335\202w\336\202w\310U\203v\337\202w\340\\I\266\202\313\211\341U\203\203\304@U\203\304\203\231\311\202\232\312\313\334\321W\203\261\307U\203\255\335\202\274\336\202\274\310U\203\273\337\202\274\340\\I\266\202\313\203@U\203\203\330\307\202\331\310\313\334\321W\203\360\307U\203\354\335\202\373\336\202\373\310U\203\372\337\202\373\340\\I\266\210\202\313\306\203\312\202\311\"\211\205A@U\262\203S\203(\312\202)\311\313\334\321W\203@\307U\203<\335\202K\336\202K\310U\203J\337\202K\340\\I\266\202\313\306\203^\310\202_\307\"\211\205iA@U\262\203\242\203w\310\202x\307\313\334\321W\203\217\307U\203\213\335\202\232\336\202\232\310U\203\231\337\202\232\340\\I\266\202\313\211\342U\203\312\343A@\211\320\245\262@\211\320\245\262Z!\336V\203\312A@\333I\266\210\f\204\330?\305I\266\344>A@\211\203A@\203\355\202\357\227I\210\211\327>\205 \321W\203\330\202 \331I\266\203\266\210\345>\206 \346>\206 \347>\242\350I\266\207" [chess-direction-south chess-direction-north chess-pos-10x12-index chess-pos-10x12-address chess-pos-always-white 70 chess-pos-can-castle 75 107 81 113 nil 32 move-from-blank string mod 8 97 7 49 error apply chess-string (75 107) 72 73 :en-passant 64 65 0 1 2 3 114 112 abs :promote :check :checkmate :stalemate 69] 18 (#$ . 33550)]) (chess-message-catalog 'english '((piece-unrecognized . "Unrecognized piece identifier"))) #@18 (fn CANDIDATE) (defalias 'chess--add-candidate '(macro . #[257 "\300\301\302\303\304BBF\207" [if check-only (throw 'in-check t) push (candidates)] 7 (#$ . 36104)])) (defconst chess-white-can-slide-to (byte-code "\303\304\305\"\304\306\211W\203x\211\305\211\211\211:\203j@\262\307\305@ \nH\\H\266\202\211\262\203O\203A\310AB\202DABB\262\305\262\202!\211\237\262\266\202\262\203`B\262A\262\305\262\202\237\266\205I\266\211T\262\202\266\207" [chess-sliding-white-piece-directions chess-pos-10x12-index chess-pos-10x12-address make-vector 64 nil 0 t 75] 19)) (defconst chess-black-can-slide-to (byte-code "\303\304\305\"\304\306\211W\203x\211\305\211\211\211:\203j@\262\307\305@ \nH\\H\266\202\211\262\203O\203A\310AB\202DABB\262\305\262\202!\211\237\262\266\202\262\203`B\262A\262\305\262\202\237\266\205I\266\211T\262\202\266\207" [chess-sliding-black-piece-directions chess-pos-10x12-index chess-pos-10x12-address make-vector 64 nil 0 t 107] 19)) #@779 Look on POSITION from TARGET for a PIECE that can move there. This routine looks along legal paths of movement for PIECE. It differs from `chess-pos-search', which is a more basic function that doesn't take piece movement into account. If PIECE is t or nil, legal piece movements for any piece of that color will be considered (t for white, nil for black). Otherwise, the case of the PIECE determines color. The return value is a list of candidates, which means a list of indices which indicate where a piece may have moved from. If CHECK-ONLY is non-nil and PIECE is either t or nil, only consider pieces which can give check (not the opponents king). If NO-CASTLING is non-nil, do not consider castling moves. (fn POSITION TARGET PIECE &optional CHECK-ONLY NO-CASTLING) (defalias 'chess-search-position #[1283 "\306!\203\f\307W\202 \306!\205\226\310\211\311>\203\363\203'\202( H\211\203v\211@\211\203o\n@@H\266\202\211@A>\203b\203U\312\313\314\"\266\202^@@B\262\266\310\2021\211\315U\205jA\266\202\2021A\266\202\202+\210\203\200\316\202\201\317\211\203\271\211@\320    %\211\203\261\211@ \203\245\312\313\314\"\210\202\252\211B\262A\266\202\202\222\210A\266\202\202\201\210\204.\203\310\321\202\311\322=\203\344\323 \203\330\324\202\331\325\"\203\344\326 !\204 \203\356\327\202\357\330=\203p\323 \203\376\331\202\377\332\"\203p\326 \314\"\203p\203\312\313\314\"\210\202.\203#\333\202$\334H\206g\2033\324\2024\325\310\335\336\211W\203U\211\337#\203M\211B\262\210\211T\262\2027\266\266\202\203b\333\202c\334I\266\203\266\202B\262\202.\310\203{\340\202|\341=\203\261\323\n\203\214\324\202\215\325\"\211\262\203\261\326\n!\203\261\203\251\312\313\314\"\266\202.\211B\266\202\202.\203\273\342\202\274\343=\203\357\323\n\203\314\331\202\315\332\"\211\262\203\357\326\n\314\"\203\357\203\352\312\313\314\"\266\202.\211B\262\210\202.\315U\204.\344U\203\301H\266\202\203\n\202 \315U\203\254 \211\345\245\262\203'\330\202(\341U\2036\n\211\335H\262\211\205G\211\203A\346\202B\347\f\345\"U\262\2036 \203W\f\202X 34H\\H\266\202\211\262\203{\337 \203v\344\202w\350#\204\274 \203\2075\202\211634H\\H\266\202\211\262\2036\337 \203\247\344\202\250\350#\202\271\203\266\307V\202\271\307W\2036 \203\3105\202\312634H\\H\266\202\211\262\203\367\337  #\203\367\203\362\312\313\314\"\210\202\367B\262 \203\f\202 34H\\H\266\202\211\262\2031\337  #\203\274\203,\312\313\314\"\266\202.B\262\266\202. 34H\\H\266\202\211\262\203\274\nH\266\202\211\nU\203o\203g\312\313\314\"\266\202.B\266\204\202.\211\315U\203\273\203~\351\202\343 \211\345\245\262U\203\273\203\223\346\202\224\347\345\"\211\262\203\273\337\f\f#\203\273\203\266\312\313\314\"\266\202.B\262\210\266\202.\352>\203\325\353U\203\3227\202\345\354U\203\3358\202\345\331U\205\3459\211\203G\211@ 34H\\H\266\202\262\203@\nH\266\202\211\nU\203'\203\312\313\314\"\210\202 B\262\310\262\210\202\373\211\315U\205:34H\\H\266\202\262\210\202\373A\266\202\202\345\210\353U\203.\204.\310\203]\340\202^\341U\203\223\323\n\203n\324\202o\325\"\211\262\203\223\326\n!\203\223\203\213\312\313\314\"\266\202.\211B\266\202\202.\203\235\342\202\236\343U\203\321\323\n\203\256\331\202\257\332\"\211\262\203\321\326\n\314\"\203\321\203\314\312\313\314\"\266\202.\211B\262\210\202.\324U\203\332:\211\203@34H\\H\266\202\262\203\337\n\n#\203\203 \312\313\314\"\210\202B\262\310\262\202\335\211A\262\202\335\204\326\203-\321\202.\322=\203J\323\n\203>\324\202?\325\"\203J\326\n!\204r\203T\327\202U\330=\203\326\323\n\203e\331\202f\332\"\203\326\326\n\314\"\203\326\203\200\312\313\314\"\266\202. \203\214\333\202\215\334H\206\320\203\234\324\202\235\325\310\335\336\211W\203\276\211\337#\203\266\211B\262\210\211T\262\202\240\266\266\202\203\313\333\202\314\334I\266\203\266\202B\262\210\202.\355U\203#;\211\203\211@ 34H\\H\266\202\211\262\203\337  #\203\203\312\313\314\"\210\202B\262A\266\202\202\342\210\202.\356\310\357\360\361#!\266\211\203C\306!\203C\362 \n$\262\207" [chess-white-can-slide-to chess-black-can-slide-to chess-direction-south chess-direction-north chess-direction-southwest chess-direction-northeast characterp 97 nil (t nil) throw in-check t 32 (80 78) (112 110) chess-search-position 62 6 chess-pos-can-castle 75 107 chess-ply-castling-changes 58 2 81 113 72 73 64 0 #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.\nIf PIECE-OR-COLOR is t for white or nil for black, any piece of that\ncolor will do.\n\n(fn POSITION INDEX PIECE-OR-COLOR)"] 61 5 59 3 80 8 + - 112 4 (82 66 81) 82 66 78 piece-unrecognized error apply chess-string chess-pos-legal-candidates chess-pos-10x12-index chess-pos-10x12-address chess-direction-southeast chess-direction-northwest chess-rook-directions chess-bishop-directions chess-queen-directions chess-king-directions chess-knight-directions] 24 (#$ . 37156)]) #@579 Test if TARGET can legally be reached by any of CANDIDATES. Return the list of candidates that can reach it. CANDIDATES is a list of position indices which indicate the piece to be moved, and TARGET is the index of the location to be moved to. Note: All of the pieces specified by CANDIDATES must be of the same type. Also, it is the callers responsibility to ensure that the piece can legally reach the square in question. This function merely assures that the resulting position is valid (the move does not leave the king in check). (fn POSITION COLOR TARGET CANDIDATES) (defalias 'chess-pos-legal-candidates #[1028 "\211C@H\266\202H\266\202\304C\304\211\242\203\256\305\306   \n\n\n\n&\216 \242@\307I\210\211\310>\205R\311W\203M\312\202N\313I\266\203\266 I\210\211\310>\205x\311W\203s\312\202t\313I\266\203\266 \203\204\314\202\205\315U\203 \211\316H\262\211\205\253\211  \203\240\202\241 \n H\\H\266\202U\262\203   \203\276\317\202\277\320\321\211\322\245\262\\\323\322\"\262\\\321Y\205\362\322W\205\362\211\321Y\205\362\211\322W\205\362\322_\\\266\202\266\205\240\307I\210\211\310>\205\311W\203\312\202\313I\266\203\266\211\203 \324>\203u  \203-\312\202.\313H\206q\203=\325\202>\326\304\316\321\211W\203_\211\327#\203W\211B\262\210\211T\262\202A\266\266\202\203l\312\202m\313I\266\203\266\202\262\211\203\240\3302\207\331\n ?\332$0\203\240\203\230\242A\241\210\202\244A\262\202\244\242\262)\211\242A\240\210\202\207" [chess-direction-south chess-direction-north chess-pos-10x12-index chess-pos-10x12-address nil make-closure #[0 "\300\302\305I\210\211\307>\205!\310W\203\311\202\312I\266\203\266\300\303\242@\304I\210\211\307>\205F\310W\203A\311\202B\312I\266\203\266\306\242\205y\300\306\242\301\203X\313\202Y\314I\210\211\307>\205w\310W\203r\311\202s\312I\266\203\266\203\207" [V0 V1 V2 V3 V4 V5 V6 #1=(75 107) 97 72 73 112 80] 9] 32 #1# 97 72 73 80 112 64 1 -1 0 8 mod (75 107) 75 107 #[771 "H\266\202\211\300U\203\247\205'\211U\207\301\267\202$\211\302W\207\211\302V\207\211U\207" [32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 28 nil 32)) 97] 7 "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.\nIf PIECE-OR-COLOR is t for white or nil for black, any piece of that\ncolor will do.\n\n(fn POSITION INDEX PIECE-OR-COLOR)"] in-check chess-search-position t] 24 (#$ . 42733)]) (provide 'chess-pos)