I have been tinkering a little with the Bonanza engine. In particular, I
extended it with an 'undo' command, to take back the preceding move, and
an 'analyze' command, which starts a search of indefinite duration o the
current position. (As far as I could see this is different from letting
Bonanza ponder on the position, as in pondering it speculatively picks a
move, and only ponders on the position after that move.)
Once set to analyze, Bonanza will continue to do so when receiving 'move'
or 'undo' commands that alter the position (in which case it of course
analyzes the position reached by these commands). Altering the number of
printed variations (through the 'mpv num' or 'mpv width' commands) is also
possible without aborting the analysis. (Multi-PV was an existing Bonanza
feature, but not every compile had it switched on.) Other commands would
shut down the analysis, and a new 'exit' command would do so without side
effects.
Also new is the 'xboard' command, which does switch Bonanza to a mode
where it communicates in WinBoard protocol. In this mode it can be used as
engine in the WinBoard or XBoard GUI. The set of supported commands is
pretty minimal (enough to let it play games from the standard opening
position, though). But it does support the exclude-moves feature of WB
protocol, which can be used to exclude selected moves from the analysis.
(Multi-PV mode is also accessible in WB mode.) In native mode it supports
such exclusion by means of the 'move restraint' command, which reads the
excluded moves from a file. (This was an (undocumented?) feature of the
original version.) But in WinBoard mode the moves can be dynamically
excluded or re-included each time you reach a new position. This should
make it ideal for interactive analysis.
A Windows binary can be downloaded from
http://hgm.nubati.net/bonanza.zip
. This contains only the .exe, which should be used to replace bonanza.exe
in a complete install.
The source code is available in my on-line git repository (
http://hgm.nubati.net/cgi-bin/gitweb.cgi ). It can be compiled for Linux
by means of the included Makefile. (Required command: "make -f Makefile
gcc").
Have fun,
H.G.