- # white short castling
- if ($pv eq 'e1g1' && $piece eq 'K') {
- # king
- substr($nb[7], 4, 1, '-');
- substr($nb[7], 6, 1, $piece);
-
- # rook
- substr($nb[7], 7, 1, '-');
- substr($nb[7], 5, 1, 'R');
-
- return ('0-0', prettyprint_pv(\@nb, @pvs));
- }
-
- # white long castling
- if ($pv eq 'e1c1' && $piece eq 'K') {
- # king
- substr($nb[7], 4, 1, '-');
- substr($nb[7], 2, 1, $piece);
-
- # rook
- substr($nb[7], 0, 1, '-');
- substr($nb[7], 3, 1, 'R');
-
- return ('0-0-0', prettyprint_pv(\@nb, @pvs));
- }
-
- # black short castling
- if ($pv eq 'e8g8' && $piece eq 'k') {
- # king
- substr($nb[0], 4, 1, '-');
- substr($nb[0], 6, 1, $piece);
-
- # rook
- substr($nb[0], 7, 1, '-');
- substr($nb[0], 5, 1, 'r');
-
- return ('0-0', prettyprint_pv(\@nb, @pvs));
- }
-
- # black long castling
- if ($pv eq 'e8c8' && $piece eq 'k') {
- # king
- substr($nb[0], 4, 1, '-');
- substr($nb[0], 2, 1, $piece);
-
- # rook
- substr($nb[0], 0, 1, '-');
- substr($nb[0], 3, 1, 'r');
-
- return ('0-0-0', prettyprint_pv(\@nb, @pvs));
- }
-
- # check if the from-piece is a pawn
- if (lc($piece) eq 'p') {
- # attack?
- if ($from_col != $to_col) {
- $pretty = substr($pv, 0, 1) . 'x' . substr($pv, 2, 2);
-
- # en passant?
- if (substr($board->[$to_row], $to_col, 1) eq '-') {
- if ($piece eq 'p') {
- substr($nb[$to_row + 1], $to_col, 1, '-');
- } else {
- substr($nb[$to_row - 1], $to_col, 1, '-');
- }
- }
- } else {
- $pretty = substr($pv, 2, 2);