]> git.pld-linux.org Git - packages/crafty.git/commitdiff
- [mass commit] files for chess programs
authorhavner <havner@pld-linux.org>
Tue, 18 Nov 2003 18:02:08 +0000 (18:02 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    crafty-paths.patch -> 1.1
    crafty.doc.ascii -> 1.1
    crafty.doc.ps -> 1.1
    crafty.faq -> 1.1
    read.me -> 1.1
    start.pgn -> 1.1

crafty-paths.patch [new file with mode: 0644]
crafty.doc.ascii [new file with mode: 0644]
crafty.doc.ps [new file with mode: 0644]
crafty.faq [new file with mode: 0644]
read.me [new file with mode: 0644]
start.pgn [new file with mode: 0644]

diff --git a/crafty-paths.patch b/crafty-paths.patch
new file mode 100644 (file)
index 0000000..e2d5ad0
--- /dev/null
@@ -0,0 +1,18 @@
+--- chess.h.orig       Tue Mar 27 11:10:52 2001
++++ chess.h    Mon Apr  2 01:27:45 2001
+@@ -190,13 +190,13 @@
+ #  endif
+ #else
+ #  if !defined(BOOKDIR)
+-#    define     BOOKDIR        "."
++#    define     BOOKDIR        "/usr/lib/games/crafty"
+ #  endif
+ #  if !defined(LOGDIR)
+ #    define      LOGDIR        "."
+ #  endif
+ #  if !defined(TBDIR)
+-#    define       TBDIR     "./TB"
++#    define       TBDIR     "/usr/games/lib/crafty/TB"
+ #  endif
+ #  if !defined(RCDIR)
+ #    define       RCDIR        "."
diff --git a/crafty.doc.ascii b/crafty.doc.ascii
new file mode 100644 (file)
index 0000000..dda0725
--- /dev/null
@@ -0,0 +1,2112 @@
+
+
+
+
+
+
+
+         Crafty Command Documentation (version 18)
+      -----------------------------------------------
+Crafty  is nothing more than a long-time hobby of mine, dat-
+ing back to Blitz and later Cray Blitz.  People ask me how I
+keep doing this, and that is the one question that generally
+leaves me at a loss for words.
+
+Perhaps the most common question I'm asked is "is this  ver-
+sion  of Crafty some dumbed-down version of what you play on
+ICC or what you use at a computer chess event?"  The  answer
+is a resounding *NO*.  The current version is *exactly* what
+is running on ICC under this version number.   Note  that  a
+new  version  can, on occasion, introduce weaknesses or out-
+right bugs that were not present  in  previous  "gold"  ver-
+sions.   As  a result, you should be careful to back up your
+"favorite" before trying the latest and  greatest.   If  you
+aren't  satisfied with the new version, you can then go back
+to what you believe is a better version.
+
+If you are looking for the strongest playing computer  chess
+program  available,  you should likely look to Fritz, Rebel,
+Tiger, and the other commercial  entries.   There  you  will
+find  strong  opponents  with  polished interfaces that have
+been tested in a systematic and careful  way.   If  you  are
+looking  for  a program that plays good chess, has a reason-
+able set of features for you to use, is available in  source
+form,  and  one  where the author welcomes feedback, code or
+suggestions, then you are at the  right  place.   I  welcome
+comments  and  suggestions, and also feedback from ideas you
+try yourself that seem to work.
+
+Crafty is a state-of-the-art  computer  chess  program,  and
+uses  all  of  the  search algorithms you have probably read
+about, negascout search, killer/history move  ordering,  SEE
+(Static  Exchange  Evaluation)  quiescence move ordering and
+pruning, hash (transposition/refutation) tables as  well  as
+evaluation caches, selective extensions, recursive null-move
+search, and a host of other features that have been used and
+are  still  being  used in most computer chess programs.  If
+it's not in Crafty, either it is on the "to do" list, or  it
+has been tried, found wanting, and discarded.
+
+Chess Knowledge is growing, and suggestions (or even better,
+real code) are welcome.  This is  the  best  place  to  con-
+tribute  your  ideas,  because knowledge can be used to sup-
+plant search and make it play  better.   The  evaluation  is
+probably  the easiest place to start studying Crafty because
+of the comments and simplicity of using bitmaps, *once*  you
+get "into" them.
+
+My  purpose  for doing this is an exercise in computer chess
+efficiency.  I can't begin to count the number of  people  I
+know  that  started  from  scratch to write a chess program.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Even larger is the group that started from scratch, and gave
+up  before  finishing, because of the basic size of the pro-
+ject.
+
+Crafty offers everyone a very clean starting point,  if  you
+are  fascinated by the bitmap chess board implementation (as
+I  am).   The  search  and  quiescence  code  is  reasonably
+straightforward, as is the evaluation,
+
+It  offers a great starting point, so that if you are inter-
+ested in trying a new search extension, you can  be  testing
+tomorrow,  rather  than  next year, because you start with a
+fully functional chess engine that is not a  "toy"  applica-
+tion,  but is a functional and "dangerous" chess player.  It
+offers a rapid start, although you can certainly replace  it
+piece  by  piece  until  it is "yours" if you want.  It also
+offers a fairly complete set of commands  and  an  interface
+for  a GUI as well as support for chess server play, so that
+testing and debugging your new ideas is greatly  simplified.
+
+If you'd like more information, please check out the read.me
+document  and  the  crafty.FAQ  that  are  distributed  with
+Crafty.  These contain recent news and specific instructions
+for commonly asked  questions,  like  "where  can  I  obtain
+tablebase files and how do I use them?"
+                    How to play a game.
+                    -------------------
+When  you execute Crafty, you will immediately be greeted by
+the prompt string "white(1): " and Crafty will wait for com-
+mands.  This prompt means it is white on move, and we are at
+move #1 for white.  You can first use any  of  the  commands
+from the alphabetic command listing below to tailor the game
+to your liking (time control, hash table size, book  random-
+ness,  etc.)  and then you have two choices.  If you want to
+play white, just enter your move, and Crafty  will  take  it
+from  there  and  make a move in response.  You will then be
+prompted by "white(2):" and it is your move again.   If  you
+would prefer to play black, just enter either "move" or "go"
+at the prompt and crafty will move for that side rather than
+accepting  a  move  from  you.   After it makes its move for
+white, you will then see the prompt "black(1): "  indicating
+it is now time for blacks first move.  You can enter a move,
+or you can once again enter "move" or "go" and  Crafty  will
+again  move  for  the current side, change sides, and prompt
+you for what to do next.
+
+If you find yourself continually using a set of commands  to
+configure crafty to play as you want, you can put these com-
+mands in a startup file called .craftyrc (Unix) or crafty.rc
+(DOS/Windows).   The  format  for this file is just like you
+would type the commands at the keyboard, with  the  require-
+ment that the last line of the file must be "exit" on a line
+by itself.  Using this, each time you start Crafty, it  will
+
+
+
+
+
+
+
+
+
+
+
+
+
+first  execute the commands from this file before it prompts
+you for input.
+
+While Crafty is running, you can control what  it  displays,
+but  here's a couple of samples to explain what it is saying
+and why:
+
+           depth   time   score    variation (1)
+            book moves {d4, c3, Nc3, d3, b3, c4, g3, b4, Be2, Bb5}
+            book   0.0s     70%    d4
+
+White(3): d4
+            time used:   0.01
+
+This is the normal output for those cases where Crafty is in
+book.   The book moves line gives the set of book moves that
+made the first selection cut (see the book selection  expla-
+nation  given  later), followed by the move actually played,
+in this case d4.
+
+If Crafty is out of book, then  the  output  looks  somewhat
+different as given below:
+
+   depth   time   score    variation (1)
+     4->   0.81    2.09    6. dxe4 Bxe4 7. Rad8 Qf2 8. Qb5
+     5      1.37    2.41    6. dxe4 Bxe4 7. Ne5 Qf4 8. Bxe4+
+Qxe4 9. f5
+     5->   1.88    2.41    6. dxe4 Bxe4 7. Ne5 Qf4 8.  Bxe4+
+Qxe4 9. f5
+     6     7.38      --    6. dxe4
+     6     11.90     1.97    6. dxe4 Bxe4 7. Rab8 Qf2 8. Qc7
+Nc5 9. Qe5
+     6    12.92      ++    6. Ne5
+     6    13.71    2.23    6. Ne5 Qg2 7. Ng6 h5 8. Nh4 Qg4
+     6->  15.59    2.23    6. Ne5 Qg2 7. Ng6 h5 8. Nh4 Qg4
+   time: 15.60  cpu:99%  mat:1  n:246565  nps:15927
+   ext-> checks:4706 recaps:1336 pawns:0 1rep:301
+   nodes  full:45951  quiescence:200614  evals:104657
+   endgame tablebase-> probes done: 0  successful: 0
+
+Let's take this stuff one line at a time.  Lines  that  have
+something like 4-> in the depth column are printed when that
+iteration (depth) is  completely  finished.   The  time  and
+score  columns  should  be obvious as to their meaning as is
+the PV, the sequence of moves that led to this  score.   One
+note  about  the  "score"  column.  As of version 18, Crafty
+displays the score with + values good for  white,  -  values
+good  for  black,  no matter which side it is playing in the
+game.  All output now follows this convention, from playing,
+to  analysis  mode,  to  annotating  your games, to whisper-
+ing/kibitzing on the chess servers, and so forth.   This  is
+unlike  other  engines,  but  once you get used to it, it is
+much less confusing when you remember that  negative  scores
+
+
+
+
+
+
+
+
+
+
+
+
+
+are good for black and bad for white, and vice-versa.
+
+the  line that has -- in the score column means that when we
+started depth 6, dxe4 turned out to be worse than we thought
+(notice  score  dropped  from 2.411 last search to 1.972 for
+this move this search.)  To resolve this, Crafty lowers  the
+lower  search bound (alpha) and re-searches the move to find
+the score.  The line with ++ means that this move  (Ne5)  is
+better than the best move so far, so Crafty raises the upper
+search bound (beta) and re-searches this move  to  find  the
+new score.
+
+the  first line of statistics gives the total time taken for
+this search, the cpu percentage which should stay at 98-100%
+unless your machine is heavily loaded or unless Crafty is in
+an endgame that is  having  lots  of  contact  with  endgame
+databases.  If this drops below 98%, it means that Crafty is
+not getting full CPU usage and will be playing  weaker  than
+normal.   The mat:1 is simply the true material score, since
+Crafty's positional scores are often larger than a pawn.
+
+               Alphabetic Listing of Commands
+               ------------------------------
+
+1.  alarm on|off  This command is used to  control  Crafty's
+"beep"  after  it  makes a move.  Turning this off will make
+Crafty "quiet" when it plays, but also makes it easy to miss
+a  move  if  you  are  using crafty to play in a tournament.
+This is primarily designed to make Crafty  tolerable  during
+late night matches.
+
+2.  analyze  This command puts crafty into analyze mode.  In
+this mode, Crafty starts computing for whichever side is  on
+move,  and  it  continues computing and showing its analysis
+until a move is entered.  This move is made, Crafty  changes
+sides,  and  starts thinking and printing analysis all over,
+but for the other side now.
+
+This command is useful to play through a game,  because  you
+get  instant  feedback  when you try a move.  If you want to
+try a different move from the one you just entered, use  the
+"back"  command  to  back  up one move, or use "back <n>" to
+back up <n> moves.  Note that one move is a single move  for
+the  last  player, not a move for both sides.  To unmake the
+most recent 2 moves (one for black, one for white) use "back
+2".
+
+3.    annotate|annotateh  <filename>  <colors|name>  <moves>
+<margin> <time> This command is used to annotate (make  com-
+ments in) a game that has already been played.
+
+The annotate command produces a file with the .can extension
+added to the original name.  This  file  will  contain  pure
+
+
+
+
+
+
+
+
+
+
+
+
+
+ascii  information  from  the  annotation pass.  "annotateh"
+produces an HTML file instead (with  the  .html  extension).
+This  includes  the  normal  output,  plus  a nice bitmapped
+graphical board display for every position where crafty  had
+'something to say'.
+
+<filename>  is  the name of the file that has the game moves
+stored  in  it.   This  should  be  a  PGN-compatible  file,
+although  Crafty  can  read nearly any file with chess moves
+and convert it to pgn using the "read" and  "savegame"  com-
+mands to perform the conversion.
+
+<colors|name>  indicates  which  side  Crafty will annotate.
+The valid choices are w, b, and wb/bw for white only,  black
+only,  and  both, respectively.  Crafty will search and pro-
+duce results for the indicated color only, making moves  for
+the other side silently as they are read in.
+
+Alternatively,  you can specify the player's name (useful if
+you want to annotate several of your own games in one  large
+pgn file, for example, and you alternated colors so that you
+can't pick the right one easily).  Crafty will  then  figure
+out  which side to annotate for in each game.  Note that the
+name is case-sensitive, but that you only have  to  enter  a
+string  that is unique in the name field.  IE if one name is
+"Anatoly Karpov" and the other is "unknown" then  specifying
+Karpov  as  the  name  would  be  sufficient.   If  the same
+'string' appears in both names, Crafty will complain.
+
+<moves> indicates the moves that should  be  annotated.   If
+this  is  a  single  integer, annotation starts at this move
+number (for the color given above) and proceeds for the rest
+of  the  game.   If  a range is given, as (20-33), then only
+moves 20-33 inclusive are annotated.  To annotate  the  com-
+plete game, you can use 1-999.
+
+<margin> gives a score "window" that controls whether Crafty
+will produce comments (see below).  The larger  this  number
+this  number,  the fewer annotations Crafty will produce.  A
+negative number will result in an annotation for every  move
+selected.
+
+<time> indicates the time limit for each search.  Since each
+move selected requires two searches, you can take the number
+of  moves,  double  this  number  and  multiply by <time> to
+determine how long the annotation process will  take.   This
+time is in seconds.
+
+How it works.  Suppose you use the command "annotate game1 w
+1-999 1.000 30" This asks Crafty to read the  file  "game1",
+and  annotate the white moves for the entire game.  The mar-
+gin is 1 pawn and the search time limit is 30 seconds.   The
+output  for the annotate command is found in <filename>.can,
+
+
+
+
+
+
+
+
+
+
+
+
+
+in this case this is game1.can.
+
+Crafty first searches the move actually played in  the  game
+to  determine  the  score  for it.  Crafty then searches the
+same position, but tries all legal moves.  If the score  for
+the best move found in this search is greater than the score
+for the move actually played plus the margin, then a comment
+is  added  to  the  output  file.  This output file is quite
+short, with all the game moves (plus any  PGN  tags  in  the
+original,  for  identification purposes) plus the brief com-
+ments.  An annotation looks like this:
+
+{real_value (depth:best_value PV moves)}
+
+real_value is the score for the move actually played.  depth
+is  the  depth Crafty searched to produce the best_value and
+PV for what it thinks is the best sequence of moves for both
+sides.   If you set <margin> to 1.000, you are asking Crafty
+to only annotate moves that either lost a pawn or  more,  or
+moves  that  failed to win a pawn or more.  If you set <mar-
+gin> to .300, you are asking for annotations  for  any  move
+that  makes  the  score  drop  about 1/3 of a pawn below the
+value for the best move Crafty found.
+
+If you have other moves you would like to see analyzed  dur-
+ing  this  annotate process, at the point where the move can
+be played, insert it into the PGN file as an  analysis  com-
+ment,  surrounded  by () or {} characters.  Crafty will pro-
+duce analysis for this move as well.  If more than one  move
+appears  inside  a  single set of delimiters, only the first
+will be analyzed.  To force Crafty to analyze more than  one
+move,  enter them like this:  (move1) (move2) as though they
+were two separate comments.
+
+4.  ANSI on|off  This command is used to control whether  or
+not  Crafty attempts to display its move in reverse video or
+not.  For PC's, Linux, and most Unix boxes, this works fine.
+Should you find yourself playing crafty via a dumb terminal,
+this might hose the terminal and interfere with your ability
+to  see  or  input  moves.   If  moves  are not displayed in
+reverse video, it's probably wise to turn this off to  avoid
+hanging the terminal you are using.
+
+5.   black|white   This  command  simply toggles the side on
+move.  if it is white to move, and you enter white,  nothing
+happens.   If  it is white to move and you enter black, then
+it becomes blacks turn to move  immediately  from  the  same
+position.  Used only infrequently.
+
+6.  book (see the book explanation near the end of this doc-
+ument for a full explanation of this command  and  its  many
+options.)   Note  that  there are special commands available
+(*only*   on   the    command    line,    *not*    in    the
+
+
+
+
+
+
+
+
+
+
+
+
+
+crafty.rc/.craftyrc  files)  to  direct  crafty  to specific
+directories for the book files (bookpath=/a/b/c), the table-
+base   files   (tbpath=/i/j/k)   and  the  log  files  (log-
+path=/x/y/z).  Note that these commands can *only*  be  used
+on  the  command  line, because they must be executed before
+the  engine   is   initialized.    Putting   them   in   the
+crafty.rc/.craftyrc file will produce error messages without
+affecting how the files are opened.
+
+If you need to specify multiple  directories  (tbpath  only)
+you  may  do  so  by using "tbpath=path1:path2:path3:etc" or
+else       use       the       more        Unix-        like
+"tbpath=(path1:path2:path3:etc)"  instead.   The  paths  are
+separated by ":" (colon) characters and everything is  case-
+sensitive  as  usual.   For dos/windows users, the separator
+can be a semi-color (;) or a comma(,)  to  avoid  the  drive
+designation ambiguity.
+
+7.   cache=N   This  command is used to alter the cache size
+used for endgame database probes.  N can be a  simple  inte-
+ger,  representing  the  number of bytes to use or it can be
+specified as nK or nM representing n * 1024  bytes  or  n  *
+1024  *  1024  bytes.   This  should  be in multiples of the
+database "chunk" size, which might vary.  Using the nM  form
+guarantees that you will have a reasonable number.
+
+8.    clock  <ctime>  <otime>   This  command  is  primarily
+intended for use when Crafty is  playing  in  a  tournament,
+such  as the WMCCC or WCCC events.  If the operator is some-
+what slow in entering moves, or forgets to  stop  the  clock
+after making a move for Crafty, the chess clock for the game
+will drift from the values that Crafty maintains internally.
+<ctime>  is the time (in minutes or hh:mm format) crafty has
+left until the next time control, and <otime> is  the  oppo-
+nent's  remaining  clock  time.  This command can be used at
+any time, but will only affect the  time  per  move  *after*
+crafty makes the current move and starts to think about what
+the opponent might do next.
+
+9.  computer  This command usually  comes  from  xboard/win-
+board,  but  can  be  used  at any time to tell Crafty it is
+playing a computer.  This will prevent some things from hap-
+pening, such as a draw score that varies, as well as adjust-
+ing the book selection code to be more selective in what  it
+plays.
+
+10.   display   this  command  is  used  to display the game
+board.  This board is displayed using the ICS style #1  type
+of  ASCII  display,  with  white always at the bottom of the
+screen, black at the top.  Very  unusable  to  play  a  game
+with,  but  good  to verify a position after it has been set
+up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+This  command  is  also  used   to   display   the   various
+piece/square  tables,  by  typing  "display  <piece>"  where
+<piece> is replaced by pawn, knight, bishop, rook, queen  or
+king.   The board is oriented in the same way as the display
+board with a one-to-one correspondence between the  squares.
+Perhaps  useful  for  curiosity,  but not for anything else.
+These values can not be modified by the user.
+
+The final version of this command is used  to  control  what
+kind of output you will see when crafty runs.  Currently the
+following options are available.
+
+       display time:  this  will  make  Crafty  display  the
+     amount of time each side takes after making a move.
+
+       display  changes:   this will make Crafty display the
+     PV each time it changes during  the  search,  including
+     when a move fails high or becomes a new best move.
+
+     display  variation:   this will make Crafty display the
+     PV at the end of each iteration, but it will only  show
+     the  best  PV  for the entire iteration, not all of the
+     changes.
+
+     display stats:  this enables  basic  search  statistics
+     output including time, nodes and so forth.
+
+     display  extstats:   this enables extended search stats
+     including  the  hashing  statistics,  search  extension
+     statistics and so forth.
+
+     display movenum: causes all PV output to have move num-
+     bers embedded in them to make the PV possibly easier to
+     read.   This  causes the PV to look like this:  12. ...
+     Nxe4 13. Bxe4 h6 rather than simply Nxe4 Bxe4 h6.  This
+     is very helpful when playing on a server and whispering
+     or kibitzing analysis.  It will  also  be  useful  when
+     crafty  is  run  from  within a database program as the
+     move numbers will sync up with the actual game.
+
+     display moves:  will display each root move  as  it  is
+     searched,  along  with  updating the search time at the
+     bottom of the screen, so you can see what move is  cur-
+     rently being analyzed.
+
+     display general:  will display general information mes-
+     sages whenever Crafty wants to tell you  something  (ie
+     "clearing  hash tables" or other such things like "Mate
+     in n moves."
+
+If you put a "no" in front of any  of  these  options,  that
+will disable that particular type of output.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+11.   draw  offers Crafty a draw.  It generally will look at
+the value returned by the last search, and compare  it  with
+the  value returned by an internal function DrawScore().  If
+the search value is not above this result, then Crafty  will
+accept the draw.  If the search value is above the theoreti-
+cal value for a draw, Crafty will decline  the  draw.   Note
+that  crafty  will  offer  draws based on internal analysis.
+When it offers a draw, you can respond with "draw"  although
+the game does not really end until you exit Crafty.
+
+12.  drawscore N sets the draw score (or contempt factor) to
+N.  If you want crafty to avoid draws, set  this  number  to
+something  that  is negative.  IE -50 says that a repetition
+(draw) is the same as being 1/2 pawn down.   Setting  it  to
++100  will  make it try very hard to draw because that looks
+like it is winning a pawn when it does so.  Note  that  this
+is dangerous (either way) as a -50 in a king and pawn ending
+is very likely dead lost...  and a repetition is better.
+
+13.  echo <text>  This command is  normally  used  inside  a
+command file that you are going to use to "feed" crafty some
+positions for analysis or whatever.  Since crafty depends on
+the  operating  system  to  echo commands as they are typed,
+commands read in from a file are  "invisible."   This  gives
+you  the ability to insert commands into such a file so that
+crafty displays a message on the screen to give you an  idea
+of where it is in processing the file.
+
+14.   edit   This command has been "cloned" from GnuChess to
+provide an interface with Xboard.  After entering the "edit"
+command,   you   are   in   "edit.white"   mode,  where  any
+piece/square combination you enter will  add  the  indicated
+white  piece on the given square.  Piece/squares are entered
+as "qa3", or "bc4" for example.  This puts a white queen  on
+a3  and  a  white  bishop  on c4.  Once all white pieces are
+entered, typing a "c" changes  to  "edit.black"  mode  where
+piece/square  combinations now place black pieces.  Typing a
+"." character exits edit mode.   To  clear  the  board  ini-
+tially, you use the "#" character.
+
+Here's  a  sample  to set up the original starting position,
+after white has played 1. e4, but no other moves  have  been
+played.
+
+  edit
+  #
+  ra1 nb1 bc1 qd1 ke1 bf1 ng1 rh1
+  pa2 pb2 pc2 pd2 pe4 pf2 pg2 ph2
+  c
+  ra8 nb8 bc8 qd8 ke8 bf8 ng8 rh8
+  pa7 pb7 pc7 pd7 pe7 pf7 pg7 ph7
+  .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Note  that  input  is  free  form,  so  piece/squares can be
+entered one per line or all on one line.  Ditto for  the  #,
+c, and . special characters.  Note also that there is no way
+to enter castling status here.  It is far better to use  the
+"setboard"  command  which uses a FEN-like syntax and allows
+you to set both castling and enpassant status.
+
+15.  egtb   This  command  enables  the  endgame  databases.
+Crafty  will  use  the  "tbpath"  directory (if provided) to
+locate and register all of  the  databases  you  have  down-
+loaded.  It will report the largest class it found, as in "5
+piece tablebase files found" if you downloaded at least  one
+5-piece  file.  If you use this command to enable databases,
+you should also consider using the "cache" command to  spec-
+ify the egtb cache size.
+
+16.   end|quit  These commands are used to terminate crafty.
+Note that you can resume a  game  later  without  having  to
+replay  the  moves,  by starting Crafty using the "crafty c"
+command.  It will immediately read in the moves for the last
+game,  although  you  will have to set the time controls and
+clock time remaining yourself.
+
+17.  evaluation option <value>  This command is used to mod-
+ify the evaluation scores.
+
+The  option "asymmetry" is used to make crafty evaluate king
+safety differently for each side.  "evaluation asymmetry 25"
+will  increase the king safety scores for the opponent only,
+meaning it will pay less attention to its  own  king  safety
+than  to  that of its opponent.  This will make it play more
+aggressively.  "evaluation asymmetry -25"  will  reduce  the
+king  safety  scores  for for the opponent by 25%, making it
+care more about its own king safety than that of  its  oppo-
+nent.  This will make it play more defensively.
+
+The  "bscale"  option  will  adjust  the  scores for blocked
+pawns.  The default value is 100.  Increasing this will tend
+to  make  Crafty  dislike blocked pawn positions more, which
+will lead to more  open  positions.   Note  that  this  only
+affects  moves  _after_  the opening book has been followed,
+which means that the position might be  blocked  before  the
+evaluation term has a chance to affect the game.
+
+The "kscale" option will adjust all king safety scores based
+on the 'value' entered.  For example, "evaluation kscale 50"
+will  reduce  all  king safety scores to 50% of their normal
+value.  "evaluation  kscale  133"  will  increase  all  king
+safety scores to 133% of their normal values.
+
+The  option  "tropism" is used to scale king tropism scores.
+This will attract pieces toward kings.  A value of 100 means
+no  change.   other values are treated as a percentage (like
+
+
+
+
+
+
+
+
+
+
+
+
+
+scale) to increase (>  100)  or  decrease  (<100)  the  king
+tropism scores.
+
+When you use this command, you will see something like this:
+
+modified king-safety values:
+white:   0   4  16  26  39  45  58  77  87  90  93  96 100 103 106 109
+       112 116 119 122 125 128 128 128 128 128 128 128 128 128 128 128
+
+black:   0   5  20  32  48  56  72  96 108 112 116 120 124 128 132 136
+       140 144 148 152 156 160 160 160 160 160 160 160 160 160 160 160
+
+Those values represent the  king-safety  evaluation  as  the
+king  gets  more  and more exposed.  This is always based on
+the fast that "crafty" will be the side  on  move  when  the
+search  starts.  In the above, it was white's move when this
+was typed, meaning that it appears that crafty will be play-
+ing  black.   Notice  that  white's  king safety numbers are
+scaled by 20% to make it slightly more  cautious  about  its
+own king.  If you type "go" in this position, the scores get
+reversed as Crafty's scores are always left alone (with  the
+asymmetry  option) and the opponent's scores are scaled down
+as indicated.
+
+You will see similar numbers (but not black and white  sets)
+that  represent the actual scores produced for king tropism.
+Note that pieces interact to choose which  element  of  this
+vector is used, but in general, the more pieces are close to
+the king, the larger the element from this array.
+
+The "pscale" option is used to scale normal  pawn  structure
+scoring  in  the same way as the other scaling options.  100
+is the default.  Values less than 100 reduce this term, val-
+ues over 100 inflate it.
+
+The "ppscale" option is used to scale some passed pawn scor-
+ing in the same way as the other scaling  options.   100  is
+the  default.  Values less than 100 reduce this term, values
+over 100 inflate it.  This  mainly  effects  outside  passed
+pawns/protected  passed pawns.  The normal pawn scoring com-
+putes the value of a passed pawn.  This term is then used to
+scale  those  terms  that modify this value further, such as
+two connected passed pawns on the 6th, or a passed pawn with
+the king supporting it in an endgame.
+
+18.  extensions type value
+
+This  command is used to control the extension depth for the
+various extensions done in Crafty's search.  The  extensions
+are  set  as  decimel numbers that represent plies (or frac-
+tions of plies) to extend for each particular reason.   Most
+default  to  1.0  and  .75, but any value can be used.  Note
+that value > 1.0 are _very_ dangerous as they can cause  the
+
+
+
+
+
+
+
+
+
+
+
+
+
+search  to  become non-terminating (crafty will stop when it
+runs out of time for the move, but it might not be  able  to
+get anything useful from such a search).
+
+These  extensions  are presently limited to a maximum of one
+ply of extensions at any point in the tree.   IE  no  matter
+what you set these values to, they can not exceed one ply at
+present.
+
+incheck  This is the amount to extend when the side on  move
+makes  a  move that leaves the opponent in check.  Note that
+Crafty extends on the ply where the check is played, not  on
+the next ply where the opposite side is in check.
+
+onerep   This  is  the one-reply-to-check extensions, and is
+done at the point where one side is in check and has exactly
+one legal move to escape from the check.
+
+pushpp   This  is the extension used for certain passed pawn
+pushes in the endgame.
+
+recapture  This is the recapture extension, and  is  applied
+when  the current move recaptures an equal-valued piece that
+made a capture at the previous ply.  IE BxN, PxB.  Note that
+this  can  only  be applied once for every two plies so that
+BxN, BxB, NxB, NxN won't look like three recaptures.
+
+mate  This is the mate threat extensions and is applied when
+a  null  move  search returns -MATED, which means that doing
+nothing gets the side on move mated.  The opponent must have
+some sort of serious mate threat in such a position.
+
+19.   flag  on|off   This command is used to force crafty to
+end a game where the opponent runs out  of  time  with  win-
+board/xboard (on) or to ignore this (off) if desired.
+
+20.   force  [move]  This command is used to force Crafty to
+play a move that is different from the one chosen and played
+by  the  tree search.  If [move] is given, and it is a legal
+move, Crafty will retract its last move and make  this  move
+instead.   It  does  not  change  the side on move, but does
+change the position of course.   If  [move]  is  not  given,
+Crafty will prompt you for a move to make.
+
+21.   help  This command displays multiple pages of one-line
+help, one command per line.  If a  line  ends  with  [help],
+then  you  can  use help followed by the specific command to
+get detailed help.
+
+22.  history  This command displays the history in a  verti-
+cal  column  with  one  move for white and one per black per
+line.  There are other ways  to  display  the  current  game
+moves  and  also  to  save  them in files that are explained
+
+
+
+
+
+
+
+
+
+
+
+
+
+later.
+
+23.  hash=x and hashp=x  These commands are used  to  adjust
+the  size  of  the hash tables in Crafty.  hash modifies the
+size of the transposition/refutation table, while hashp mod-
+ifies the size of the pawn structure/king safety hash table.
+The sizes may be entered as one of the following  two  types
+of  values: nnnK where nnn is an integer indicating how many
+Kbytes Crafty should use for this hash table; nnnM where nnn
+is  an integer indicating how many Mbytes Crafty should use.
+
+The transposition/Refutation table is the most  critical  of
+the two, because it directly affects search efficiency, par-
+ticularly in the endgame.  For this reason  this  should  be
+maximized.   The  most effective size for this hash table is
+3/4 of your available memory.  If you don't know how to fig-
+ure  this  out,  but know that you have 16 megs for example,
+they you can say hash=16M and crafty will round that down to
+12M,  which is 3/4 of a power of two size.  If you study the
+sizes that are possible, you will find  3M,  6M,  12M,  24M,
+48M,  and  so forth.  Anything up to, but not including, the
+next size will be rounded  down  to  the  next  lower  size.
+hashp  should  be  set to approximately 1/2 of what is left.
+For example, the P6 Crafty runs on when playing on ICC often
+uses  hash=48M and hashp=8M.  The only thing to watch for is
+that if you make this too large, particularly under windows,
+performance  will  suffer  badly because of paging I/O over-
+head.  When Crafty is searching in a normal (non-book,  non-
+endgame  database)  position, the disk light should *not* be
+on, indicating lots of I/O.
+
+There is no danger in making this table too large,  although
+you  have to watch out because if Crafty barely fits in mem-
+ory, doing something else on the machine can cause Crafty to
+be  swapped  out  completely  or partially, depending on the
+operating system you are using.  If you are going to use the
+machine  for  anything  else  while Crafty is running, it is
+better to "pretend" that the machine only  has  1/2  of  the
+memory  it actually does when computing the size of the hash
+tables you want to use.
+
+24.  import <filename> [clear]   This  command  is  used  to
+import any sort of learning data that Crafty supports, which
+currently includes book learning data and position  learning
+data.   This  command  reads  the appropriate <filename> and
+imports that learned data, just as though Crafty had learned
+it  by playing the games.  The [clear] option, if specified,
+caused all old learned results  to  be  cleared  before  the
+import  operation,  otherwise  the  imported  data is simply
+added to what is already present.
+
+25.  input <filename>  This command is used to redirect  the
+console  input  I/O  stream  from  the  keyboard  to a file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Crafty will then read commands from this file,  rather  than
+from the keyboard, and execute them just as though they were
+typed in.  Such a command file *must* be  terminated  by  an
+"exit"  command (no quotes) as the last command in the file.
+This reverts the input stream  back  to  the  keyboard,  and
+prompts you for another command or move.
+
+This  command  might  be used to configure crafty for a spe-
+cific time control, by putting the appropriate time  control
+commands  in  the file, or to customize the hash table sizes
+as needed.
+
+26.  info  This command is used to display information about
+Crafty  and  the current game.  Such things as the time con-
+trol, the time left on the clocks and other  information  is
+shown.
+
+27.   learn  n  controls  the learning facilities in crafty.
+Currently this is a 3-bit boolean switch,  bit 1 (001)  con-
+trols book learning, bit 2 (010) controls position learning,
+and bit 3 (100) controls result learning.  learn=0  disables
+all  learning,  learn=1  enables book learning only, learn=2
+enables position learning only, and learn=4  enables  result
+learning.   Add the values together to turn on more than one
+type of learning (default=7 to enable everything).
+
+28.  level <m> <t> <inc>  This command  was  taken  directly
+from  GnuChess  so  that the Xboard/WinBoard interface would
+interface with Crafty.  There are other better ways  to  set
+the  time, but this one is well-known.  The three parameters
+are <m> (number of moves in the game)  <t> initial  time  on
+the clock.  After <m> moves are made, this amount of time is
+added to the clock again.  <inc> is the Fischer-Clock incre-
+ment  that is added back to each clock after a move is made.
+It may be zero for a non-increment game.
+
+Examples:
+
+level 0 5 0            (ICS 5 0 game)
+level 0 5 3            (ICS 5 3 game)
+level 0 15 30          (ICS 15 30 game)
+
+29.  list GM|IM|C|AK|S  +name [+name ...] -name [-name  ...]
+This command is used to maintain the internal "lists" Crafty
+uses to auto-tune itself when playing  on  a  chess  server.
+There  are  three lists, GM, IM and C.  If Crafty's opponent
+is in any of these lists, Crafty adjusts  internal  controls
+that  affect  how/when  it  resigns or offers draws, and how
+randomly it will choose moves from the  opening  book.   For
+example, Crafty resigns much sooner against a GM, because it
+assumes he knows how to win a rook-up ending, regardless  of
+how  much  time  is  left.   By the same token, when playing
+against computers, Crafty will always assume that a draw  is
+
+
+
+
+
+
+
+
+
+
+
+
+
+0.000, so that it doesn't wreck its position trying to avoid
+repeating a position.
+
+The AK list will automatically  kibitz  scores/PV's  if  the
+opponent  is  in this list.  The S list will turn on special
+scoring for opponents in this list.  The only current member
+is "mercilous".
+
+The  syntax  +name1  +name2 simply adds these players to the
+specified list.  To remove a name, use -name1  -name2.   You
+can  use  one  command per name to remove or add, or you can
+use one command to add and remove multiple names.  Note that
+all names must be entered in lowercase characters, using any
+uppercase characters will break the matching algorithm.
+
+30.  log off|on|<n>  This command is used  to  disable  log-
+ging.  The default is log on, which causes crafty to produce
+a new log.nnn file for each game played.  If you are running
+Crafty  on  a  server, you might use log off, which disables
+creating these files as well as the game.nnn files  used  to
+restart  a  game  after you exit crafty and come back later.
+If you use the form "log n" crafty will simply  display  the
+last  n  lines  of the log on the screen.  If you use "log n
+file" crafty will copy the last n lines of the log to "file"
+which could be your hard drive, or a floppy.
+
+Note  that  if  you  run with log off, you will be unable to
+find out what Crafty was thinking about since  there  is  no
+other  record  of  the game.  You will always see a game.001
+because as crafty plays a game, this contains all  the  real
+moves  played so far so that you can back up if needed.  you
+will also see a log.001 file, but it will be empty.
+
+31.  ls <filename> will list all the files  that  match  the
+filename  wildcard  (the  wildcards depend on the system you
+are using, but generally *, ? will work fine.  you can  also
+supply  path information in the filename if you want to list
+the contents of a different directory.  Just  use  the  same
+syntax  you would if you were using "ls" under unix or "dir"
+under windows.
+
+32.  mode tournament|normal  This command is primarily  used
+to  put Crafty into "tournament" mode, which is intended for
+use when Crafty is playing in  computer  chess  events.   It
+accomplishes two things:  (1) makes all draws return a score
+of 0.000, and (2) makes crafty issue a  message  after  each
+move  showing  the internal chess clock time, and requesting
+that that operator check and  adjust  as  needed  using  the
+"clock"  command.   This  primarily makes Crafty comply with
+computer chess rules that say the operator can't do anything
+not specifically requested by the program.
+
+33.   name  <name>   This  command  is  an ICS-play specific
+
+
+
+
+
+
+
+
+
+
+
+
+
+command.  Xboard/WinBoard uses this to inform Crafty of  the
+opponent's  name.   Crafty uses the name, and looks it up in
+its GM/IM/C lists, and if found, adjusts itself accordingly.
+This is not used by the PGN code and this will not cause the
+players <name> to show up in the PGN tag section.
+
+34.  new  This command wipes everything  out  and  starts  a
+brand  new  game.  It closes the old log-file and game-file,
+and opens the next sequential numbered file.  It also resets
+the  game to the beginning and prepares to start a brand new
+game.  This was added for Xboard,  but  it  turns  out  that
+Xboard  does not use this, rather it starts Crafty fresh for
+each new game by first terminating the old copy then  start-
+ing  a  new one.  Not nearly as efficient as using "new" but
+likely safer it a program can't be sure of resetting  every-
+thing back to the initial state.
+
+35.   noise  <n>   This  command  sets  the "noise" level in
+Crafty.  Basically, until  <n>  nodes  have  been  searched,
+crafty will be silent and not display analysis.
+
+This  is  useful  in two ways.  First, in end-games, 20+ ply
+searches are not uncommon, and the search analysis  for  the
+first  few  plies arrives so quickly that it is distracting.
+Second, when observing games (new  interface  only)  on  ICS
+servers,  this  can  be used to avoid having Crafty generate
+too many analysis kibitzes.  A value of  100000  will  basi-
+cally  shut  off any output for the first second or so (on a
+P6/200).  Similarly, 1000000 will eliminate any  output  for
+about  the  first  10  seconds.  When watching and kibitzing
+games like the World Championship games on ICC, I  generally
+use  5000000,  which is almost one minute of silence so that
+the first PV it kibitzes is a pretty deep search.
+
+noise 0 will cause *all* analysis to be displayed, which  on
+a  fast machine causes no problems.  On a slower machine, or
+over a slow phone connection, this might cause a big  commu-
+nication  backlog.   The  default is roughly one second on a
+P6/200 (100000) but can be modified by this command.
+
+36.  operator <n>  Another command  intended  for  use  when
+Crafty  is  playing  in  a  tournament, operated by a human.
+This tells crafty to "hide" <n> minutes of time and not  use
+them.   This  time is basically allocated to the operator to
+make up for the time it takes to type in moves  and/or  cor-
+rect mistakes.  At the WMCCC events, the normal value we use
+is 5.  Playing on a server, this is not needed, as it is not
+needed if you are playing Crafty yourself.
+
+37.   perf   This  command  is  primarily used in optimizing
+Crafty, or to test the speed of the move generator and Make-
+Move()/UnMakeMove() on different platforms.  It produces two
+results, the moves it can generate per second, and the moves
+
+
+
+
+
+
+
+
+
+
+
+
+
+is  can  generate and make/unmake per second.  While this is
+not  a  perfect  performance  indicator,  it  does  give  an
+"approximation"  for how fast Crafty might run.  In general,
+the higher the numbers, the better the  program  will  play,
+although  machines are certainly different.  It's not uncom-
+mon to find a machine that searches slower than another, but
+has a higher "perf" value.
+
+38.   perft  <depth>  This command is generally used to con-
+firm that the move generator and bitmap operators are  work-
+ing  properly.   It  simply  takes the current position, and
+generates/makes/unmakes moves and counts  them.   Many  pro-
+grams  use this from a "standard" position to make sure that
+their move generator does not miss generating odd moves like
+enpassant/promotions   and   also   to   confirm   that  the
+make/unmake code correctly updates the  board  so  that  the
+totals  remain  constant  across different machines and pro-
+grams, since there is no  alpha/beta  or  evaluation  things
+done.   if  <depth>  is  greater than 5 or 6, it will take a
+*long* time, since this is basically a minimax tree  traver-
+sal  that  will visit *every* node within the <depth> search
+horizon.
+
+39.  pgn <tag> <value>  This command  is  used  to  set  the
+usual  PGN  tags  to meaningful values.  The recognized tags
+are Event, Site, Round, Date, White, WhiteElo, Black, Black-
+Elo,  and  Result,  and  the tags *are* case sensitive.  The
+<value> can be any valid input and blanks and special  char-
+acters are allowed.  Note that the date is clearly specified
+in the PGN standard and must be yyyy.mm.dd with no variance.
+Valid  results are 1-0 (white won), 0-1 (black won), 1/2-1/2
+(drawn) and * (unknown).  Some examples:
+
+pgn Event 14th World MicroComputer Chess Championship
+pgn Date  1996.10.8
+pgn Site  Jakarta, Indonesia
+pgn Round 1
+pgn White Crafty
+pgn WhiteElo 2400
+pgn Black assassin
+pgn BlackElo 2400
+pgn Result 1-0
+
+Setting these values will result in a proper PGN  file  when
+using the savegame command.  Note that if you use the "read"
+command to input a PGN game, these values will be  extracted
+from that game if they are given.
+
+40.  ponder off|on|<move>  This command serves two purposes.
+First, it can be used to disable (off) or enable (on) think-
+ing  on the opponent's time (or pondering as it is called in
+many programs including Crafty.)  Turning it off will weaken
+Crafty  since it will not use any machine time while waiting
+
+
+
+
+
+
+
+
+
+
+
+
+
+on the opponent to move.  It is sometimes  useful,  however,
+when   playing  Crafty  against  another  computer  and  the
+machines are not equal.  If crafty is on a  faster  machine,
+and  you  attempt  to adjust for this by giving the opponent
+more time than Crafty, it doesn't work  quite  as  expected,
+because  while the opponent is thinking, so is Crafty, which
+lets it use the extra opponent time in  an  unexpected  way.
+In  such  a  case,  it's best to stop pondering in both pro-
+grams.
+
+If <move> is given, it directs Crafty to use that <move>  to
+ponder,  rather than the one from the previous search.  Most
+commonly this is used to set the right move to ponder  after
+Crafty has been stopped and then restarted, assuming that it
+is the opponent's turn to move when  this  happens.   Other-
+wise,  it is probably better to not try to influence things,
+although if you are watching and suddenly wonder "what would
+Crafty  do  if the opponent plays move 'X'?", you can answer
+this by simply typing "ponder X" and then watching the anal-
+ysis.  You should reset the correct ponder move after you do
+this of course.
+
+41.  reset <n>  This command lets you back up in the current
+game  to  any  move  of your choice.  reset <n> backs up the
+game to move <n> with the same side on move.  If you want to
+first  change the side to move, use the white/black command,
+then use the reset command to back up  to  the  right  move.
+Note that you can also go forward as well, just so there are
+moves in the current game history.
+
+42.  resign <n>  This command  sets  the  resign  threshold.
+When  running  on  ICC I typically use "resign 9" which will
+make crafty resign roughly five moves after the score  drops
+below  -9.000.   For IM's I change this to 6, and for GM's I
+often use 3, so that it will resign quicker and not  drag  a
+lost game out unnecessarily.
+
+43.   read/reada [<filename>]  This command will read input,
+and extract the chess moves and make  them  to  set  up  the
+position  at the end of the game.  It first resets the chess
+board to the initial position (read command only)  and  then
+extracts  the  PGN  tags  (if present) from the front of the
+input.  The rest of the input  is  parsed  for  chess  moves
+(comments  and  similar things are culled automatically) and
+the moves are made and added to the game history.  Once this
+is done, you can back up, go forward, or play from any point
+in the game.  If you specify a <filename> everything is read
+from  the  file,  otherwise it is read from the console key-
+board.
+
+The reada command reads moves, but appends them to the  cur-
+rent  game  history/  position  rather than resetting to the
+initial chess position.  This lets you read in a game,  then
+
+
+
+
+
+
+
+
+
+
+
+
+
+use reada to manually add some more moves to see the result-
+ing position.
+
+44.  savegame <filename>  This command is used to  save  the
+current  game  in  a  PGN-compliant  file  with the PGN tags
+included.  Note that the default TAG  values  might  not  be
+what  you  want  if you do not either use the pgn command to
+set them or else input  a  valid  PGN  file  with  the  tags
+already filled in.
+
+Be  aware  that  this command doesn't check the filename for
+legality since anything goes in UNIX.   In  DOS,  you  might
+produce  a bad filename with either too many characters, too
+many periods, or whatever, so be careful with the  name  you
+choose.   Note also that this file will be overwritten if it
+already exists, so be sure to choose a name that is not  the
+name  of a file that has something you consider important in
+it.
+
+45.  savepos <filename>  This command writes a  single  line
+into  <filename> in FEN-like notation.  This lets you save a
+position, and then come back later to  re-examine  it.   You
+would use the "in <filename>" command to input this file and
+set the position up.
+
+46.  search <move>  This command allows you to  specify  one
+particular move for the side on move, and then when you tell
+Crafty to search this position, this is the only  move  that
+will  be  searched.  This is used internally by the annotate
+command, but can be used to investigate one  specific  move.
+If the move is not the best move, a normal search won't show
+you why it is bad, but this will.  It is also  quite  a  bit
+faster  since  the  other  moves  in  the  position  are not
+searched at all.
+
+47.  settc <moves> <ctime> <otime>  This command is  primar-
+ily  used  in tournaments, and is an error-recovery command.
+If the machine crashes and corrupts the game  history  file,
+frequently the operator will have to simply set the position
+using the setboard command, and then use the  settc  command
+to  restore the time control values.  <moves> is moves until
+the next time control (from Crafty's perspective, be careful
+and  don't  look  at the opponent's moves to time control by
+accident.)  <ctime>  is  minutes  left  on  Crafty's  clock,
+<otime> is minutes left on the opponent's clock.
+
+48.   setboard  <FEN  input>   This command is used to set a
+chess position up for analysis and is the preferred  way  to
+do  this, rather than using the gnu EDIT interface.  It uses
+a classic Forsythe-like notation to encode the position  and
+also  has  provisions for castling status and enpassant cap-
+ture status.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+the standard piece codes p,n,b,r,q,k are used to denote  the
+type  of  piece  on  a  square, upper/lower case are used to
+indicate the color of  the  piece  (uppercase=white  pieces,
+lowercase=black pieces).
+
+the pieces are entered from the classic chess diagram's ori-
+entation of a8  being  the  upper-left-hand  corner  of  the
+board,  and  this  square  is entered first, followed by the
+remainder of the 8th rank left to right.  To indicate  empty
+squares,  use  a number between 1 and 8 to indicate how many
+adjacent squares are empty.  use a / to terminate each  rank
+after  all  of  the  pieces for that rank have been entered.
+Note that you do not have to account for all 8 squares on  a
+given rank, although many test suites do this for clarity.
+
+the following input will setup the board position that given
+below:
+
+      k2r/ppp////Q/5PPP/7K/ B
+
+this assumes that k represents a white king  and  -q  repre-
+sents a black queen.
+
+                      -k  *  * -r  *  *  *  *
+                      -p -p -p  *  *  *  *  *
+                       *  *  *  *  *  *  *  *
+                       *  *  *  *  *  *  *  *
+                       *  *  *  *  *  *  *  *
+                       q  *  *  *  *  *  *  *
+                       *  *  *  *  *  p  p  p
+                       *  *  *  *  *  *  *  k
+                                                                           *
+the field after the final "/" should be either  b  or  w  to
+indicate  which  side is "on move."  after this side-to-move
+field any of the following characters can appear to indicate
+the   following:   KQ:  white  can  castle  king-side/queen-
+side/both;  kq: same for black;  a1-h8: indicates the square
+occupied by a pawn that can be captured enpassant.
+
+49.   score   This command simply gives the positional score
+for the current position.  This score is  from  whites  per-
+spective,  so a + score is good for white, a - score is good
+for black.  Crafty also breaks the  score  down  into  major
+categories  (from  Evaluate())  to indicate things like pawn
+structure, piece evaluation, passed pawns, development,  and
+so forth.  Note that some of Crafty's evaluation is asymmet-
+ric, so that if you simply change sides with the white/black
+command  and then enter "score" again, you may get a differ-
+ent value.  This is *not* a bug.  :)
+
+50.  sd <n>  This command lets you specify a specific search
+depth  limit  that  Crafty  can  not  exceed.  It still pays
+attention to the clock, however, so often you will  use  the
+
+
+
+
+
+
+
+
+
+
+
+
+
+st  <n>  command  (below)  in  conjunction  with this if the
+search is going to take an extended amount of time.  <n>  is
+the  depth  (in  plies  or  1/2  moves) that the search must
+reach.  Note that if Crafty is pondering,  it  still  honors
+this  limit  and  will stop a ponder search after this depth
+has been completed as well.  This is *not* the way  to  make
+Crafty play weaker, although this will be covered in a later
+section of this document.
+
+51.  show <category>  This command forces Crafty to  display
+additional information about certain actions it takes.  Cur-
+rently the only <category> is "book" which will make  crafty
+display information about all the book moves it found in the
+database.  More is given about this information in the  BOOK
+section later in this file.
+
+52.   smpmt=n   This  command  is  used to set the number of
+threads to use on a machine with more  than  one  processor.
+For  optimal performance, "n" should be set to the number of
+processors you have, although using fewer  will  reduce  the
+load on your machine.  For this command to work, Crafty must
+have been compiled with SMP defined.  When compiled with SMP
+enabled,  mt=0 effectively disables the SMP code completely.
+
+This command also has two that are closely related.   smpmin
+and smpmax.  Both accept single numerical arguments.  smpmin
+is used to control the minimum tree depth required at a node
+for  it  to be eligible for parallel searching.  IE smpmin 2
+says don't split unless at least two more plies are left  to
+search  below  this  node.   smpmax sets the maximum for the
+same idea, is smpmax 10 says don't split  if  more  than  10
+plies are remaining below this node.
+
+53.   sn <n>  This command is similar to the sd command, but
+instead of setting a specific search depth, it sets a number
+of  nodes to search.  Once the search has searched this num-
+ber of nodes (+ maybe one more second of searching to  check
+the time) the search will exit.
+
+54.  st <n>  This command lets you specify a specific search
+time limit for Crafty.  Again, this is not the preferred way
+to  set  a time per move, because this limit is absolute and
+Crafty will never go over this limit, even if it  sees  that
+it  is  losing  or  getting mated.  Setting the time control
+with the usual "time" or "level" command is  *much*  better.
+<time>  is given in seconds, although it may also be entered
+as mm:ss if preferred.
+
+55.  swindle on|off  This command  gives  you  control  over
+"swindle  mode."   When  on, and playing a game, Crafty will
+try to win drawn endings (according to the tablebases) if it
+has winning chances (like KR vs KB, for example).  This will
+put up very stiff "resistance" to accepting the draw,  while
+
+
+
+
+
+
+
+
+
+
+
+
+
+with  this  mode off, it may be very easy to draw a position
+once the tablebases say "drawn."  This mode is automatically
+turned  "off" during analysis or when annotating a game, and
+is only used when actually playing a game against  an  oppo-
+nent.  If there are no tablebases then this has no effect on
+the game at all.
+
+56.  tags  This command will simply display the current  PGN
+tags (you can edit them with the various PGN commands).
+
+57.   test  <filename>  [n] This command will run a suite of
+positions (the file must be in "Crafty" format as  explained
+below)  and  produce  a  summary  of  how many it got right,
+wrong, etc.  It uses the time per  move  you  set  with  the
+(typically)  st  <n> command.  The optional parameter [n] is
+the "early exit" counter.  If Crafty finds,  and  holds  the
+solution  move  for  n  iterations,  it  will  terminate the
+search.  I use this to make a win at chess  run  take  <  15
+minutes,  even  though  the  time  per  position is set to 1
+minute, by setting n to 2.  After  two  correct  iterations,
+Crafty  goes on to the next problem.  For absolutely correct
+results, this is not advisable as it could obviously  change
+its  mind later on, but for performance analysis, this saves
+a lot of time.
+
+The test suite contains the following  lines:   (this  is  a
+sample from my test suite for Win At Chess.)
+
+title wac299
+setboard 1n2rr2/1pk3pp/pNn2p2/2N1p3/8/6P1/PP2PPKP/2RR4 w
+solution Nca4
+
+title wac300
+setboard b2b1r1k/3R1ppp/4qP2/4p1PQ/4P3/5B2/4N1K1/8 w
+solution g6
+
+end
+
+The  title  command  simply displays this message in the log
+file so you can look at the  output  and  figure  out  which
+position it goes with.  This is optional, but useful.
+
+The  setboard command sets the position as explained before.
+
+The solution command gives the set of solution moves (one or
+more  moves  that  are  separated by blanks) and/or a set of
+"anti-solution" moves (moves that  must  not  be  played  to
+count  the  position as correct.)  "anti-solution" moves are
+simply followed by a "?" character, for example:
+
+solution Bxa7?
+
+The solution command supplies a set of key moves,  and  then
+
+
+
+
+
+
+
+
+
+
+
+
+
+starts  the search.  If, after the search terminates, one of
+the key solution moves was chosen (or none of the anti-solu-
+tion  moves were chosen) the position is counted as correct.
+
+The final line should be "end" although end-of-file  or  EOF
+will also be detected in this case.
+
+57.    time   CPU|elapsed|<values>   This  command  controls
+whether the program uses CPU time  or  wall-clock  time  for
+timing.   for tournament play, it is safer to use wall-clock
+timing, for testing it may be more  consistent  to  use  CPU
+timing  if the machine is used for other things concurrently
+with the tests being run.
+
+time is also used to set the basic search  timing  controls.
+the general form of the command is as follows:
+
+      time nmoves/ntime/[nmoves/ntime]/[increment]
+
+nmoves/ntime  represents  a  traditional  first time control
+when nmoves is an integer representing the number  of  moves
+and  ntime  is  the total time allowed for these moves.  the
+[optional] nmoves/ntime is a traditional secondary time con-
+trol.   increment  is a feature related to ICS play and emu-
+lates the Fischer clock where <increment> is  added  to  the
+time left after each move is made.
+
+as  an  alternative,  nmoves  can be "sd" which represents a
+sudden death time control  of  the  remainder  of  the  game
+played in ntime.  the optional secondary time control can be
+a sudden-death time control, as in the following example:
+
+        time 60/30/sd/30
+
+this sets 60 moves in 30 minutes, then game in 30 additional
+minutes.  an increment can be added if desired.
+
+One final example is the following:
+
+        time sd/15
+
+which is a simple game/15 setting.  This command can also be
+used to perform the same function as  the  "level"  command.
+For  example, to set up a classic ICS 2 12 game, the follow-
+ing would would work:
+
+        time sd/2/12
+
+59.  trace <n>  This command is used to make crafty  display
+the  tree  as it searches a position.  Due to the incredible
+speed at which this program can  search,  however,  this  is
+less than useful since it can swamp any known display driver
+and make things scroll impossibly fast.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Also note that this command  usually  is  disabled,  because
+Crafty  is  generally  compiled  with the -DFAST flag, which
+removes the trace output code from the search to make things
+slightly  faster.   You  will have to recompile, without the
+-DFAST, if you want to use this.  It's utility  is  limited,
+except for debugging, anyway.
+
+60.  usage <n> is simply a way to modify Crafty's time usage
+to fit your tastes.  You can "suggest" a time limit with any
+of the options discussed previously, but if you use anything
+other than the "st" command, Crafty will do its best to  use
+time  as  you  suggest, but it also anticipates that it will
+save some time by pondering, etc.,  and  will  therefore  be
+more aggressive at trying to use time.  if <n> is a positive
+integer, it is taken as a percentage and crafty will compute
+the  time  limit  it  thinks  is appropriate for the current
+clock settings, then increase this limit by this  percentage
+(50  would  make it take 1.5 times longer than normal.)  -50
+would make it take 1/2 the time it would normally take.
+
+Crafty adjusts the usage  internally  based  on  time  left,
+opponent's  time left, how quickly or slowly the opponent is
+moving, etc.  Further modifying things with this is  danger-
+ous, but possible.
+
+61.   whisper/kibitz <n>  These commands are used to control
+what Crafty will whisper or kibitz on a chess  server.   The
+options  are  (1)  only  whispers or kibitzes mate announce-
+ments; (2) adds time, score, depth to the  previous  option,
+but  no  PV  or moves.  (3) adds the PV.  (4) adds book move
+information to the output.  The remaining two options gener-
+ate  a  lot  of output and should be used with caution.  (5)
+displays the PV after each iteration completes.  I use  this
+when using my custom interface to let Crafty observe/comment
+on games in progress on ICC.  Noise can be used  to  prevent
+shallow  searches from generating output and keeping "noise"
+down on the games being watched.  (6) basically  will  whis-
+per/kibitz  nearly  everything you see on the console from a
+search, each PV when it changes, fail highs and  fail  lows,
+etc.   A  significant  amount of output that should be care-
+fully weighed before turning it "loose."
+
+62.  xboard  This command turns on Xboard/WinBoard  compati-
+bility mode, and makes Crafty behave somewhat like GnuChess.
+This is designed to be used *only* when Crafty is  interfac-
+ing  with  Xboard/WinBoard.  Crafty will not work with these
+two GUIs without this option, and  really  won't  work  very
+well with this option if it is not connected to one of them.
+
+63.  There are other commands that are not documented.  They
+are  part  of  the  xboard protocol and really should not be
+used by the normal user.  You can find all the  commands  in
+option.c should you be interested.
+
+
+
+
+
+
+
+
+
+
+
+
+
+                Opening Book Setup and Usage
+                ----------------------------
+
+Crafty   uses   two   pre-compiled   opening  books,  called
+"book.bin" and "books.bin".
+
+The file book.bin is usually build from a  large  text  file
+containing  PGN  games,  often  taken from collections of GM
+games.  Building book.bin is a simple exercise and  requires
+nothing  other than the raw input file you are going to use.
+Generally this will be either medium.zip or the set of  four
+files  large[1-4].zip,  all  of  which are stored on the ftp
+machine ftp.cis.uab.edu/pub/hyatt/.
+
+To create the file book.bin, you need a PGN game  collection
+that is a *real* PGN-compliant file.  Supposing this file is
+called "large.pgn" you would use the following command:
+
+book create large.pgn <m> [n] [wpct]
+
+The only thing you have to supply is <m>, a number  indicat-
+ing  how  many  moves from each game are to be stored in the
+book.bin database.  I typically use  60,  which  stores  the
+first  60  moves  from  each  game.   Increasing this number
+slightly increases the probability that Crafty will stay  in
+book  longer,  but it also increases the probability that it
+will follow a game too far, so that it begins to reach posi-
+tions  where  the move actually played might not be the best
+move, letting it fall into a bad hole.  Increasing this also
+increases the size of the database as well.
+
+You  can  decrease the size of the book, and also reduce the
+number of ugly moves by  specifying  <n>,  which  says  that
+unless  a  move  is  played in at least N games, the move is
+discarded.  This will substantially decrease the size of the
+book.bin  file,  and  also  eliminate single game moves that
+often have significant errors or blunders.
+
+You can increase the quality of  book  lines  by  specifying
+<wpct> which is the "winning percentage".  This is specified
+as a percentage of lost games, and is used to discard  moves
+that  led  to mostly losses.  A safe value is 50, which says
+that if a particular opening move didn't win at least 50% as
+many  games  as it lost, the move is culled.  A value of 100
+would mean that moves  are  culled  if  they  produced  more
+losses than wins, and is really a strict criterion.
+
+After creating book.bin, you need to create books.bin.  This
+is a small version of book.bin, which is  intended  to  give
+you  more  control over the moves/openings Crafty will play.
+This is usually built from the file  start.pgn  on  the  ftp
+machine,  but  you  can  modify this file to suit your taste
+easily.  To build books.bin, you use the following command:
+
+
+
+
+
+
+
+
+
+
+
+
+
+books create start.pgn 60
+
+Again, 60 is what I use, but none of my start.pgn  lines  go
+anywhere  near that many moves.  The main point here is that
+in start.pgn, you can append a "!" to any move you want, and
+when  it  is  Crafty's  turn to move for that color, it will
+play from the set of moves with "!" if there are any, ignor-
+ing the rest of the book moves.  If you only want it to play
+1. e4 as white, you would just enter the short game:
+
+[Crafty only plays 1. e4] 1. e4!
+
+and you are finished!.  You can enter as many as  you  want.
+If  on  the other hand there is a move you don't want Crafty
+to play, then follow that move with a "?" and it will  never
+play  it.  Moves in books.bin that are not flagged with ! or
+? don't have any influence on Crafty's choice at all.
+
+Here's how the files are used.  When searching  a  position,
+Crafty  first enumerates the set of moves it can find in the
+opening database.  It then does the same for  the  books.bin
+database,  and performs a "merge" operation to combine the ?
+and ! flags...  The purpose of the books.bin file is to give
+you  a  small  database that you can easily modify, rebuild,
+and repeat this process over and over.   Since  it  takes  a
+fraction  of a second to completely rebuild this file, it is
+very easy to modify this to control what Crafty  will  play,
+without having to rebuild the large database.
+
+One  important characteristic of the PGN input is the Result
+tag must be specified in most of the lines,  because  Crafty
+counts  wins,  losses  and draws for each book move and uses
+these counts with some of the book selection  options  given
+below.
+
+How the flags are used.
+
+The  ! and ? flags should only appear in the small books.bin
+file, although there is no reason why they can not appear in
+the  large  file  as  well.  For this discussion, it doesn't
+matter since Crafty takes the  moves  from  both  files  and
+"merges" the flags/etc into one entry for each move.
+
+Quite simply, if any book legal book move has a ! flag, then
+Crafty will only play moves from the set of moves which  all
+have  the ! flag.  If a move has a ? flag, then that move is
+immediately removed from the set of possible book moves.  If
+the only legal book move has a ? flag, it will not be played
+as a book move and Crafty will simply pretend that it  found
+no book moves and will execute a normal tree search.  Pretty
+simple.
+
+How to control the frequency of opening move selection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+A new feature in version 15.15  and  beyond  allows  you  to
+append a PGN comment to any move in a text file used to cre-
+ate books.bin, of the form {play nn%}.  This will force  the
+move  it  follows  to be played that percentage of the time,
+regardless of the normal book-ordering values based on  fre-
+quency and so forth.
+
+Note  that  {play  0%}  will  not  prevent a move from being
+played at all, as this will look just like a  move  with  no
+percent specified.  To avoid playing a move, use the ? flag.
+
+How does Crafty choose book moves?
+
+Crafty's book  selection  algorithm  depends  on  two  user-
+defined values that can be set at any time during a game:
+
+book random <n>
+
+book width <w>
+
+The  selection  algorithm  first finds the set of legal book
+moves as above.  This set will either be  all  !  moves,  or
+will  have  no ! moves in it.  This set is then sorted based
+on the setting of book random.  Here's the options:
+
+book random 0.  This is a special case for  book  selection.
+Crafty simply takes the set of book moves, and searches only
+these moves using a normal alpha/beta  search,  but  with  a
+shorter  than usual time limit.  It then plays the move that
+produces the best search value.  This has one serious disad-
+vantage  in  that there is no randomness to this at all.  It
+will always play the same move in the same position,  unless
+the  evaluation is modified, or the time per move is differ-
+ent enough to let the search find a different move from  the
+book move set.
+
+book  random  1.   This  enables  a random form of book move
+selection, but you have a lot of control over how moves  are
+randomly  chosen.  The moves are ordered, based on 4 parame-
+ters:  frequency of play, win/lose ratio, static  evaluation
+and  learned  results.  Normally these are factored into the
+value used to sort the moves, based on default settings that
+you  can  modify  by  using  the  command  "bookw  option N"
+"option" should be "freq", "ratio", "eval" and  "learn".   N
+should be a number between 0 and 1.
+
+Crafty finds the min and max values for each of the 4 param-
+eters, and then maps this into the  range  0-1000  for  each
+parameter.   Each parameter is multiplied by the correspond-
+ing "weight" you have assigned, and this is used as a  value
+to  sort  the  moves  from low to high.  Note that the first
+sort value is always the "play percent" to move them to  the
+top  of  the  list.   For  moves  with  equal "play percent"
+
+
+
+
+
+
+
+
+
+
+
+
+
+values, the normal sort-value is used  as  the  second-level
+sort  variable  (if  no moves have a play-percent, then this
+second-level variable is the only one used, of course.)
+
+Once Crafty has sorted the moves as  given  above,  it  next
+excludes  any  book moves which have 0 wins.  This culls the
+odd lines where a player chose a bad line and lost  quickly.
+With  zero  wins,  it  will never be chosen, although Crafty
+will happily follow it from the other side.  :)  This is not
+anywhere  near  perfect,  however,  because an opening could
+have 1 win and 19 losses and that still would  stay  in  the
+list.
+
+If  a  move  has a learned value of > 100, this move is ele-
+vated in priority to that of a ! move, since it  appears  to
+win material instantly.  If a value is < -100, it is given a
+? since it appears to be a lemon.
+
+After this, the setting for "book width <w>" is used to keep
+the first <w> moves in the list, after the above culling has
+been completed.  The smaller you make <w> the  less  random-
+ness  you get, but the chance of Crafty popping out a really
+bizarre book move gets smaller as well.
+
+After sorting, the final step is to fold  in  any  mandatory
+"play percent" values.  What this step does is that it finds
+all the moves in the  "playable  move  set"  just  computed,
+which  have no percent-to-play value set.  It sums the sort-
+values for these moves, then adjusts the sort-values for the
+other moves so that their percentages will be honored.
+
+Once this has been done, crafty simply uses the "sort value"
+for each move to compute a total for  all  moves.   It  then
+generates  a  random  number  between  1 and this limit, and
+chooses the move that this probability distribution matches.
+This will certainly evolve over time as new ideas are devel-
+oped.
+
+For my play on ICC, I use book random 1, and  book  width  5
+normally,  although  for  titled  players this is reduced to
+book width 3.  For computers, I reduce this further to 2, to
+try  to  play  reasonable  openings and cull the gambits and
+things that don't work out.
+
+How does book learning work and  how  can  I  share  learned
+results?
+
+1.  *all* of crafty's "learned knowledge" is in the book.bin
+file.  It keeps the learned value and learned count right in
+the  book  file  for  speed.   You can't modify it, although
+"show book" will make crafty  display  all  the  book  stuff
+before it makes a move.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2.   the  book.lrn file has two purposes:  (a) to serve as a
+log for your prying eyes, so you can see what it's  learned,
+against  whom, and what the score was that got its attention
+in the first place.  The values on  the  end  of  each  book
+line, inside the {} characters are as follows:
+    {value,  depth, rating_difference} value is the value of
+the "key" search that comes from the first 10 moves  out  of
+book.  it's in centipawns, and + is good - is bad.  depth is
+the depth the search reached at  this  "key"  position,  the
+deeper  the  search,  the more the value is "trusted."  rat-
+ing_difference is crafty's rating - opponent's rating a neg-
+ative  value means pay more attention to the score since the
+opponent is better than crafty, a positive  value  means  to
+take  the  score  with a grain of salt, because the opponent
+was weaker than Crafty.
+
+You can delete this file at any time, and it has  no  effect
+on  learning.   As  I mentioned, the learning takes place in
+book.bin... this is mainly for you to peek  at  if  you  are
+interested.   However,  this  is the "portable learning data
+file" also, and can be given to others to import into  their
+crafty,  where  it  will  affect  the opening book just like
+their crafty had  played  the  openings  and  got  the  same
+scores.  There are two ways to use such "lrn" files:
+
+1.   "import <filename>" will read <filename> and import the
+knowledge therein into your book.bin.  Since I use the  same
+learning  code  as is used when playing games, this informa-
+tion also gets appended to *your* book.lrn file as well,  so
+that your book.lrn always reflects *everything* your program
+has learned, so long as you don't ever remove this file.  It
+would  be a mistake to use this command on your own book.lrn
+file, because the things  would  get  counted  twice,  which
+might or might not be a good thing.
+
+2.   "import  <filename>  clear"  will  read  <filename) and
+import the  knowledge  as  above,  but  first  clears  *all*
+learned  results from book.bin.  you will want to do this if
+you import my book.lrn, *and*, you have  contributed  to  my
+book.lrn data by sending me yours.  I'll take care of elimi-
+nating duplicates if you screw up in what you send  me,  but
+once  you  send me something, you run the risk of getting it
+"back again" later.  This is going to  be  a  problem  until
+everyone  gets  used  to  sharing  something  that is rather
+"vapid" like this "learned info" is...
+
+Other than that, we are now "open for business"...  when the
+urge strikes you, email me your .lrn file, I'll keep a large
+master here and update it on occasion.   Probably  the  best
+thing  to  do  is  to  send  me  your  .lrn  and at the same
+*instant* delete yours.  This will capture anything  learned
+*after*  you  send  me the file, but you'll get it all right
+back with the next version of book.lrn  that  I  distribute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+after getting this new book.lrn back, here's what you should
+do:
+
+1.  rename your old book.lrn to something else.   I'll  call
+it "book.lrn.old" here.
+
+2.   copy my blearn.dat to your machine, but *do not* put it
+in the directory  with  your  book.bin  and  books.bin  file
+because  it  will get confusing very quickly if you do.  put
+it somewhere else,  because  you  are  going  to  remove  it
+quickly anyway.  I'll call it new.lrn for this example.
+
+3.  import new.lrn clear
+    import book.lrn.old
+
+and you are ready to rumble again.  The first command clears
+the learned values, sucks in my new learn file  and  updates
+everything.   the second command re-learns everything you've
+learned since you sent me the  last  book.lrn  file.   After
+doing  this your book.lrn will have my .lrn stuff, plus your
+old.lrn stuff, just waiting to be sent to me again...
+
+If this is confusing, I can probably add an  automatic  com-
+mand to do all of this by renaming book.lrn, etc.  Hopefully
+this is not too error-prone for the time being anyway...
+
+What is this new Position Learning I've heard about?
+
+Crafty now has a "permanent" hash table that  is  kept  from
+game  to  game.   A position gets into this "hash file" when
+Crafty executes a search and the search  value  is  signifi-
+cantly lower than the last search value.
+
+When this happens, Crafty stores the current information for
+this position in the permanent hash file, which can hold  up
+to  65536  positions.   Once  it fills up, the positions are
+replaced on a FIFO basic always keeping the most recent  64K
+entries.
+
+Each  time crafty starts a search, the positions/scores from
+this file are stuffed into the normal  transposition  table,
+and  used during the search just like any other table entry.
+Here's how it helps:  In a game that was played, the follow-
+ing moves and scores were found by crafty (playing white):
+
+1.   Ng5  (+.277)   h6  2.  Nh7 (+.321)  Kg8 3.  Qh5 (+.133)
+Qg7 4.  Ng5 (-2.122) hxg5
+
+So, the knight got trapped at h7, and at move 4 crafty  dis-
+covered  that  this  is gross and "learns" this result/posi-
+tion.
+
+We play the exact same game again:  except that  two  things
+
+
+
+
+
+
+
+
+
+
+
+
+
+can  happen here.  It might be that Ng7 is the *only* square
+the knight can move to here, which means this whole thing is
+forced.  the first search would find:
+
+1.  Ng5 (-2.122) if the search can reach 8 plies deep, which
+happens even in 5 second games.  It's learned  that  Ng5  is
+bad.   It  stores *this* position in the permanent hash file
+also, and the next time you try this same trap, it will dis-
+cover  4-5 moves earlier that if the knight gets to g5 it is
+in trouble.  Each game will diverge from the first game  3-4
+moves earlier.  Simple and effective.
+
+2.   Ng5 might not be forced, and if not, it knows Ng5 loses
+a piece for a pawn, so it will promptly play something else,
+which is exactly what is desired.
+
+This  is  implemented  with two (count 'em, two) files.  One
+file "position.bin" is a binary file that contains the  hash
+table  entries, and it right at one megabyte in size, *max*.
+(16 bytes per hash entry X 65536 entries = exactly one  meg,
+but  I  have 8 extra bytes for the FIFO queue implementation
+and to see how many entries are currently in the file if  it
+is not full.
+
+The  second file is "position.lrn" and is, you guessed it, a
+file that can be shared with others, just like book.lrn.  It
+contains all information needed to reconstruct the position,
+the score, the depth, etc.  and also included the  pgn  tags
+for who was what color and when the game was played...
+
+This data can be imported with the new "import" command (the
+old book learn <filename> is no longer  around)  which  will
+import  either  book.lrn type data or position.lrn type data
+and can tell them apart without your having to do  anything.
+The  <clear>  option  is still there, should you want to use
+it, and simply removes  the  position.lrn  and  position.bin
+files before starting the import process for position learn-
+ing.
+
+This can be turned off, if you like,  by  checking  out  the
+"learn"  command,  which  gives  you the ability to turn off
+book learning (as it presently  works),  position  learning,
+and  the next book learning stage which will add to the book
+in addition to learning which book lines are good and bad.
+
+What is this new "result" learning?
+
+Result learning works just like normal book learning, except
+that  if  Crafty is checkmated or resigns, it will step back
+through the book line to find the last point  where  it  had
+more than one move to choose from.  It will flag the move it
+chose as "never play again".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+This handles the case where the  first  ten  non-book  moves
+produce  reasonable  scores,  but  the  position is one that
+Crafty simply can't handle very well.  If it  loses  such  a
+game,  it  will  still  vary  the  next time this opening is
+played, as otherwise it would possibly repeat the same open-
+ing, and would certainly repeat the remainder of the game.
+
+All  three learning modes are turned on by default, although
+any of them can be disabled  with  the  appropriate  command
+option to "learn".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/crafty.doc.ps b/crafty.doc.ps
new file mode 100644 (file)
index 0000000..7275717
--- /dev/null
@@ -0,0 +1,2388 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.11
+%%CreationDate: Thu Feb  8 10:38:31 2001
+%%DocumentNeededResources: font Times-Roman
+%%DocumentSuppliedResources: procset grops 1.11 0
+%%Pages: 21
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.11 0
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/FL{
+currentgray exch setgray fill setgray
+}bind def
+/BL/fill load def
+/LW/setlinewidth load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Roman@0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(Crafty Command Documentation \(v)195.585 96 Q
+(ersion 18\))-.15 E(-----------------------------------------------)
+209.745 108 Q .714(Crafty is nothing more than a long-time hobby of min\
+e, dating back to Blitz and later Cray Blitz.)72 120 R(People)5.714 E
+(ask me ho)72 132 Q 2.5(wIk)-.25 G
+(eep doing this, and that is the one question that generally lea)-2.6 E
+-.15(ve)-.2 G 2.5(sm).15 G 2.5(ea)-2.5 G 2.5(tal)-2.5 G(oss for w)-2.5 E
+(ords.)-.1 E .711(Perhaps the most common question I'm ask)72 156 R .711
+(ed is "is this v)-.1 F .711(ersion of Crafty some dumbed-do)-.15 F .712
+(wn v)-.25 F .712(ersion of)-.15 F 1.071
+(what you play on ICC or what you use at a computer chess e)72 168 R
+-.15(ve)-.25 G 3.57(nt?" The).15 F 1.07(answer is a resounding *NO*.)
+3.57 F .666(The current v)72 180 R .666(ersion is *e)-.15 F .667
+(xactly* what is running on ICC under this v)-.15 F .667(ersion number)
+-.15 F 5.667(.N)-.55 G .667(ote that a ne)-5.667 F 3.167(wv)-.25 G(er)
+-3.317 E(-)-.2 E .538
+(sion can, on occasion, introduce weaknesses or outright b)72 192 R .537
+(ugs that were not present in pre)-.2 F .537(vious "gold" v)-.25 F(er)
+-.15 E(-)-.2 E 2.82(sions. As)72 204 R 2.82(ar)2.82 G .32
+(esult, you should be careful to back up your "f)-2.82 F -.2(avo)-.1 G
+.321(rite" before trying the latest and greatest.).2 F(If)5.321 E
+(you aren')72 216 Q 2.5(ts)-.18 G(atis\214ed with the ne)-2.5 E 2.5(wv)
+-.25 G(ersion, you can then go back to what you belie)-2.65 E .3 -.15
+(ve i)-.25 H 2.5(sab).15 G(etter v)-2.5 E(ersion.)-.15 E 1.013
+(If you are looking for the strongest playing computer chess program a)
+72 240 R -.25(va)-.2 G 1.013(ilable, you should lik).25 F 1.013
+(ely look to)-.1 F .704(Fritz, Rebel, T)72 252 R(iger)-.35 E 3.204(,a)
+-.4 G .704(nd the other commercial entries.)-3.204 F .705
+(There you will \214nd strong opponents with polished)5.705 F(interf)72
+264 Q .102(aces that ha)-.1 F .401 -.15(ve b)-.2 H .101
+(een tested in a systematic and careful w).15 F(ay)-.1 E 5.101(.I)-.65 G
+2.601(fy)-5.101 G .101(ou are looking for a program that plays)-2.601 F
+.614(good chess, has a reasonable set of features for you to use, is a)
+72 276 R -.25(va)-.2 G .614(ilable in source form, and one where the).25
+F .478(author welcomes feedback, code or suggestions, then you are at t\
+he right place.)72 288 R 2.978(Iw)5.478 G .478(elcome comments and)
+-2.978 F(suggestions, and also feedback from ideas you try yourself tha\
+t seem to w)72 300 Q(ork.)-.1 E .031(Crafty is a state-of-the-art compu\
+ter chess program, and uses all of the search algorithms you ha)72 324 R
+.332 -.15(ve p)-.2 H(robably).15 E 1.016(read about, ne)72 336 R -.05
+(ga)-.15 G 1.016(scout search, killer/history mo).05 F 1.315 -.15(ve o)
+-.15 H 1.015(rdering, SEE \(Static Exchange Ev).15 F 1.015
+(aluation\) quiescence)-.25 F(mo)72 348 Q 1.776 -.15(ve o)-.15 H 1.477(\
+rdering and pruning, hash \(transposition/refutation\) tables as well a\
+s e).15 F -.25(va)-.25 G 1.477(luation caches, selecti).25 F -.15(ve)
+-.25 G -.15(ex)72 360 S .538(tensions, recursi).15 F .837 -.15(ve n)-.25
+H(ull-mo).15 E .837 -.15(ve s)-.15 H .537
+(earch, and a host of other features that ha).15 F .837 -.15(ve b)-.2 H
+.537(een used and are still being).15 F .836
+(used in most computer chess programs.)72 372 R .836(If it')5.836 F
+3.336(sn)-.55 G .836(ot in Crafty)-3.336 F 3.336(,e)-.65 G .837
+(ither it is on the "to do" list, or it has been)-3.336 F
+(tried, found w)72 384 Q(anting, and discarded.)-.1 E 1.288(Chess Kno)72
+408 R 1.288(wledge is gro)-.25 F 1.288(wing, and suggestions \(or e)-.25
+F -.15(ve)-.25 G 3.788(nb).15 G(etter)-3.788 E 3.787(,r)-.4 G 1.287
+(eal code\) are welcome.)-3.787 F 1.287(This is the best)6.287 F .661
+(place to contrib)72 420 R .661(ute your ideas, because kno)-.2 F .662
+(wledge can be used to supplant search and mak)-.25 F 3.162(ei)-.1 G
+3.162(tp)-3.162 G .662(lay better)-3.162 F(.)-.55 E .021(The e)72 432 R
+-.25(va)-.25 G .021(luation is probably the easiest place to start stud\
+ying Crafty because of the comments and simplicity).25 F
+(of using bitmaps, *once* you get "into" them.)72 444 Q .241
+(My purpose for doing this is an e)72 468 R -.15(xe)-.15 G .242
+(rcise in computer chess ef).15 F(\214cienc)-.25 E 4.042 -.65(y. I)-.15
+H(can')3.392 E 2.742(tb)-.18 G -.15(eg)-2.742 G .242
+(in to count the number of).15 F .156(people I kno)72 480 R 2.656(wt)
+-.25 G .155(hat started from scratch to write a chess program.)-2.656 F
+(Ev)5.155 E .155(en lar)-.15 F .155(ger is the group that started from)
+-.18 F(scratch, and g)72 492 Q -2.25 -.2(av e)-.05 H
+(up before \214nishing, because of the basic size of the project.)2.7 E
+.83(Crafty of)72 516 R .83(fers e)-.25 F -.15(ve)-.25 G .83(ryone a v)
+.15 F .83(ery clean starting point, if you are f)-.15 F .83
+(ascinated by the bitmap chess board imple-)-.1 F
+(mentation \(as I am\).)72 528 Q
+(The search and quiescence code is reasonably straightforw)5 E
+(ard, as is the e)-.1 E -.25(va)-.25 G(luation,).25 E .118(It of)72 552
+R .117(fers a great starting point, so that if you are interested in tr\
+ying a ne)-.25 F 2.617(ws)-.25 G .117(earch e)-2.617 F .117
+(xtension, you can be test-)-.15 F .009(ing tomorro)72 564 R 1.309 -.65
+(w, r)-.25 H .009(ather than ne).65 F .009(xt year)-.15 F 2.509(,b)-.4 G
+.01(ecause you start with a fully functional chess engine that is not a\
+ "to)-2.509 F(y")-.1 E .613(application, b)72 576 R .613
+(ut is a functional and "dangerous" chess player)-.2 F 5.612(.I)-.55 G
+3.112(to)-5.612 G -.25(ff)-3.112 G .612
+(ers a rapid start, although you can cer).25 F(-)-.2 E .75
+(tainly replace it piece by piece until it is "yours" if you w)72 588 R
+3.25(ant. It)-.1 F .75(also of)3.25 F .75(fers a f)-.25 F .75
+(airly complete set of com-)-.1 F .958(mands and an interf)72 600 R .957
+(ace for a GUI as well as support for chess serv)-.1 F .957(er play)-.15
+F 3.457(,s)-.65 G 3.457(ot)-3.457 G .957(hat testing and deb)-3.457 F
+(ugging)-.2 E(your ne)72 612 Q 2.5(wi)-.25 G
+(deas is greatly simpli\214ed.)-2.5 E 1.244(If you')72 636 R 3.744(dl)
+-.5 G(ik)-3.744 E 3.744(em)-.1 G 1.244
+(ore information, please check out the read.me document and the crafty)
+-3.744 F(.F)-.65 E 2.345 -.55(AQ t)-.74 H 1.245(hat are dis-).55 F(trib)
+72 648 Q 1.063(uted with Crafty)-.2 F 6.063(.T)-.65 G 1.062
+(hese contain recent ne)-6.063 F 1.062
+(ws and speci\214c instructions for commonly ask)-.25 F 1.062
+(ed questions,)-.1 F(lik)72 660 Q 2.5(e")-.1 G
+(where can I obtain tablebase \214les and ho)-2.5 E 2.5(wd)-.25 G 2.5
+(oIu)-2.5 G(se them?")-2.5 E(Ho)246.63 672 Q 2.5(wt)-.25 G 2.5(op)-2.5 G
+(lay a g)-2.5 E(ame.)-.05 E(-------------------)256.365 684 Q 1.084
+(When you e)72 696 R -.15(xe)-.15 G 1.084(cute Crafty).15 F 3.584(,y)
+-.65 G 1.084(ou will immediately be greeted by the prompt string "white\
+\(1\): " and Crafty)-3.584 F .79(will w)72 708 R .79(ait for commands.)
+-.1 F .79(This prompt means it is white on mo)5.79 F -.15(ve)-.15 G
+3.289(,a).15 G .789(nd we are at mo)-3.289 F 1.089 -.15(ve #)-.15 H
+3.289(1f).15 G .789(or white.)-3.289 F -1.1(Yo)5.789 G(u)1.1 E .879
+(can \214rst use an)72 720 R 3.379(yo)-.15 G 3.379(ft)-3.379 G .879
+(he commands from the alphabetic command listing belo)-3.379 F 3.38(wt)
+-.25 G 3.38(ot)-3.38 G .88(ailor the g)-3.38 F .88(ame to your)-.05 F EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .238(liking \(time control, hash table size, bo\
+ok randomness, etc.\) and then you ha)72 96 R .538 -.15(ve t)-.2 H .438
+-.1(wo c).15 H 2.737(hoices. If).1 F .237(you w)2.737 F .237(ant to)-.1
+F .198(play white, just enter your mo)72 108 R -.15(ve)-.15 G 2.698(,a)
+.15 G .198(nd Crafty will tak)-2.698 F 2.698(ei)-.1 G 2.698(tf)-2.698 G
+.198(rom there and mak)-2.698 F 2.698(eam)-.1 G .498 -.15(ove i)-2.698 H
+2.698(nr).15 G 2.698(esponse. Y)-2.698 F .198(ou will)-1.1 F .902
+(then be prompted by "white\(2\):" and it is your mo)72 120 R 1.202 -.15
+(ve a)-.15 H -.05(ga).15 G 3.402(in. If).05 F .901(you w)3.401 F .901
+(ould prefer to play black, just enter)-.1 F .745(either "mo)72 132 R
+-.15(ve)-.15 G 3.245("o).15 G 3.245(r")-3.245 G .745
+(go" at the prompt and crafty will mo)-3.245 F 1.045 -.15(ve f)-.15 H
+.746(or that side rather than accepting a mo).15 F 1.046 -.15(ve f)-.15
+H(rom).15 E 2.962(you. After)72 144 R .462(it mak)2.962 F .462
+(es its mo)-.1 F .762 -.15(ve f)-.15 H .462(or white, you will then see\
+ the prompt "black\(1\): " indicating it is no).15 F 2.962(wt)-.25 G
+(ime)-2.962 E .682(for blacks \214rst mo)72 156 R -.15(ve)-.15 G 5.682
+(.Y).15 G .682(ou can enter a mo)-6.782 F -.15(ve)-.15 G 3.182(,o).15 G
+3.182(ry)-3.182 G .683(ou can once ag)-3.182 F .683(ain enter "mo)-.05 F
+-.15(ve)-.15 G 3.183("o).15 G 3.183(r")-3.183 G .683
+(go" and Crafty will)-3.183 F(ag)72 168 Q(ain mo)-.05 E .3 -.15(ve f)
+-.15 H
+(or the current side, change sides, and prompt you for what to do ne).15
+E(xt.)-.15 E .669(If you \214nd yourself continually using a set of com\
+mands to con\214gure crafty to play as you w)72 192 R .669(ant, you can)
+-.1 F .949(put these commands in a startup \214le called .craftyrc \(Un\
+ix\) or crafty)72 204 R .949(.rc \(DOS/W)-.65 F(indo)-.4 E 3.449
+(ws\). The)-.25 F .949(format for)3.449 F .221(this \214le is just lik)
+72 216 R 2.721(ey)-.1 G .221(ou w)-2.721 F .221
+(ould type the commands at the k)-.1 F -.15(ey)-.1 G .221
+(board, with the requirement that the last line of).15 F 1.069
+(the \214le must be "e)72 228 R 1.069(xit" on a line by itself.)-.15 F
+1.07(Using this, each time you start Crafty)6.069 F 3.57(,i)-.65 G 3.57
+(tw)-3.57 G 1.07(ill \214rst e)-3.57 F -.15(xe)-.15 G 1.07(cute the).15
+F(commands from this \214le before it prompts you for input.)72 240 Q
+.346(While Crafty is running, you can control what it displays, b)72 264
+R .345(ut here')-.2 F 2.845(sac)-.55 G .345(ouple of samples to e)-2.845
+F .345(xplain what it)-.15 F(is saying and wh)72 276 Q(y:)-.05 E 5
+(depth time score)99.5 300 R -.25(va)10 G(riation \(1\)).25 E(book mo)
+102 312 Q -.15(ve)-.15 G 2.5(s{).15 G
+(d4, c3, Nc3, d3, b3, c4, g3, b4, Be2, Bb5})-2.5 E 5(book 0.0s)102 324 R
+7.5(70% d4)12.5 F(White\(3\): d4)72 348 Q(time used:)102 360 Q(0.01)7.5
+E .97
+(This is the normal output for those cases where Crafty is in book.)72
+384 R .971(The book mo)5.971 F -.15(ve)-.15 G 3.471(sl).15 G .971
+(ine gi)-3.471 F -.15(ve)-.25 G 3.471(st).15 G .971(he set of)-3.471 F
+.805(book mo)72 396 R -.15(ve)-.15 G 3.305(st).15 G .805
+(hat made the \214rst selection cut \(see the book selection e)-3.305 F
+.805(xplanation gi)-.15 F -.15(ve)-.25 G 3.305(nl).15 G .805
+(ater\), follo)-3.305 F .805(wed by)-.25 F(the mo)72 408 Q .3 -.15(ve a)
+-.15 H(ctually played, in this case d4.).15 E
+(If Crafty is out of book, then the output looks some)72 432 Q(what dif)
+-.25 E(ferent as gi)-.25 E -.15(ve)-.25 G 2.5(nb).15 G(elo)-2.5 E(w:)
+-.25 E 5(depth time score)79.5 456 R -.25(va)10 G(riation \(1\)).25 E 5
+(4-> 0.81)84.5 468 R 7.5(2.09 6.)10 F(dx)2.5 E(e4 Bx)-.15 E
+(e4 7. Rad8 Qf2 8. Qb5)-.15 E 12.5(51)84.5 480 S 7.5(.37 2.41 6.)-12.5 F
+(dx)2.5 E(e4 Bx)-.15 E(e4 7. Ne5 Qf4 8. Bx)-.15 E(e4+ Qx)-.15 E
+(e4 9. f5)-.15 E 5(5-> 1.88)84.5 492 R 7.5(2.41 6.)10 F(dx)2.5 E(e4 Bx)
+-.15 E(e4 7. Ne5 Qf4 8. Bx)-.15 E(e4+ Qx)-.15 E(e4 9. f5)-.15 E 12.5(67)
+84.5 504 S 12.5(.38 --)-12.5 F(6. dx)10 E(e4)-.15 E 10(61)84.5 516 S 7.5
+(1.90 1.97 6.)-10 F(dx)2.5 E(e4 Bx)-.15 E
+(e4 7. Rab8 Qf2 8. Qc7 Nc5 9. Qe5)-.15 E 10(61)84.5 528 S 12.5(2.92 ++)
+-10 F(6. Ne5)10 E 10(61)84.5 540 S 7.5(3.71 2.23 6.)-10 F
+(Ne5 Qg2 7. Ng6 h5 8. Nh4 Qg4)2.5 E 2.5(6-> 15.59)84.5 552 R 7.5
+(2.23 6.)10 F(Ne5 Qg2 7. Ng6 h5 8. Nh4 Qg4)2.5 E(time: 15.60)79.5 564 Q
+2.5(cpu:99% mat:1 n:246565 nps:15927)5 F -.15(ex)79.5 576 S
+(t-> checks:4706 recaps:1336 pa).15 E(wns:0 1rep:301)-.15 E 2.5
+(nodes full:45951 quiescence:200614 e)79.5 588 R -.25(va)-.25 G
+(ls:104657).25 E(endg)79.5 600 Q(ame tablebase-> probes done: 0)-.05 E
+(successful: 0)5 E(Let')72 624 Q 2.999(st)-.55 G(ak)-2.999 E 2.999(et)
+-.1 G .499(his stuf)-2.999 F 2.999(fo)-.25 G .499(ne line at a time.)
+-2.999 F .499(Lines that ha)5.499 F .799 -.15(ve s)-.2 H .499
+(omething lik).15 F 2.999(e4)-.1 G .499
+(-> in the depth column are printed)-2.999 F 1.178
+(when that iteration \(depth\) is completely \214nished.)72 636 R 1.178
+(The time and score columns should be ob)6.178 F 1.178(vious as to)-.15
+F .816(their meaning as is the PV)72 648 R 3.316(,t)-1.29 G .816
+(he sequence of mo)-3.316 F -.15(ve)-.15 G 3.316(st).15 G .817
+(hat led to this score.)-3.316 F .817(One note about the "score" col-)
+5.817 F 2.84(umn. As)72 660 R .34(of v)2.84 F .34
+(ersion 18, Crafty displays the score with + v)-.15 F .339
+(alues good for white, - v)-.25 F .339(alues good for black, no)-.25 F
+.08(matter which side it is playing in the g)72 672 R 2.581(ame. All)
+-.05 F .081(output no)2.581 F 2.581(wf)-.25 G(ollo)-2.581 E .081
+(ws this con)-.25 F -.15(ve)-.4 G .081(ntion, from playing, to analy-)
+.15 F 1.442(sis mode, to annotating your g)72 684 R 1.441
+(ames, to whispering/kibitzing on the chess serv)-.05 F 1.441
+(ers, and so forth.)-.15 F 1.441(This is)6.441 F(unlik)72 696 Q 3.26(eo)
+-.1 G .76(ther engines, b)-3.26 F .76(ut once you get used to it, it is\
+ much less confusing when you remember that ne)-.2 F(g-)-.15 E(ati)72
+708 Q .3 -.15(ve s)-.25 H
+(cores are good for black and bad for white, and vice-v).15 E(ersa.)-.15
+E EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .825(the line that has -- in the score column m\
+eans that when we started depth 6, dx)72 96 R .824
+(e4 turned out to be w)-.15 F(orse)-.1 E 1.771(than we thought \(notice\
+ score dropped from 2.411 last search to 1.972 for this mo)72 108 R
+2.072 -.15(ve t)-.15 H 1.772(his search.\)).15 F -.8(To)6.772 G(resolv)
+72 120 Q 2.942(et)-.15 G .442(his, Crafty lo)-2.942 F .441(wers the lo)
+-.25 F .441(wer search bound \(alpha\) and re-searches the mo)-.25 F
+.741 -.15(ve t)-.15 H 2.941<6f8c>.15 G .441(nd the score.)-2.941 F(The)
+5.441 E 1.33(line with ++ means that this mo)72 132 R 1.63 -.15(ve \()
+-.15 H 1.33(Ne5\) is better than the best mo).15 F 1.63 -.15(ve s)-.15 H
+3.83(of).15 G(ar)-3.93 E 3.83(,s)-.4 G 3.83(oC)-3.83 G 1.33
+(rafty raises the upper)-3.83 F
+(search bound \(beta\) and re-searches this mo)72 144 Q .3 -.15(ve t)
+-.15 H 2.5<6f8c>.15 G(nd the ne)-2.5 E 2.5(ws)-.25 G(core.)-2.5 E .544
+(the \214rst line of statistics gi)72 168 R -.15(ve)-.25 G 3.044(st).15
+G .544(he total time tak)-3.044 F .543
+(en for this search, the cpu percentage which should stay at)-.1 F
+(98-100% unless your machine is hea)72 180 Q
+(vily loaded or unless Crafty is in an endg)-.2 E(ame that is ha)-.05 E
+(ving lots of con-)-.2 E .67(tact with endg)72 192 R .67(ame databases.)
+-.05 F .67(If this drops belo)5.67 F 3.17(w9)-.25 G .67
+(8%, it means that Crafty is not getting full CPU usage)-3.17 F .682
+(and will be playing weak)72 204 R .682(er than normal.)-.1 F .683
+(The mat:1 is simply the true material score, since Crafty')5.682 F
+3.183(sp)-.55 G(osi-)-3.183 E(tional scores are often lar)72 216 Q
+(ger than a pa)-.18 E(wn.)-.15 E(Alphabetic Listing of Commands)221.195
+240 Q(------------------------------)238.05 252 Q 3.19(1. alarm)72 276 R
+(on|of)3.19 E 5.69(fT)-.25 G .69(his command is used to control Crafty')
+-5.69 F 3.189(s")-.55 G .689(beep" after it mak)-3.189 F .689(es a mo)
+-.1 F -.15(ve)-.15 G 5.689(.T).15 G .689(urning this of)-6.139 F(f)-.25
+E .094(will mak)72 288 R 2.594(eC)-.1 G .094
+(rafty "quiet" when it plays, b)-2.594 F .094(ut also mak)-.2 F .095
+(es it easy to miss a mo)-.1 F .395 -.15(ve i)-.15 H 2.595(fy).15 G .095
+(ou are using crafty to play)-2.595 F(in a tournament.)72 300 Q
+(This is primarily designed to mak)5 E 2.5(eC)-.1 G
+(rafty tolerable during late night matches.)-2.5 E 4.656
+(2. analyze This)72 324 R 2.155(command puts crafty into analyze mode.)
+4.656 F 2.155(In this mode, Crafty starts computing for)7.155 F(whiche)
+72 336 Q -.15(ve)-.25 G 3.493(rs).15 G .993(ide is on mo)-3.493 F -.15
+(ve)-.15 G 3.493(,a).15 G .993(nd it continues computing and sho)-3.493
+F .994(wing its analysis until a mo)-.25 F 1.294 -.15(ve i)-.15 H 3.494
+(se).15 G(ntered.)-3.494 E .134(This mo)72 348 R .434 -.15(ve i)-.15 H
+2.634(sm).15 G .134(ade, Crafty changes sides, and starts thinking and \
+printing analysis all o)-2.634 F -.15(ve)-.15 G .934 -.4(r, b).15 H .133
+(ut for the other).2 F(side no)72 360 Q -.65(w.)-.25 G .215
+(This command is useful to play through a g)72 384 R .215
+(ame, because you get instant feedback when you try a mo)-.05 F -.15(ve)
+-.15 G 5.216(.I).15 G(f)-5.216 E .881(you w)72 396 R .881
+(ant to try a dif)-.1 F .881(ferent mo)-.25 F 1.181 -.15(ve f)-.15 H
+.881
+(rom the one you just entered, use the "back" command to back up one).15
+F(mo)72 408 Q -.15(ve)-.15 G 3.155(,o).15 G 3.155(ru)-3.155 G .655
+(se "back <n>" to back up <n> mo)-3.155 F -.15(ve)-.15 G 3.156(s. Note)
+.15 F .656(that one mo)3.156 F .956 -.15(ve i)-.15 H 3.156(sas).15 G
+.656(ingle mo)-3.156 F .956 -.15(ve f)-.15 H .656(or the last player).15
+F(,)-.4 E .192(not a mo)72 420 R .492 -.15(ve f)-.15 H .192
+(or both sides.).15 F 1.792 -.8(To u)5.192 H(nmak).8 E 2.692(et)-.1 G
+.192(he most recent 2 mo)-2.692 F -.15(ve)-.15 G 2.692(s\().15 G .192
+(one for black, one for white\) use "back 2".)-2.692 F 4.232
+(3. annotate|annotateh)72 444 R 1.732(<\214lename> <colors|name> <mo)
+4.232 F -.15(ve)-.15 G 1.733(s> <mar).15 F 1.733
+(gin> <time> This command is used to)-.18 F(annotate \(mak)72 456 Q 2.5
+(ec)-.1 G(omments in\) a g)-2.5 E(ame that has already been played.)-.05
+E .881(The annotate command produces a \214le with the .can e)72 480 R
+.881(xtension added to the original name.)-.15 F .881(This \214le will)
+5.881 F .358(contain pure ascii information from the annotation pass.)72
+492 R .358("annotateh" produces an HTML \214le instead \(with)5.358 F
+.98(the .html e)72 504 R 3.48(xtension\). This)-.15 F .979(includes the\
+ normal output, plus a nice bitmapped graphical board display for)3.48 F
+-2.15 -.25(ev e)72 516 T(ry position where crafty had ').25 E
+(something to say'.)-.55 E .423
+(<\214lename> is the name of the \214le that has the g)72 540 R .424
+(ame mo)-.05 F -.15(ve)-.15 G 2.924(ss).15 G .424(tored in it.)-2.924 F
+.424(This should be a PGN-compatible)5.424 F .756
+(\214le, although Crafty can read nearly an)72 552 R 3.255<798c>-.15 G
+.755(le with chess mo)-3.255 F -.15(ve)-.15 G 3.255(sa).15 G .755
+(nd con)-3.255 F -.15(ve)-.4 G .755(rt it to pgn using the "read" and)
+.15 F("sa)72 564 Q -2.25 -.15(veg a)-.2 H
+(me" commands to perform the con).15 E -.15(ve)-.4 G(rsion.).15 E .432
+(<colors|name> indicates which side Crafty will annotate.)72 588 R .432
+(The v)5.432 F .433(alid choices are w)-.25 F 2.933(,b)-.65 G 2.933(,a)
+-2.933 G .433(nd wb/bw for white)-2.933 F(only)72 600 Q 2.748(,b)-.65 G
+.248(lack only)-2.748 F 2.748(,a)-.65 G .248(nd both, respecti)-2.748 F
+-.15(ve)-.25 G(ly).15 E 5.248(.C)-.65 G .247
+(rafty will search and produce results for the indicated color only)
+-5.248 F(,)-.65 E(making mo)72 612 Q -.15(ve)-.15 G 2.5(sf).15 G
+(or the other side silently as the)-2.5 E 2.5(ya)-.15 G(re read in.)-2.5
+E(Alternati)72 636 Q -.15(ve)-.25 G(ly).15 E 2.797(,y)-.65 G .297
+(ou can specify the player')-2.797 F 2.797(sn)-.55 G .297
+(ame \(useful if you w)-2.797 F .297(ant to annotate se)-.1 F -.15(ve)
+-.25 G .297(ral of your o).15 F .298(wn g)-.25 F(ames)-.05 E 1.072
+(in one lar)72 648 R 1.072(ge pgn \214le, for e)-.18 F 1.072
+(xample, and you alternated colors so that you can')-.15 F 3.571(tp)-.18
+G 1.071(ick the right one easily\).)-3.571 F .741
+(Crafty will then \214gure out which side to annotate for in each g)72
+660 R 3.242(ame. Note)-.05 F .742(that the name is case-sensiti)3.242 F
+-.15(ve)-.25 G(,).15 E -.2(bu)72 672 S 2.557(tt).2 G .057
+(hat you only ha)-2.557 F .357 -.15(ve t)-.2 H 2.557(oe).15 G .057
+(nter a string that is unique in the name \214eld.)-2.557 F .056
+(IE if one name is "Anatoly Karpo)5.057 F(v")-.15 E .878
+(and the other is "unkno)72 684 R .878(wn" then specifying Karpo)-.25 F
+3.378(va)-.15 G 3.378(st)-3.378 G .878(he name w)-3.378 F .878
+(ould be suf)-.1 F 3.379(\214cient. If)-.25 F .879(the same ')3.379 F
+(string')-.55 E(appears in both names, Crafty will complain.)72 696 Q
+(<mo)72 720 Q -.15(ve)-.15 G .766(s> indicates the mo).15 F -.15(ve)-.15
+G 3.266(st).15 G .765(hat should be annotated.)-3.266 F .765
+(If this is a single inte)5.765 F(ger)-.15 E 3.265(,a)-.4 G .765
+(nnotation starts at this)-3.265 F EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(mo)72 96 Q 1.547 -.15(ve n)-.15 H 1.247
+(umber \(for the color gi).15 F -.15(ve)-.25 G 3.747(na).15 G(bo)-3.747
+E -.15(ve)-.15 G 3.747(\)a).15 G 1.248
+(nd proceeds for the rest of the g)-3.747 F 3.748(ame. If)-.05 F 3.748
+(ar)3.748 G 1.248(ange is gi)-3.748 F -.15(ve)-.25 G 1.248(n, as).15 F
+1.779(\(20-33\), then only mo)72 108 R -.15(ve)-.15 G 4.279(s2).15 G
+1.779(0-33 inclusi)-4.279 F 2.079 -.15(ve a)-.25 H 1.779(re annotated.)
+.15 F 3.379 -.8(To a)6.779 H 1.778(nnotate the complete g).8 F 1.778
+(ame, you can use)-.05 F(1-999.)72 120 Q(<mar)72 144 Q .94(gin> gi)-.18
+F -.15(ve)-.25 G 3.44(sas).15 G .94(core "windo)-3.44 F .94
+(w" that controls whether Crafty will produce comments \(see belo)-.25 F
+3.44(w\). The)-.25 F(lar)72 156 Q .062(ger this number this number)-.18
+F 2.562(,t)-.4 G .062(he fe)-2.562 F .062
+(wer annotations Crafty will produce.)-.25 F 2.562(An)5.062 G -2.25 -.15
+(eg a)-2.562 H(ti).15 E .362 -.15(ve n)-.25 H .061(umber will result in)
+.15 F(an annotation for e)72 168 Q -.15(ve)-.25 G(ry mo).15 E .3 -.15
+(ve s)-.15 H(elected.).15 E .683
+(<time> indicates the time limit for each search.)72 192 R .684
+(Since each mo)5.684 F .984 -.15(ve s)-.15 H .684(elected requires tw)
+.15 F 3.184(os)-.1 G .684(earches, you can)-3.184 F(tak)72 204 Q 3.04
+(et)-.1 G .54(he number of mo)-3.04 F -.15(ve)-.15 G .54
+(s, double this number and multiply by <time> to determine ho).15 F 3.04
+(wl)-.25 G .54(ong the annota-)-3.04 F(tion process will tak)72 216 Q
+2.5(e. This)-.1 F(time is in seconds.)2.5 E(Ho)72 240 Q 2.599(wi)-.25 G
+2.599(tw)-2.599 G 2.599(orks. Suppose)-2.699 F .099
+(you use the command "annotate g)2.599 F .1
+(ame1 w 1-999 1.000 30" This asks Crafty to read)-.05 F .596
+(the \214le "g)72 252 R .596(ame1", and annotate the white mo)-.05 F
+-.15(ve)-.15 G 3.096(sf).15 G .596(or the entire g)-3.096 F 3.096
+(ame. The)-.05 F(mar)3.096 E .596(gin is 1 pa)-.18 F .595
+(wn and the search)-.15 F .133(time limit is 30 seconds.)72 264 R .134(\
+The output for the annotate command is found in <\214lename>.can, in th\
+is case this)5.134 F(is g)72 276 Q(ame1.can.)-.05 E 2.022
+(Crafty \214rst searches the mo)72 300 R 2.322 -.15(ve a)-.15 H 2.022
+(ctually played in the g).15 F 2.022(ame to determine the score for it.)
+-.05 F 2.021(Crafty then)7.021 F .556(searches the same position, b)72
+312 R .556(ut tries all le)-.2 F -.05(ga)-.15 G 3.056(lm).05 G -.15(ove)
+-3.056 G 3.056(s. If).15 F .556(the score for the best mo)3.056 F .856
+-.15(ve f)-.15 H .556(ound in this search is).15 F .398
+(greater than the score for the mo)72 324 R .698 -.15(ve a)-.15 H .397
+(ctually played plus the mar).15 F .397
+(gin, then a comment is added to the output)-.18 F 2.708(\214le. This)72
+336 R .208(output \214le is quite short, with all the g)2.708 F .209
+(ame mo)-.05 F -.15(ve)-.15 G 2.709(s\().15 G .209(plus an)-2.709 F
+2.709(yP)-.15 G .209(GN tags in the original, for identi\214-)-2.709 F
+(cation purposes\) plus the brief comments.)72 348 Q
+(An annotation looks lik)5 E 2.5(et)-.1 G(his:)-2.5 E({real_v)72 372 Q
+(alue \(depth:best_v)-.25 E(alue PV mo)-.25 E -.15(ve)-.15 G(s\)}).15 E
+(real_v)72 396 Q 1.349(alue is the score for the mo)-.25 F 1.648 -.15
+(ve a)-.15 H 1.348(ctually played.).15 F 1.348
+(depth is the depth Crafty searched to produce the)6.348 F(best_v)72 408
+Q .547(alue and PV for what it thinks is the best sequence of mo)-.25 F
+-.15(ve)-.15 G 3.047(sf).15 G .547(or both sides.)-3.047 F .547
+(If you set <mar)5.547 F .547(gin> to)-.18 F .187
+(1.000, you are asking Crafty to only annotate mo)72 420 R -.15(ve)-.15
+G 2.687(st).15 G .187(hat either lost a pa)-2.687 F .187
+(wn or more, or mo)-.15 F -.15(ve)-.15 G 2.687(st).15 G .187(hat f)
+-2.687 F .187(ailed to)-.1 F .389(win a pa)72 432 R .389(wn or more.)
+-.15 F .389(If you set <mar)5.389 F .389
+(gin> to .300, you are asking for annotations for an)-.18 F 2.889(ym)
+-.15 G .689 -.15(ove t)-2.889 H .389(hat mak).15 F(es)-.1 E
+(the score drop about 1/3 of a pa)72 444 Q(wn belo)-.15 E 2.5(wt)-.25 G
+(he v)-2.5 E(alue for the best mo)-.25 E .3 -.15(ve C)-.15 H
+(rafty found.).15 E .184(If you ha)72 468 R .484 -.15(ve o)-.2 H .183
+(ther mo).15 F -.15(ve)-.15 G 2.683(sy).15 G .183(ou w)-2.683 F .183
+(ould lik)-.1 F 2.683(et)-.1 G 2.683(os)-2.683 G .183
+(ee analyzed during this annotate process, at the point where the)-2.683
+F(mo)72 480 Q .796 -.15(ve c)-.15 H .497(an be played, insert it into t\
+he PGN \214le as an analysis comment, surrounded by \(\) or {} characte\
+rs.).15 F .916(Crafty will produce analysis for this mo)72 492 R 1.215
+-.15(ve a)-.15 H 3.415(sw).15 G 3.415(ell. If)-3.415 F .915
+(more than one mo)3.415 F 1.215 -.15(ve a)-.15 H .915
+(ppears inside a single set of).15 F .397
+(delimiters, only the \214rst will be analyzed.)72 504 R 1.998 -.8(To f)
+5.398 H .398(orce Crafty to analyze more than one mo).8 F -.15(ve)-.15 G
+2.898(,e).15 G .398(nter them lik)-2.898 F(e)-.1 E 2.5(this: \(mo)72 516
+R -.15(ve)-.15 G(1\) \(mo).15 E -.15(ve)-.15 G(2\) as though the).15 E
+2.5(yw)-.15 G(ere tw)-2.5 E 2.5(os)-.1 G(eparate comments.)-2.5 E 3.659
+(4. ANSI)72 540 R(on|of)3.659 E 6.159(fT)-.25 G 1.158(his command is us\
+ed to control whether or not Crafty attempts to display its mo)-6.159 F
+1.458 -.15(ve i)-.15 H(n).15 E(re)72 552 Q -.15(ve)-.25 G 1.243
+(rse video or not.).15 F -.15(Fo)6.243 G 3.743(rP).15 G(C')-3.743 E
+1.243(s, Linux, and most Unix box)-.55 F 1.244(es, this w)-.15 F 1.244
+(orks \214ne.)-.1 F 1.244(Should you \214nd yourself)6.244 F .993(playi\
+ng crafty via a dumb terminal, this might hose the terminal and interfe\
+re with your ability to see or)72 564 R .428(input mo)72 576 R -.15(ve)
+-.15 G 2.928(s. If).15 F(mo)2.928 E -.15(ve)-.15 G 2.928(sa).15 G .428
+(re not displayed in re)-2.928 F -.15(ve)-.25 G .428(rse video, it').15
+F 2.928(sp)-.55 G .429(robably wise to turn this of)-2.928 F 2.929(ft)
+-.25 G 2.929(oa)-2.929 G -.2(vo)-3.129 G .429(id hang-).2 F
+(ing the terminal you are using.)72 588 Q 2.533(5. black|white This)72
+612 R .033(command simply toggles the side on mo)2.533 F -.15(ve)-.15 G
+5.033(.i).15 G 2.533(fi)-5.033 G 2.533(ti)-2.533 G 2.532(sw)-2.533 G
+.032(hite to mo)-2.532 F -.15(ve)-.15 G 2.532(,a).15 G .032
+(nd you enter white,)-2.532 F .46(nothing happens.)72 624 R .46
+(If it is white to mo)5.46 F .76 -.15(ve a)-.15 H .461
+(nd you enter black, then it becomes blacks turn to mo).15 F .761 -.15
+(ve i)-.15 H(mmedi-).15 E(ately from the same position.)72 636 Q
+(Used only infrequently)5 E(.)-.65 E 2.523(6. book)72 660 R .022
+(\(see the book e)2.523 F .022
+(xplanation near the end of this document for a full e)-.15 F .022
+(xplanation of this command and)-.15 F .53(its man)72 672 R 3.03(yo)-.15
+G 3.03(ptions.\) Note)-3.03 F .53(that there are special commands a)3.03
+F -.25(va)-.2 G .53(ilable \(*only* on the command line, *not* in).25 F
+1.004(the crafty)72 684 R 1.004(.rc/.craftyrc \214les\) to direct craft\
+y to speci\214c directories for the book \214les \(bookpath=/a/b/c\), t\
+he)-.65 F .808(tablebase \214les \(tbpath=/i/j/k\) and the log \214les \
+\(logpath=/x/y/z\).)72 696 R .808
+(Note that these commands can *only* be)5.808 F .376
+(used on the command line, because the)72 708 R 2.876(ym)-.15 G .376
+(ust be e)-2.876 F -.15(xe)-.15 G .376
+(cuted before the engine is initialized.).15 F .375(Putting them in)
+5.376 F(the crafty)72 720 Q
+(.rc/.craftyrc \214le will produce error messages without af)-.65 E
+(fecting ho)-.25 E 2.5(wt)-.25 G(he \214les are opened.)-2.5 E EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 8.002(If you need to specify multiple directori\
+es \(tbpath only\) you may do so by using)72 96 R 1.431
+("tbpath=path1:path2:path3:etc" or else use the more Unix- lik)72 108 R
+3.931(e")-.1 G 1.431(tbpath=\(path1:path2:path3:etc\)" instead.)-3.931 F
+1.048(The paths are separated by ":" \(colon\) characters and e)72 120 R
+-.15(ve)-.25 G 1.048(rything is case-sensiti).15 F 1.348 -.15(ve a)-.25
+H 3.548(su).15 G 3.548(sual. F)-3.548 F 1.048(or dos/win-)-.15 F(do)72
+132 Q
+(ws users, the separator can be a semi-color \(;\) or a comma\(,\) to a)
+-.25 E -.2(vo)-.2 G(id the dri).2 E .3 -.15(ve d)-.25 H
+(esignation ambiguity).15 E(.)-.65 E 3.078(7. cache=N This)72 156 R .577
+(command is used to alter the cache size used for endg)3.078 F .577
+(ame database probes.)-.05 F 3.077(Nc)5.577 G .577(an be a)-3.077 F .395
+(simple inte)72 168 R(ger)-.15 E 2.895(,r)-.4 G .395(epresenting the nu\
+mber of bytes to use or it can be speci\214ed as nK or nM representing \
+n *)-2.895 F 1.315(1024 bytes or n * 1024 * 1024 bytes.)72 180 R 1.315
+(This should be in multiples of the database "chunk" size, which)6.315 F
+(might v)72 192 Q(ary)-.25 E 5(.U)-.65 G
+(sing the nM form guarantees that you will ha)-5 E .3 -.15(ve a r)-.2 H
+(easonable number).15 E(.)-.55 E 2.632(8. clock)72 216 R .133
+(<ctime> <otime>)2.633 F .133(This command is primarily intended for us\
+e when Crafty is playing in a tourna-)5.133 F .531
+(ment, such as the WMCCC or WCCC e)72 228 R -.15(ve)-.25 G 3.031
+(nts. If).15 F .531(the operator is some)3.031 F .531(what slo)-.25 F
+3.031(wi)-.25 G 3.031(ne)-3.031 G .531(ntering mo)-3.031 F -.15(ve)-.15
+G .531(s, or for).15 F(-)-.2 E .026
+(gets to stop the clock after making a mo)72 240 R .326 -.15(ve f)-.15 H
+.026(or Crafty).15 F 2.526(,t)-.65 G .026(he chess clock for the g)
+-2.526 F .027(ame will drift from the v)-.05 F(alues)-.25 E .426
+(that Crafty maintains internally)72 252 R 5.426(.<)-.65 G .425(ctime> \
+is the time \(in minutes or hh:mm format\) crafty has left until the)
+-5.426 F(ne)72 264 Q .421(xt time control, and <otime> is the opponent')
+-.15 F 2.922(sr)-.55 G .422(emaining clock time.)-2.922 F .422
+(This command can be used at an)5.422 F(y)-.15 E .287(time, b)72 276 R
+.287(ut will only af)-.2 F .287(fect the time per mo)-.25 F .586 -.15
+(ve *)-.15 H .286(after* crafty mak).15 F .286(es the current mo)-.1 F
+.586 -.15(ve a)-.15 H .286(nd starts to think about).15 F
+(what the opponent might do ne)72 288 Q(xt.)-.15 E 4.108
+(9. computer This)72 312 R 1.608
+(command usually comes from xboard/winboard, b)4.108 F 1.608
+(ut can be used at an)-.2 F 4.108(yt)-.15 G 1.609(ime to tell)-4.108 F
+.746(Crafty it is playing a computer)72 324 R 5.746(.T)-.55 G .746
+(his will pre)-5.746 F -.15(ve)-.25 G .746
+(nt some things from happening, such as a dra).15 F 3.246(ws)-.15 G .746
+(core that)-3.246 F -.25(va)72 336 S
+(ries, as well as adjusting the book selection code to be more selecti)
+.25 E .3 -.15(ve i)-.25 H 2.5(nw).15 G(hat it plays.)-2.5 E 3.031
+(10. display this)72 360 R .531(command is used to display the g)3.031 F
+.531(ame board.)-.05 F .531(This board is displayed using the ICS style)
+5.531 F .229(#1 type of ASCII display)72 372 R 2.729(,w)-.65 G .229
+(ith white al)-2.729 F -.1(wa)-.1 G .228
+(ys at the bottom of the screen, black at the top.).1 F -1.11(Ve)5.228 G
+.228(ry unusable to)1.11 F(play a g)72 384 Q(ame with, b)-.05 E
+(ut good to v)-.2 E(erify a position after it has been set up.)-.15 E
+.857(This command is also used to display the v)72 408 R .858
+(arious piece/square tables, by typing "display <piece>" where)-.25 F
+.07(<piece> is replaced by pa)72 420 R .07
+(wn, knight, bishop, rook, queen or king.)-.15 F .069
+(The board is oriented in the same w)5.069 F .069(ay as)-.1 F .508(the \
+display board with a one-to-one correspondence between the squares.)72
+432 R .508(Perhaps useful for curiosity)5.508 F 3.008(,b)-.65 G(ut)
+-3.208 E(not for an)72 444 Q(ything else.)-.15 E(These v)5 E
+(alues can not be modi\214ed by the user)-.25 E(.)-.55 E 1.022
+(The \214nal v)72 468 R 1.022(ersion of this command is used to control\
+ what kind of output you will see when crafty runs.)-.15 F
+(Currently the follo)72 480 Q(wing options are a)-.25 E -.25(va)-.2 G
+(ilable.).25 E 1.066(display time:)113 504 R 1.067(this will mak)6.066 F
+3.567(eC)-.1 G 1.067(rafty display the amount of time each side tak)
+-3.567 F 1.067(es after making a)-.1 F(mo)108 516 Q -.15(ve)-.15 G(.).15
+E 1.058(display changes:)113 540 R 1.058(this will mak)6.058 F 3.558(eC)
+-.1 G 1.058
+(rafty display the PV each time it changes during the search,)-3.558 F
+(including when a mo)108 552 Q .3 -.15(ve f)-.15 H
+(ails high or becomes a ne).05 E 2.5(wb)-.25 G(est mo)-2.5 E -.15(ve)
+-.15 G(.).15 E .148(display v)108 576 R 2.648(ariation: this)-.25 F .149
+(will mak)2.649 F 2.649(eC)-.1 G .149
+(rafty display the PV at the end of each iteration, b)-2.649 F .149
+(ut it will only)-.2 F(sho)108 588 Q 2.5(wt)-.25 G
+(he best PV for the entire iteration, not all of the changes.)-2.5 E
+(display stats:)108 612 Q(this enables basic search statistics output i\
+ncluding time, nodes and so forth.)5 E .82(display e)108 636 R 3.32
+(xtstats: this)-.15 F .819(enables e)3.319 F .819
+(xtended search stats including the hashing statistics, search e)-.15 F
+(xten-)-.15 E(sion statistics and so forth.)108 648 Q .268(display mo)
+108 672 R -.15(ve)-.15 G .268(num: causes all PV output to ha).15 F .569
+-.15(ve m)-.2 H .569 -.15(ove n).15 H .269
+(umbers embedded in them to mak).15 F 2.769(et)-.1 G .269(he PV)-2.769 F
+.383(possibly easier to read.)108 684 R .383
+(This causes the PV to look lik)5.383 F 2.883(et)-.1 G 2.883(his: 12.)
+-2.883 F .382(... Nx)2.882 F .382(e4 13. Bx)-.15 F .382
+(e4 h6 rather than)-.15 F .484(simply Nx)108 696 R .484(e4 Bx)-.15 F
+.484(e4 h6.)-.15 F .484(This is v)5.484 F .484
+(ery helpful when playing on a serv)-.15 F .485
+(er and whispering or kibitzing)-.15 F 3.643(analysis. It)108 708 R
+1.142(will also be useful when crafty is run from within a database pro\
+gram as the mo)3.643 F -.15(ve)-.15 G
+(numbers will sync up with the actual g)108 720 Q(ame.)-.05 E EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .415(display mo)108 96 R -.15(ve)-.15 G 2.915
+(s: will).15 F .415(display each root mo)2.915 F .715 -.15(ve a)-.15 H
+2.915(si).15 G 2.915(ti)-2.915 G 2.915(ss)-2.915 G .415
+(earched, along with updating the search time)-2.915 F
+(at the bottom of the screen, so you can see what mo)108 108 Q .3 -.15
+(ve i)-.15 H 2.5(sc).15 G(urrently being analyzed.)-2.5 E 1.727
+(display general:)108 132 R 1.727
+(will display general information messages whene)6.727 F -.15(ve)-.25 G
+4.227(rC).15 G 1.726(rafty w)-4.227 F 1.726(ants to tell you)-.1 F
+(something \(ie "clearing hash tables" or other such things lik)108 144
+Q 2.5(e")-.1 G(Mate in n mo)-2.5 E -.15(ve)-.15 G(s.").15 E
+(If you put a "no" in front of an)72 168 Q 2.5(yo)-.15 G 2.5(ft)-2.5 G
+(hese options, that will disable that particular type of output.)-2.5 E
+2.818(11. dra)72 192 R 5.319(wo)-.15 G -.25(ff)-5.319 G .319
+(ers Crafty a dra).25 F 4.119 -.65(w. I)-.15 H 2.819(tg).65 G .319
+(enerally will look at the v)-2.819 F .319
+(alue returned by the last search, and compare)-.25 F .493
+(it with the v)72 204 R .493(alue returned by an internal function Dra)
+-.25 F 2.993(wScore\(\). If)-.15 F .493(the search v)2.993 F .492
+(alue is not abo)-.25 F .792 -.15(ve t)-.15 H .492(his result,).15 F
+.705(then Crafty will accept the dra)72 216 R 4.505 -.65(w. I)-.15 H
+3.205(ft).65 G .705(he search v)-3.205 F .705(alue is abo)-.25 F 1.005
+-.15(ve t)-.15 H .705(he theoretical v).15 F .706(alue for a dra)-.25 F
+2.006 -.65(w, C)-.15 H .706(rafty will).65 F .628(decline the dra)72 228
+R 4.428 -.65(w. N)-.15 H .628(ote that crafty will of).65 F .628
+(fer dra)-.25 F .628(ws based on internal analysis.)-.15 F .628
+(When it of)5.628 F .627(fers a dra)-.25 F 1.927 -.65(w, y)-.15 H(ou).65
+E(can respond with "dra)72 240 Q(w" although the g)-.15 E
+(ame does not really end until you e)-.05 E(xit Crafty)-.15 E(.)-.65 E
+2.977(12. dra)72 264 R .477(wscore N sets the dra)-.15 F 2.977(ws)-.15 G
+.477(core \(or contempt f)-2.977 F .477(actor\) to N.)-.1 F .477
+(If you w)5.477 F .477(ant crafty to a)-.1 F -.2(vo)-.2 G .477(id dra).2
+F .477(ws, set this)-.15 F .843(number to something that is ne)72 276 R
+-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 5.843(.I).15 G 3.343(E-)-5.843 G
+.843(50 says that a repetition \(dra)-3.343 F .842
+(w\) is the same as being 1/2 pa)-.15 F(wn)-.15 E(do)72 288 Q 3.415
+(wn. Setting)-.25 F .915(it to +100 will mak)3.415 F 3.416(ei)-.1 G
+3.416(tt)-3.416 G .916(ry v)-3.416 F .916(ery hard to dra)-.15 F 3.416
+(wb)-.15 G .916(ecause that looks lik)-3.416 F 3.416(ei)-.1 G 3.416(ti)
+-3.416 G 3.416(sw)-3.416 G .916(inning a pa)-3.416 F(wn)-.15 E .395
+(when it does so.)72 300 R .394(Note that this is dangerous \(either w)
+5.394 F .394(ay\) as a -50 in a king and pa)-.1 F .394(wn ending is v)
+-.15 F .394(ery lik)-.15 F(ely)-.1 E(dead lost...)72 312 Q
+(and a repetition is better)5 E(.)-.55 E 2.703(13. echo)72 336 R(<te)
+2.703 E 2.703(xt> This)-.15 F .203(command is normally used inside a co\
+mmand \214le that you are going to use to "feed")2.703 F .328
+(crafty some positions for analysis or whate)72 348 R -.15(ve)-.25 G
+3.928 -.55(r. S).15 H .328
+(ince crafty depends on the operating system to echo com-).55 F .546
+(mands as the)72 360 R 3.046(ya)-.15 G .547
+(re typed, commands read in from a \214le are "in)-3.046 F 3.047
+(visible." This)-.4 F(gi)3.047 E -.15(ve)-.25 G 3.047(sy).15 G .547
+(ou the ability to insert)-3.047 F .264(commands into such a \214le so \
+that crafty displays a message on the screen to gi)72 372 R .563 -.15
+(ve y)-.25 H .263(ou an idea of where it is).15 F
+(in processing the \214le.)72 384 Q 3.888(14. edit This)72 408 R 1.389
+(command has been "cloned" from GnuChess to pro)3.888 F 1.389
+(vide an interf)-.15 F 1.389(ace with Xboard.)-.1 F(After)6.389 E .402
+(entering the "edit" command, you are in "edit.white" mode, where an)72
+420 R 2.902(yp)-.15 G .402(iece/square combination you enter)-2.902 F
+1.18(will add the indicated white piece on the gi)72 432 R -.15(ve)-.25
+G 3.681(ns).15 G 3.681(quare. Piece/squares)-3.681 F 1.181
+(are entered as "qa3", or "bc4" for)3.681 F -.15(ex)72 444 S 2.904
+(ample. This).15 F .404
+(puts a white queen on a3 and a white bishop on c4.)2.904 F .403
+(Once all white pieces are entered, typ-)5.403 F .306(ing a "c" changes\
+ to "edit.black" mode where piece/square combinations no)72 456 R 2.807
+(wp)-.25 G .307(lace black pieces.)-2.807 F -.8(Ty)5.307 G .307(ping a)
+.8 F("." character e)72 468 Q(xits edit mode.)-.15 E 1.6 -.8(To c)5 H
+(lear the board initially).8 E 2.5(,y)-.65 G(ou use the "#" character)
+-2.5 E(.)-.55 E(Here')72 492 Q 3.541(sas)-.55 G 1.041(ample to set up t\
+he original starting position, after white has played 1. e4, b)-3.541 F
+1.04(ut no other mo)-.2 F -.15(ve)-.15 G(s).15 E(ha)72 504 Q .3 -.15
+(ve b)-.2 H(een played.).15 E(edit)77 528 Q(#)77 540 Q
+(ra1 nb1 bc1 qd1 k)77 552 Q(e1 bf1 ng1 rh1)-.1 E
+(pa2 pb2 pc2 pd2 pe4 pf2 pg2 ph2)77 564 Q(c)77 576 Q(ra8 nb8 bc8 qd8 k)
+77 588 Q(e8 bf8 ng8 rh8)-.1 E(pa7 pb7 pc7 pd7 pe7 pf7 pg7 ph7)77 600 Q
+(.)77 612 Q .246(Note that input is free form, so piece/squares can be \
+entered one per line or all on one line.)72 636 R .247(Ditto for the #,)
+5.247 F .206(c, and . special characters.)72 648 R .206
+(Note also that there is no w)5.206 F .205
+(ay to enter castling status here.)-.1 F .205(It is f)5.205 F .205
+(ar better to use)-.1 F .785
+(the "setboard" command which uses a FEN-lik)72 660 R 3.286(es)-.1 G
+.786(yntax and allo)-3.286 F .786
+(ws you to set both castling and enpassant)-.25 F(status.)72 672 Q 3.774
+(15. e)72 696 R 3.774(gtb This)-.15 F 1.274(command enables the endg)
+3.774 F 1.274(ame databases.)-.05 F 1.274
+(Crafty will use the "tbpath" directory \(if pro-)6.274 F 1.123
+(vided\) to locate and re)72 708 R 1.124
+(gister all of the databases you ha)-.15 F 1.424 -.15(ve d)-.2 H -.25
+(ow).15 G 3.624(nloaded. It).25 F 1.124(will report the lar)3.624 F
+1.124(gest class it)-.18 F 1.301
+(found, as in "5 piece tablebase \214les found" if you do)72 720 R 1.3
+(wnloaded at least one 5-piece \214le.)-.25 F 1.3(If you use this)6.3 F
+EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 1.233(command to enable databases, you should a\
+lso consider using the "cache" command to specify the e)72 96 R(gtb)-.15
+E(cache size.)72 108 Q 2.645(16. end|quit These)72 132 R .144
+(commands are used to terminate crafty)2.644 F 5.144(.N)-.65 G .144
+(ote that you can resume a g)-5.144 F .144(ame later without)-.05 F(ha)
+72 144 Q .748(ving to replay the mo)-.2 F -.15(ve)-.15 G .748
+(s, by starting Crafty using the "crafty c" command.).15 F .749
+(It will immediately read in)5.748 F .185(the mo)72 156 R -.15(ve)-.15 G
+2.685(sf).15 G .185(or the last g)-2.685 F .184
+(ame, although you will ha)-.05 F .484 -.15(ve t)-.2 H 2.684(os).15 G
+.184(et the time controls and clock time remaining your)-2.684 F(-)-.2 E
+(self.)72 168 Q 2.5(17. e)72 192 R -.25(va)-.25 G(luation option <v).25
+E 2.5(alue> This)-.25 F(command is used to modify the e)2.5 E -.25(va)
+-.25 G(luation scores.).25 E .69(The option "asymmetry" is used to mak)
+72 216 R 3.191(ec)-.1 G .691(rafty e)-3.191 F -.25(va)-.25 G .691
+(luate king safety dif).25 F .691(ferently for each side.)-.25 F("e)
+5.691 E -.25(va)-.25 G(luation).25 E .18(asymmetry 25" will increase th\
+e king safety scores for the opponent only)72 228 R 2.68(,m)-.65 G .18
+(eaning it will pay less attention)-2.68 F .762(to its o)72 240 R .763
+(wn king safety than to that of its opponent.)-.25 F .763(This will mak)
+5.763 F 3.263(ei)-.1 G 3.263(tp)-3.263 G .763(lay more aggressi)-3.263 F
+-.15(ve)-.25 G(ly).15 E 5.763(.")-.65 G -.25(eva)-5.763 G(luation).25 E
+.306(asymmetry -25" will reduce the king safety scores for for the oppo\
+nent by 25%, making it care more about)72 252 R(its o)72 264 Q
+(wn king safety than that of its opponent.)-.25 E(This will mak)5 E 2.5
+(ei)-.1 G 2.5(tp)-2.5 G(lay more defensi)-2.5 E -.15(ve)-.25 G(ly).15 E
+(.)-.65 E .117(The "bscale" option will adjust the scores for block)72
+288 R .118(ed pa)-.1 F 2.618(wns. The)-.15 F(def)2.618 E .118(ault v)-.1
+F .118(alue is 100.)-.25 F .118(Increasing this will)5.118 F 1.006
+(tend to mak)72 300 R 3.506(eC)-.1 G 1.006(rafty dislik)-3.506 F 3.506
+(eb)-.1 G(lock)-3.506 E 1.006(ed pa)-.1 F 1.005
+(wn positions more, which will lead to more open positions.)-.15 F(Note)
+6.005 E 1.271(that this only af)72 312 R 1.272(fects mo)-.25 F -.15(ve)
+-.15 G 3.772(s_).15 G 1.272(after_ the opening book has been follo)
+-3.772 F 1.272(wed, which means that the position)-.25 F(might be block)
+72 324 Q(ed before the e)-.1 E -.25(va)-.25 G
+(luation term has a chance to af).25 E(fect the g)-.25 E(ame.)-.05 E .73
+(The "kscale" option will adjust all king safety scores based on the ')
+72 348 R -.25(va)-.5 G .729(lue' entered.).25 F -.15(Fo)5.729 G 3.229
+(re).15 G .729(xample, "e)-3.379 F -.25(va)-.25 G(lua-).25 E .063(tion \
+kscale 50" will reduce all king safety scores to 50% of their normal v)
+72 360 R 2.563(alue. "e)-.25 F -.25(va)-.25 G .063
+(luation kscale 133" will).25 F
+(increase all king safety scores to 133% of their normal v)72 372 Q
+(alues.)-.25 E .095
+(The option "tropism" is used to scale king tropism scores.)72 396 R
+.094(This will attract pieces to)5.094 F -.1(wa)-.25 G .094(rd kings.).1
+F 2.594(Av)5.094 G .094(alue of)-2.844 F .535(100 means no change.)72
+408 R .535(other v)5.535 F .535(alues are treated as a percentage \(lik)
+-.25 F 3.036(es)-.1 G .536(cale\) to increase \(> 100\) or decrease)
+-3.036 F(\(<100\) the king tropism scores.)72 420 Q
+(When you use this command, you will see something lik)72 444 Q 2.5(et)
+-.1 G(his:)-2.5 E(modi\214ed king-safety v)72 468 Q(alues:)-.25 E 5
+(white: 0 4)72 480 R 2.5(16 26 39 45 58 77 87 90 93 96)5 F
+(100 103 106 109)2.5 E
+(112 116 119 122 125 128 128 128 128 128 128 128 128 128 128 128)89.5
+492 Q 5(black: 0 5)72 516 R 2.5(20 32 48 56 72 96)5 F
+(108 112 116 120 124 128 132 136)2.5 E
+(140 144 148 152 156 160 160 160 160 160 160 160 160 160 160 160)89.5
+528 Q .477(Those v)72 552 R .477(alues represent the king-safety e)-.25
+F -.25(va)-.25 G .476(luation as the king gets more and more e).25 F
+2.976(xposed. This)-.15 F .476(is al)2.976 F -.1(wa)-.1 G(ys).1 E .303
+(based on the f)72 564 R .304(ast that "crafty" will be the side on mo)
+-.1 F .604 -.15(ve w)-.15 H .304(hen the search starts.).15 F .304
+(In the abo)5.304 F -.15(ve)-.15 G 2.804(,i).15 G 2.804(tw)-2.804 G .304
+(as white')-2.904 F(s)-.55 E(mo)72 576 Q 1.196 -.15(ve w)-.15 H .896
+(hen this w).15 F .896
+(as typed, meaning that it appears that crafty will be playing black.)
+-.1 F .895(Notice that white')5.896 F(s)-.55 E .725
+(king safety numbers are scaled by 20% to mak)72 588 R 3.225(ei)-.1 G
+3.225(ts)-3.225 G .725(lightly more cautious about its o)-3.225 F .726
+(wn king.)-.25 F .726(If you type)5.726 F .789
+("go" in this position, the scores get re)72 600 R -.15(ve)-.25 G .788
+(rsed as Crafty').15 F 3.288(ss)-.55 G .788(cores are al)-3.288 F -.1
+(wa)-.1 G .788(ys left alone \(with the asymmetry).1 F
+(option\) and the opponent')72 612 Q 2.5(ss)-.55 G(cores are scaled do)
+-2.5 E(wn as indicated.)-.25 E -1.1(Yo)72 636 S 3.434(uw)1.1 G .934
+(ill see similar numbers \(b)-3.434 F .934(ut not black and white sets\
+\) that represent the actual scores produced for)-.2 F .72
+(king tropism.)72 648 R .72
+(Note that pieces interact to choose which element of this v)5.72 F .72
+(ector is used, b)-.15 F .72(ut in general, the)-.2 F
+(more pieces are close to the king, the lar)72 660 Q
+(ger the element from this array)-.18 E(.)-.65 E 1.064
+(The "pscale" option is used to scale normal pa)72 684 R 1.065
+(wn structure scoring in the same w)-.15 F 1.065
+(ay as the other scaling)-.1 F 2.5(options. 100)72 696 R(is the def)2.5
+E 2.5(ault. V)-.1 F(alues less than 100 reduce this term, v)-1.11 E
+(alues o)-.25 E -.15(ve)-.15 G 2.5(r1).15 G(00 in\215ate it.)-2.5 E
+1.651(The "ppscale" option is used to scale some passed pa)72 720 R 1.65
+(wn scoring in the same w)-.15 F 1.65(ay as the other scaling)-.1 F EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 3.127(options. 100)72 96 R .627(is the def)3.127
+F 3.127(ault. V)-.1 F .627(alues less than 100 reduce this term, v)-1.11
+F .627(alues o)-.25 F -.15(ve)-.15 G 3.127(r1).15 G .628
+(00 in\215ate it.)-3.127 F .628(This mainly)5.628 F(ef)72 108 Q .932
+(fects outside passed pa)-.25 F .932(wns/protected passed pa)-.15 F
+3.432(wns. The)-.15 F .931(normal pa)3.431 F .931
+(wn scoring computes the v)-.15 F .931(alue of a)-.25 F .711(passed pa)
+72 120 R 3.211(wn. This)-.15 F .711
+(term is then used to scale those terms that modify this v)3.211 F .711
+(alue further)-.25 F 3.211(,s)-.4 G .711(uch as tw)-3.211 F 3.212(oc)-.1
+G(on-)-3.212 E(nected passed pa)72 132 Q(wns on the 6th, or a passed pa)
+-.15 E(wn with the king supporting it in an endg)-.15 E(ame.)-.05 E 2.5
+(18. e)72 156 R(xtensions type v)-.15 E(alue)-.25 E 1.152
+(This command is used to control the e)72 180 R 1.152
+(xtension depth for the v)-.15 F 1.152(arious e)-.25 F 1.152
+(xtensions done in Crafty')-.15 F 3.651(ss)-.55 G(earch.)-3.651 E .206
+(The e)72 192 R .207(xtensions are set as decimel numbers that represen\
+t plies \(or fractions of plies\) to e)-.15 F .207(xtend for each par)
+-.15 F(-)-.2 E .933(ticular reason.)72 204 R .933(Most def)5.933 F .933
+(ault to 1.0 and .75, b)-.1 F .933(ut an)-.2 F 3.433(yv)-.15 G .932
+(alue can be used.)-3.683 F .932(Note that v)5.932 F .932
+(alue > 1.0 are _v)-.25 F(ery_)-.15 E .062(dangerous as the)72 216 R
+2.562(yc)-.15 G .062(an cause the search to become non-terminating \(cr\
+afty will stop when it runs out of time)-2.562 F(for the mo)72 228 Q
+-.15(ve)-.15 G 2.5(,b).15 G(ut it might not be able to get an)-2.7 E
+(ything useful from such a search\).)-.15 E .585(These e)72 252 R .585
+(xtensions are presently limited to a maximum of one ply of e)-.15 F
+.585(xtensions at an)-.15 F 3.084(yp)-.15 G .584(oint in the tree.)
+-3.084 F(IE)5.584 E(no matter what you set these v)72 264 Q
+(alues to, the)-.25 E 2.5(yc)-.15 G(an not e)-2.5 E
+(xceed one ply at present.)-.15 E 3.518(incheck This)72 288 R 1.019
+(is the amount to e)3.519 F 1.019(xtend when the side on mo)-.15 F 1.319
+-.15(ve m)-.15 H(ak).15 E 1.019(es a mo)-.1 F 1.319 -.15(ve t)-.15 H
+1.019(hat lea).15 F -.15(ve)-.2 G 3.519(st).15 G 1.019(he opponent in)
+-3.519 F 2.883(check. Note)72 300 R .383(that Crafty e)2.883 F .383
+(xtends on the ply where the check is played, not on the ne)-.15 F .383
+(xt ply where the oppo-)-.15 F(site side is in check.)72 312 Q 3.179
+(onerep This)72 336 R .679(is the one-reply-to-check e)3.179 F .68
+(xtensions, and is done at the point where one side is in check and)-.15
+F(has e)72 348 Q(xactly one le)-.15 E -.05(ga)-.15 G 2.5(lm).05 G .3
+-.15(ove t)-2.5 H 2.5(oe).15 G(scape from the check.)-2.5 E 2.5
+(pushpp This)72 372 R(is the e)2.5 E
+(xtension used for certain passed pa)-.15 E(wn pushes in the endg)-.15 E
+(ame.)-.05 E 2.744(recapture This)72 396 R .244(is the recapture e)2.744
+F .243(xtension, and is applied when the current mo)-.15 F .543 -.15
+(ve r)-.15 H .243(ecaptures an equal-v).15 F(alued)-.25 E .829
+(piece that made a capture at the pre)72 408 R .829(vious ply)-.25 F
+5.829(.I)-.65 G 3.329(EB)-5.829 G .829(xN, PxB.)-3.329 F .829
+(Note that this can only be applied once for)5.829 F -2.15 -.25(ev e)72
+420 T(ry tw).25 E 2.5(op)-.1 G(lies so that BxN, BxB, NxB, NxN w)-2.5 E
+(on')-.1 E 2.5(tl)-.18 G(ook lik)-2.5 E 2.5(et)-.1 G(hree recaptures.)
+-2.5 E 3.351(mate This)72 444 R .851(is the mate threat e)3.351 F .851
+(xtensions and is applied when a null mo)-.15 F 1.15 -.15(ve s)-.15 H
+.85(earch returns -MA).15 F .85(TED, which)-1.11 F .241
+(means that doing nothing gets the side on mo)72 456 R .542 -.15(ve m)
+-.15 H 2.742(ated. The).15 F .242(opponent must ha)2.742 F .542 -.15
+(ve s)-.2 H .242(ome sort of serious mate).15 F
+(threat in such a position.)72 468 Q 3.199(19. \215ag)72 492 R(on|of)
+3.199 E 5.699(fT)-.25 G .699
+(his command is used to force crafty to end a g)-5.699 F .699
+(ame where the opponent runs out of time)-.05 F
+(with winboard/xboard \(on\) or to ignore this \(of)72 504 Q
+(f\) if desired.)-.25 E 2.91(20. force)72 528 R([mo)2.91 E -.15(ve)-.15
+G 5.41(]T).15 G .41(his command is used to force Crafty to play a mo)
+-5.41 F .711 -.15(ve t)-.15 H .411(hat is dif).15 F .411
+(ferent from the one cho-)-.25 F .087
+(sen and played by the tree search.)72 540 R .087(If [mo)5.087 F -.15
+(ve)-.15 G 2.587(]i).15 G 2.587(sg)-2.587 G -2.15 -.25(iv e)-2.587 H
+.087(n, and it is a le).25 F -.05(ga)-.15 G 2.587(lm).05 G -.15(ove)
+-2.587 G 2.587(,C).15 G .086(rafty will retract its last mo)-2.587 F
+-.15(ve)-.15 G .521(and mak)72 552 R 3.021(et)-.1 G .521(his mo)-3.021 F
+.821 -.15(ve i)-.15 H 3.021(nstead. It).15 F .521
+(does not change the side on mo)3.021 F -.15(ve)-.15 G 3.021(,b).15 G
+.521(ut does change the position of course.)-3.221 F(If [mo)72 564 Q
+-.15(ve)-.15 G 2.5(]i).15 G 2.5(sn)-2.5 G(ot gi)-2.5 E -.15(ve)-.25 G
+(n, Crafty will prompt you for a mo).15 E .3 -.15(ve t)-.15 H 2.5(om).15
+G(ak)-2.5 E(e.)-.1 E 3.487(21. help This)72 588 R .987(command displays\
+ multiple pages of one-line help, one command per line.)3.487 F .986
+(If a line ends)5.986 F(with [help], then you can use help follo)72 600
+Q(wed by the speci\214c command to get detailed help.)-.25 E 3.055
+(22. history This)72 624 R .555(command displays the history in a v)
+3.055 F .555(ertical column with one mo)-.15 F .855 -.15(ve f)-.15 H
+.555(or white and one per).15 F .561(black per line.)72 636 R .561
+(There are other w)5.561 F .561(ays to display the current g)-.1 F .56
+(ame mo)-.05 F -.15(ve)-.15 G 3.06(sa).15 G .56(nd also to sa)-3.06 F
+.86 -.15(ve t)-.2 H .56(hem in \214les that).15 F(are e)72 648 Q
+(xplained later)-.15 E(.)-.55 E 3.428(23. hash=x)72 672 R .928
+(and hashp=x)3.428 F .928(These commands are used to adjust the size of\
+ the hash tables in Crafty)5.928 F 5.929(.h)-.65 G(ash)-5.929 E 1.591(m\
+odi\214es the size of the transposition/refutation table, while hashp m\
+odi\214es the size of the pa)72 684 R 1.59(wn struc-)-.15 F .92
+(ture/king safety hash table.)72 696 R .92
+(The sizes may be entered as one of the follo)5.92 F .92(wing tw)-.25 F
+3.42(ot)-.1 G .92(ypes of v)-3.42 F .92(alues: nnnK)-.25 F .053
+(where nnn is an inte)72 708 R .052(ger indicating ho)-.15 F 2.552(wm)
+-.25 G(an)-2.552 E 2.552(yK)-.15 G .052
+(bytes Crafty should use for this hash table; nnnM where nnn)-2.552 F
+(is an inte)72 720 Q(ger indicating ho)-.15 E 2.5(wm)-.25 G(an)-2.5 E
+2.5(yM)-.15 G(bytes Crafty should use.)-2.5 E EP
+%%Page: 9 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 1.511
+(The transposition/Refutation table is the most critical of the tw)72 96
+R 1.512(o, because it directly af)-.1 F 1.512(fects search ef)-.25 F
+<8c2d>-.25 E(cienc)72 108 Q 1.689 -.65(y, p)-.15 H .389
+(articularly in the endg).65 F 2.889(ame. F)-.05 F .389
+(or this reason this should be maximized.)-.15 F .388(The most ef)5.389
+F(fecti)-.25 E .688 -.15(ve s)-.25 H .388(ize for).15 F .043
+(this hash table is 3/4 of your a)72 120 R -.25(va)-.2 G .044
+(ilable memory).25 F 5.044(.I)-.65 G 2.544(fy)-5.044 G .044(ou don')
+-2.544 F 2.544(tk)-.18 G(no)-2.544 E 2.544(wh)-.25 G .544 -.25(ow t)
+-2.544 H 2.544<6f8c>.25 G .044(gure this out, b)-2.544 F .044(ut kno)-.2
+F 2.544(wt)-.25 G .044(hat you)-2.544 F(ha)72 132 Q .884 -.15(ve 1)-.2 H
+3.084(6m).15 G -.15(eg)-3.084 G 3.084(sf).15 G .583(or e)-3.084 F .583
+(xample, the)-.15 F 3.083(yy)-.15 G .583
+(ou can say hash=16M and crafty will round that do)-3.083 F .583
+(wn to 12M, which is)-.25 F .108(3/4 of a po)72 144 R .108(wer of tw)
+-.25 F 2.608(os)-.1 G 2.608(ize. If)-2.608 F .108(you study the sizes t\
+hat are possible, you will \214nd 3M, 6M, 12M, 24M, 48M,)2.608 F .423
+(and so forth.)72 156 R(An)5.423 E .423(ything up to, b)-.15 F .423
+(ut not including, the ne)-.2 F .423(xt size will be rounded do)-.15 F
+.423(wn to the ne)-.25 F .423(xt lo)-.15 F .423(wer size.)-.25 F .298
+(hashp should be set to approximately 1/2 of what is left.)72 168 R -.15
+(Fo)5.298 G 2.799(re).15 G .299
+(xample, the P6 Crafty runs on when playing)-2.949 F .071
+(on ICC often uses hash=48M and hashp=8M.)72 180 R .071
+(The only thing to w)5.071 F .07(atch for is that if you mak)-.1 F 2.57
+(et)-.1 G .07(his too lar)-2.57 F(ge,)-.18 E .029
+(particularly under windo)72 192 R .029(ws, performance will suf)-.25 F
+.029(fer badly because of paging I/O o)-.25 F -.15(ve)-.15 G 2.53
+(rhead. When).15 F .03(Crafty is)2.53 F .473
+(searching in a normal \(non-book, non-endg)72 204 R .473
+(ame database\) position, the disk light should *not* be on, indi-)-.05
+F(cating lots of I/O.)72 216 Q .493
+(There is no danger in making this table too lar)72 240 R .493
+(ge, although you ha)-.18 F .793 -.15(ve t)-.2 H 2.993(ow).15 G .494
+(atch out because if Crafty barely)-3.093 F .029(\214ts in memory)72 252
+R 2.529(,d)-.65 G .028
+(oing something else on the machine can cause Crafty to be sw)-2.529 F
+.028(apped out completely or par)-.1 F(-)-.2 E(tially)72 264 Q 3.106(,d)
+-.65 G .606(epending on the operating system you are using.)-3.106 F
+.606(If you are going to use the machine for an)5.606 F(ything)-.15 E
+.069(else while Crafty is running, it is better to "pretend" that the m\
+achine only has 1/2 of the memory it actually)72 276 R
+(does when computing the size of the hash tables you w)72 288 Q
+(ant to use.)-.1 E 3.207(24. import)72 312 R .707(<\214lename> [clear])
+3.207 F .708(This command is used to import an)5.707 F 3.208(ys)-.15 G
+.708(ort of learning data that Crafty sup-)-3.208 F 1.397(ports, which \
+currently includes book learning data and position learning data.)72 324
+R 1.397(This command reads the)6.397 F .899(appropriate <\214lename> an\
+d imports that learned data, just as though Crafty had learned it by pl\
+aying the)72 336 R -.05(ga)72 348 S 2.709(mes. The).05 F .209([clear] o\
+ption, if speci\214ed, caused all old learned results to be cleared bef\
+ore the import opera-)2.709 F(tion, otherwise the imported data is simp\
+ly added to what is already present.)72 360 Q 2.821(25. input)72 384 R
+2.821(<\214lename> This)2.821 F .321
+(command is used to redirect the console input I/O stream from the k)
+2.821 F -.15(ey)-.1 G .322(board to).15 F 2.831<618c>72 396 S 2.831
+(le. Crafty)-2.831 F .331
+(will then read commands from this \214le, rather than from the k)2.831
+F -.15(ey)-.1 G .33(board, and e).15 F -.15(xe)-.15 G .33
+(cute them just).15 F 1.667(as though the)72 408 R 4.167(yw)-.15 G 1.667
+(ere typed in.)-4.167 F 1.668
+(Such a command \214le *must* be terminated by an "e)6.667 F 1.668
+(xit" command \(no)-.15 F .906
+(quotes\) as the last command in the \214le.)72 420 R .906(This re)5.906
+F -.15(ve)-.25 G .906(rts the input stream back to the k).15 F -.15(ey)
+-.1 G .906(board, and prompts).15 F(you for another command or mo)72 432
+Q -.15(ve)-.15 G(.).15 E .186(This command might be used to con\214gure\
+ crafty for a speci\214c time control, by putting the appropriate time)
+72 456 R(control commands in the \214le, or to customize the hash table\
+ sizes as needed.)72 468 Q 2.95(26. info This)72 492 R .449
+(command is used to display information about Crafty and the current g)
+2.95 F 2.949(ame. Such)-.05 F .449(things as)2.949 F(the time control, \
+the time left on the clocks and other information is sho)72 504 Q(wn.)
+-.25 E 3.457(27. learn)72 528 R 3.457(nc)3.457 G .958
+(ontrols the learning f)-3.457 F .958(acilities in crafty)-.1 F 5.958
+(.C)-.65 G .958(urrently this is a 3-bit boolean switch,)-5.958 F .958
+(bit 1 \(001\))5.958 F 1.913(controls book learning, bit 2 \(010\) cont\
+rols position learning, and bit 3 \(100\) controls result learning.)72
+540 R 1.008
+(learn=0 disables all learning, learn=1 enables book learning only)72
+552 R 3.509(,l)-.65 G 1.009(earn=2 enables position learning only)-3.509
+F(,)-.65 E 1.325(and learn=4 enables result learning.)72 564 R 1.325
+(Add the v)6.325 F 1.325
+(alues together to turn on more than one type of learning)-.25 F(\(def)
+72 576 Q(ault=7 to enable e)-.1 E -.15(ve)-.25 G(rything\).).15 E 2.891
+(28. le)72 600 R -.15(ve)-.25 G 2.891(l<).15 G .391(m> <t> <inc>)-2.891
+F .391(This command w)5.391 F .391(as tak)-.1 F .392
+(en directly from GnuChess so that the Xboard/W)-.1 F(inBoard)-.4 E
+(interf)72 612 Q 1.405(ace w)-.1 F 1.405(ould interf)-.1 F 1.405
+(ace with Crafty)-.1 F 6.405(.T)-.65 G 1.405(here are other better w)
+-6.405 F 1.404(ays to set the time, b)-.1 F 1.404(ut this one is well-)
+-.2 F(kno)72 624 Q 2.707(wn. The)-.25 F .207
+(three parameters are <m> \(number of mo)2.707 F -.15(ve)-.15 G 2.707
+(si).15 G 2.707(nt)-2.707 G .207(he g)-2.707 F 2.707(ame\) <t>)-.05 F
+.208(initial time on the clock.)2.707 F(After)5.208 E .79(<m> mo)72 636
+R -.15(ve)-.15 G 3.29(sa).15 G .79
+(re made, this amount of time is added to the clock ag)-3.29 F 3.289
+(ain. <inc>)-.05 F .789(is the Fischer)3.289 F .789(-Clock incre-)-.2 F
+(ment that is added back to each clock after a mo)72 648 Q .3 -.15(ve i)
+-.15 H 2.5(sm).15 G 2.5(ade. It)-2.5 F
+(may be zero for a non-increment g)2.5 E(ame.)-.05 E(Examples:)72 672 Q
+(le)72 696 Q -.15(ve)-.25 G 22.5 2.5(l050 \().15 H(ICS 5 0 g)-2.5 E
+(ame\))-.05 E(le)72 708 Q -.15(ve)-.25 G 22.5 2.5(l053 \().15 H
+(ICS 5 3 g)-2.5 E(ame\))-.05 E(le)72 720 Q -.15(ve)-.25 G 2.5(l01).15 G
+2.5(53)-2.5 G 25(0\()-2.5 G(ICS 15 30 g)-25 E(ame\))-.05 E EP
+%%Page: 10 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 2.824(29. list)72 96 R 2.824(GM|IM|C|AK|S +name)
+2.824 F .324([+name ...] -name [-name ...])2.824 F .325
+(This command is used to maintain the inter)5.324 F(-)-.2 E .199(nal "l\
+ists" Crafty uses to auto-tune itself when playing on a chess serv)72
+108 R(er)-.15 E 5.199(.T)-.55 G .199(here are three lists, GM, IM and)
+-5.199 F 3.965(C. If)72 120 R(Crafty')3.965 E 3.965(so)-.55 G 1.465
+(pponent is in an)-3.965 F 3.965(yo)-.15 G 3.965(ft)-3.965 G 1.465
+(hese lists, Crafty adjusts internal controls that af)-3.965 F 1.466
+(fect ho)-.25 F 1.466(w/when it)-.25 F 1.422(resigns or of)72 132 R
+1.422(fers dra)-.25 F 1.422(ws, and ho)-.15 F 3.922(wr)-.25 G 1.422
+(andomly it will choose mo)-3.922 F -.15(ve)-.15 G 3.922(sf).15 G 1.422
+(rom the opening book.)-3.922 F -.15(Fo)6.421 G 3.921(re).15 G(xample,)
+-4.071 E 1.411(Crafty resigns much sooner ag)72 144 R 1.412
+(ainst a GM, because it assumes he kno)-.05 F 1.412(ws ho)-.25 F 3.912
+(wt)-.25 G 3.912(ow)-3.912 G 1.412(in a rook-up ending,)-3.912 F(re)72
+156 Q -.05(ga)-.15 G 1.694(rdless of ho).05 F 4.193(wm)-.25 G 1.693
+(uch time is left.)-4.193 F 1.693(By the same tok)6.693 F 1.693
+(en, when playing ag)-.1 F 1.693(ainst computers, Crafty will)-.05 F(al)
+72 168 Q -.1(wa)-.1 G .097(ys assume that a dra).1 F 2.597(wi)-.15 G
+2.597(s0)-2.597 G .097(.000, so that it doesn')-2.597 F 2.597(tw)-.18 G
+.098(reck its position trying to a)-2.597 F -.2(vo)-.2 G .098
+(id repeating a position.).2 F .322
+(The AK list will automatically kibitz scores/PV')72 192 R 2.822(si)-.55
+G 2.822(ft)-2.822 G .321(he opponent is in this list.)-2.822 F .321
+(The S list will turn on spe-)5.321 F
+(cial scoring for opponents in this list.)72 204 Q
+(The only current member is "mercilous".)5 E .209(The syntax +name1 +na\
+me2 simply adds these players to the speci\214ed list.)72 228 R 1.809
+-.8(To r)5.209 H(emo).8 E .509 -.15(ve a n)-.15 H .209(ame, use -name1)
+.15 F 3.078(-name2. Y)72 240 R .578
+(ou can use one command per name to remo)-1.1 F .878 -.15(ve o)-.15 H
+3.077(ra).15 G .577(dd, or you can use one command to add and)-3.077 F
+(remo)72 252 Q .708 -.15(ve m)-.15 H .408(ultiple names.).15 F .409
+(Note that all names must be entered in lo)5.408 F .409
+(wercase characters, using an)-.25 F 2.909(yu)-.15 G(ppercase)-2.909 E
+(characters will break the matching algorithm.)72 264 Q 2.741(30. log)72
+288 R(of)2.741 E 2.741(f|on|<n> This)-.25 F .241
+(command is used to disable logging.)2.741 F .24(The def)5.241 F .24
+(ault is log on, which causes crafty to)-.1 F .341(produce a ne)72 300 R
+2.841(wl)-.25 G .341(og.nnn \214le for each g)-2.841 F .341(ame played.)
+-.05 F .342(If you are running Crafty on a serv)5.341 F(er)-.15 E 2.842
+(,y)-.4 G .342(ou might use log)-2.842 F(of)72 312 Q .911
+(f, which disables creating these \214les as well as the g)-.25 F .91
+(ame.nnn \214les used to restart a g)-.05 F .91(ame after you e)-.05 F
+(xit)-.15 E .252(crafty and come back later)72 324 R 5.252(.I)-.55 G
+2.752(fy)-5.252 G .253(ou use the form "log n" crafty will simply displ\
+ay the last n lines of the log)-2.752 F .035(on the screen.)72 336 R
+.035(If you use "log n \214le" crafty will cop)5.035 F 2.535(yt)-.1 G
+.034(he last n lines of the log to "\214le" which could be your)-2.535 F
+(hard dri)72 348 Q -.15(ve)-.25 G 2.5(,o).15 G 2.5(ra\215)-2.5 G(opp)
+-2.5 E -.65(y.)-.1 G .325(Note that if you run with log of)72 372 R .325
+(f, you will be unable to \214nd out what Crafty w)-.25 F .326
+(as thinking about since there)-.1 F .567(is no other record of the g)72
+384 R 3.067(ame. Y)-.05 F .567(ou will al)-1.1 F -.1(wa)-.1 G .566
+(ys see a g).1 F .566(ame.001 because as crafty plays a g)-.05 F .566
+(ame, this con-)-.05 F .127(tains all the real mo)72 396 R -.15(ve)-.15
+G 2.628(sp).15 G .128(layed so f)-2.628 F .128
+(ar so that you can back up if needed.)-.1 F .128
+(you will also see a log.001 \214le, b)5.128 F(ut)-.2 E
+(it will be empty)72 408 Q(.)-.65 E 3.067(31. ls)72 432 R .567(<\214len\
+ame> will list all the \214les that match the \214lename wildcard \(the\
+ wildcards depend on the sys-)3.067 F .061(tem you are using, b)72 444 R
+.061(ut generally *, ? will w)-.2 F .061(ork \214ne.)-.1 F .062
+(you can also supply path information in the \214lename if)5.062 F .241
+(you w)72 456 R .241(ant to list the contents of a dif)-.1 F .241
+(ferent directory)-.25 F 5.241(.J)-.65 G .241
+(ust use the same syntax you w)-5.241 F .241(ould if you were using)-.1
+F("ls" under unix or "dir" under windo)72 468 Q(ws.)-.25 E 4.373
+(32. mode)72 492 R 4.374(tournament|normal This)4.373 F 1.874
+(command is primarily used to put Crafty into "tournament" mode,)4.374 F
+.085
+(which is intended for use when Crafty is playing in computer chess e)72
+504 R -.15(ve)-.25 G 2.584(nts. It).15 F .084(accomplishes tw)2.584 F
+2.584(ot)-.1 G 2.584(hings: \(1\))-2.584 F(mak)72 516 Q .261(es all dra)
+-.1 F .261(ws return a score of 0.000, and \(2\) mak)-.15 F .261
+(es crafty issue a message after each mo)-.1 F .561 -.15(ve s)-.15 H(ho)
+.15 E .262(wing the)-.25 F 1.026(internal chess clock time, and request\
+ing that that operator check and adjust as needed using the "clock")72
+528 R 3.415(command. This)72 540 R .915(primarily mak)3.415 F .915
+(es Crafty comply with computer chess rules that say the operator can')
+-.1 F 3.416(td)-.18 G(o)-3.416 E(an)72 552 Q
+(ything not speci\214cally requested by the program.)-.15 E 4.769
+(33. name)72 576 R 4.769(<name> This)4.769 F 2.268
+(command is an ICS-play speci\214c command.)4.769 F(Xboard/W)7.268 E
+2.268(inBoard uses this to)-.4 F .676(inform Crafty of the opponent')72
+588 R 3.176(sn)-.55 G 3.176(ame. Crafty)-3.176 F .676
+(uses the name, and looks it up in its GM/IM/C lists, and if)3.176 F
+1.369(found, adjusts itself accordingly)72 600 R 6.369(.T)-.65 G 1.368
+(his is not used by the PGN code and this will not cause the players)
+-6.369 F(<name> to sho)72 612 Q 2.5(wu)-.25 G 2.5(pi)-2.5 G 2.5(nt)-2.5
+G(he PGN tag section.)-2.5 E 3.207(34. ne)72 636 R 5.707(wT)-.25 G .707
+(his command wipes e)-5.707 F -.15(ve)-.25 G .707
+(rything out and starts a brand ne).15 F 3.207(wg)-.25 G 3.207(ame. It)
+-3.257 F .708(closes the old log-\214le and)3.207 F -.05(ga)72 648 S
+.865(me-\214le, and opens the ne).05 F .864
+(xt sequential numbered \214le.)-.15 F .864(It also resets the g)5.864 F
+.864(ame to the be)-.05 F .864(ginning and pre-)-.15 F .219
+(pares to start a brand ne)72 660 R 2.719(wg)-.25 G 2.719(ame. This)
+-2.769 F -.1(wa)2.719 G 2.719(sa).1 G .22(dded for Xboard, b)-2.719 F
+.22(ut it turns out that Xboard does not use this,)-.2 F 1.05
+(rather it starts Crafty fresh for each ne)72 672 R 3.55(wg)-.25 G 1.05
+(ame by \214rst terminating the old cop)-3.6 F 3.55(yt)-.1 G 1.05
+(hen starting a ne)-3.55 F 3.55(wo)-.25 G(ne.)-3.55 E .031
+(Not nearly as ef)72 684 R .031(\214cient as using "ne)-.25 F .031(w" b)
+-.25 F .031(ut lik)-.2 F .031(ely safer it a program can')-.1 F 2.531
+(tb)-.18 G 2.531(es)-2.531 G .031(ure of resetting e)-2.531 F -.15(ve)
+-.25 G .032(rything back).15 F(to the initial state.)72 696 Q 4.516
+(35. noise)72 720 R 4.516(<n> This)4.516 F 2.016
+(command sets the "noise" le)4.516 F -.15(ve)-.25 G 4.516(li).15 G 4.516
+(nC)-4.516 G(rafty)-4.516 E 7.015(.B)-.65 G(asically)-7.015 E 4.515(,u)
+-.65 G 2.015(ntil <n> nodes ha)-4.515 F 2.315 -.15(ve b)-.2 H(een).15 E
+EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF
+(searched, crafty will be silent and not display analysis.)72 96 Q .201
+(This is useful in tw)72 120 R 2.701(ow)-.1 G 2.701(ays. First,)-2.801 F
+.201(in end-g)2.701 F .201
+(ames, 20+ ply searches are not uncommon, and the search analy-)-.05 F
+.194(sis for the \214rst fe)72 132 R 2.694(wp)-.25 G .194(lies arri)
+-2.694 F -.15(ve)-.25 G 2.693(ss).15 G 2.693(oq)-2.693 G .193
+(uickly that it is distracting.)-2.693 F .193(Second, when observing g)
+5.193 F .193(ames \(ne)-.05 F 2.693(wi)-.25 G(nter)-2.693 E(-)-.2 E -.1
+(fa)72 144 S .587(ce only\) on ICS serv).1 F .587
+(ers, this can be used to a)-.15 F -.2(vo)-.2 G .587(id ha).2 F .587
+(ving Crafty generate too man)-.2 F 3.088(ya)-.15 G .588
+(nalysis kibitzes.)-3.088 F(A)5.588 E -.25(va)72 156 S 1.682
+(lue of 100000 will basically shut of).25 F 4.182(fa)-.25 G 1.982 -.15
+(ny o)-4.182 H 1.681
+(utput for the \214rst second or so \(on a P6/200\).).15 F(Similarly)
+6.681 E(,)-.65 E .325(1000000 will eliminate an)72 168 R 2.825(yo)-.15 G
+.326(utput for about the \214rst 10 seconds.)-2.825 F .326(When w)5.326
+F .326(atching and kibitzing g)-.1 F .326(ames lik)-.05 F(e)-.1 E .186
+(the W)72 180 R .186(orld Championship g)-.8 F .186(ames on ICC, I gene\
+rally use 5000000, which is almost one minute of silence so)-.05 F
+(that the \214rst PV it kibitzes is a pretty deep search.)72 192 Q .098
+(noise 0 will cause *all* analysis to be displayed, which on a f)72 216
+R .098(ast machine causes no problems.)-.1 F .098(On a slo)5.098 F(wer)
+-.25 E .621(machine, or o)72 228 R -.15(ve)-.15 G 3.121(ras).15 G(lo)
+-3.121 E 3.121(wp)-.25 G .621
+(hone connection, this might cause a big communication backlog.)-3.121 F
+.62(The def)5.62 F .62(ault is)-.1 F
+(roughly one second on a P6/200 \(100000\) b)72 240 Q
+(ut can be modi\214ed by this command.)-.2 E 2.792(36. operator)72 264 R
+2.792(<n> Another)2.792 F .293(command intended for use when Crafty is \
+playing in a tournament, operated by)2.792 F 2.68(ah)72 276 S 2.68
+(uman. This)-2.68 F .18
+(tells crafty to "hide" <n> minutes of time and not use them.)2.68 F .18
+(This time is basically allocated)5.18 F .465(to the operator to mak)72
+288 R 2.965(eu)-.1 G 2.965(pf)-2.965 G .465(or the time it tak)-2.965 F
+.466(es to type in mo)-.1 F -.15(ve)-.15 G 2.966(sa).15 G .466
+(nd/or correct mistak)-2.966 F 2.966(es. At)-.1 F .466(the WMCCC)2.966 F
+-2.15 -.25(ev e)72 300 T .529(nts, the normal v).25 F .529
+(alue we use is 5.)-.25 F .528(Playing on a serv)5.528 F(er)-.15 E 3.028
+(,t)-.4 G .528(his is not needed, as it is not needed if you are)-3.028
+F(playing Crafty yourself.)72 312 Q 3.067(37. perf This)72 336 R .568
+(command is primarily used in optimizing Crafty)3.067 F 3.068(,o)-.65 G
+3.068(rt)-3.068 G 3.068(ot)-3.068 G .568(est the speed of the mo)-3.068
+F .868 -.15(ve g)-.15 H(enerator).15 E .06(and Mak)72 348 R(eMo)-.1 E
+-.15(ve)-.15 G(\(\)/UnMak).15 E(eMo)-.1 E -.15(ve)-.15 G .06
+(\(\) on dif).15 F .059(ferent platforms.)-.25 F .059(It produces tw)
+5.059 F 2.559(or)-.1 G .059(esults, the mo)-2.559 F -.15(ve)-.15 G 2.559
+(si).15 G 2.559(tc)-2.559 G .059(an generate)-2.559 F .171
+(per second, and the mo)72 360 R -.15(ve)-.15 G 2.671(si).15 G 2.671(sc)
+-2.671 G .172(an generate and mak)-2.671 F(e/unmak)-.1 E 2.672(ep)-.1 G
+.172(er second.)-2.672 F .172(While this is not a perfect perfor)5.172 F
+(-)-.2 E .51(mance indicator)72 372 R 3.01(,i)-.4 G 3.01(td)-3.01 G .51
+(oes gi)-3.01 F .81 -.15(ve a)-.25 H 3.01(n").15 G .51
+(approximation" for ho)-3.01 F 3.01(wf)-.25 G .51(ast Crafty might run.)
+-3.11 F .51(In general, the higher the)5.51 F .29
+(numbers, the better the program will play)72 384 R 2.79(,a)-.65 G .29
+(lthough machines are certainly dif)-2.79 F 2.79(ferent. It')-.25 F 2.79
+(sn)-.55 G .29(ot uncommon to)-2.79 F
+(\214nd a machine that searches slo)72 396 Q(wer than another)-.25 E 2.5
+(,b)-.4 G(ut has a higher "perf" v)-2.7 E(alue.)-.25 E 3.072(38. perft)
+72 420 R 3.072(<depth> This)3.072 F .571
+(command is generally used to con\214rm that the mo)3.072 F .871 -.15
+(ve g)-.15 H .571(enerator and bitmap opera-).15 F .989(tors are w)72
+432 R .989(orking properly)-.1 F 5.989(.I)-.65 G 3.489(ts)-5.989 G .989
+(imply tak)-3.489 F .989(es the current position, and generates/mak)-.1
+F(es/unmak)-.1 E .99(es mo)-.1 F -.15(ve)-.15 G 3.49(sa).15 G(nd)-3.49 E
+.938(counts them.)72 444 R(Man)5.938 E 3.438(yp)-.15 G .938
+(rograms use this from a "standard" position to mak)-3.438 F 3.437(es)
+-.1 G .937(ure that their mo)-3.437 F 1.237 -.15(ve g)-.15 H(enerator)
+.15 E .703(does not miss generating odd mo)72 456 R -.15(ve)-.15 G 3.203
+(sl).15 G(ik)-3.203 E 3.204(ee)-.1 G .704
+(npassant/promotions and also to con\214rm that the mak)-3.204 F
+(e/unmak)-.1 E(e)-.1 E .267(code correctly updates the board so that th\
+e totals remain constant across dif)72 468 R .267
+(ferent machines and programs,)-.25 F .039
+(since there is no alpha/beta or e)72 480 R -.25(va)-.25 G .039
+(luation things done.).25 F .039
+(if <depth> is greater than 5 or 6, it will tak)5.039 F -5.038 2.539
+(ea *)-.1 H(long*)-2.539 E .416
+(time, since this is basically a minimax tree tra)72 492 R -.15(ve)-.2 G
+.416(rsal that will visit *e).15 F -.15(ve)-.25 G .416
+(ry* node within the <depth> search).15 F(horizon.)72 504 Q 2.668
+(39. pgn)72 528 R .169(<tag> <v)2.668 F 2.669(alue> This)-.25 F .169
+(command is used to set the usual PGN tags to meaningful v)2.669 F 2.669
+(alues. The)-.25 F(recog-)2.669 E .434(nized tags are Ev)72 540 R .433(\
+ent, Site, Round, Date, White, WhiteElo, Black, BlackElo, and Result, a\
+nd the tags *are*)-.15 F .01(case sensiti)72 552 R -.15(ve)-.25 G 5.01
+(.T).15 G .01(he <v)-5.01 F .01(alue> can be an)-.25 F 2.51(yv)-.15 G
+.011(alid input and blanks and special characters are allo)-2.76 F 2.511
+(wed. Note)-.25 F(that)2.511 E .615
+(the date is clearly speci\214ed in the PGN standard and must be yyyy)72
+564 R .614(.mm.dd with no v)-.65 F 3.114(ariance. V)-.25 F .614
+(alid results)-1.11 F(are 1-0 \(white w)72 576 Q(on\), 0-1 \(black w)-.1
+E(on\), 1/2-1/2 \(dra)-.1 E(wn\) and * \(unkno)-.15 E 2.5(wn\). Some)
+-.25 F -.15(ex)2.5 G(amples:).15 E(pgn Ev)72 600 Q(ent 14th W)-.15 E
+(orld MicroComputer Chess Championship)-.8 E(pgn Date)72 612 Q
+(1996.10.8)5 E(pgn Site)72 624 Q(Jakarta, Indonesia)5 E(pgn Round 1)72
+636 Q(pgn White Crafty)72 648 Q(pgn WhiteElo 2400)72 660 Q
+(pgn Black assassin)72 672 Q(pgn BlackElo 2400)72 684 Q(pgn Result 1-0)
+72 696 Q .528(Setting these v)72 720 R .528
+(alues will result in a proper PGN \214le when using the sa)-.25 F -2.25
+-.15(veg a)-.2 H .529(me command.).15 F .529(Note that if you)5.529 F EP
+%%Page: 12 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .972(use the "read" command to input a PGN g)72
+96 R .972(ame, these v)-.05 F .971(alues will be e)-.25 F .971
+(xtracted from that g)-.15 F .971(ame if the)-.05 F 3.471(ya)-.15 G(re)
+-3.471 E(gi)72 108 Q -.15(ve)-.25 G(n.).15 E 3.753(40. ponder)72 132 R
+(of)3.753 E(f|on|<mo)-.25 E -.15(ve)-.15 G 6.253(>T).15 G 1.253
+(his command serv)-6.253 F 1.253(es tw)-.15 F 3.753(op)-.1 G 3.753
+(urposes. First,)-3.753 F 1.253(it can be used to disable \(of)3.753 F
+1.254(f\) or)-.25 F 1.873(enable \(on\) thinking on the opponent')72 144
+R 4.373(st)-.55 G 1.872(ime \(or pondering as it is called in man)-4.373
+F 4.372(yp)-.15 G 1.872(rograms including)-4.372 F(Crafty)72 156 Q 3.911
+(.\) T)-.65 F 1.411(urning it of)-.45 F 3.911(fw)-.25 G 1.411(ill weak)
+-3.911 F 1.412(en Crafty since it will not use an)-.1 F 3.912(ym)-.15 G
+1.412(achine time while w)-3.912 F 1.412(aiting on the)-.1 F .286
+(opponent to mo)72 168 R -.15(ve)-.15 G 5.286(.I).15 G 2.786(ti)-5.286 G
+2.786(ss)-2.786 G .286(ometimes useful, ho)-2.786 F(we)-.25 E -.15(ve)
+-.25 G 1.086 -.4(r, w).15 H .286(hen playing Crafty ag).4 F .286
+(ainst another computer and the)-.05 F .912(machines are not equal.)72
+180 R .912(If crafty is on a f)5.912 F .913
+(aster machine, and you attempt to adjust for this by gi)-.1 F .913
+(ving the)-.25 F .283(opponent more time than Crafty)72 192 R 2.783(,i)
+-.65 G 2.783(td)-2.783 G(oesn')-2.783 E 2.783(tw)-.18 G .282
+(ork quite as e)-2.883 F .282
+(xpected, because while the opponent is thinking,)-.15 F .12
+(so is Crafty)72 204 R 2.62(,w)-.65 G .12(hich lets it use the e)-2.62 F
+.12(xtra opponent time in an une)-.15 F .12(xpected w)-.15 F(ay)-.1 E
+5.12(.I)-.65 G 2.62(ns)-5.12 G .12(uch a case, it')-2.62 F 2.62(sb)-.55
+G .12(est to stop)-2.62 F(pondering in both programs.)72 216 Q .836
+(If <mo)72 240 R -.15(ve)-.15 G 3.336(>i).15 G 3.336(sg)-3.336 G -2.15
+-.25(iv e)-3.336 H .835(n, it directs Crafty to use that <mo).25 F -.15
+(ve)-.15 G 3.335(>t).15 G 3.335(op)-3.335 G(onder)-3.335 E 3.335(,r)-.4
+G .835(ather than the one from the pre)-3.335 F(vious)-.25 E 2.755
+(search. Most)72 252 R .255(commonly this is used to set the right mo)
+2.755 F .555 -.15(ve t)-.15 H 2.755(op).15 G .256
+(onder after Crafty has been stopped and then)-2.755 F .284
+(restarted, assuming that it is the opponent')72 264 R 2.784(st)-.55 G
+.284(urn to mo)-2.784 F .584 -.15(ve w)-.15 H .284(hen this happens.).15
+F .284(Otherwise, it is probably bet-)5.284 F .228
+(ter to not try to in\215uence things, although if you are w)72 276 R
+.228(atching and suddenly w)-.1 F .228(onder "what w)-.1 F .228
+(ould Crafty do)-.1 F .305(if the opponent plays mo)72 288 R .605 -.15
+(ve ')-.15 H .305
+(X'?", you can answer this by simply typing "ponder X" and then w).15 F
+.305(atching the)-.1 F 2.5(analysis. Y)72 300 R
+(ou should reset the correct ponder mo)-1.1 E .3 -.15(ve a)-.15 H
+(fter you do this of course.).15 E 2.875(41. reset)72 324 R 2.875
+(<n> This)2.875 F .375(command lets you back up in the current g)2.875 F
+.376(ame to an)-.05 F 2.876(ym)-.15 G .676 -.15(ove o)-2.876 H 2.876(fy)
+.15 G .376(our choice.)-2.876 F .376(reset <n>)5.376 F .348
+(backs up the g)72 336 R .348(ame to mo)-.05 F .648 -.15(ve <)-.15 H
+.348(n> with the same side on mo).15 F -.15(ve)-.15 G 5.348(.I).15 G
+2.848(fy)-5.348 G .348(ou w)-2.848 F .347
+(ant to \214rst change the side to mo)-.1 F -.15(ve)-.15 G(,).15 E .183
+(use the white/black command, then use the reset command to back up to \
+the right mo)72 348 R -.15(ve)-.15 G 5.183(.N).15 G .183
+(ote that you can)-5.183 F(also go forw)72 360 Q
+(ard as well, just so there are mo)-.1 E -.15(ve)-.15 G 2.5(si).15 G 2.5
+(nt)-2.5 G(he current g)-2.5 E(ame history)-.05 E(.)-.65 E 3.045
+(42. resign)72 384 R 3.045(<n> This)3.045 F .545
+(command sets the resign threshold.)3.045 F .544
+(When running on ICC I typically use "resign 9")5.545 F .897
+(which will mak)72 396 R 3.397(ec)-.1 G .897(rafty resign roughly \214v)
+-3.397 F 3.397(em)-.15 G -.15(ove)-3.397 G 3.397(sa).15 G .897
+(fter the score drops belo)-3.397 F 3.397(w-)-.25 G 3.397(9.000. F)
+-3.397 F .897(or IM')-.15 F -5.896 3.397(sI c)-.55 H(hange)-3.397 E .286
+(this to 6, and for GM')72 408 R 2.786(sIo)-.55 G .286
+(ften use 3, so that it will resign quick)-2.786 F .285
+(er and not drag a lost g)-.1 F .285(ame out unnecessar)-.05 F(-)-.2 E
+(ily)72 420 Q(.)-.65 E 2.653(43. read/reada)72 444 R 2.653
+([<\214lename>] This)2.653 F .154(command will read input, and e)2.653 F
+.154(xtract the chess mo)-.15 F -.15(ve)-.15 G 2.654(sa).15 G .154
+(nd mak)-2.654 F 2.654(et)-.1 G .154(hem to)-2.654 F .722
+(set up the position at the end of the g)72 456 R 3.221(ame. It)-.05 F
+.721(\214rst resets the chess board to the initial position \(read com-)
+3.221 F .409(mand only\) and then e)72 468 R .409
+(xtracts the PGN tags \(if present\) from the front of the input.)-.15 F
+.41(The rest of the input is)5.41 F .029(parsed for chess mo)72 480 R
+-.15(ve)-.15 G 2.529(s\().15 G .029
+(comments and similar things are culled automatically\) and the mo)
+-2.529 F -.15(ve)-.15 G 2.528(sa).15 G .028(re made and)-2.528 F .646
+(added to the g)72 492 R .646(ame history)-.05 F 5.646(.O)-.65 G .646
+(nce this is done, you can back up, go forw)-5.646 F .646
+(ard, or play from an)-.1 F 3.147(yp)-.15 G .647(oint in the)-3.147 F
+-.05(ga)72 504 S 3.388(me. If).05 F .888(you specify a <\214lename> e)
+3.388 F -.15(ve)-.25 G .887
+(rything is read from the \214le, otherwise it is read from the console)
+.15 F -.1(ke)72 516 S(yboard.)-.05 E .32(The reada command reads mo)72
+540 R -.15(ve)-.15 G .32(s, b).15 F .321
+(ut appends them to the current g)-.2 F .321
+(ame history/ position rather than reset-)-.05 F .535
+(ting to the initial chess position.)72 552 R .535
+(This lets you read in a g)5.535 F .535
+(ame, then use reada to manually add some more)-.05 F(mo)72 564 Q -.15
+(ve)-.15 G 2.5(st).15 G 2.5(os)-2.5 G(ee the resulting position.)-2.5 E
+3.388(44. sa)72 588 R -2.25 -.15(veg a)-.2 H .888(me <\214lename>).15 F
+.889(This command is used to sa)5.888 F 1.189 -.15(ve t)-.2 H .889
+(he current g).15 F .889(ame in a PGN-compliant \214le with)-.05 F .469
+(the PGN tags included.)72 600 R .469(Note that the def)5.469 F .469
+(ault T)-.1 F 1.269 -.4(AG v)-.93 H .469(alues might not be what you w)
+.15 F .469(ant if you do not either)-.1 F
+(use the pgn command to set them or else input a v)72 612 Q
+(alid PGN \214le with the tags already \214lled in.)-.25 E .167(Be a)72
+636 R -.1(wa)-.15 G .167(re that this command doesn').1 F 2.667(tc)-.18
+G .168(heck the \214lename for le)-2.667 F -.05(ga)-.15 G .168
+(lity since an).05 F .168(ything goes in UNIX.)-.15 F .168(In DOS,)5.168
+F .906(you might produce a bad \214lename with either too man)72 648 R
+3.406(yc)-.15 G .906(haracters, too man)-3.406 F 3.406(yp)-.15 G .906
+(eriods, or whate)-3.406 F -.15(ve)-.25 G 1.705 -.4(r, s).15 H 3.405(ob)
+.4 G(e)-3.405 E .25(careful with the name you choose.)72 660 R .25
+(Note also that this \214le will be o)5.25 F -.15(ve)-.15 G .251
+(rwritten if it already e).15 F .251(xists, so be sure)-.15 F(to choose\
+ a name that is not the name of a \214le that has something you conside\
+r important in it.)72 672 Q 3.625(45. sa)72 696 R -.15(ve)-.2 G 1.125
+(pos <\214lename>).15 F 1.124
+(This command writes a single line into <\214lename> in FEN-lik)6.125 F
+3.624(en)-.1 G 3.624(otation. This)-3.624 F 1.119(lets you sa)72 708 R
+1.419 -.15(ve a p)-.2 H 1.119(osition, and then come back later to re-e)
+.15 F 1.12(xamine it.)-.15 F -1.1(Yo)6.12 G 3.62(uw)1.1 G 1.12
+(ould use the "in <\214lename>")-3.72 F
+(command to input this \214le and set the position up.)72 720 Q EP
+%%Page: 13 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 3.382(46. search)72 96 R(<mo)3.382 E -.15(ve)
+-.15 G 5.882(>T).15 G .882(his command allo)-5.882 F .882
+(ws you to specify one particular mo)-.25 F 1.182 -.15(ve f)-.15 H .881
+(or the side on mo).15 F -.15(ve)-.15 G 3.381(,a).15 G(nd)-3.381 E .574
+(then when you tell Crafty to search this position, this is the only mo)
+72 108 R .875 -.15(ve t)-.15 H .575(hat will be searched.).15 F .575
+(This is used)5.575 F .763(internally by the annotate command, b)72 120
+R .763(ut can be used to in)-.2 F -.15(ve)-.4 G(stig).15 E .763
+(ate one speci\214c mo)-.05 F -.15(ve)-.15 G 5.763(.I).15 G 3.262(ft)
+-5.763 G .762(he mo)-3.262 F 1.062 -.15(ve i)-.15 H 3.262(sn).15 G(ot)
+-3.262 E .176(the best mo)72 132 R -.15(ve)-.15 G 2.676(,an).15 G .176
+(ormal search w)-2.676 F(on')-.1 E 2.676(ts)-.18 G(ho)-2.676 E 2.676(wy)
+-.25 G .176(ou wh)-2.676 F 2.676(yi)-.05 G 2.676(ti)-2.676 G 2.676(sb)
+-2.676 G .176(ad, b)-2.676 F .176(ut this will.)-.2 F .176
+(It is also quite a bit f)5.176 F .177(aster since)-.1 F(the other mo)72
+144 Q -.15(ve)-.15 G 2.5(si).15 G 2.5(nt)-2.5 G
+(he position are not searched at all.)-2.5 E 3.95(47. settc)72 168 R
+(<mo)3.95 E -.15(ve)-.15 G 1.45(s> <ctime> <otime>).15 F 1.45
+(This command is primarily used in tournaments, and is an error)6.45 F
+(-)-.2 E(reco)72 180 Q -.15(ve)-.15 G .459(ry command.).15 F .459
+(If the machine crashes and corrupts the g)5.459 F .46
+(ame history \214le, frequently the operator will)-.05 F(ha)72 192 Q
+.634 -.15(ve t)-.2 H 2.834(os).15 G .333(imply set the position using t\
+he setboard command, and then use the settc command to restore the)
+-2.834 F .996(time control v)72 204 R 3.496(alues. <mo)-.25 F -.15(ve)
+-.15 G .996(s> is mo).15 F -.15(ve)-.15 G 3.497(su).15 G .997
+(ntil the ne)-3.497 F .997(xt time control \(from Crafty')-.15 F 3.497
+(sp)-.55 G(erspecti)-3.497 E -.15(ve)-.25 G 3.497(,b).15 G 3.497(ec)
+-3.497 G(areful)-3.497 E .84(and don')72 216 R 3.34(tl)-.18 G .84
+(ook at the opponent')-3.34 F 3.34(sm)-.55 G -.15(ove)-3.34 G 3.34(st)
+.15 G 3.34(ot)-3.34 G .84(ime control by accident.\))-3.34 F .84
+(<ctime> is minutes left on Crafty')5.84 F(s)-.55 E
+(clock, <otime> is minutes left on the opponent')72 228 Q 2.5(sc)-.55 G
+(lock.)-2.5 E 3.533(48. setboard)72 252 R 1.033(<FEN input>)3.533 F
+1.034(This command is used to set a chess position up for analysis and \
+is the pre-)6.033 F .65(ferred w)72 264 R .65
+(ay to do this, rather than using the gnu EDIT interf)-.1 F 3.149
+(ace. It)-.1 F .649(uses a classic F)3.149 F(orsythe-lik)-.15 E 3.149
+(en)-.1 G .649(otation to)-3.149 F(encode the position and also has pro)
+72 276 Q(visions for castling status and enpassant capture status.)-.15
+E .678(the standard piece codes p,n,b,r)72 300 R .679
+(,q,k are used to denote the type of piece on a square, upper/lo)-.4 F
+.679(wer case are)-.25 F
+(used to indicate the color of the piece \(uppercase=white pieces, lo)72
+312 Q(wercase=black pieces\).)-.25 E .145
+(the pieces are entered from the classic chess diagram')72 336 R 2.645
+(so)-.55 G .145(rientation of a8 being the upper)-2.645 F .145
+(-left-hand corner of)-.2 F .6
+(the board, and this square is entered \214rst, follo)72 348 R .6
+(wed by the remainder of the 8th rank left to right.)-.25 F 2.2 -.8
+(To i)5.6 H(ndi-).8 E .195
+(cate empty squares, use a number between 1 and 8 to indicate ho)72 360
+R 2.695(wm)-.25 G(an)-2.695 E 2.695(ya)-.15 G .195
+(djacent squares are empty)-2.695 F 5.195(.u)-.65 G .195(se a)-5.195 F
+2.678(/t)72 372 S 2.678(ot)-2.678 G .178
+(erminate each rank after all of the pieces for that rank ha)-2.678 F
+.478 -.15(ve b)-.2 H .178(een entered.).15 F .179
+(Note that you do not ha)5.178 F .479 -.15(ve t)-.2 H(o).15 E
+(account for all 8 squares on a gi)72 384 Q -.15(ve)-.25 G 2.5(nr).15 G
+(ank, although man)-2.5 E 2.5(yt)-.15 G(est suites do this for clarity)
+-2.5 E(.)-.65 E(the follo)72 408 Q
+(wing input will setup the board position that gi)-.25 E -.15(ve)-.25 G
+2.5(nb).15 G(elo)-2.5 E(w:)-.25 E(k2r/ppp////Q/5PPP/7K/ B)87 432 Q(this\
+ assumes that k represents a white king and -q represents a black queen\
+.)72 456 Q 2.5(-k * *)127 480 R 2.5(-r * * * *)2.5 F(-p -p -p)127 492 Q
+5(*****)5 G 5(********)129.5 504 S 5(********)129.5 516 S 5(********)
+129.5 528 S 5(q*******)129.5 540 S 5(*****ppp)129.5 552 S 5(*******k)
+129.5 564 S 3.153(*t)259.5 576 S .653
+(he \214eld after the \214nal "/" should be either b or w to indi-)
+-3.153 F .927(cate which side is "on mo)72 588 R -.15(ve)-.15 G 3.427
+(." after).15 F .927(this side-to-mo)3.427 F 1.227 -.15(ve \214)-.15 H
+.927(eld an).15 F 3.427(yo)-.15 G 3.427(ft)-3.427 G .927(he follo)-3.427
+F .927(wing characters can appear to)-.25 F .776(indicate the follo)72
+600 R 3.276(wing: KQ:)-.25 F .775
+(white can castle king-side/queen-side/both;)3.276 F .775
+(kq: same for black;)5.775 F .775(a1-h8: indi-)5.775 F
+(cates the square occupied by a pa)72 612 Q
+(wn that can be captured enpassant.)-.15 E 3.815(49. score This)72 636 R
+1.315(command simply gi)3.815 F -.15(ve)-.25 G 3.815(st).15 G 1.316
+(he positional score for the current position.)-3.815 F 1.316
+(This score is from)6.316 F .367(whites perspecti)72 648 R -.15(ve)-.25
+G 2.867(,s).15 G 2.867(oa+)-2.867 G .366
+(score is good for white, a - score is good for black.)-.001 F .366
+(Crafty also breaks the score)5.366 F(do)72 660 Q 2.169
+(wn into major cate)-.25 F 2.169(gories \(from Ev)-.15 F 2.169
+(aluate\(\)\) to indicate things lik)-.25 F 4.669(ep)-.1 G -.15(aw)
+-4.669 G 4.67(ns).15 G 2.17(tructure, piece e)-4.67 F -.25(va)-.25 G
+(luation,).25 E .802(passed pa)72 672 R .802(wns, de)-.15 F -.15(ve)-.25
+G .802(lopment, and so forth.).15 F .801(Note that some of Crafty')5.801
+F 3.301(se)-.55 G -.25(va)-3.551 G .801
+(luation is asymmetric, so that if).25 F .227(you simply change sides w\
+ith the white/black command and then enter "score" ag)72 684 R .227
+(ain, you may get a dif)-.05 F(fer)-.25 E(-)-.2 E(ent v)72 696 Q 2.5
+(alue. This)-.25 F(is *not* a b)2.5 E 2.5(ug. :\))-.2 F 2.724(50. sd)72
+720 R 2.724(<n> This)2.724 F .224(command lets you specify a speci\214c\
+ search depth limit that Crafty can not e)2.724 F 2.723(xceed. It)-.15 F
+(still)2.723 E EP
+%%Page: 14 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .114(pays attention to the clock, ho)72 96 R(we)
+-.25 E -.15(ve)-.25 G .914 -.4(r, s).15 H 2.614(oo).4 G .115
+(ften you will use the st <n> command \(belo)-2.614 F .115
+(w\) in conjunction with)-.25 F .262(this if the search is going to tak)
+72 108 R 2.762(ea)-.1 G 2.761(ne)-2.762 G .261(xtended amount of time.)
+-2.911 F .261(<n> is the depth \(in plies or 1/2 mo)5.261 F -.15(ve)-.15
+G .261(s\) that).15 F 1.305(the search must reach.)72 120 R 1.305(Note \
+that if Crafty is pondering, it still honors this limit and will stop a\
+ ponder)6.305 F 1.281
+(search after this depth has been completed as well.)72 132 R 1.281
+(This is *not* the w)6.281 F 1.281(ay to mak)-.1 F 3.781(eC)-.1 G 1.281
+(rafty play weak)-3.781 F(er)-.1 E(,)-.4 E(although this will be co)72
+144 Q -.15(ve)-.15 G(red in a later section of this document.).15 E
+3.017(51. sho)72 168 R 3.017(w<)-.25 G(cate)-3.017 E 3.017(gory> This)
+-.15 F .518(command forces Crafty to display additional information abo\
+ut certain actions)3.017 F .428(it tak)72 180 R 2.928(es. Currently)-.1
+F .428(the only <cate)2.928 F .428(gory> is "book" which will mak)-.15 F
+2.927(ec)-.1 G .427(rafty display information about all the)-2.927 F
+.923(book mo)72 192 R -.15(ve)-.15 G 3.423(si).15 G 3.423(tf)-3.423 G
+.923(ound in the database.)-3.423 F .923(More is gi)5.923 F -.15(ve)-.25
+G 3.423(na).15 G .924
+(bout this information in the BOOK section later in)-3.423 F
+(this \214le.)72 204 Q 2.806(52. smpmt=n This)72 228 R .306(command is \
+used to set the number of threads to use on a machine with more than on\
+e)2.806 F(processor)72 240 Q 6.46(.F)-.55 G 1.46(or optimal performance\
+, "n" should be set to the number of processors you ha)-6.61 F -.15(ve)
+-.2 G 3.96(,a).15 G(lthough)-3.96 E .147(using fe)72 252 R .147
+(wer will reduce the load on your machine.)-.25 F -.15(Fo)5.147 G 2.647
+(rt).15 G .147(his command to w)-2.647 F .146(ork, Crafty must ha)-.1 F
+.446 -.15(ve b)-.2 H .146(een com-).15 F .172(piled with SMP de\214ned.)
+72 264 R .173(When compiled with SMP enabled, mt=0 ef)5.172 F(fecti)-.25
+E -.15(ve)-.25 G .173(ly disables the SMP code com-).15 F(pletely)72 276
+Q(.)-.65 E .718(This command also has tw)72 300 R 3.218(ot)-.1 G .717
+(hat are closely related.)-3.218 F .717(smpmin and smpmax.)5.717 F .717
+(Both accept single numerical)5.717 F(ar)72 312 Q 3.333(guments. smpmin)
+-.18 F .833(is used to control the minimum tree depth required at a nod\
+e for it to be eligible for)3.333 F .356(parallel searching.)72 324 R
+.356(IE smpmin 2 says don')5.356 F 2.855(ts)-.18 G .355
+(plit unless at least tw)-2.855 F 2.855(om)-.1 G .355
+(ore plies are left to search belo)-2.855 F 2.855(wt)-.25 G(his)-2.855 E
+2.569(node. smpmax)72 336 R .069
+(sets the maximum for the same idea, is smpmax 10 says don')2.569 F
+2.569(ts)-.18 G .069(plit if more than 10 plies are)-2.569 F
+(remaining belo)72 348 Q 2.5(wt)-.25 G(his node.)-2.5 E 3.164(53. sn)72
+372 R 3.164(<n> This)3.164 F .664
+(command is similar to the sd command, b)3.164 F .663
+(ut instead of setting a speci\214c search depth, it)-.2 F .53
+(sets a number of nodes to search.)72 384 R .531
+(Once the search has searched this number of nodes \(+ maybe one more)
+5.53 F(second of searching to check the time\) the search will e)72 396
+Q(xit.)-.15 E 3.41(54. st)72 420 R 3.41(<n> This)3.41 F .91
+(command lets you specify a speci\214c search time limit for Crafty)3.41
+F 5.909(.A)-.65 G -.05(ga)-5.909 G .909(in, this is not the).05 F .241
+(preferred w)72 432 R .241(ay to set a time per mo)-.1 F -.15(ve)-.15 G
+2.741(,b).15 G .241(ecause this limit is absolute and Crafty will ne)
+-2.741 F -.15(ve)-.25 G 2.741(rg).15 G 2.741(oo)-2.741 G -.15(ve)-2.891
+G 2.741(rt).15 G .241(his limit,)-2.741 F -2.15 -.25(ev e)72 444 T 3.436
+(ni).25 G 3.436(fi)-3.436 G 3.436(ts)-3.436 G .936
+(ees that it is losing or getting mated.)-3.436 F .935
+(Setting the time control with the usual "time" or "le)5.935 F -.15(ve)
+-.25 G(l").15 E .696(command is *much* better)72 456 R 5.696(.<)-.55 G
+.696(time> is gi)-5.696 F -.15(ve)-.25 G 3.197(ni).15 G 3.197(ns)-3.197
+G .697(econds, although it may also be entered as mm:ss if pre-)-3.197 F
+(ferred.)72 468 Q 2.837(55. swindle)72 492 R(on|of)2.837 E 5.337(fT)-.25
+G .337(his command gi)-5.337 F -.15(ve)-.25 G 2.837(sy).15 G .337
+(ou control o)-2.837 F -.15(ve)-.15 G 2.837(r").15 G .337
+(swindle mode.")-2.837 F .337(When on, and playing a g)5.337 F(ame,)-.05
+E 1.023(Crafty will try to win dra)72 504 R 1.023(wn endings \(accordin\
+g to the tablebases\) if it has winning chances \(lik)-.15 F 3.524(eK)
+-.1 G 3.524(Rv)-3.524 G(s)-3.524 E .056(KB, for e)72 516 R 2.556
+(xample\). This)-.15 F .055(will put up v)2.556 F .055(ery stif)-.15 F
+2.555(f")-.25 G .055(resistance" to accepting the dra)-2.555 F 1.355
+-.65(w, w)-.15 H .055(hile with this mode of).65 F .055(f, it)-.25 F
+.762(may be v)72 528 R .763(ery easy to dra)-.15 F 3.263(wap)-.15 G .763
+(osition once the tablebases say "dra)-3.263 F 3.263(wn." This)-.15 F
+.763(mode is automatically turned)3.263 F("of)72 540 Q .224
+(f" during analysis or when annotating a g)-.25 F .224
+(ame, and is only used when actually playing a g)-.05 F .223(ame ag)-.05
+F .223(ainst an)-.05 F 2.5(opponent. If)72 552 R
+(there are no tablebases then this has no ef)2.5 E(fect on the g)-.25 E
+(ame at all.)-.05 E 2.58(56. tags This)72 576 R .08(command will simply\
+ display the current PGN tags \(you can edit them with the v)2.58 F .08
+(arious PGN)-.25 F(commands\).)72 588 Q 3.06(57. test)72 612 R .56(<\
+\214lename> [n] This command will run a suite of positions \(the \214le\
+ must be in "Crafty" format as)3.06 F -.15(ex)72 624 S .532
+(plained belo).15 F .532(w\) and produce a summary of ho)-.25 F 3.032
+(wm)-.25 G(an)-3.032 E 3.032(yi)-.15 G 3.032(tg)-3.032 G .532
+(ot right, wrong, etc.)-3.032 F .532(It uses the time per mo)5.532 F
+-.15(ve)-.15 G 1.258(you set with the \(typically\) st <n> command.)72
+636 R 1.257(The optional parameter [n] is the "early e)6.258 F 1.257
+(xit" counter)-.15 F 6.257(.I)-.55 G(f)-6.257 E .455
+(Crafty \214nds, and holds the solution mo)72 648 R .755 -.15(ve f)-.15
+H .455(or n iterations, it will terminate the search.).15 F 2.955(Iu)
+5.455 G .455(se this to mak)-2.955 F 2.955(ea)-.1 G .517
+(win at chess run tak)72 660 R 3.016(e<1)-.1 G 3.016(5m)-3.016 G .516
+(inutes, e)-3.016 F -.15(ve)-.25 G 3.016(nt).15 G .516
+(hough the time per position is set to 1 minute, by setting n to 2.)
+-3.016 F .683(After tw)72 672 R 3.183(oc)-.1 G .683
+(orrect iterations, Crafty goes on to the ne)-3.183 F .684(xt problem.)
+-.15 F -.15(Fo)5.684 G 3.184(ra).15 G .684
+(bsolutely correct results, this is not)-3.184 F .925
+(advisable as it could ob)72 684 R .925
+(viously change its mind later on, b)-.15 F .924
+(ut for performance analysis, this sa)-.2 F -.15(ve)-.2 G 3.424(sal).15
+G .924(ot of)-3.424 F(time.)72 696 Q(The test suite contains the follo)
+72 720 Q(wing lines:)-.25 E(\(this is a sample from my test suite for W)
+5 E(in At Chess.\))-.4 E EP
+%%Page: 15 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(title w)72 96 Q(ac299)-.1 E
+(setboard 1n2rr2/1pk3pp/pNn2p2/2N1p3/8/6P1/PP2PPKP/2RR4 w)72 108 Q
+(solution Nca4)72 120 Q(title w)72 144 Q(ac300)-.1 E
+(setboard b2b1r1k/3R1ppp/4qP2/4p1PQ/4P3/5B2/4N1K1/8 w)72 156 Q
+(solution g6)72 168 Q(end)72 192 Q .322(The title command simply displa\
+ys this message in the log \214le so you can look at the output and \
+\214gure out)72 216 R(which position it goes with.)72 228 Q
+(This is optional, b)5 E(ut useful.)-.2 E
+(The setboard command sets the position as e)72 252 Q(xplained before.)
+-.15 E .883(The solution command gi)72 276 R -.15(ve)-.25 G 3.383(st).15
+G .883(he set of solution mo)-3.383 F -.15(ve)-.15 G 3.382(s\().15 G
+.882(one or more mo)-3.382 F -.15(ve)-.15 G 3.382(st).15 G .882
+(hat are separated by blanks\))-3.382 F 1.57
+(and/or a set of "anti-solution" mo)72 288 R -.15(ve)-.15 G 4.07(s\().15
+G(mo)-4.07 E -.15(ve)-.15 G 4.07(st).15 G 1.571
+(hat must not be played to count the position as correct.\))-4.07 F
+("anti-solution" mo)72 300 Q -.15(ve)-.15 G 2.5(sa).15 G
+(re simply follo)-2.5 E(wed by a "?" character)-.25 E 2.5(,f)-.4 G(or e)
+-2.5 E(xample:)-.15 E(solution Bxa7?)72 324 Q .856
+(The solution command supplies a set of k)72 348 R 1.156 -.15(ey m)-.1 H
+-.15(ove).15 G .856(s, and then starts the search.).15 F .856
+(If, after the search termi-)5.856 F .152(nates, one of the k)72 360 R
+.452 -.15(ey s)-.1 H .152(olution mo).15 F -.15(ve)-.15 G 2.652(sw).15 G
+.152(as chosen \(or none of the anti-solution mo)-2.752 F -.15(ve)-.15 G
+2.653(sw).15 G .153(ere chosen\) the posi-)-2.653 F
+(tion is counted as correct.)72 372 Q(The \214nal line should be "end" \
+although end-of-\214le or EOF will also be detected in this case.)72 396
+Q 2.62(57. time)72 420 R(CPU|elapsed|<v)2.62 E 2.62(alues> This)-.25 F
+.12(command controls whether the program uses CPU time or w)2.62 F
+(all-clock)-.1 E .248(time for timing.)72 432 R .249
+(for tournament play)5.249 F 2.749(,i)-.65 G 2.749(ti)-2.749 G 2.749(ss)
+-2.749 G .249(afer to use w)-2.749 F .249
+(all-clock timing, for testing it may be more consis-)-.1 F(tent to use\
+ CPU timing if the machine is used for other things concurrently with t\
+he tests being run.)72 444 Q
+(time is also used to set the basic search timing controls.)72 468 Q
+(the general form of the command is as follo)5 E(ws:)-.25 E(time nmo)87
+492 Q -.15(ve)-.15 G(s/ntime/[nmo).15 E -.15(ve)-.15 G
+(s/ntime]/[increment]).15 E(nmo)72 516 Q -.15(ve)-.15 G .32
+(s/ntime represents a traditional \214rst time control when nmo).15 F
+-.15(ve)-.15 G 2.819(si).15 G 2.819(sa)-2.819 G 2.819(ni)-2.819 G(nte)
+-2.819 E .319(ger representing the number)-.15 F .53(of mo)72 528 R -.15
+(ve)-.15 G 3.03(sa).15 G .53(nd ntime is the total time allo)-3.03 F .53
+(wed for these mo)-.25 F -.15(ve)-.15 G 3.03(s. the).15 F .53
+([optional] nmo)3.03 F -.15(ve)-.15 G .53(s/ntime is a traditional).15 F
+.999(secondary time control.)72 540 R .999(increment is a feature relat\
+ed to ICS play and emulates the Fischer clock where)5.999 F
+(<increment> is added to the time left after each mo)72 552 Q .3 -.15
+(ve i)-.15 H 2.5(sm).15 G(ade.)-2.5 E .365(as an alternati)72 576 R -.15
+(ve)-.25 G 2.865(,n).15 G(mo)-2.865 E -.15(ve)-.15 G 2.865(sc).15 G .366
+(an be "sd" which represents a sudden death time control of the remaind\
+er of the)-2.865 F -.05(ga)72 588 S .942(me played in ntime.).05 F .941
+(the optional secondary time control can be a sudden-death time control\
+, as in the)5.941 F(follo)72 600 Q(wing e)-.25 E(xample:)-.15 E
+(time 60/30/sd/30)92 624 Q 1.876(this sets 60 mo)72 648 R -.15(ve)-.15 G
+4.376(si).15 G 4.376(n3)-4.376 G 4.376(0m)-4.376 G 1.876(inutes, then g)
+-4.376 F 1.876(ame in 30 additional minutes.)-.05 F 1.876
+(an increment can be added if)6.876 F(desired.)72 660 Q(One \214nal e)72
+684 Q(xample is the follo)-.15 E(wing:)-.25 E(time sd/15)92 708 Q EP
+%%Page: 16 16
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .95(which is a simple g)72 96 R .95
+(ame/15 setting.)-.05 F .95
+(This command can also be used to perform the same function as the)5.95
+F("le)72 108 Q -.15(ve)-.25 G(l" command.).15 E -.15(Fo)5 G 2.5(re).15 G
+(xample, to set up a classic ICS 2 12 g)-2.65 E(ame, the follo)-.05 E
+(wing w)-.25 E(ould w)-.1 E(ould w)-.1 E(ork:)-.1 E(time sd/2/12)92 132
+Q 3.086(59. trace)72 156 R 3.086(<n> This)3.086 F .586
+(command is used to mak)3.086 F 3.086(ec)-.1 G .586
+(rafty display the tree as it searches a position.)-3.086 F .586
+(Due to the)5.586 F .343
+(incredible speed at which this program can search, ho)72 168 R(we)-.25
+E -.15(ve)-.25 G 1.142 -.4(r, t).15 H .342
+(his is less than useful since it can sw).4 F .342(amp an)-.1 F(y)-.15 E
+(kno)72 180 Q(wn display dri)-.25 E -.15(ve)-.25 G 2.5(ra).15 G(nd mak)
+-2.5 E 2.5(et)-.1 G(hings scroll impossibly f)-2.5 E(ast.)-.1 E 1.037(A\
+lso note that this command usually is disabled, because Crafty is gener\
+ally compiled with the -DF)72 204 R(AST)-.74 E .547(\215ag, which remo)
+72 216 R -.15(ve)-.15 G 3.047(st).15 G .547
+(he trace output code from the search to mak)-3.047 F 3.047(et)-.1 G
+.546(hings slightly f)-3.047 F(aster)-.1 E 5.546(.Y)-.55 G .546
+(ou will ha)-6.646 F .846 -.15(ve t)-.2 H(o).15 E .78
+(recompile, without the -DF)72 228 R(AST)-.74 E 3.28(,i)-.74 G 3.28(fy)
+-3.28 G .78(ou w)-3.28 F .78(ant to use this.)-.1 F(It')5.78 E 3.28(su)
+-.55 G .78(tility is limited, e)-3.28 F .78(xcept for deb)-.15 F .78
+(ugging, an)-.2 F(y-)-.15 E -.1(wa)72 240 S -.65(y.).1 G 3.078
+(60. usage)72 264 R .578(<n> is simply a w)3.078 F .578
+(ay to modify Crafty')-.1 F 3.078(st)-.55 G .578
+(ime usage to \214t your tastes.)-3.078 F -1.1(Yo)5.578 G 3.078(uc)1.1 G
+.578(an "suggest" a time)-3.078 F 1.044(limit with an)72 276 R 3.544(yo)
+-.15 G 3.544(ft)-3.544 G 1.044(he options discussed pre)-3.544 F
+(viously)-.25 E 3.544(,b)-.65 G 1.044(ut if you use an)-3.744 F 1.044
+(ything other than the "st" command,)-.15 F .356
+(Crafty will do its best to use time as you suggest, b)72 288 R .356
+(ut it also anticipates that it will sa)-.2 F .656 -.15(ve s)-.2 H .355
+(ome time by pon-).15 F .884
+(dering, etc., and will therefore be more aggressi)72 300 R 1.184 -.15
+(ve a)-.25 H 3.384(tt).15 G .884(rying to use time.)-3.384 F .884
+(if <n> is a positi)5.884 F 1.184 -.15(ve i)-.25 H(nte).15 E(ger)-.15 E
+3.384(,i)-.4 G 3.384(ti)-3.384 G(s)-3.384 E(tak)72 312 Q .923(en as a p\
+ercentage and crafty will compute the time limit it thinks is appropria\
+te for the current clock)-.1 F .726
+(settings, then increase this limit by this percentage \(50 w)72 324 R
+.726(ould mak)-.1 F 3.226(ei)-.1 G 3.226(tt)-3.226 G(ak)-3.226 E 3.226
+(e1)-.1 G .726(.5 times longer than normal.\))-3.226 F(-50 w)72 336 Q
+(ould mak)-.1 E 2.5(ei)-.1 G 2.5(tt)-2.5 G(ak)-2.5 E 2.5(e1)-.1 G
+(/2 the time it w)-2.5 E(ould normally tak)-.1 E(e.)-.1 E .1
+(Crafty adjusts the usage internally based on time left, opponent')72
+360 R 2.6(st)-.55 G .1(ime left, ho)-2.6 F 2.6(wq)-.25 G .1
+(uickly or slo)-2.6 F .1(wly the oppo-)-.25 F(nent is mo)72 372 Q
+(ving, etc.)-.15 E(Further modifying things with this is dangerous, b)5
+E(ut possible.)-.2 E 2.807(61. whisper/kibitz)72 396 R 2.807(<n> These)
+2.807 F .307(commands are used to control what Crafty will whisper or k\
+ibitz on a chess)2.807 F(serv)72 408 Q(er)-.15 E 5.834(.T)-.55 G .833(h\
+e options are \(1\) only whispers or kibitzes mate announcements; \(2\)\
+ adds time, score, depth to)-5.834 F .507(the pre)72 420 R .507
+(vious option, b)-.25 F .507(ut no PV or mo)-.2 F -.15(ve)-.15 G 3.007
+(s. \(3\)).15 F .507(adds the PV)3.007 F 5.507(.\()-1.29 G .508
+(4\) adds book mo)-5.507 F .808 -.15(ve i)-.15 H .508
+(nformation to the output.).15 F .737(The remaining tw)72 432 R 3.236
+(oo)-.1 G .736
+(ptions generate a lot of output and should be used with caution.)-3.236
+F .736(\(5\) displays the PV)5.736 F .075
+(after each iteration completes.)72 444 R 2.575(Iu)5.075 G .076
+(se this when using my custom interf)-2.575 F .076
+(ace to let Crafty observ)-.1 F .076(e/comment on)-.15 F -.05(ga)72 456
+S 1.528(mes in progress on ICC.).05 F 1.528(Noise can be used to pre)
+6.528 F -.15(ve)-.25 G 1.527(nt shallo).15 F 4.027(ws)-.25 G 1.527
+(earches from generating output and)-4.027 F -.1(ke)72 468 S .263
+(eping "noise" do).1 F .263(wn on the g)-.25 F .263(ames being w)-.05 F
+2.764(atched. \(6\))-.1 F .264(basically will whisper/kibitz nearly e)
+2.764 F -.15(ve)-.25 G .264(rything you).15 F 1.303
+(see on the console from a search, each PV when it changes, f)72 480 R
+1.302(ail highs and f)-.1 F 1.302(ail lo)-.1 F 1.302(ws, etc.)-.25 F
+3.802(As)6.302 G(igni\214cant)-3.802 E(amount of output that should be \
+carefully weighed before turning it "loose.")72 492 Q 4.5
+(62. xboard This)72 516 R 2.001(command turns on Xboard/W)4.501 F 2.001
+(inBoard compatibility mode, and mak)-.4 F 2.001(es Crafty beha)-.1 F
+-.15(ve)-.2 G(some)72 528 Q .138(what lik)-.25 F 2.638(eG)-.1 G 2.638
+(nuChess. This)-2.638 F .137
+(is designed to be used *only* when Crafty is interf)2.638 F .137
+(acing with Xboard/W)-.1 F(in-)-.4 E 2.607(Board. Crafty)72 540 R .107
+(will not w)2.607 F .107(ork with these tw)-.1 F 2.607(oG)-.1 G .107
+(UIs without this option, and really w)-2.607 F(on')-.1 E 2.608(tw)-.18
+G .108(ork v)-2.708 F .108(ery well with)-.15 F
+(this option if it is not connected to one of them.)72 552 Q 3.336
+(63. There)72 576 R .836(are other commands that are not documented.)
+3.336 F(The)5.835 E 3.335(ya)-.15 G .835
+(re part of the xboard protocol and really)-3.335 F .091
+(should not be used by the normal user)72 588 R 5.091(.Y)-.55 G .092
+(ou can \214nd all the commands in option.c should you be interested.)
+-6.191 F(Opening Book Setup and Usage)223.84 600 Q
+(----------------------------)241.38 612 Q(Crafty uses tw)72 636 Q 2.5
+(op)-.1 G(re-compiled opening books, called "book.bin" and "books.bin".)
+-2.5 E .209(The \214le book.bin is usually b)72 660 R .209
+(uild from a lar)-.2 F .209(ge te)-.18 F .209
+(xt \214le containing PGN g)-.15 F .209(ames, often tak)-.05 F .208
+(en from collections)-.1 F .063(of GM g)72 672 R 2.564(ames. Building)
+-.05 F .064(book.bin is a simple e)2.564 F -.15(xe)-.15 G .064
+(rcise and requires nothing other than the ra).15 F 2.564(wi)-.15 G .064
+(nput \214le you)-2.564 F .06(are going to use.)72 684 R .06(Generally \
+this will be either medium.zip or the set of four \214les lar)5.06 F .06
+(ge[1-4].zip, all of which)-.18 F
+(are stored on the ftp machine ftp.cis.uab)72 696 Q(.edu/pub/h)-.4 E
+(yatt/.)-.05 E 4.472 -.8(To c)72 720 T 2.872
+(reate the \214le book.bin, you need a PGN g).8 F 2.873
+(ame collection that is a *real* PGN-compliant \214le.)-.05 F EP
+%%Page: 17 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(Supposing this \214le is called "lar)72 96 Q
+(ge.pgn" you w)-.18 E(ould use the follo)-.1 E(wing command:)-.25 E
+(book create lar)72 120 Q(ge.pgn <m> [n] [wpct])-.18 E .163
+(The only thing you ha)72 144 R .463 -.15(ve t)-.2 H 2.663(os).15 G .163
+(upply is <m>, a number indicating ho)-2.663 F 2.663(wm)-.25 G(an)-2.663
+E 2.663(ym)-.15 G -.15(ove)-2.663 G 2.663(sf).15 G .163(rom each g)
+-2.663 F .163(ame are to be)-.05 F 1.938
+(stored in the book.bin database.)72 156 R 4.439(It)6.939 G 1.939
+(ypically use 60, which stores the \214rst 60 mo)-4.439 F -.15(ve)-.15 G
+4.439(sf).15 G 1.939(rom each g)-4.439 F(ame.)-.05 E 1.293(Increasing t\
+his number slightly increases the probability that Crafty will stay in \
+book longer)72 168 R 3.792(,b)-.4 G 1.292(ut it also)-3.992 F 1.064
+(increases the probability that it will follo)72 180 R 3.564(wag)-.25 G
+1.064(ame too f)-3.614 F(ar)-.1 E 3.564(,s)-.4 G 3.564(ot)-3.564 G 1.064
+(hat it be)-3.564 F 1.065(gins to reach positions where the)-.15 F(mo)72
+192 Q 2.258 -.15(ve a)-.15 H 1.957
+(ctually played might not be the best mo).15 F -.15(ve)-.15 G 4.457(,l)
+.15 G 1.957(etting it f)-4.457 F 1.957(all into a bad hole.)-.1 F 1.957
+(Increasing this also)6.957 F
+(increases the size of the database as well.)72 204 Q -1.1(Yo)72 228 S
+2.631(uc)1.1 G .131(an decrease the size of the book, and also reduce t\
+he number of ugly mo)-2.631 F -.15(ve)-.15 G 2.631(sb).15 G 2.631(ys)
+-2.631 G .131(pecifying <n>, which)-2.631 F 1.862(says that unless a mo)
+72 240 R 2.162 -.15(ve i)-.15 H 4.362(sp).15 G 1.862
+(layed in at least N g)-4.362 F 1.862(ames, the mo)-.05 F 2.161 -.15
+(ve i)-.15 H 4.361(sd).15 G 4.361(iscarded. This)-4.361 F 1.861
+(will substantially)4.361 F 1.492
+(decrease the size of the book.bin \214le, and also eliminate single g)
+72 252 R 1.492(ame mo)-.05 F -.15(ve)-.15 G 3.992(st).15 G 1.492
+(hat often ha)-3.992 F 1.792 -.15(ve s)-.2 H(igni\214cant).15 E
+(errors or blunders.)72 264 Q -1.1(Yo)72 288 S 2.507(uc)1.1 G .007(an i\
+ncrease the quality of book lines by specifying <wpct> which is the "wi\
+nning percentage".)-2.507 F .006(This is)5.006 F .091
+(speci\214ed as a percentage of lost g)72 300 R .091
+(ames, and is used to discard mo)-.05 F -.15(ve)-.15 G 2.592(st).15 G
+.092(hat led to mostly losses.)-2.592 F 2.592(As)5.092 G .092(afe v)
+-2.592 F(alue)-.25 E .91
+(is 50, which says that if a particular opening mo)72 312 R 1.21 -.15
+(ve d)-.15 H(idn').15 E 3.41(tw)-.18 G .91(in at least 50% as man)-3.41
+F 3.41(yg)-.15 G .91(ames as it lost, the)-3.46 F(mo)72 324 Q .671 -.15
+(ve i)-.15 H 2.871(sc).15 G 2.871(ulled. A)-2.871 F -.25(va)2.871 G .371
+(lue of 100 w).25 F .371(ould mean that mo)-.1 F -.15(ve)-.15 G 2.871
+(sa).15 G .371(re culled if the)-2.871 F 2.871(yp)-.15 G .371
+(roduced more losses than wins,)-2.871 F
+(and is really a strict criterion.)72 336 Q 2.134
+(After creating book.bin, you need to create books.bin.)72 360 R 2.134
+(This is a small v)7.134 F 2.133(ersion of book.bin, which is)-.15 F
+.374(intended to gi)72 372 R .674 -.15(ve y)-.25 H .374
+(ou more control o).15 F -.15(ve)-.15 G 2.875(rt).15 G .375(he mo)-2.875
+F -.15(ve)-.15 G .375(s/openings Crafty will play).15 F 5.375(.T)-.65 G
+.375(his is usually b)-5.375 F .375(uilt from the)-.2 F .569
+(\214le start.pgn on the ftp machine, b)72 384 R .568
+(ut you can modify this \214le to suit your taste easily)-.2 F 5.568(.T)
+-.65 G 3.068(ob)-6.368 G .568(uild books.bin,)-3.268 F
+(you use the follo)72 396 Q(wing command:)-.25 E
+(books create start.pgn 60)72 420 Q(Ag)72 444 Q .159
+(ain, 60 is what I use, b)-.05 F .159
+(ut none of my start.pgn lines go an)-.2 F .159(ywhere near that man)
+-.15 F 2.659(ym)-.15 G -.15(ove)-2.659 G 2.659(s. The).15 F .159
+(main point)2.659 F .557
+(here is that in start.pgn, you can append a "!" to an)72 456 R 3.056
+(ym)-.15 G .856 -.15(ove y)-3.056 H .556(ou w).15 F .556
+(ant, and when it is Crafty')-.1 F 3.056(st)-.55 G .556(urn to mo)-3.056
+F -.15(ve)-.15 G 1.255(for that color)72 468 R 3.755(,i)-.4 G 3.755(tw)
+-3.755 G 1.255(ill play from the set of mo)-3.755 F -.15(ve)-.15 G 3.755
+(sw).15 G 1.256(ith "!" if there are an)-3.755 F 2.556 -.65(y, i)-.15 H
+1.256(gnoring the rest of the book).65 F(mo)72 480 Q -.15(ve)-.15 G 2.5
+(s. If).15 F(you only w)2.5 E(ant it to play 1. e4 as white, you w)-.1 E
+(ould just enter the short g)-.1 E(ame:)-.05 E
+([Crafty only plays 1. e4] 1. e4!)72 504 Q .431
+(and you are \214nished!.)72 528 R -1.1(Yo)5.431 G 2.931(uc)1.1 G .431
+(an enter as man)-2.931 F 2.931(ya)-.15 G 2.931(sy)-2.931 G .43(ou w)
+-2.931 F 2.93(ant. If)-.1 F .43(on the other hand there is a mo)2.93 F
+.73 -.15(ve y)-.15 H .43(ou don').15 F(t)-.18 E -.1(wa)72 540 S .319
+(nt Crafty to play).1 F 2.819(,t)-.65 G .319(hen follo)-2.819 F 2.819
+(wt)-.25 G .319(hat mo)-2.819 F .619 -.15(ve w)-.15 H .32
+(ith a "?" and it will ne).15 F -.15(ve)-.25 G 2.82(rp).15 G .32
+(lay it.)-2.82 F(Mo)5.32 E -.15(ve)-.15 G 2.82(si).15 G 2.82(nb)-2.82 G
+.32(ooks.bin that are)-2.82 F(not \215agged with ! or ? don')72 552 Q
+2.5(th)-.18 G -2.25 -.2(av e)-2.5 H(an)2.7 E 2.5(yi)-.15 G
+(n\215uence on Crafty')-2.5 E 2.5(sc)-.55 G(hoice at all.)-2.5 E(Here')
+72 576 Q 3.31(sh)-.55 G 1.31 -.25(ow t)-3.31 H .81(he \214les are used.)
+.25 F .809
+(When searching a position, Crafty \214rst enumerates the set of mo)5.81
+F -.15(ve)-.15 G 3.309(si).15 G 3.309(tc)-3.309 G(an)-3.309 E 1.172
+(\214nd in the opening database.)72 588 R 1.172
+(It then does the same for the books.bin database, and performs a "mer)
+6.172 F(ge")-.18 E .609(operation to combine the ? and ! \215ags...)72
+600 R .608(The purpose of the books.bin \214le is to gi)5.609 F .908
+-.15(ve y)-.25 H .608(ou a small database).15 F .182
+(that you can easily modify)72 612 R 2.682(,r)-.65 G(eb)-2.682 E .182
+(uild, and repeat this process o)-.2 F -.15(ve)-.15 G 2.682(ra).15 G
+.182(nd o)-2.682 F -.15(ve)-.15 G 3.782 -.55(r. S).15 H .182
+(ince it tak).55 F .182(es a fraction of a sec-)-.1 F .758
+(ond to completely reb)72 624 R .758(uild this \214le, it is v)-.2 F
+.757(ery easy to modify this to control what Crafty will play)-.15 F
+3.257(,w)-.65 G(ithout)-3.257 E(ha)72 636 Q(ving to reb)-.2 E
+(uild the lar)-.2 E(ge database.)-.18 E 1.486(One important characteris\
+tic of the PGN input is the Result tag must be speci\214ed in most of t\
+he lines,)72 660 R .588(because Crafty counts wins, losses and dra)72
+672 R .588(ws for each book mo)-.15 F .888 -.15(ve a)-.15 H .587
+(nd uses these counts with some of the).15 F(book selection options gi)
+72 684 Q -.15(ve)-.25 G 2.5(nb).15 G(elo)-2.5 E -.65(w.)-.25 G(Ho)72 708
+Q 2.5(wt)-.25 G(he \215ags are used.)-2.5 E EP
+%%Page: 18 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .612(The ! and ? \215ags should only appear in \
+the small books.bin \214le, although there is no reason wh)72 96 R 3.113
+(yt)-.05 G(he)-3.113 E 3.113(yc)-.15 G(an)-3.113 E .273
+(not appear in the lar)72 108 R .273(ge \214le as well.)-.18 F -.15(Fo)
+5.273 G 2.773(rt).15 G .273(his discussion, it doesn')-2.773 F 2.772(tm)
+-.18 G .272(atter since Crafty tak)-2.772 F .272(es the mo)-.1 F -.15
+(ve)-.15 G 2.772(sf).15 G(rom)-2.772 E(both \214les and "mer)72 120 Q
+(ges" the \215ags/etc into one entry for each mo)-.18 E -.15(ve)-.15 G
+(.).15 E .847(Quite simply)72 144 R 3.347(,i)-.65 G 3.347(fa)-3.347 G
+1.147 -.15(ny b)-3.347 H .847(ook le).15 F -.05(ga)-.15 G 3.347(lb).05 G
+.847(ook mo)-3.347 F 1.147 -.15(ve h)-.15 H .848
+(as a ! \215ag, then Crafty will only play mo).15 F -.15(ve)-.15 G 3.348
+(sf).15 G .848(rom the set of)-3.348 F(mo)72 156 Q -.15(ve)-.15 G 2.576
+(sw).15 G .076(hich all ha)-2.576 F .376 -.15(ve t)-.2 H .076
+(he ! \215ag.).15 F .076(If a mo)5.076 F .376 -.15(ve h)-.15 H .076
+(as a ? \215ag, then that mo).15 F .376 -.15(ve i)-.15 H 2.576(si).15 G
+.076(mmediately remo)-2.576 F -.15(ve)-.15 G 2.576(df).15 G .075
+(rom the set)-2.576 F .257(of possible book mo)72 168 R -.15(ve)-.15 G
+2.757(s. If).15 F .257(the only le)2.757 F -.05(ga)-.15 G 2.757(lb).05 G
+.257(ook mo)-2.757 F .557 -.15(ve h)-.15 H .258
+(as a ? \215ag, it will not be played as a book mo).15 F .558 -.15(ve a)
+-.15 H(nd).15 E .487
+(Crafty will simply pretend that it found no book mo)72 180 R -.15(ve)
+-.15 G 2.987(sa).15 G .487(nd will e)-2.987 F -.15(xe)-.15 G .486
+(cute a normal tree search.).15 F .486(Pretty sim-)5.486 F(ple.)72 192 Q
+(Ho)72 216 Q 2.5(wt)-.25 G 2.5(oc)-2.5 G(ontrol the frequenc)-2.5 E 2.5
+(yo)-.15 G 2.5(fo)-2.5 G(pening mo)-2.5 E .3 -.15(ve s)-.15 H(election.)
+.15 E 2.585(An)72 240 S .585 -.25(ew f)-2.585 H .085(eature in v).25 F
+.085(ersion 15.15 and be)-.15 F .085(yond allo)-.15 F .085
+(ws you to append a PGN comment to an)-.25 F 2.586(ym)-.15 G .386 -.15
+(ove i)-2.586 H 2.586(nat).15 G -.15(ex)-2.586 G 2.586<748c>.15 G(le)
+-2.586 E .105(used to create books.bin, of the form {play nn%}.)72 252 R
+.105(This will force the mo)5.105 F .405 -.15(ve i)-.15 H 2.605(tf).15 G
+(ollo)-2.605 E .105(ws to be played that per)-.25 F(-)-.2 E
+(centage of the time, re)72 264 Q -.05(ga)-.15 G
+(rdless of the normal book-ordering v).05 E(alues based on frequenc)-.25
+E 2.5(ya)-.15 G(nd so forth.)-2.5 E .021
+(Note that {play 0%} will not pre)72 288 R -.15(ve)-.25 G .021(nt a mo)
+.15 F .321 -.15(ve f)-.15 H .021
+(rom being played at all, as this will look just lik).15 F 2.522(eam)-.1
+G .322 -.15(ove w)-2.522 H(ith).15 E(no percent speci\214ed.)72 300 Q
+1.6 -.8(To a)5 H -.2(vo).6 G(id playing a mo).2 E -.15(ve)-.15 G 2.5(,u)
+.15 G(se the ? \215ag.)-2.5 E(Ho)72 324 Q 2.5(wd)-.25 G
+(oes Crafty choose book mo)-2.5 E -.15(ve)-.15 G(s?).15 E(Crafty')72 348
+Q 3.169(sb)-.55 G .669(ook selection algorithm depends on tw)-3.169 F
+3.169(ou)-.1 G(ser)-3.169 E .669(-de\214ned v)-.2 F .669
+(alues that can be set at an)-.25 F 3.168(yt)-.15 G .668(ime during a)
+-3.168 F -.05(ga)72 360 S(me:).05 E(book random <n>)72 384 Q
+(book width <w>)72 408 Q .254
+(The selection algorithm \214rst \214nds the set of le)72 432 R -.05(ga)
+-.15 G 2.754(lb).05 G .254(ook mo)-2.754 F -.15(ve)-.15 G 2.754(sa).15 G
+2.754(sa)-2.754 G(bo)-2.754 E -.15(ve)-.15 G 5.254(.T).15 G .254
+(his set will either be all ! mo)-5.254 F -.15(ve)-.15 G(s,).15 E 1.359
+(or will ha)72 444 R 1.658 -.15(ve n)-.2 H 3.858(o!m).15 G -.15(ove)
+-3.858 G 3.858(si).15 G 3.858(ni)-3.858 G 3.858(t. This)-3.858 F 1.358
+(set is then sorted based on the setting of book random.)3.858 F(Here')
+6.358 E 3.858(st)-.55 G(he)-3.858 E(options:)72 456 Q .538
+(book random 0.)72 480 R .538
+(This is a special case for book selection.)5.538 F .539
+(Crafty simply tak)5.538 F .539(es the set of book mo)-.1 F -.15(ve)-.15
+G .539(s, and).15 F 1.131(searches only these mo)72 492 R -.15(ve)-.15 G
+3.631(su).15 G 1.131(sing a normal alpha/beta search, b)-3.631 F 1.13
+(ut with a shorter than usual time limit.)-.2 F(It)6.13 E .437
+(then plays the mo)72 504 R .737 -.15(ve t)-.15 H .437
+(hat produces the best search v).15 F 2.937(alue. This)-.25 F .437
+(has one serious disadv)2.937 F .438(antage in that there is)-.25 F .394
+(no randomness to this at all.)72 516 R .393(It will al)5.393 F -.1(wa)
+-.1 G .393(ys play the same mo).1 F .693 -.15(ve i)-.15 H 2.893(nt).15 G
+.393(he same position, unless the e)-2.893 F -.25(va)-.25 G(luation).25
+E .533(is modi\214ed, or the time per mo)72 528 R .833 -.15(ve i)-.15 H
+3.033(sd).15 G(if)-3.033 E .533
+(ferent enough to let the search \214nd a dif)-.25 F .533(ferent mo)-.25
+F .833 -.15(ve f)-.15 H .533(rom the book).15 F(mo)72 540 Q .3 -.15
+(ve s)-.15 H(et.).15 E .959(book random 1.)72 564 R .959
+(This enables a random form of book mo)5.959 F 1.258 -.15(ve s)-.15 H
+.958(election, b).15 F .958(ut you ha)-.2 F 1.258 -.15(ve a l)-.2 H .958
+(ot of control o).15 F -.15(ve)-.15 G(r).15 E(ho)72 576 Q 4.343(wm)-.25
+G -.15(ove)-4.343 G 4.343(sa).15 G 1.843(re randomly chosen.)-4.343 F
+1.843(The mo)6.843 F -.15(ve)-.15 G 4.343(sa).15 G 1.843
+(re ordered, based on 4 parameters:)-4.343 F(frequenc)6.844 E 4.344(yo)
+-.15 G 4.344(fp)-4.344 G(lay)-4.344 E(,)-.65 E .374
+(win/lose ratio, static e)72 588 R -.25(va)-.25 G .374
+(luation and learned results.).25 F .374(Normally these are f)5.374 F
+.374(actored into the v)-.1 F .373(alue used to sort)-.25 F 2.263
+(the mo)72 600 R -.15(ve)-.15 G 2.263(s, based on def).15 F 2.263(ault \
+settings that you can modify by using the command "bookw option N")-.1 F
+("option" should be "freq", "ratio", "e)72 612 Q -.25(va)-.25 G
+(l" and "learn".).25 E 2.5(Ns)5 G(hould be a number between 0 and 1.)
+-2.5 E .241(Crafty \214nds the min and max v)72 636 R .241(alues for ea\
+ch of the 4 parameters, and then maps this into the range 0-1000)-.25 F
+1.079(for each parameter)72 648 R 6.079(.E)-.55 G 1.079
+(ach parameter is multiplied by the corresponding "weight" you ha)-6.079
+F 1.38 -.15(ve a)-.2 H 1.08(ssigned, and).15 F .388(this is used as a v)
+72 660 R .388(alue to sort the mo)-.25 F -.15(ve)-.15 G 2.888(sf).15 G
+.388(rom lo)-2.888 F 2.888(wt)-.25 G 2.888(oh)-2.888 G 2.888(igh. Note)
+-2.888 F .388(that the \214rst sort v)2.888 F .387(alue is al)-.25 F -.1
+(wa)-.1 G .387(ys the "play).1 F .539(percent" to mo)72 672 R .839 -.15
+(ve t)-.15 H .539(hem to the top of the list.).15 F -.15(Fo)5.539 G 3.04
+(rm).15 G -.15(ove)-3.04 G 3.04(sw).15 G .54(ith equal "play percent" v)
+-3.04 F .54(alues, the normal sort-)-.25 F -.25(va)72 684 S .253
+(lue is used as the second-le).25 F -.15(ve)-.25 G 2.753(ls).15 G .253
+(ort v)-2.753 F .253(ariable \(if no mo)-.25 F -.15(ve)-.15 G 2.753(sh)
+.15 G -2.25 -.2(av e)-2.753 H 2.753(ap)2.953 G .253
+(lay-percent, then this second-le)-2.753 F -.15(ve)-.25 G 2.752(lv).15 G
+(ari-)-3.002 E(able is the only one used, of course.\))72 696 Q 1.188
+(Once Crafty has sorted the mo)72 720 R -.15(ve)-.15 G 3.688(sa).15 G
+3.688(sg)-3.688 G -2.15 -.25(iv e)-3.688 H 3.688(na).25 G(bo)-3.688 E
+-.15(ve)-.15 G 3.688(,i).15 G 3.688(tn)-3.688 G -.15(ex)-3.688 G 3.688
+(te).15 G 1.188(xcludes an)-3.838 F 3.689(yb)-.15 G 1.189(ook mo)-3.689
+F -.15(ve)-.15 G 3.689(sw).15 G 1.189(hich ha)-3.689 F 1.489 -.15
+(ve 0 w)-.2 H(ins.).15 E EP
+%%Page: 19 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .591(This culls the odd lines where a player ch\
+ose a bad line and lost quickly)72 96 R 5.59(.W)-.65 G .59
+(ith zero wins, it will ne)-5.99 F -.15(ve)-.25 G 3.09(rb).15 G(e)-3.09
+E .961(chosen, although Crafty will happily follo)72 108 R 3.462(wi)-.25
+G 3.462(tf)-3.462 G .962(rom the other side.)-3.462 F 3.462(:\) This)
+5.962 F .962(is not an)3.462 F .962(ywhere near perfect,)-.15 F(ho)72
+120 Q(we)-.25 E -.15(ve)-.25 G .8 -.4(r, b).15 H
+(ecause an opening could ha).4 E .3 -.15(ve 1 w)-.2 H
+(in and 19 losses and that still w).15 E(ould stay in the list.)-.1 E
+.222(If a mo)72 144 R .522 -.15(ve h)-.15 H .222(as a learned v).15 F
+.221(alue of > 100, this mo)-.25 F .521 -.15(ve i)-.15 H 2.721(se).15 G
+(le)-2.721 E -.25(va)-.25 G .221(ted in priority to that of a ! mo).25 F
+-.15(ve)-.15 G 2.721(,s).15 G .221(ince it appears)-2.721 F
+(to win material instantly)72 156 Q 5(.I)-.65 G 2.5(fav)-5 G
+(alue is < -100, it is gi)-2.75 E -.15(ve)-.25 G 2.5(na?s).15 G
+(ince it appears to be a lemon.)-2.5 E .426
+(After this, the setting for "book width <w>" is used to k)72 180 R .427
+(eep the \214rst <w> mo)-.1 F -.15(ve)-.15 G 2.927(si).15 G 2.927(nt)
+-2.927 G .427(he list, after the abo)-2.927 F -.15(ve)-.15 G 1.012
+(culling has been completed.)72 192 R 1.012(The smaller you mak)6.012 F
+3.512(e<)-.1 G 1.012(w> the less randomness you get, b)-3.512 F 1.011
+(ut the chance of)-.2 F(Crafty popping out a really bizarre book mo)72
+204 Q .3 -.15(ve g)-.15 H(ets smaller as well.).15 E .311
+(After sorting, the \214nal step is to fold in an)72 228 R 2.811(ym)-.15
+G .311(andatory "play percent" v)-2.811 F 2.811(alues. What)-.25 F .311
+(this step does is that it)2.811 F .757(\214nds all the mo)72 240 R -.15
+(ve)-.15 G 3.257(si).15 G 3.257(nt)-3.257 G .757(he "playable mo)-3.257
+F 1.057 -.15(ve s)-.15 H .757(et" just computed, which ha).15 F 1.057
+-.15(ve n)-.2 H 3.257(op).15 G .757(ercent-to-play v)-3.257 F .757
+(alue set.)-.25 F(It)5.757 E .382(sums the sort-v)72 252 R .382
+(alues for these mo)-.25 F -.15(ve)-.15 G .382
+(s, then adjusts the sort-v).15 F .382(alues for the other mo)-.25 F
+-.15(ve)-.15 G 2.883(ss).15 G 2.883(ot)-2.883 G .383(hat their percent-)
+-2.883 F(ages will be honored.)72 264 Q .072
+(Once this has been done, crafty simply uses the "sort v)72 288 R .071
+(alue" for each mo)-.25 F .371 -.15(ve t)-.15 H 2.571(oc).15 G .071
+(ompute a total for all mo)-2.571 F -.15(ve)-.15 G(s.).15 E .177(It the\
+n generates a random number between 1 and this limit, and chooses the m\
+o)72 300 R .477 -.15(ve t)-.15 H .177(hat this probability dis-).15 F
+(trib)72 312 Q(ution matches.)-.2 E(This will certainly e)5 E -.2(vo)
+-.25 G(lv).2 E 2.5(eo)-.15 G -.15(ve)-2.65 G 2.5(rt).15 G(ime as ne)-2.5
+E 2.5(wi)-.25 G(deas are de)-2.5 E -.15(ve)-.25 G(loped.).15 E -.15(Fo)
+72 336 S 3.349(rm).15 G 3.349(yp)-3.349 G .849
+(lay on ICC, I use book random 1, and book width 5 normally)-3.349 F
+3.349(,a)-.65 G .849(lthough for titled players this is)-3.349 F .54
+(reduced to book width 3.)72 348 R -.15(Fo)5.54 G 3.04(rc).15 G .541(om\
+puters, I reduce this further to 2, to try to play reasonable openings \
+and)-3.04 F(cull the g)72 360 Q(ambits and things that don')-.05 E 2.5
+(tw)-.18 G(ork out.)-2.6 E(Ho)72 384 Q 2.5(wd)-.25 G
+(oes book learning w)-2.5 E(ork and ho)-.1 E 2.5(wc)-.25 G
+(an I share learned results?)-2.5 E 3.943(1. *all*)72 408 R 1.443
+(of crafty')3.943 F 3.943(s")-.55 G 1.443(learned kno)-3.943 F 1.442
+(wledge" is in the book.bin \214le.)-.25 F 1.442(It k)6.442 F 1.442
+(eeps the learned v)-.1 F 1.442(alue and learned)-.25 F .414
+(count right in the book \214le for speed.)72 420 R -1.1(Yo)5.414 G
+2.914(uc)1.1 G(an')-2.914 E 2.914(tm)-.18 G .414
+(odify it, although "sho)-2.914 F 2.914(wb)-.25 G .414(ook" will mak)
+-2.914 F 2.914(ec)-.1 G .414(rafty display)-2.914 F(all the book stuf)72
+432 Q 2.5(fb)-.25 G(efore it mak)-2.5 E(es a mo)-.1 E -.15(ve)-.15 G(.)
+.15 E 3.206(2. the)72 456 R .706(book.lrn \214le has tw)3.206 F 3.206
+(op)-.1 G 3.206(urposes: \(a\))-3.206 F .706(to serv)3.206 F 3.206(ea)
+-.15 G 3.205(sal)-3.206 G .705(og for your prying e)-3.205 F .705
+(yes, so you can see what it')-.15 F(s)-.55 E .012(learned, ag)72 468 R
+.012(ainst whom, and what the score w)-.05 F .012
+(as that got its attention in the \214rst place.)-.1 F .012(The v)5.012
+F .012(alues on the end)-.25 F
+(of each book line, inside the {} characters are as follo)72 480 Q(ws:)
+-.25 E({v)82 492 Q 1.703(alue, depth, rating_dif)-.25 F 1.703
+(ference} v)-.25 F 1.703(alue is the v)-.25 F 1.703(alue of the "k)-.25
+F -.15(ey)-.1 G 4.202("s).15 G 1.702
+(earch that comes from the \214rst 10)-4.202 F(mo)72 504 Q -.15(ve)-.15
+G 2.849(so).15 G .349(ut of book.)-2.849 F(it')5.349 E 2.849(si)-.55 G
+2.849(nc)-2.849 G(entipa)-2.849 E .349(wns, and + is good - is bad.)-.15
+F .35(depth is the depth the search reached at this)5.35 F("k)72 516 Q
+-.15(ey)-.1 G 3.151("p).15 G .651
+(osition, the deeper the search, the more the v)-3.151 F .651
+(alue is "trusted.")-.25 F(rating_dif)5.65 E .65(ference is crafty')-.25
+F 3.15(sr)-.55 G .65(ating -)-3.15 F(opponent')72 528 Q 3.08(sr)-.55 G
+.58(ating a ne)-3.08 F -.05(ga)-.15 G(ti).05 E .88 -.15(ve v)-.25 H .58
+(alue means pay more attention to the score since the opponent is bette\
+r than)-.1 F(crafty)72 540 Q 2.973(,ap)-.65 G(ositi)-2.973 E .773 -.15
+(ve v)-.25 H .473(alue means to tak)-.1 F 2.973(et)-.1 G .473
+(he score with a grain of salt, because the opponent w)-2.973 F .472
+(as weak)-.1 F .472(er than)-.1 F(Crafty)72 552 Q(.)-.65 E -1.1(Yo)72
+576 S 3.544(uc)1.1 G 1.044(an delete this \214le at an)-3.544 F 3.544
+(yt)-.15 G 1.044(ime, and it has no ef)-3.544 F 1.045(fect on learning.)
+-.25 F 1.045(As I mentioned, the learning tak)6.045 F(es)-.1 E .943(pla\
+ce in book.bin... this is mainly for you to peek at if you are interest\
+ed.)72 588 R(Ho)5.942 E(we)-.25 E -.15(ve)-.25 G 1.742 -.4(r, t).15 H
+.942(his is the "portable).4 F .437
+(learning data \214le" also, and can be gi)72 600 R -.15(ve)-.25 G 2.937
+(nt).15 G 2.937(oo)-2.937 G .437(thers to import into their crafty)
+-2.937 F 2.937(,w)-.65 G .437(here it will af)-2.937 F .437
+(fect the open-)-.25 F .341(ing book just lik)72 612 R 2.841(et)-.1 G
+.341(heir crafty had played the openings and got the same scores.)-2.841
+F .341(There are tw)5.341 F 2.841(ow)-.1 G .341(ays to use)-2.941 F
+(such "lrn" \214les:)72 624 Q 2.567(1. "import)72 648 R .067
+(<\214lename>" will read <\214lename> and import the kno)2.567 F .068
+(wledge therein into your book.bin.)-.25 F .068(Since I)5.068 F .614
+(use the same learning code as is used when playing g)72 660 R .614
+(ames, this information also gets appended to *your*)-.05 F .548
+(book.lrn \214le as well, so that your book.lrn al)72 672 R -.1(wa)-.1 G
+.548(ys re\215ects *e).1 F -.15(ve)-.25 G .548
+(rything* your program has learned, so long).15 F .696(as you don')72
+684 R 3.196(te)-.18 G -.15(ve)-3.446 G 3.196(rr).15 G(emo)-3.196 E .996
+-.15(ve t)-.15 H .696(his \214le.).15 F .696(It w)5.696 F .696
+(ould be a mistak)-.1 F 3.196(et)-.1 G 3.196(ou)-3.196 G .696
+(se this command on your o)-3.196 F .696(wn book.lrn \214le,)-.25 F
+(because the things w)72 696 Q
+(ould get counted twice, which might or might not be a good thing.)-.1 E
+2.688(2. "import)72 720 R .188
+(<\214lename> clear" will read <\214lename\) and import the kno)2.688 F
+.188(wledge as abo)-.25 F -.15(ve)-.15 G 2.688(,b).15 G .189
+(ut \214rst clears *all*)-2.888 F EP
+%%Page: 20 20
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .817(learned results from book.bin.)72 96 R .817
+(you will w)5.817 F .817
+(ant to do this if you import my book.lrn, *and*, you ha)-.1 F 1.116
+-.15(ve c)-.2 H(on-).15 E(trib)72 108 Q .025
+(uted to my book.lrn data by sending me yours.)-.2 F(I')5.025 E .025
+(ll tak)-.1 F 2.525(ec)-.1 G .025
+(are of eliminating duplicates if you scre)-2.525 F 2.526(wu)-.25 G
+2.526(pi)-2.526 G(n)-2.526 E .373(what you send me, b)72 120 R .373
+(ut once you send me something, you run the risk of getting it "back ag)
+-.2 F .373(ain" later)-.05 F 5.373(.T)-.55 G(his)-5.373 E 1.676
+(is going to be a problem until e)72 132 R -.15(ve)-.25 G 1.676
+(ryone gets used to sharing something that is rather "v).15 F 1.677
+(apid" lik)-.25 F 4.177(et)-.1 G(his)-4.177 E("learned info" is...)72
+144 Q .761(Other than that, we are no)72 168 R 3.261(w")-.25 G .761
+(open for b)-3.261 F 3.261(usiness"... when)-.2 F .761(the ur)3.261 F
+.761(ge strik)-.18 F .761(es you, email me your .lrn \214le, I')-.1 F
+(ll)-.1 E -.1(ke)72 180 S .772(ep a lar).1 F .773
+(ge master here and update it on occasion.)-.18 F .773
+(Probably the best thing to do is to send me your .lrn)5.773 F .211
+(and at the same *instant* delete yours.)72 192 R .211
+(This will capture an)5.211 F .211
+(ything learned *after* you send me the \214le, b)-.15 F(ut)-.2 E(you')
+72 204 Q .283(ll get it all right back with the ne)-.1 F .283(xt v)-.15
+F .283(ersion of book.lrn that I distrib)-.15 F 2.783(ute. after)-.2 F
+.284(getting this ne)2.783 F 2.784(wb)-.25 G(ook.lrn)-2.784 E
+(back, here')72 216 Q 2.5(sw)-.55 G(hat you should do:)-2.5 E 2.5
+(1. rename)72 240 R(your old book.lrn to something else.)2.5 E(I')5 E
+(ll call it "book.lrn.old" here.)-.1 E 4.559(2. cop)72 264 R 4.559(ym)
+-.1 G 4.559(yb)-4.559 G 2.059(learn.dat to your machine, b)-4.559 F
+2.058(ut *do not* put it in the directory with your book.bin and)-.2 F
+.352(books.bin \214le because it will get confusing v)72 276 R .353
+(ery quickly if you do.)-.15 F .353(put it some)5.353 F .353
+(where else, because you are)-.25 F(going to remo)72 288 Q .3 -.15(ve i)
+-.15 H 2.5(tq).15 G(uickly an)-2.5 E(yw)-.15 E(ay)-.1 E 5(.I)-.65 G -.1
+('l)-5 G 2.5(lc).1 G(all it ne)-2.5 E -.65(w.)-.25 G(lrn for this e).65
+E(xample.)-.15 E 2.5(3. import)72 312 R(ne)2.5 E -.65(w.)-.25 G
+(lrn clear).65 E(import book.lrn.old)82 324 Q .139
+(and you are ready to rumble ag)72 348 R 2.639(ain. The)-.05 F .139
+(\214rst command clears the learned v)2.639 F .139
+(alues, sucks in my ne)-.25 F 2.639(wl)-.25 G .138(earn \214le)-2.639 F
+1.086(and updates e)72 360 R -.15(ve)-.25 G 3.586(rything. the).15 F
+1.086(second command re-learns e)3.586 F -.15(ve)-.25 G 1.086
+(rything you').15 F 1.387 -.15(ve l)-.5 H 1.087
+(earned since you sent me the).15 F .227(last book.lrn \214le.)72 372 R
+.226(After doing this your book.lrn will ha)5.226 F .526 -.15(ve m)-.2 H
+2.726(y.).15 G .226(lrn stuf)-2.726 F .226(f, plus your old.lrn stuf)
+-.25 F .226(f, just w)-.25 F(aiting)-.1 E(to be sent to me ag)72 384 Q
+(ain...)-.05 E .561(If this is confusing, I can probably add an automat\
+ic command to do all of this by renaming book.lrn, etc.)72 408 R
+(Hopefully this is not too error)72 420 Q(-prone for the time being an)
+-.2 E(yw)-.15 E(ay)-.1 E(...)-.65 E(What is this ne)72 444 Q 2.5(wP)-.25
+G(osition Learning I')-2.5 E .3 -.15(ve h)-.5 H(eard about?).15 E .73
+(Crafty no)72 468 R 3.23(wh)-.25 G .73
+(as a "permanent" hash table that is k)-3.23 F .729(ept from g)-.1 F
+.729(ame to g)-.05 F 3.229(ame. A)-.05 F .729
+(position gets into this "hash)3.229 F(\214le" when Crafty e)72 480 Q
+-.15(xe)-.15 G(cutes a search and the search v).15 E
+(alue is signi\214cantly lo)-.25 E(wer than the last search v)-.25 E
+(alue.)-.25 E .197(When this happens, Crafty stores the current informa\
+tion for this position in the permanent hash \214le, which)72 504 R .24
+(can hold up to 65536 positions.)72 516 R .24
+(Once it \214lls up, the positions are replaced on a FIFO basic al)5.24
+F -.1(wa)-.1 G .24(ys k).1 F(eeping)-.1 E(the most recent 64K entries.)
+72 528 Q .439(Each time crafty starts a search, the positions/scores fr\
+om this \214le are stuf)72 552 R .44(fed into the normal transposition)
+-.25 F .752(table, and used during the search just lik)72 564 R 3.252
+(ea)-.1 G 1.052 -.15(ny o)-3.252 H .752(ther table entry).15 F 5.752(.H)
+-.65 G(ere')-5.752 E 3.252(sh)-.55 G 1.252 -.25(ow i)-3.252 H 3.252(th)
+.25 G 3.252(elps: In)-3.252 F 3.252(ag)3.252 G .752(ame that w)-3.302 F
+(as)-.1 E(played, the follo)72 576 Q(wing mo)-.25 E -.15(ve)-.15 G 2.5
+(sa).15 G(nd scores were found by crafty \(playing white\):)-2.5 E 2.5
+(1. Ng5)72 600 R 2.5(\(+.277\) h6)2.5 F 2.5(2. Nh7)2.5 F 2.5
+(\(+.321\) Kg8)2.5 F 2.5(3. Qh5)2.5 F 2.5(\(+.133\) Qg7)2.5 F 2.5
+(4. Ng5)2.5 F(\(-2.122\) hxg5)2.5 E 2.004
+(So, the knight got trapped at h7, and at mo)72 624 R 2.305 -.15(ve 4 c)
+-.15 H 2.005(rafty disco).15 F -.15(ve)-.15 G 2.005
+(red that this is gross and "learns" this).15 F(result/position.)72 636
+Q 2.311 -.8(We p)72 660 T .711(lay the e).8 F .711(xact same g)-.15 F
+.711(ame ag)-.05 F 3.211(ain: e)-.05 F .711(xcept that tw)-.15 F 3.211
+(ot)-.1 G .71(hings can happen here.)-3.211 F .71
+(It might be that Ng7 is the)5.71 F .399
+(*only* square the knight can mo)72 672 R .699 -.15(ve t)-.15 H 2.899
+(oh).15 G .399(ere, which means this whole thing is forced.)-2.899 F
+.399(the \214rst search w)5.399 F(ould)-.1 E(\214nd:)72 684 Q 3.088
+(1. Ng5)72 708 R .588
+(\(-2.122\) if the search can reach 8 plies deep, which happens e)3.088
+F -.15(ve)-.25 G 3.088(ni).15 G 3.088(n5s)-3.088 G .588(econd g)-3.088 F
+3.087(ames. It')-.05 F 3.087(sl)-.55 G(earned)-3.087 E .023
+(that Ng5 is bad.)72 720 R .024(It stores *this* position in the perman\
+ent hash \214le also, and the ne)5.023 F .024(xt time you try this same)
+-.15 F EP
+%%Page: 21 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .447(trap, it will disco)72 96 R -.15(ve)-.15 G
+2.947(r4).15 G .447(-5 mo)-2.947 F -.15(ve)-.15 G 2.947(se).15 G .447
+(arlier that if the knight gets to g5 it is in trouble.)-2.947 F .446
+(Each g)5.446 F .446(ame will di)-.05 F -.15(ve)-.25 G -.18(rg).15 G(e)
+.18 E(from the \214rst g)72 108 Q(ame 3-4 mo)-.05 E -.15(ve)-.15 G 2.5
+(se).15 G(arlier)-2.5 E 5(.S)-.55 G(imple and ef)-5 E(fecti)-.25 E -.15
+(ve)-.25 G(.).15 E 3.507(2. Ng5)72 132 R 1.007
+(might not be forced, and if not, it kno)3.507 F 1.007
+(ws Ng5 loses a piece for a pa)-.25 F 1.008
+(wn, so it will promptly play)-.15 F(something else, which is e)72 144 Q
+(xactly what is desired.)-.15 E .81(This is implemented with tw)72 168 R
+3.31(o\()-.1 G .81(count 'em, tw)-3.31 F .81(o\) \214les.)-.1 F .81
+(One \214le "position.bin" is a binary \214le that contains)5.81 F .03
+(the hash table entries, and it right at one me)72 180 R -.05(ga)-.15 G
+.03(byte in size, *max*.).05 F .03
+(\(16 bytes per hash entry X 65536 entries)5.03 F 2.517(=e)72 192 S .017
+(xactly one me)-2.667 F .017(g, b)-.15 F .017(ut I ha)-.2 F .317 -.15
+(ve 8 ex)-.2 H .016
+(tra bytes for the FIFO queue implementation and to see ho).15 F 2.516
+(wm)-.25 G(an)-2.516 E 2.516(ye)-.15 G(ntries)-2.516 E
+(are currently in the \214le if it is not full.)72 204 Q 1.773(The seco\
+nd \214le is "position.lrn" and is, you guessed it, a \214le that can b\
+e shared with others, just lik)72 228 R(e)-.1 E 3.08(book.lrn. It)72 240
+R .58(contains all information needed to reconstruct the position, the \
+score, the depth, etc.)3.08 F .58(and also)5.58 F
+(included the pgn tags for who w)72 252 Q(as what color and when the g)
+-.1 E(ame w)-.05 E(as played...)-.1 E 1.099
+(This data can be imported with the ne)72 276 R 3.599(w")-.25 G 1.1
+(import" command \(the old book learn <\214lename> is no longer)-3.599 F
+.104(around\) which will import either book.lrn type data or position.l\
+rn type data and can tell them apart without)72 288 R .005(your ha)72
+300 R .005(ving to do an)-.2 F 2.505(ything. The)-.15 F .005
+(<clear> option is still there, should you w)2.505 F .006
+(ant to use it, and simply remo)-.1 F -.15(ve)-.15 G(s).15 E(the positi\
+on.lrn and position.bin \214les before starting the import process for \
+position learning.)72 312 Q .976(This can be turned of)72 336 R .975
+(f, if you lik)-.25 F .975
+(e, by checking out the "learn" command, which gi)-.1 F -.15(ve)-.25 G
+3.475(sy).15 G .975(ou the ability to)-3.475 F .035(turn of)72 348 R
+2.535(fb)-.25 G .036(ook learning \(as it presently w)-2.535 F .036
+(orks\), position learning, and the ne)-.1 F .036
+(xt book learning stage which will)-.15 F(add to the book in addition t\
+o learning which book lines are good and bad.)72 360 Q(What is this ne)
+72 384 Q 2.5(w")-.25 G(result" learning?)-2.5 E .386(Result learning w)
+72 408 R .386(orks just lik)-.1 F 2.886(en)-.1 G .386
+(ormal book learning, e)-2.886 F .386
+(xcept that if Crafty is checkmated or resigns, it will)-.15 F .548(ste\
+p back through the book line to \214nd the last point where it had more\
+ than one mo)72 420 R .848 -.15(ve t)-.15 H 3.048(oc).15 G .549
+(hoose from.)-3.048 F(It)5.549 E(will \215ag the mo)72 432 Q .3 -.15
+(ve i)-.15 H 2.5(tc).15 G(hose as "ne)-2.5 E -.15(ve)-.25 G 2.5(rp).15 G
+(lay ag)-2.5 E(ain".)-.05 E .151
+(This handles the case where the \214rst ten non-book mo)72 456 R -.15
+(ve)-.15 G 2.651(sp).15 G .151(roduce reasonable scores, b)-2.651 F .151
+(ut the position is one)-.2 F .398(that Crafty simply can')72 468 R
+2.898(th)-.18 G .398(andle v)-2.898 F .398(ery well.)-.15 F .399
+(If it loses such a g)5.398 F .399(ame, it will still v)-.05 F .399
+(ary the ne)-.25 F .399(xt time this open-)-.15 F 1.843
+(ing is played, as otherwise it w)72 480 R 1.842
+(ould possibly repeat the same opening, and w)-.1 F 1.842
+(ould certainly repeat the)-.1 F(remainder of the g)72 492 Q(ame.)-.05 E
+.33(All three learning modes are turned on by def)72 516 R .33
+(ault, although an)-.1 F 2.83(yo)-.15 G 2.83(ft)-2.83 G .33
+(hem can be disabled with the appropri-)-2.83 F
+(ate command option to "learn".)72 528 Q EP
+%%Trailer
+end
+%%EOF
diff --git a/crafty.faq b/crafty.faq
new file mode 100644 (file)
index 0000000..e362b03
--- /dev/null
@@ -0,0 +1,244 @@
+Frequently asked questions (FAQ) on Crafty.
+Last modified on 1996.06.17
+Send corrections/additions/comments to:
+Anil Mungal (amungal@vnet.ibm.com)
+
+-----
+[1] What is Crafty?
+[1.1] What platforms can Crafty run on?
+[1.2] What is Crafty's rating/strength?
+[1.3] Where can I get Crafty?
+[1.4] How do I build Crafty?
+[1.5] How do I build Crafty's Book?
+[1.6] How can I maximize Crafty's performance?
+[1.7] What are "tablebases" and how do I use 'em?
+[1.8] How can I get a graphical interface with Crafty?
+[1.9] How can I use both Crafty and XBoard to analyze positions/games?
+-----
+[1] What is Crafty?
+
+Crafty is a chess program written by Bob Hyatt (hyatt@cis.uab.edu).
+It is modeled after Cray Blitz (also written by Bob).
+
+Crafty has the following features:
+- written in C
+- can be compiled with the GNU C compiler on various platforms
+- has a customizable opening book
+- supports tablebases (Steven Edward's endgame database)
+- text interface
+
+Crafty is a work in progress, and is frequently updated/enhanced by Bob.
+-----
+[1.1] What platforms can Crafty run on?
+
+The decision to write Crafty so that it compiles with the GNU C compiler
+allows it to run on many platforms without the hassle of porting.
+(Thanks Bob)
+
+Currently Crafty runs on:
+
+- DEC alpha running OSF/1-Digital Unix
+- any Cray-1 compatible architecture including XMP, YMP, C90, etc.
+- HP workstation running HP_UX operating system (unix)
+- PC running DOS, Windows, or OS/2 Warp, using DJGPP port of gcc to compile
+- RS/6000 running AIX (unix)
+- Sun SparcStation running Solaris (SYSV/R4) Unix
+- Sun SparcStation running SunOX (BSD) Unix
+- Any architecture running the Linux operating system
+- Microsoft Win95/WinNT, when compiled with Microsoft Visual C++
+- Macintosh and other MacOS-compatible computers
+
+Storage requirements range from 1Mb (small book and no tablebase) to 60Mb
+(largest book and no tablebases) to 300Mb (largest book and all tablebases).
+-----
+[1.2] What is Crafty's rating/strength?
+
+Crafty's strength is directly dependant upon processor speed, hash table size,
+size and content of it's opening book, and it's use of an endgame database.
+Versions of Crafty running on ICC and FICS have ratings around 2500-2700.
+This does not necessarily mean that Crafty will perform at this level
+under tournament conditions.
+
+Crafty's computational power in nodes/sec has been measured as follows:
+
+  Platform                                      Nodes/sec
+  --------                                      ---------
+  DEC alpha running OSF/1-Digital Unix             75,000
+  Cray-1 XMP, YMP, C90, etc.                       ??????
+  HP workstation running HP_UX operating system    35,000
+  80X86 architecture running LINUX (unix)          30,000 (P5/133)
+  Pentium 100 PC                                   24,000
+  Pentium Pro 200 PC                               75,000
+  RS/6000 running AIX (unix)                       ??????
+  Sun SparcStation running Solaris (SYSV/R4) Unix  30,000 (Sparc-20)
+
+According to the Louget Chess test, Crafty has been given the following ratings:
+
+               Platform  Hash table  Louget rating (comparable to FIDE rating)
+               ========  ==========  =============
+Crafty v9.21   PP200        56 MB         2395
+Crafty v9.21   PP150        56 MB         2365
+Crafty v9.21   P133         14 MB         2305
+Crafty v9.21   P90           7 MB         2235
+
+Where the platforms were:
+PP200 = Pentium Pro 200 Mhz, 16+256KB internal caches, Aurora Intel motherboard
+PP150 = Pentium Pro 150 Mhz, 16+256KB internal caches, Asustek motherboard
+P133 = Pentium 133 Mhz, 256 KB pipeline burst synchronous L2 cache
+P90 = Pentium 90 Mhz, 256 KB asynchronous cache (Intel Zappa, Triton Chipset)
+
+For more info on the Louget Chess test, you can contact:
+Frederic Louguet (louguet@worldnet.net)
+----
+[1.3] Where can I get Crafty?
+
+You can get Crafty by anonymous FTP at:  ftp://news.cis.uab.edu/pub/hyatt
+
+Here is a description of the files that you will probably see.
+
+read.me       : Read me file that Bob updates
+crafty.exe    : PC DOS executable. (needs DPMI)
+craftyt.exe   : PC DOS executable with tablebases support. (needs DPMI)
+crafty.faq    : this file
+crafty.linux  : Linux executable
+crafty.sun    : Sun Sparc-20 executable
+crafty.zip    : Crafty source code
+crafty.tar.Z  : Crafty source code
+crafty.tar.gz : Crafty source code
+cwsdpmi.exe   : DPMI provider
+large1.zip    : Large PGN file used to create an opening book (1/4)
+large2.zip    : Large PGN file used to create an opening book (2/4)
+large3.zip    : Large PGN file used to create an opening book (3/4)
+large4.zip    : Large PGN file used to create an opening book (4/4)
+medium.zip    : Medium PGN file used to create an opening book
+small.zip     : Small PGN file used to create an opening book
+start.zip     : Tiny PGN file used to create an opening book
+probs.Z       : A test suite of chess problems
+wcrafty.exe   : Windows executable.
+wcraftyt.exe  : Windows executable with tablebases support.
+
+The Macintosh port of Crafty is available from <ftp://ftp.limunltd.com/crafty/>.
+The Mac versions are supported from <http://www.limunltd.com/crafty/>.
+
+-----
+[1.4] How do I build Crafty?
+
+If you wish to build Crafty for yourself, you need a copy of the source
+and the GNU C compiler (or the djgpp compiler for DOS) to compile.
+
+   a) Unzip/uncompress the source code.
+
+   b) Follow the instructions in the Makefile.  You will probably have to:
+      - comment/uncomment sections based on your hardware platform.
+      - edit the directory paths.
+      - add whatever optimization flags that you want.
+
+   c) type make
+
+-----
+[1.5] How do I build Crafty's Book?
+
+You need an executable version of Crafty and a PGN file to build it's book.
+Choose between large (unzip large1.zip, large2.zip, large3.zip, large4.zip
+and append them into one file), medium (unzip medium.zip), or small.zip
+(unzip small.zip).
+Large produces a 90Mb-60Mb opening database with 100K GM games; medium produces
+a 30Mb database, and small will produce a 1Mb database. Note that you will
+need at least double this space to create the files, since temporary files
+are written to disk, and then later deleted.  Use the following commands to
+build the book:
+
+       crafty
+       book create <filename> 60
+       quit
+
+<filename> should be replaced by the PGN filename that is created when you unzip
+the book file of your choice.
+
+Start.zip contains a small file that is used to create books.bin.
+books.bin is created as follows:
+
+       crafty
+       books create start.pgn 60
+       quit
+
+This file contains suggested openings that fit Crafty's "open" style of
+play better.  You can edit/modify this at will, and it takes a fraction of
+a second to re-build after modification, so the big book file can be left
+alone.
+
+Note that the "60" is arbitrary, and is used to cut book lines off at roughly
+60 plies.  You "can" say 500, so that the entire games will be stored,
+but you need even more disk space.  You can also reduce this number to 30
+(15 moves for each side) to conserve disk space as needed, since the book
+will contain far fewer positions.
+-----
+[1.6] How can I maximize Crafty's performance?
+
+   a) Compile with different combinations of the following options:
+      -DCOMPACT_ATTACKS, and -DUSE_SPLIT_SHIFTS.  Then check the performance
+      of Crafty.  The best test is to simply let it search to a fixed depth
+      (say sd=8 for example) from the opening position and pick the compiler
+      /optimizer options that minimize this time.  Pick SD=n so that the search
+      takes at least 2 minutes.
+
+   b) Increase the size of hash and hashp based on the following
+      observations:
+      - hash is more important that hashp.  the only guidance is that
+        you don't want to make hash so large things slow down due to
+        excessive paging or swapping.
+      - there's a compile option -DFAST.  if you use this, crafty won't
+        report any hashing statistics, making it harder to decide when
+        to make things bigger.
+-----
+[1.7] What are tablebases and how do I use 'em?
+
+tablebases are endgame databases distributed freely by Steven Edwards
+(sje@mv.mv.com).  If you are downloading an executable, for dos you'll
+want craftyt.exe, and for Win95/WinNT, you'll want wcraftyt.exe.  If
+you compile your own, -DTABLEBASES will do the trick.
+
+Once you have an executable that expects tablebases, you typically
+put them in a sub-directory TB that should be in the directory where
+you normally run crafty.  You can change this by editing the Makefile
+and changing TBDIR to point to where you want 'em.
+
+Next, you need the tablebase files.  These are available from ftp.onenet.net
+and other ftp sites.  The files are named like this:  KBNK.tbb and KBNK.tbw
+for the KBN vs K tablebases.  On some ftp machines the "." is replaced by a
+"_".  after downloading them, rename them to replace the _ by . or crafty
+will not recognize them.  These files are also available from the primary
+Crafty site ftp.cis.uab/edu/pub/hyatt/TB.
+
+The complete set takes about 260Mb, for all 4-man endings.  We are working
+on new ones for frequently encountered endings like KRP vs KR.  These will
+be made available as they are completed.  There are 10 5-piece files now
+available, KRPKR, KRNKR, KRBKR, KRRKR and KQRKR, where each has a .tbb
+and .tbw pair.  These files require about 500mb zipped, but will expand
+to about 2.3 gigabytes when unzipped.  So be prepared for a large disk
+space requirement.
+
+Note that these databases are "mate in n" type databases, so you'll see
+some interesting mate announcements from Crafty, with Mate in 30 a very
+common occurrence.  :)
+-----
+[1.8] How can I get a graphical interface with Crafty?
+
+On Unix systems, you can use XBoard with Crafty.  On Windows systems, you
+can use WinBoard.  For more information on XBoard and WinBoard, check out:
+http://www.research.digital.com/SRC/personal/Tim_Mann/chess.html
+-----
+[1.9] How can I use both Crafty and XBoard to analyze positions/games?
+
+It is now possible to use XBoard and Crafty together to perform
+interactive analysis of positions and stored (PGN, etc.) games.
+
+To do this, you need a recent version of Crafty (12.3 or up) and
+xboard/winboard version 3.6.1 or later.
+
+For instructions, see the winboard/xboard faq, which explains how to use
+this powerful and interesting facility.
+-----
+** End of Crafty FAQ **
+
+
diff --git a/read.me b/read.me
new file mode 100644 (file)
index 0000000..a9ac796
--- /dev/null
+++ b/read.me
@@ -0,0 +1,169 @@
+Crafty version 18.2
+
+-----------------------------------------------------------------------------
+What's new?
+
+the winboard "hang" problem was fixed, thanks to Tim Mann.  Other changes
+include some major work on book learning to make it more 'aggressive'.  IE
+if you clear all your learning data, and let crafty play, it will try to
+repeat won games and avoid lost games.
+
+There are other minor changes:
+
+*   18.2    minor bug in analyze mode would break the "h" command when black  *
+*           was on move, and show one less move for either side that had      *
+*           actually been played in the game.  another bug also reversed the  *
+*           sign of a score whispered in analysis mode.  recapture extension  *
+*           is disabled by default.  to turn it on, it is necessary to use    *
+*           -DRECAPTURE when compiling search.c and option.c.  LearnBook()    *
+*           has been modified to 'speed up' learning.  see the comments in    *
+*           that module to see how it was changed.  LearnResult() has been    *
+*           removed.  LearnBook() is now used to do the same thing, except    *
+
+(from main.c)
+
+-----------------------------------------------------------------------------
+The Crafty mailing list
+
+Specific questions can be directed to majordomo@cis.uab.edu, and in the
+body of this email, put the text "subscribe crafty-list" (without the
+quotes) which will subscribe to the crafty-list@cis.uab.edu mailing list, 
+which covers lots of questions about the current goings-on in crafty, from
+problems, to installation questions, to future development goals.
+
+-----------------------------------------------------------------------------
+How does Crafty work?
+
+Download the file "crafty.doc" which is a complete description of all of
+the commands for Crafty along with examples where needed.  This covers
+*every* command in the current version of Crafty.
+
+-----------------------------------------------------------------------------
+executable choices.
+
+wcrafty-*.exe is the executable you need to run crafty under
+windows, or under windows in a dos box.  
+
+if you want tablebase support the standard executables provide this,
+but you must add egtb to the crafty.rc/.craftyrc file.  
+
+The Macintosh port of Crafty is available in the macintosh directory.
+
+-----------------------------------------------------------------------------
+book database choices.
+
+All of these book choices are in the common directory.  Each book has its
+own sub-directory so that you can cd into the appropriate directory and then
+"mget *" to get everything you need.
+
+large.zip, medium.zip and small.zip are the raw input files to make the three
+different sized books.  large produces a 60mb opening database with 100K GM
+games; medium produces a 30MB database, and small will produce a 1MB database.
+On my sparc-20, large takes about 7 minutes to build, medium around 3 minutes,
+and small is under minute.  Note that you will need at least double this space
+to create the files, as temporary stuff is written to disk along the way, and
+then deleted later.
+
+There are two new files available, "rock.pgn" and "wall.pgn".  These files
+are still .gz compressed archives, but because they are so large (rock.pgn
+has over 660,000 games in it) they are broken into pieces.  These pieces
+must be combined before they are unzipped.  In windows, use a dos box and
+enter this:  copy rock.01+rock.02+...+rock.10 rock.gz.  Then ungzip rock.gz
+and you should be set.  "wall" is about one-third the size of "rock" if you
+want something smaller.
+
+There is a newer book, called 'enormous' that can be downloaded in
+pieces (this from Dan's FTP site).  The pieces are a,b,c,d,e and
+correspond to ECO classifications.  Altogether this is roughly one
+gigabyte after it unzipped, which can make a truly huge book if you
+are not careful.
+
+Note that small.txt was made from opening textbooks, and, as a result,
+does not have the PGN "Result" tag.  This causes some book random modes
+to not work correctly because crafty won't play an opening that has no
+wins to its credit.  Either don't use small for the present, or else make
+your own from a select group of pgn games, maybe the first 5000 games from
+medium.zip as an example.  (for more specific info, see crafty.doc)
+
+crafty
+book create <filename> 60 3
+quit
+
+<filename> should be replaced by what you get when you unzip the book file
+of your choice.
+
+start.zip contains a small file that is used to create books.bin.
+books.bin is created as follows:
+
+crafty
+books create start.pgn 60
+quit
+
+this file contains suggested openings that fit Crafty's "open" style of
+play better.  You can edit/modify this at will, and it takes a fraction of
+a second to re-build after modification, so the big book file can be left 
+alone.  
+
+Note that the "60" is arbitrary, and is used to cut book lines off at roughly
+60 plies.  you "can" say 500, so that the entire games will be stored, but you
+need even more disk space.  you can also reduce this number to 30 (15 moves for
+each side to conserve disk space as needed, since the book will contain far
+fewer positions.
+
+Note that you can also look in the current directory (v15 at present) and
+you will find a book.bin and books.bin file already built from rock.pgn
+and ready to use.  These are under 10mb together and are ready to use.
+You only have to put them in the same directory with crafty and you will
+be set to play.
+
+-----------------------------------------------------------------------------
+crafty.zip is a zip file that contains a complete set of source and
+header files for crafty and a Linux makefile that you will have to tweak for
+your machine.  ditto for crafty.tar.gz just using gzip and tar instead for
+those that don't have plain zip.
+
+Note that you probably need only change the #define LINUX to #define SUN
+for example, and it will self-configure for SUN. Any of the machines in
+the comments can be done like this.  others may take some playing, but the
+options are commented to help.
+
+If you are using gcc/Linux, the included Makefile should fit your needs
+perfectly, since linux uses gcc.  NOTICE:  if you are running linux, and
+have a gcc earlier than 2.6.3, crafty probably will compile cleanly but
+won't run.  Early versions seem to have a defective implementation of the
+long long data type, which breaks crafty completely.  Note that there is
+a linux version of crafty (crafty.linux) here compiled with gcc-i 2.6.3, if
+you have this problem.  You will get an error when you start it, about the
+wrong version of ld.so.n, but it seems to run correctly.  Note also, that
+I use gcc-i2.6.3, the pentium-specific version of gcc that is kept on
+most linux archive sites in the development directory.  If you are
+not using this, you will have to modify CFLAGS to get rid of the pentium
+optimization options and simply use -On where n=the level that produces
+the fastest code (you'll have to try several to find the best usually.)
+
+-----------------------------------------------------------------------------
+It is highly recommended that you use the latest version of Xboard
+or Winboard from Tim Mann.  
+
+   http://www.research.digital.com/SRC/personal/Tim_Mann/chess.html
+
+To use Crafty with xboard, you do the following:
+
+xboard -fcp crafty 
+
+This will let you play using the mouse, etc.
+
+To set the time control, try this:
+
+xboard -fcp crafty -tc nm -mps mvs
+
+replace nm by the number of minutes in the time control you'd like to
+play under, mvs should be the number of moves in a time control.  Blitz
+might be something like -tc 5 -mvs 60 to play 60 moves in 5 minutes, then 60
+more moves in 5 minutes, etc.
+
+to use it to play on ics/fics/etc, you can
+
+xboard -ics -zp -fcp "crafty ..." and create a .icsrc file, first line is
+login id, second line is password, remaining lines are simple force-fed to
+the server to set things like your formula, etc.
diff --git a/start.pgn b/start.pgn
new file mode 100644 (file)
index 0000000..305881f
--- /dev/null
+++ b/start.pgn
@@ -0,0 +1,80 @@
+[Site ""]
+e4 {play 40%}
+[Site ""]
+d4 {play 30%}
+[Site ""]
+f4 {play 30%}
+
+[Site ""]
+e4 e5 {play 30%} 
+[Site ""]
+e4 d5 {play 30%} exd5 Qxd5 {play 100%}
+[Site ""]
+e4 c5 {play 20%}
+[Site ""]
+e4 c6 {play 20%}
+
+[Site ""]
+e4 e5 Nf3 {play 25%}
+[Site ""]
+e4 e5 Bc4 {play 25%}
+[Site ""]
+e4 e5 Nc3 {play 25%}
+[Site ""]
+e4 e5  f4 {play 25%}
+
+[Site ""]
+e4 e5 Nf3  d5 {play 20%}
+[Site ""]
+e4 e5 Nf3  Nf6 {play 30%}
+[Site ""]
+e4 e5 Nf3  d6 {play 30%}
+[Site ""]
+e4 e5 Nf3  f5 {play 20%}
+
+[Site ""]
+e4 e5 Nf3 Nc6 Bc4 {play 30%}
+[Site ""]
+e4 e5 Nf3 Nc6  d4 {play 30%} 
+[Site ""]
+e4 e5 Nf3 Nc6 Bb5 {play 30%}
+[Site ""]
+e4 e5 Nf3 Nc6  c3 {play 10%}
+
+[Site ""]
+e4 e5 Nf3 Nc6 Bc4 Bc5 b4 {play 50%}
+[Site ""]
+e4 e5 Nf3 Nc6 Bc4 Bc5 c3 {play 50%}
+
+[Site ""]
+e4 e5 Nf3 Nc6  d4 {play 30%} exd4 c3 {play 10%}
+[Site ""]
+e4 e5 Nf3 Nc6  d4 {play 30%} exd4 Nxd4 {play 60%}
+[Site ""]
+e4 e5 Nf3 Nc6  d4 {play 30%} exd4 Bc4 {play 30%}
+
+[Site ""]
+e4 c5 c4 g6 {play 100%}
+
+[Site ""]
+e4 Nf6 e5 Nd5 d4 d6 Nf3 dxe5 Nxe5 Nd7 Nxf7?
+
+[Site ""]
+d4 d5 c4 {play 100%}
+[Site ""]
+d4 d5 Nf3 Nf6 {play 100%} Bg5 Ne4 {play 100%}
+[Site ""]
+d4 d5 e3 Bf5 {play 100%}
+[Site ""]
+d4 d5 f3 Bf5 {play 100%}
+[Site ""]
+d4 d5 f4 Bf5 {play 100%}
+[Site ""]
+d4 d5 Qd3? c5 {play 100%}
+[Site ""]
+d4 d5 Nc3 Bf5 {play 100%} Bg5 f6 {play 100%}
+[Site ""]
+d4 d5 Bf4 Bf5 {play 100%}
+
+[Site ""]
+Nf3 d5 c3 Bf5 {play 100%}
This page took 0.369734 seconds and 4 git commands to generate.