EXchess v6.10 (beta) by Dan Homan, dchoman@gmail.com

=> For updates see: http://personal.denison.edu/~homand/EXchess.htm

This is "beta" software, meaning it has not been extensively tested on 
a variety of systems and may still contain bugs.  Use at your own risk.

-------------------------------------------------
License Information
-------------------------------------------------

This software comes with ABSOLUTELY NO WARRANTY of any kind.  

This program is freeware, distributed under the GNU public
license.  See file "license.txt" for details.  I ask only that you 
e-mail me your impressions/suggestions so that I may 
improve future versions.

*** NOTE: See notes on the source code version (below) for 
discussion of parts of this program that do not fall under the 
GNU public license 

-------------------------------------------------
Changes Since v5.01
-------------------------------------------------

Playing strength is improved, maybe in the range 
100-200 points stronger, but I haven't measured it
carefully.  

The search.par file has a "CHESS_SKILL" parameter which
allows you to weaken EXchess' play. This variable can
also be changed via the menu in xboard/winboard.  
The parameter reduces both the use of chess knowledge (by 
adding a random component to the the evaluation function), 
and below a certain skill level (75) will begin to make 
more and more oversights (simply missing moves entirely 
in the search tree).

Time control is improved to avoid some issues with 
certain winboard testing styles.  I don't personally test
the program under these conditions, but based on the
description of the problem, I think I have implemented
a work around.

-------------------------------------------------
A few General Notes
-------------------------------------------------

The files "search.par" and "score.par", along with the opening book, 
should be in the directory from which EXchess is being run. 

Values in the "search.par" and "score.par" files can 
be used to modify how EXchess thinks.  

To use the endgame tablebases, put the endgame tablebase path 
and cache size in the "search.par" file.

EXchess has a logging function which can be turned on by 
setting the relevent parameters in the "search.par" file. 
When logging is "on", a new log file is created each time
the program is started.  The "MAX_LOGS" number is the maximum number 
of log files that can be created.  No new log files will
be created beyond this number - you must delete the old log 
files first.

The opening book released with EXchess was built from an 
excellent file of PGN games created by Norm Pollock and released 
from his webpage: http://www.crafty-chess.com/down/Pollock/.  
The included opening book should work on most systems, but if not,
see the notes below on how to build your own opening book with
the source code version.  

Note that EXchess has the ability to learn from losses and victories 
in the opening book, but this ability is turned off in the released 
version of EXchess.  It is turned off so that EXchess will not pursue 
a single winning strategy against humans but will continue to play a 
variety of openings. If you wish to use EXchess primarily to play 
against other chess programs, please turn this book learning feature 
back on by editing the search.par file.

-------------------------------------------------
Notes on the console version for xboard/winboard.
-------------------------------------------------
 - Once compiled (see below) "EXchess_console" will be a text-based 
   interface version of the program.

 - This version has a serviceable text interface or it can be run with
   Tim Mann's Xboard (Unix/Linux) or Winboard.  EXchess should detect
   that it is running under xboard or winboard, but to make sure, you 
   can include the 'xb' command-line option if you choose...

   winboard -fcp "c:\directory\EXchess_console xb" 

   or

   xboard -fcp "/directory/EXchess_console xb" 

 - To run EXchess in plain text mode, just type "EXchess_console" in the 
   EXchess directory

 - There is an additional command line option "hash", you can set the
   hash size in megabytes like

   ./EXchess_console hash 128      (for a 128 megabyte hash file, for example)

   If this option is used with xboard or winboard, use the line

   winboard -fcp "c:\directory\EXchess_console xb hash 128"

   or
  
   xboard -fcp "/directory/EXchess_console xb hash 128"   

   The default hash size is set to 128 megabytes in search.par and
   can be modified there as well. 

   Note: Don't set the hash table size larger than about one-half of
   the available RAM. Doing so may cause swapping to the hard disk and 
   slow the program down considerably.  

 - Some basic help is available by typing "help" at the command prompt.

 - The file "wac.epd" is a testsuite and can be run by the "testsuite"
   command inside the program or directly from the command line:

   ./EXchess_console hash 128 test wac.epd wac_results.txt 5

   Which will run the wac.epd test at 5 seconds per position and record
   the results into the file wac_results.txt...  For the command line
   "test" option, the hash command must be specified first as indicated
   above.

 - The 'build' command lets you make your own opening book out of a pgn
   text file.  It requires 1-2 times the size of the pgn file in 
   temporary storage space on the disk.  The 'build' command can currently
   handle pgn files up to 60 MBytes in size... To use a larger file, you
   will need to modify some definitions in book.cpp and recompile.

 - You can also build a special 'starting book' with the same command, but
   the format of the PGN file used is non-standard, see 'start.pgn' which
   comes with the source code version for the format.  All moves in a
   'starting book' will be played with equal probability.

---------------------------------
Notes on the source code version.  
---------------------------------
This software naturally includes some code and ideas gathered 
from other places and these are indicated in the individual 
source code files.  All of these instances remain the copyright 
of the original authors who reserve all rights and their original
licenses still apply.  A specific example is that EXchess supports 
endgame tablebases by Dr. Eugene Nalimov.  Two functions in the file 
"probe.cpp" are modified from the examples given in Dr. Nalimov's 
'tbgen' distribution.  They are for interfacing with Dr. Nalimov's 
endgame tablebase code and are copyrighted by Eugene Nalimov.  The 
functions are NOT part of the GNU Public License release of EXchess' 
source code.  They are only useful if one separately downloads the 
'tbgen' distribution, see "probe.cpp" for instructions.  Other 
examples include...

** interrupt code for winboard on MS-Windows in the function 
   "inter()" in the file main.cpp is from Crafty by Bob Hyatt.  
   Crafy's license is open source with the provision that changes 
   to the code are shared with the community

** MT19937.c is a random number generator by Makoto Matsumoto and
   is released under the GNU public license

Compilation and other points:
 - In my experience, EXchess compiles on Mac OS X, Windows (under cygwin) 
    and Linux systems, although I only use Mac OS X on a regular basis.  
    Earlier versions of EXchess would also compile fine under MSVC 
    (via setting #define UNIX 0, and #define MSVC 1 in define.h), 
    but I haven't tried it in several years.

 - The file "EXchess.cc" is provided which includes all the necessary 
   source to compile EXchess.  On my Mac, I issue the following 
   command to compile the console version (from the 'run' directory)...

   g++ -o EXchess_console src/EXchess.cc -O2

   Your command line and compiler options may be different.

 - The included opening books (main_bk.dat and start_bk.dat) should work on 
   most systems, but if not, you will have to build your own opening book.  
   You can do this starting from a pgn game collection file using the 
   "build" command in the console version, see above.  Don't bother with 
   a 'starting book' unless you know what you are doing.  






