1) Bozo now has all of its I/O traffic gated through a only a few routines instead of having write/writeln calls scattered throughout the code. There are several reasons for this including the possibility of adding a thread-safe log file generator and performing internal I/O redirection or cloning. The retreat is that the fancy "rgstat" output format is gone; a simple version is back in place.
2) Bozo can now correctly do FEN I/O to a user specified file. Alas, while there is full data checking, there is no file I/O checking. This will be added later. One problem with file I/O is that every Pascal system treats it differently and I have to pick the calls limited to the intersection of different functionality.
3) Bozo can now correctly do PGN output to a user specified file, but as is the case with FEN, there are no file I/O error checks yet. Bozo does not yet handle PGN input from a file; this will have to wait until after the initial release.
4) Console command input has only a single readln() call. This is done in part to simplify the addition of recursive (and parametrized) batch command file invocation, a very helpful feature. But completion of such will not appear in the initial release.
5) The ICP "help" command output is now entirely table driven as it should have been in the first place.
6) The word "Insufficient" is now spelled correctly.
Five more days until the source release.
Here's the latest ICP command set:
Code: Select all
BozoChess 2011.10.26 Copyright (C) 2011 by S. J. Edwards BozoChess ready  help Enter a command, or a sequence of one or more SAN chess moves Commands: db Display board (ANSI color) dbbdb Display bitboard database dbmono Display board (monochrome) dfen Display FEN dm Display moves dp Display position dpgn Display PGN exit Exit program help Show help loadfen Load FEN from a <file> loadpgn Load PGN from a <file> new New game noop No operation perftbulk Run perft to <depth> with bulk counting perftfull Run perft to <depth> with each node visited perfttran Run perft to <depth> with transposition help rg Generate and display a single random game rgstat Generate a report for <number> random game(s) rm Retract move savefen Save FEN to a <file> savepgn Save PGN to a <file> sfen Set FEN <MPD> <good> <cavs> <epsq> <hmvc> <fmvn> test Run developer test  exit BozoChess done
Code: Select all
 rgstat 100000 Checkmate 15610 FiftyMoves 19105 Insufficient 56711 Repetition 2521 Stalemate 6053 Unterminated 0 Total 100000  exit