- if (castling[WHITE] & BITS.KSIDE_CASTLE) { cflags += 'K'; }
- if (castling[WHITE] & BITS.QSIDE_CASTLE) { cflags += 'Q'; }
- if (castling[BLACK] & BITS.KSIDE_CASTLE) { cflags += 'k'; }
- if (castling[BLACK] & BITS.QSIDE_CASTLE) { cflags += 'q'; }
+ var sq;
+ if (castling[WHITE] & BITS.KSIDE_CASTLE) {
+ sq = search_rook(board, WHITE, BITS.KSIDE_CASTLE);
+ if (is_outermost_rook(board, WHITE, BITS.KSIDE_CASTLE, sq)) {
+ cflags += 'K';
+ } else {
+ cflags += 'ABCDEFGH'.substring(file(sq), file(sq) + 1);
+ }
+ }
+ if (castling[WHITE] & BITS.QSIDE_CASTLE) {
+ sq = search_rook(board, WHITE, BITS.QSIDE_CASTLE);
+ if (is_outermost_rook(board, WHITE, BITS.QSIDE_CASTLE, sq)) {
+ cflags += 'Q';
+ } else {
+ cflags += 'ABCDEFGH'.substring(file(sq), file(sq) + 1);
+ }
+ }
+ if (castling[BLACK] & BITS.KSIDE_CASTLE) {
+ sq = search_rook(board, BLACK, BITS.KSIDE_CASTLE);
+ if (is_outermost_rook(board, BLACK, BITS.KSIDE_CASTLE, sq)) {
+ cflags += 'k';
+ } else {
+ cflags += 'abcdefgh'.substring(file(sq), file(sq) + 1);
+ }
+ }
+ if (castling[BLACK] & BITS.QSIDE_CASTLE) {
+ sq = search_rook(board, BLACK, BITS.QSIDE_CASTLE);
+ if (is_outermost_rook(board, BLACK, BITS.QSIDE_CASTLE, sq)) {
+ cflags += 'q';
+ } else {
+ cflags += 'abcdefgh'.substring(file(sq), file(sq) + 1);
+ }
+ }