*******************************************************************************
*** chess program "Jonny" ***

0. Disclaimer of Warranty
1. What is "Jonny"?
2. Installation
   2.1 Hardware requirements
   2.2 Installation under Windows
       2.2.1 Installation under winboard
       2.2.2 Installation under Fritz
   2.3 Installation under Linux
3. Reference for operating "Jonny" on the command line
4. Parameters in "settings.ini"
5. Thanks to...


0. Disclaimer of Warranty
   Although "Jonny" is well tested software, I donīt give any warranty that it
   will do what you expect it to do; furthermore I donīt take responsibility
   for any damage caused by the use of "Jonny".  
   
1. What is "Jonny"?
   "Jonny" is a freeware chess-engine for Windows and Linux. A condition for
   distributing it to somebody else is that this file is attached without 
   any changes. 
   Although "Jonny" can be operated on the command line (see 3.), I highly 
   recommend the use of a graphical interface. As "Jonny" is a Winboard-engine,
   all interfaces supporting this protocol should be apted. I have tested
   myself with "Winboard", "Arena" and "xboard"; but of course there are still
   bugs possible. Moreover, not every command of the winboard-protocol is
   implemented in "Jonny". Who prefers working under Fritz can use "Jonny" 
   there together with the attached winboard-adapter.   

2. Installation
   2.1 Hardware requirements
       "Jonny" should be runable on every computer with Pentium processor or 
       higher and at least 16 MB RAM (of course you have to decrease the size
       of hash- and pawntables then in order to avoid swapping).
       The operating system should be Win9x, NT, 2000, XP or Linux.
   
   2.2 Installation under Windows
       2.2.1 Installation under Winboard
	     Winboard is a free graphical chess interface which allows
             to run arbitrary chess engines supporting the specific 
             protocol. You can get it from http://www.tim-mann.org/xboard.html.  
	     After succeding in installing Winboard, you only have to copy
             the "JonnyXYZ.exe" and the "settings.ini" from the ZIP-file to
             your Winboard-directory. Before you start "Jonny" the first time,
             you should adjust the settings for hash- and pawntables to the
             RAM-size of your computer (see 4.). In the start dialog of
             Winboard, choose the option: "Play against a chess engine or 
             match two engines". Then type "JonnyXYZ" in the first line and
             you should be able to play against "Jonny". For more details see
             the Winboard documentation.

      2.2.2 Installation under Fritz
            The integration of "Jonny" in Fritz is done by the so called
            winboard-adapter. In order to run it there you simply have to
            decompress the whole ZIP-file in the "engines"-folder of your
            Fritz-directory; ensure you keep the directory-structure of
            the ZIP-file when decompressing. Here a list what belongs where:

            jonnyXYZ.eng  : \engines
            jonnyXYZ.exe  : \engines\JonnyXYZ
            settings.ini  : \engines\JonnyXYZ
            jonnyXYZ.init : \engines\JonnyXYZ
            jonnyXYZ.bmp  : \engines\JonnyXYZ           

            After the next start of Fritz you should be able to select a
            new engine "JonnyXYZ".

   2.3 Installation under Linux
       If you want to use "Jonny" on the command line you can simply decompress
       "jonnyXYZ" and "settings.ini" to an arbitrary directory. More 
       comfortable is the use of xboard, the Linux-version of Winboard. After
       the installation of xboard, you can integrate "Jonny" with
       "xboard -fcp PATH/jonnyXYZ", where PATH is the directory the
       "Jonny"-executable lies in. For more details see the xboard manpage.     

3. Reference for operating "Jonny" on the command line
   As I donīt recommend to run "Jonny" on the command line, only the most
   important commands are listed here. 
   "sd x"   : fix search depth to x
   "time x" : set remaining time to x (in 1/100 s); "Jonny" does not update
              the time by itself!
   "edit"   : enter the edit-mode (same right to move as in the last position
              before you entered). Now you have the following commands:
              "#": clear the board
              "Kxy","Qxy","Rxy","Bxy","Nxy","Pxy": put King/Queen/Rook/
                                                   Bishop/Knight/Pawn of the
					           color which currently has
 						   the right to move, on 
                                                   square xy.
              "c": change the right to move
              ".": leave the edit-mode with the current right to move. There
                   is no check for legality of the entered position, so if
                   you want to cause a crash, here is a good chance...

   "force"  : makes it possible to enter moves without the engine answering
              them; if you enter it a second time, "force" is revoked again. 

   "undo"   : go one ply back
   "remove" : go two plies back
   "xboard" : enter the Winboard-mode, where output is chunkier and no
              board ist shown. If you enter it again, the effect is revoked.
   "hard"   : makes "Jonny" think on the opponentīs time.  
   "easy"   : revokes the "hard"-command
   "quit"   : quit "Jonny"
   "new"    : begin a new game
   "go"     : let "Jonny" calculate a move in the current position
   "?"      : stops calculation; the (so far) best move is played. 
   "e2e4"   : enter the move "e2-e4" 

4. Parameters in "settings.ini"
   Modifications in this file make it possible to change the playing style of 
   "Jonny". 

   nHashTables        : number of hash-entries used by "Jonny". One million
                        entries need about 12 MB of RAM. If you donīt enter
                        a power of 2, then the value will be decreased to
                        the next lower power of 2. 

   nPawnTables        : same as above for the pawn-tables. 100000 entries
                        need about 5MB of RAM.

   pawnValue etc.     : material value for a pawn, a knight, ...
   
   endgameMaterial    : if the material sum is below that value, "Jonny" 
                        assumes the position to be an endgame. This means,
                        for example, that king-safety has very low priority
                        from now on. 
   rookOn7th          : value for a rook on the 7th/2nd rank
   pairOfBishops      : bonus if one side has the pair of bishops
   activeBishop       : bonus for an active bishop (no absolute value)
   doublePawn         : malus for a doubled pawn
   isolatedPawn       : malus for an isolated pawn
   outpost            : bonus for an outpost
   centerPawn         : bonus for a pawn in the center
   weakSquare         : malus for every weak square in the pawn-structure
   unprotectedPawn    : malus for an unprotected pawn
   blockedCPawn       : malus if white has a knight on c3 and pawns on c2/d4 or
                        black has a knight on c6 and pawns on c7/d5 
   uncastledKing      : malus for a king on a middle line
   noShortCastling    : malus if king stands in the middle and short-castling
                        is not possible any more
   noLongCastling     : same for long-castling
   missingFianchettoB.: malus if the fianchetto bishop on the kingside is
                        exchanged
   rightToMove        : bonus for the right to move
   centeredKing       : this value is proportional to the bonus a centered
                        king gets in the endgame (not absolute)
kingFarFromPassedPawn : malus if there is a big distance between own king 
                        and a passer of the opponent
rookBehindPassedPawn  : bonus for a rook behind an own passer
   rookAgainstNoRook  : if one side has a rook and the other has not, the side
                        with the rook gets this bonus
   QNagainstQB        : bonus for the side with the knight in the endgame
                        Q+N - Q+B
   blockedCenterPawn  : malus if a pawn is blocked on e2/d2 or e7/d7
   backstandingPawn   : malus for a weak pawn
   trappedBishop      : malus if bishop is trapped on a2/h2/a7/h7
   narrowedRook       : malus for a rook "trapped" in the middle of
                        the board
   trappedRook        : malus for a rook whose developement is hindered by
                        the own king
   badBishop          : malus for a bad bishop
   rookOnOpenLine     : bonus for a rook on an open line
   rookOnHalfOpenLine : bonus for a rook on a half open line
   doubledRooks       : bonus for doubled rooks
   centerControl      : proportional to the bonus a side gets if the
                        center is controled by own pieces (not absolute)
   spaceAdvantage     : same for space advantage (not absolute)
   pawnStormValue     : proportional to bonus for a pawn storm (not absolute)

   aspirationWindow   : width of the so-called aspiration-window 
   maxCompensation    : assumed maximum positional value a single piece
                        can get; a higher value means a more accurate search,
                        but will take more time
   maxExtensions      : maximum number of plies a line can be extended by
   selectivity1       : the lower this value, the higher is the selectivity 
                        in the frontier nodes of the search tree
   selectivity2       : same for the rear nodes 

   TBdistance         : minimum distance to quiescence search where
                        TB-access is done. A lower value means more
                        TB-accesses, but it can drastically decrease
                        the NPS-rate

   TBCacheSize        : size of the TB-Cache in bytes
   TBPath             : path to the TB-directory

   bookFile           : name of the book-file
   weightX (X: A..G)  : proportional to the probability that a move
                        with weight X in the book is played

   considerPonderTime : if you set this value to "1", "Jonny" assumes
                        that it is allowed to think on the opponents
                        time and will therefore take a little more time
                        for its own moves. 

   showCurrentMove    : for experienced users only: if this value is
                        set to "1", "Jonny" sends periodic stat01-commands
                        containing the currently tested move to the interface.
			Some interfaces have problems with this, so test
                        it yourself.  
   resignValue        : if you set this value to "x", "Jonny" will resign
                        if the evaluation for the last own move was lower
                        than -x; if x<=0, resigning is disabled. 
   writeLogFile       : "0" disables writing of the logfile   

5. Thanks to...
       - Eugene Nalimov und Andrew Kadatch for the TB-Code and their
         permission to use it in "Jonny"
       - Chessbase for the permission to attach the Winboard-adapter
       - Christoph Groth, my colleague from the university of Bayreuth,
         who helped me with the Linux-portation
       - Wilhelm Hudetz for the nice "Jonny"-logo
       - Jörg Oster for his work as beta-tester
       - Stefan Kleinert for the separately available opening book

       Bayreuth, December 2nd
       Johannes Zwanzger (email: johannes.zwanzger@t-online.de)

  