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