fixed texinfo files, added windows help file, removed config.h from git
[xboard.git] / xboard.texi
1 \input texinfo  @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename xboard.info
4 @settitle XBoard
5 @c %**end of header
6
7 @include version.texi
8
9 @ifinfo
10 @format
11 INFO-DIR-SECTION Games
12 START-INFO-DIR-ENTRY
13 * xboard: (xboard).         An X Window System graphical chessboard.
14 END-INFO-DIR-ENTRY
15 @end format
16 @end ifinfo
17
18 @titlepage
19 @title XBoard
20
21 @page
22 @vskip 0pt plus 1filll
23 @include copyright.texi
24
25 @end titlepage
26 @ifset man
27 .TH xboard 6 "$Date: " "GNU"
28 .SH NAME
29 .PP
30 xboard @- X graphical user interface for chess
31 .SH SYNOPSIS
32 .PP
33 .B xboard [options]
34 .br
35 .B xboard -ics -icshost hostname [options]
36 .br
37 .B xboard -ncp [options]
38 .br
39 .B |pxboard
40 .br
41 .B cmail [options]
42 @end ifset
43
44 @node Top
45 @top Introduction
46 @cindex introduction
47
48 @ifset man
49 .SH DESCRIPTION
50 @end ifset
51
52 XBoard is a graphical chessboard that can serve as a
53 user interface to chess engines (such as GNU Chess), the
54 Internet Chess Servers,
55 electronic mail correspondence chess, or your own collection of saved games.
56
57 This manual documents version @value{VERSION} of XBoard.
58
59 @menu
60 * Major modes::     The main things XBoard can do.
61 * Menus::           Menus, buttons, and keys.
62 * Options::         Command options supported by XBoard.
63 * Chess Servers::   Using XBoard with an Internet Chess Server (ICS).
64 * Firewalls::       Connecting to a chess server through a firewall.
65 * Environment::     Environment variables.
66 * Limitations::     Known limitations and/or bugs.
67 * Problems::        How and where to report any problems you run into.
68 * Contributors::    People who have helped developing XBoard.
69 * CMail::           Using XBoard for electronic correspondence chess.
70 * Other programs::  Other programs you can use with XBoard.
71 @ifnottex
72 * Copyright::       Copyright notice for this manual.
73 @end ifnottex
74 * Copying::         The GNU General Public License.
75
76 * Index::           Index of concepts and symbol names.
77 @end menu
78
79 @node Major modes
80 @chapter Major modes
81 @cindex Major modes
82
83 XBoard always runs in one of four major modes.  You select the
84 major mode from the command line when you start up XBoard.
85
86 @table @asis
87 @item xboard [options]
88 As an interface to GNU Chess or another chess engine running on your
89 machine, XBoard lets you play a game against the machine,
90 set up arbitrary positions, force variations, watch a game between two
91 chess engines, interactively analyze your stored games or set up and
92 analyze arbitrary positions.  (Note: Not all chess engines support
93 analysis.)
94 @item xboard -ics -icshost hostname [options]
95 As Internet Chess Server (ICS) interface, XBoard
96 lets you play against other ICS users, observe games
97 they are playing, or review games that have recently finished.  Most
98 of the ICS "wild" chess variants are supported, including bughouse.
99 @item xboard -ncp [options]
100 XBoard can also be used simply
101 as an electronic chessboard to play through games. It will read and
102 write game files and allow you to play through variations
103 manually. You can use it to browse games off the net or review games
104 you have saved.  These features are also available in the other modes.
105 @item |pxboard
106 If you want to pipe games into XBoard, use the supplied shell
107 script @file{pxboard}.  For example, from the news reader @file{xrn},
108 find a message with one or more games in it, click the Save button,
109 and type @samp{|pxboard} as the file name.
110 @item cmail [options]
111 As an interface to electronic mail correspondence chess, XBoard
112 works with the cmail program. See @ref{CMail} below for
113 instructions.
114 @end table
115
116 @node Menus
117 @chapter Menus, buttons, and keys
118 @cindex Menus
119
120 To move a piece, you can drag it with the left mouse button, or you
121 can click the left mouse button once on the piece, then once more on
122 the destination square.  To drop a new piece on a square (when
123 applicable), press the middle or the right mouse button over the
124 square and select from the popup menu.  In cases where you can drop
125 either a white or black piece, use the middle button (or shift+right)
126 for white and the right button (or shift+middle) for black.  When you
127 are playing a bughouse game on an Internet Chess Server, a list of the
128 offboard pieces that each player has available is shown in the window
129 title after the player's name; in addition, the piece menus show the
130 number of pieces available of each type. From version 4.3.14 on, it is
131 also possible in crazyhouse, bughouse or shogi to dag and drop pieces
132 to the board from the holdings squares displayed next to the board.
133
134 All other XBoard commands are available from the menu bar. The most
135 frequently used commands also have shortcut keys or on-screen buttons.
136
137 When XBoard is iconized, its graphical icon is a white knight if
138 it is White's turn to move, a black knight if it is Black's turn.  See
139 Iconize in @ref{Keys} below if you have problems getting this
140 feature to work.
141
142 @menu
143 * File Menu::       Accessing external games and positions.
144 * Mode Menu::       Selecting XBoard's mode.
145 * Action Menu::     Talking to the chess engine or ICS opponents.
146 * Step Menu::       Controlling the game.
147 * Options Menu::    User preferences.
148 * Help Menu::       Getting help.
149 * Keys::            Other shortcut keys.
150 @end menu
151
152 @node File Menu
153 @section File Menu
154 @cindex File Menu
155 @cindex Menu, File
156 @table @asis
157 @item New Game
158 @cindex New Game, Menu Item
159 Resets XBoard and the chess engine to the beginning of a new chess
160 game. The @kbd{r} key is a keyboard equivalent. In Internet Chess
161 Server mode, clears the current state of XBoard, then
162 resynchronizes with the ICS by sending a refresh command. If you want to
163 stop playing, observing, or examining an ICS game, use an
164 appropriate command from the Action menu, not @samp{New Game}.
165 @xref{Action Menu}.
166 @item New Shuffle Game
167 @cindex New Shuffle Game, Menu Item
168 Similar to @samp{New Game}, but allows you to specify a particular initial position 
169 (according to a standardized numbering system)
170 in chess variants which use randomized opening positions (e.g. Chess960).
171 The selected opening position will persistently be chosen on any following
172 New Game command until you use this menu to select another. Selecting
173 position number -1 will produce a newly randomized position on any new game.
174 Using this menu item in variants that normally do not shuffle their opening position
175 does cause these variants to become shuffle variants until you use the
176 @samp{New Shuffle Game} menu to explicitly switch the randomization off,
177 or select a new variant.
178 @item New Variant
179 @cindex New variant, Menu Item
180 Allows you to select a new chess variant in non-ICS mode. 
181 (In ICS play, the ICS is responsible for deciding which variant will be played,
182 and XBoard adapts autmatically.) If you play with an engine, the engine must
183 be able to play the selected variant, or the command will be ignored.
184 XBoard supports all major variants, such as xiangqi, shogi, chess, chess960,
185 Capablanca Chess, shatranj, crazyhous, bughouse.
186 @item Load Game
187 @cindex Load Game, Menu Item
188 Plays a game from a record file. The @kbd{g} key is a keyboard equivalent.
189 A popup dialog prompts you for the file name. If the file contains more
190 than one game, a second popup dialog
191 displays a list of games (with information drawn from their PGN tags, if
192 any), and you can select the one you want. Alternatively, you can load the
193 Nth game in the file directly, by typing the number @kbd{N} after the
194 file name, separated by a space.
195
196 The game file parser will accept PGN (portable game notation),
197 or in fact almost any file that contains moves in algebraic
198 notation. 
199 Notation of the form @samp{P@@f7}
200 is accepted for piece-drops in bughouse games;
201 this is a nonstandard extension to PGN.
202 If the file includes a PGN position (FEN tag), or an old-style
203 XBoard position diagram bracketed by @samp{[--} and @samp{--]}
204 before the first move, the game starts from that position. Text
205 enclosed in parentheses, square brackets, or curly braces is assumed to
206 be commentary and is displayed in a pop-up window. Any other
207 text in the file is ignored. PGN variations (enclosed in
208 parentheses) are treated as comments; XBoard is not able to walk
209 variation trees.
210 The nonstandard PGN tag [Variant "varname"] functions similarly to
211 the -variant command-line option (see below), allowing games in certain chess
212 variants to be loaded.  There is also a heuristic to 
213 recognize chess variants from the Event tag, by looking for the strings
214 that the Internet Chess Servers put there when saving variant ("wild") games.
215 @item Load Next Game
216 @cindex Load Next Game, Menu Item
217 Loads the next game from the last game record file you loaded.
218 The shifted @kbd{N} key is a keyboard equivalent.
219 @item Load Previous Game
220 @cindex Load Previous Game, Menu Item
221 Loads the previous game from the last game record file you
222 loaded.  The shifted @kbd{P} key is a keyboard equivalent.
223 Not available if the last game was loaded from a pipe.
224 @item Reload Same Game
225 @cindex Reload Same Game, Menu Item
226 Reloads the last game you loaded.
227 Not available if the last game was loaded from a pipe.
228 @item Save Game
229 @cindex Save Game, Menu Item
230 Appends a record of the current game to a file.
231 A popup dialog
232 prompts you for the file name. If the game did not begin with
233 the standard starting position, the game file includes the
234 starting position used. Games are saved in the PGN (portable
235 game notation) format, unless the oldSaveStyle option is true,
236 in which case they are saved in an older format that is specific
237 to XBoard. Both formats are human-readable, and both can be
238 read back by the @samp{Load Game} command.
239 Notation of the form @samp{P@@f7}
240 is accepted for piece-drops in bughouse games;
241 this is a nonstandard extension to PGN.
242 @item Copy Game
243 @cindex Copy Game, Menu Item
244 Copies a record of the current game to an internal clipboard in PGN
245 format and sets the X selection to the game text.  The game can be
246 pasted to another application (such as a text editor or another copy
247 of XBoard) using that application's paste command.  In many X
248 applications, such as xterm and emacs, the middle mouse button can be
249 used for pasting; in XBoard, you must use the Paste Game command.
250 @item Paste Game
251 @cindex Paste Game, Menu Item
252 Interprets the current X selection as a game record and loads it, as
253 with Load Game.
254 @item Load Position
255 @cindex Load Position, Menu Item
256 Sets up a position from a position file.  A popup dialog prompts
257 you for the file name. If the file contains more than one saved
258 position, and you want to load the Nth one, type the number N
259 after the file name, separated by a space. Position files must
260 be in FEN (Forsythe-Edwards notation), or in the format that the
261 Save Position command writes when oldSaveStyle is turned on.
262 @item Load Next Position
263 @cindex Load Next Position, Menu Item
264 Loads the next position from the last position file you loaded.
265 @item Load Previous Position
266 @cindex Load Previous Position, Menu Item
267 Loads the previous position from the last position file you
268 loaded.  Not available if the last position was loaded from a pipe.
269 @item Reload Same Position
270 @cindex Reload Same Position, Menu Item
271 Reloads the last position you loaded.
272 Not available if the last position was loaded from a pipe.
273 @item Save Position
274 @cindex Save Game, Menu Item
275 Appends a diagram of the current position to a file.
276 A popup dialog
277 prompts you for the file name. Positions are saved in
278 FEN (Forsythe-Edwards notation) format unless the @code{oldSaveStyle}
279 option is true, in which case they are saved in an older,
280 human-readable format that is specific to XBoard. Both formats
281 can be read back by the @samp{Load Position} command.
282 @item Copy Position
283 @cindex Copy Position, Menu Item
284 Copies the current position to an internal clipboard in FEN format and
285 sets the X selection to the position text.  The position can be pasted
286 to another application (such as a text editor or another copy of
287 XBoard) using that application's paste command.  In many X
288 applications, such as xterm and emacs, the middle mouse button can be
289 used for pasting; in XBoard, you must use the Paste Position command.
290 @item Paste Position
291 @cindex Paste Position, Menu Item
292 Interprets the current X selection as a FEN position and loads it, as
293 with Load Position.
294 @item Mail Move
295 @itemx Reload CMail Message
296 @cindex Mail Move, Menu Item
297 @cindex Reload CMail Message, Menu Item
298 See @ref{CMail}.
299 @item Exit
300 @cindex Exit, Menu Item
301 Exits from XBoard. The shifted @kbd{Q} key is a keyboard equivalent.
302 @end table
303
304 @node Mode Menu
305 @section Mode Menu
306 @cindex Menu, Mode
307 @cindex Mode Menu
308 @table @asis
309 @item Machine White
310 @cindex Machine White, Menu Item
311 Tells the chess engine to play White.
312 @item Machine Black
313 @cindex Machine Black, Menu Item
314 Tells the chess engine to play Black.
315 @item Two Machines
316 @cindex Two Machines, Menu Item
317 Plays a game between two chess engines.
318 @item Analysis Mode
319 @cindex Analysis Mode, Menu Item
320 XBoard tells the chess engine to start analyzing the current game/position
321 and shows you the analysis as you move pieces around.
322 Note: Some chess engines do not support Analysis mode.
323
324 To set up a position to analyze, you do the following:
325
326 1. Select Edit Position from the Mode Menu
327
328 2. Set up the position.  Use the middle and right buttons to
329 bring up the white and black piece menus.
330
331 3. When you are finished, click on either the Black or White
332 clock to tell XBoard which side moves first.
333
334 4. Select Analysis Mode from the Mode Menu to start the analysis.
335 @item Analyze File
336 @cindex Analyze File, Menu Item
337 This option lets you load a game from a file (PGN, XBoard format, etc.)
338 and analyze it. When you select this menu item, a popup window appears
339 and asks for a filename to load.
340 If the file contains multiple games, another popup appears that lets
341 you select which game you wish to analyze.
342 After a game is loaded, use the XBoard arrow buttons to step
343 forwards/backwards through the game and watch the analysis.
344 Note: Some chess engines do not support Analysis mode.
345 @item ICS Client
346 @cindex ICS Client, Menu Item
347 This is the normal mode when XBoard
348 is connected to a chess server.  If you have moved into
349 Edit Game or Edit Position mode, you can select this option to get out.
350
351 To use xboard in ICS mode, run it in the foreground with the -ics
352 option, and use the terminal you started it from to type commands and
353 receive text responses from the chess server.  See
354 @ref{Chess Servers} below for more information.
355
356 XBoard activates some special position/game editing features when you
357 use the @kbd{examine} or @kbd{bsetup} commands on ICS and you have
358 @samp{ICS Client} selected on the Mode menu.  First, you can issue the
359 ICS position-editing commands with the mouse.  Move pieces by dragging
360 with mouse button 1.  To drop a new piece on a square, press mouse
361 button 2 or 3 over the square.  This brings up a menu of white pieces
362 (button 2) or black pieces (button 3).  Additional menu choices let
363 you empty the square or clear the board.  Click on the White or Black
364 clock to set the side to play.  You cannot set the side to play or
365 drag pieces to arbitrary squares while examining on ICC, but you can
366 do so in @kbd{bsetup} mode on FICS.  In addition, the menu commands
367 @samp{Forward}, @samp{Backward}, @samp{Pause}, and @samp{Stop Examining}
368 have special functions in this mode; see below.
369 @item Edit Game
370 @cindex Edit Game, Menu Item
371 Allows you to make moves for both Black and White, and to change
372 moves after backing up with the @samp{Backward} command. The clocks do
373 not run.
374
375 In chess engine mode, the chess engine continues to check moves for legality
376 but does not participate in the game. You can bring the chess engine
377 into the game by selecting @samp{Machine White}, @samp{Machine Black},
378 or @samp{Two Machines}.
379
380 In ICS mode, the moves are not sent to the ICS: @samp{Edit Game} takes
381 XBoard out of ICS Client mode and lets you edit games locally.
382 If you want to edit games on ICS in a way that other ICS users
383 can see, use the ICS @kbd{examine} command or start an ICS match
384 against yourself.
385 @item Edit Position
386 @cindex Edit Position, Menu Item
387 Lets you set up an arbitrary board position.
388 Use mouse button 1 to drag pieces to new squares, or to delete a piece
389 by dragging it off the board or dragging an empty square on top of it.
390 To drop a new piece on a square, press mouse button 2 or 3 over the
391 square. This brings up a menu of white pieces (button 2) or
392 black pieces (button 3). Additional menu choices let you empty the
393 square or clear the board. You can set the side to play next by
394 clicking on the word White or Black at the top of the screen.
395 Selecting @samp{Edit Position} causes XBoard to discard
396 all remembered moves in the current game.
397
398 In ICS mode, changes made to the position by @samp{Edit Position} are
399 not sent to the ICS: @samp{Edit Position} takes XBoard out of
400 @samp{ICS Client} mode and lets you edit positions locally. If you want to
401 edit positions on ICS in a way that other ICS users can see, use
402 the ICS @kbd{examine} command, or start an ICS match against yourself.
403 (See also the ICS Client topic above.)
404 @item Training
405 @cindex Training, Menu Item
406 Training mode lets you interactively guess the moves of a game for one
407 of the players. You guess the next move of the game by playing the
408 move on the board. If the move played matches the next move of the
409 game, the move is accepted and the opponent's response is autoplayed.
410 If the move played is incorrect, an error message is displayed.  You
411 can select this mode only while loading a game (that is, after
412 selecting @samp{Load Game} from the File menu).  While XBoard is in 
413 @samp{Training} mode, the navigation buttons are disabled.
414 @item Show Game List
415 @cindex Show Game List, Menu Item
416 Shows or hides the list of games generated by the last @samp{Load Game}
417 command.
418 @item Show Move History
419 @cindex Show Move History, Menu Item
420 Shows or hides a list of moves of the current game.
421 This list allows you to move the display to any earlier position in the game
422 by clicking on the corresponding move.
423 @item Show Engine Output
424 @cindex Show Engine Output, Menu Item
425 Shows or hides a window in which the thinking output of any loaded engines
426 is displayed.
427 @item Edit Tags
428 @cindex Edit Tags, Menu Item
429 Lets you edit the PGN (portable game notation)
430 tags for the current game. After editing, the tags must still conform to
431 the PGN tag syntax:
432
433 @example
434 <tag-section> ::= <tag-pair> <tag-section>
435                         <empty>
436 <tag-pair> ::= [ <tag-name> <tag-value> ]
437 <tag-name> ::= <identifier>
438 <tag-value> ::= <string>
439 @end example
440 @noindent
441 See the PGN Standard for full details. Here is an example:
442
443 @example
444 [Event "Portoroz Interzonal"]
445 [Site "Portoroz, Yugoslavia"]
446 [Date "1958.08.16"]
447 [Round "8"]
448 [White "Robert J. Fischer"]
449 [Black "Bent Larsen"]
450 [Result "1-0"]
451 @end example
452 @noindent
453 Any characters that do not match this syntax are silently ignored. Note that
454 the PGN standard requires all games to have at least the seven tags shown
455 above. Any that you omit will be filled in by XBoard
456 with @samp{?} (unknown value), or @samp{-} (inapplicable value).
457 @item Edit Comment
458 @cindex Edit Comment, Menu Item
459 Adds or modifies a comment on the current position. Comments are
460 saved by @samp{Save Game} and are displayed by @samp{Load Game},
461 @samp{Forward}, and @samp{Backward}.
462 @item ICS Input Box
463 @cindex ICS Input Box, Menu Item
464 If this option is set in ICS mode,
465 XBoard
466 creates an extra window that you can use for typing in ICS commands.
467 The input box is especially useful if you want to type in something long or do
468 some editing on your input, because output from ICS doesn't get mixed
469 in with your typing as it would in the main terminal window.
470 @item Pause
471 @cindex Pause, Menu Item
472 Pauses updates to the board, and if you are playing against a chess engine,
473 also pauses your clock. To continue, select @samp{Pause} again, and the
474 display will automatically update to the latest position.
475 The @samp{P} button and keyboard @kbd{p} key are equivalents.
476
477 If you select Pause when you are playing against a chess engine and
478 it is not your move, the chess engine's clock
479 will continue to run and it will eventually make a move, at which point
480 both clocks will stop. Since board updates are paused, however,
481 you will not see the move until you exit from Pause mode (or select Forward).
482 This behavior is meant to simulate adjournment with a sealed move.
483
484 If you select Pause while you are observing or examining a game on a
485 chess server, you can step backward and forward in the current history
486 of the examined game without affecting the other observers and
487 examiners, and without having your display jump forward to the latest
488 position each time a move is made. Select Pause again to reconnect
489 yourself to the current state of the game on ICS.
490
491 If you select @samp{Pause} while you are loading a game, the game stops
492 loading. You can load more moves manually by selecting @samp{Forward}, or
493 resume automatic loading by selecting @samp{Pause} again.
494 @end table
495
496 @node Action Menu
497 @section Action Menu
498 @cindex Menu, Action
499 @cindex Action, Menu
500 @table @asis
501 @item Accept
502 @cindex Accept, Menu Item
503 Accepts a pending match offer. If there is more than one offer
504 pending, you will have to type in a more specific command
505 instead of using this menu choice.
506 @item Decline
507 @cindex Decline, Menu Item
508 Declines a pending offer (match, draw, adjourn, etc.). If there
509 is more than one offer pending, you will have to type in a more
510 specific command instead of using this menu choice.
511 @item Call Flag
512 @cindex Call Flag, Menu Item
513 Calls your opponent's flag, claiming a win on time, or claiming
514 a draw if you are both out of time. You can also call your
515 opponent's flag by clicking on his clock or by pressing the
516 keyboard @kbd{t} key.
517 @item Draw
518 @cindex Draw, Menu Item
519 Offers a draw to your opponent, accepts a pending draw offer
520 from your opponent, or claims a draw by repetition or the 50-move
521 rule, as appropriate. The @kbd{d} key is a keyboard equivalent.
522 @item Adjourn
523 @cindex Adjourn, Menu Item
524 Asks your opponent to agree to adjourning the current game, or
525 agrees to a pending adjournment offer from your opponent.
526 @item Abort
527 @cindex Abort, Menu Item
528 Asks your opponent to agree to aborting the current game, or
529 agrees to a pending abort offer from your opponent. An aborted
530 game ends immediately without affecting either player's rating.
531 @item Resign
532 @cindex Resign, Menu Item
533 Resigns the game to your opponent. The shifted @kbd{R} key is a
534 keyboard equivalent.
535 @item Stop Observing
536 @cindex Stop Observing, Menu Item
537 Ends your participation in observing a game, by issuing the ICS
538 observe command with no arguments. ICS mode only.
539 @item Stop Examining
540 @cindex Stop Examining, Menu Item
541 Ends your participation in examining a game, by issuing the ICS
542 unexamine command. ICS mode only.
543 @end table
544
545 @node Step Menu
546 @section Step Menu
547 @cindex Step Menu
548 @cindex Menu, Step
549 @table @asis
550 @item Backward
551 @cindex Backward, Menu Item
552 @cindex <, Button
553 Steps backward through a series of remembered moves.
554 The @samp{[<]} button and the @kbd{b} key are equivalents.
555 In addition, pressing the Control key steps back one move, and releasing
556 it steps forward again.
557
558 In most modes, @samp{Backward} only lets you look back at old positions;
559 it does not retract moves. This is the case if you are playing against
560 a chess engine, playing or observing a game on an ICS, or loading a game.
561 If you select @samp{Backward} in any of these situations, you will not
562 be allowed to make a different move. Use @samp{Retract Move} or
563 @samp{Edit Game} if you want to change past moves.
564
565 If you are examining an ICS game, the behavior of @samp{Backward}
566 depends on whether XBoard is in Pause mode. If Pause mode is
567 off, @samp{Backward} issues the ICS backward command, which backs up
568 everyone's view of the game and allows you to make a different
569 move. If Pause mode is on, @samp{Backward} only backs up your local
570 view.
571 @item Forward
572 @cindex Forward, Menu Item
573 @cindex >, Button
574 Steps forward through a series of remembered moves (undoing the
575 effect of @samp{Backward}) or forward through a game file. The
576 @samp{[>]} button and the @kbd{f} key are equivalents.
577
578 If you are examining an ICS game, the behavior of Forward
579 depends on whether XBoard is in Pause mode. If Pause mode is
580 off, @samp{Forward} issues the ICS forward command, which moves
581 everyone's view of the game forward along the current line. If
582 Pause mode is on, @samp{Forward} only moves your local view forward,
583 and it will not go past the position that the game was in when
584 you paused.
585 @item Back to Start
586 @cindex Back to Start, Menu Item
587 @cindex <<, Button
588 Jumps backward to the first remembered position in the game.
589 The @samp{[<<]} button and the shifted @kbd{B} key are equivalents.
590
591 In most modes, Back to Start only lets you look back at old
592 positions; it does not retract moves. This is the case if you
593 are playing against a local chess engine, playing or observing a game on
594 a chess server, or loading a game. If you select @samp{Back to Start} in any
595 of these situations, you will not be allowed to make different
596 moves. Use @samp{Retract Move} or @samp{Edit Game} if you want to change past
597 moves; or use Reset to start a new game.
598
599 If you are examining an ICS game, the behavior of @samp{Back to
600 Start} depends on whether XBoard is in Pause mode. If Pause mode
601 is off, @samp{Back to Start} issues the ICS @samp{backward 999999}
602 command, which backs up everyone's view of the game to the start and
603 allows you to make different moves. If Pause mode is on, @samp{Back
604 to Start} only backs up your local view.
605 @item Forward to End
606 @cindex Forward to End, Menu Item
607 @cindex >>, Button
608 Jumps forward to the last remembered position in the game. The
609 @samp{[>>]} button and the shifted @kbd{F} key are equivalents.
610
611 If you are examining an ICS game, the behavior of @samp{Forward to
612 End} depends on whether XBoard is in Pause mode. If Pause mode
613 is off, @samp{Forward to End} issues the ICS @samp{forward 999999}
614 command, which moves everyone's view of the game forward to the end of
615 the current line. If Pause mode is on, @samp{Forward to End} only moves
616 your local view forward, and it will not go past the position
617 that the game was in when you paused.
618 @item Revert
619 @cindex Revert, Menu Item
620 If you are examining an ICS game and Pause mode is off, issues
621 the ICS command @samp{revert}.
622 @item Truncate Game
623 @cindex Truncate Game, Menu Item
624 Discards all remembered moves of the game beyond the current
625 position. Puts XBoard into @samp{Edit Game} mode if it was not there
626 already.
627 @item Move Now
628 @cindex Move Now, Menu Item
629 Forces the chess engine to move immediately. Chess engine mode only.
630 @item Retract Move
631 @cindex Retract Move, Menu Item
632 Retracts your last move. In chess engine mode, you can do this only
633 after the chess engine has replied to your move; if the chess engine is still
634 thinking, use @samp{Move Now} first. In ICS mode, @samp{Retract Move}
635 issues the command @samp{takeback 1} or @samp{takeback 2}
636 depending on whether it is your opponent's move or yours.
637 @end table
638
639 @node Options Menu
640 @section Options Menu
641 @cindex Menu, Options
642 @cindex Options Menu
643 @table @asis
644 @item Flip View
645 @cindex Flip View, Menu Item
646 Inverts your view of the chess board for the duration of the
647 current game. Starting a new game returns the board to normal.
648 The @kbd{v} key is a keyboard equivalent.
649 @item Adjudications
650 @cindex Adjudications, Menu Item
651 Pops up a sub-menu where you can enable or disable various adjudications
652 that XBoard can perform in engine-engine games.
653 You can instruct XBoard to detect and terminate the game on checkmate
654 or stalemate, even if the engines would not do so, to verify engine
655 result claims (forfeiting engines that make false claims), rather than
656 naively following the engine, to declare draw on posititions
657 which can never be won for lack of mating material, (e.g. KBK),
658 or which are impossble to win unless the opponent seeks its own demise 
659 (e.g. KBKN).
660 For these adjudications to work, @samp{Test Legality} should be switched on.
661 It is also possible to insruct XBoard to enforce a 50-move or 3-fold-repeat
662 rule and automtically declare draw (after a user-adjustable number of moves
663 or repeats) even if the engines are prepared to go on.
664 It is also possible to have XBoard declare draw on games that seem to drag on 
665 forever, or adjudicate a loss if both engines agree (for 3 cosecutive moves) that one
666 of them is behind more than a user-adjustable score threshold.
667 For the latter adjudication to work, XBoard should be able to properly understand
668 the engine's scores. To faclitate the latter, you can inform xboard here if
669 the engines report scores from the viewpoint of white, or from that of their own color.
670 @item Engine Settings
671 Pops up a sub-menu where you can set some engine parameters common to most engines,
672 such as hash-table size, tablebase cache size, maximum number of processors
673 that SMP engines can use, and where to find the Polyglot adapter needed
674 to run UCI engines under XBoard. The feature tht allows setting of these parameters on
675 engines is new since XBoard 4.3.15, so not many WinBoard engines respond
676 to it yet, but UCI engines should.
677 It is also possible to specify a GUI opening book here, i.e. an opening
678 book that XBoard consults for any position a playing engine gets in.
679 It then forces the engine to play the book move, rather than to think up its own,
680 if that position is found in the book.
681 The book can switched on and off independently for either engine.
682 @item Time Control
683 @cindex Time Control, Menu Item
684 Pops up a sub-menu where you can set the time-control parameters interactively.
685 Allows you to select classical or incremental time controls,
686 set the moves per session, session duration, and time increment.
687 Also allows specification of time-odds factors for one or both engines.
688 If an engine is given a time-odds factor N, all time quota it gets, 
689 be it at the beginning of a session or through the time increment or
690 fixed time per move, will be divided by N.
691 @item Always Queen
692 @cindex Always Queen, Menu Item
693 If this option is off, XBoard brings up a dialog
694 box whenever you move a pawn to the last rank, asking what piece
695 you want to promote it to. If the option is true, your pawns are
696 always promoted to queens. Your opponent can still underpromote.
697 @item Animate Dragging
698 @cindex Animate Dragging, Menu Item
699 If Animate Dragging is on, while you are dragging a piece with the
700 mouse, an image of the piece follows the mouse cursor.
701 If Animate Dragging is off, there is no visual feedback while you are
702 dragging a piece, but if Animate Moving is on, the move will be
703 animated when it is complete. 
704 @item Animate Moving
705 @cindex Animate Moving, Menu Item
706 If Animate Moving is on, all piece moves are animated.  An image of the
707 piece is shown moving from the old square to the new square when the
708 move is completed (unless the move was already animated by Animate Dragging).
709 If Animate Moving is off, a moved piece instantly disappears from its
710 old square and reappears on its new square when the move is complete.
711 @item Auto Comment
712 @cindex Auto Comment, Menu Item
713 If this option is on, any remarks made on ICS while you are observing or
714 playing a game are recorded as a comment on the current move.  This includes
715 remarks made with the ICS commands @kbd{say}, @kbd{tell}, @kbd{whisper},
716 and @kbd{kibitz}.
717 Limitation: remarks that you type yourself are not recognized;
718 XBoard scans only the output from ICS, not the input you type to it.
719 @item Auto Flag
720 @cindex Auto Flag, Menu Item
721 If this option is on and one player runs out of time
722 before the other,
723 XBoard
724 will automatically call his flag, claiming a win on time.
725 In ICS mode, Auto Flag will only call your opponent's flag, not yours,
726 and the ICS may award you a draw instead of a win if you have
727 insufficient mating material.  In local chess engine mode,
728 XBoard
729 may call either player's flag and will not take material into account.
730 @item Auto Flip View
731 @cindex Auto Flip View, Menu Item
732 If the Auto Flip View option is on when you start a game, the board
733 will be automatically oriented so that your pawns move from the bottom
734 of the window towards the top.
735 @item Auto Observe
736 @cindex Auto Observe, Menu Item
737 If this option is on and you add a player to your @code{gnotify}
738 list on ICS, XBoard will automatically observe all of that
739 player's games, unless you are doing something else (such as
740 observing or playing a game of your own) when one starts.
741 The games are displayed 
742 from the point of view of the player on your gnotify list; that is, his
743 pawns move from the bottom of the window towards the top.
744 Exceptions:  If both players in a game are on your gnotify list, if
745 your ICS 
746 @code{highlight}
747 variable is set to 0, or if the ICS you are using does not 
748 properly support observing from Black's point of view,
749 you will see the game from White's point of view.
750 @item Auto Raise Board
751 @cindex Auto Raise Board, Menu Item
752 If this option is on, whenever a new game begins, the chessboard window
753 is deiconized (if necessary) and raised to the top of the stack of windows.
754 @item Auto Save
755 @cindex Auto Save, Menu Item
756 If this option is true, at the end of every game XBoard prompts
757 you for a file name and appends a record of the game to the file
758 you specify. 
759 Disabled if the @code{saveGameFile} command-line
760 option is set, as in that case all games are saved to the specified file.
761 @xref{Load and Save options}.
762 @item Blindfold
763 @cindex Blindfold, Menu Item
764 If this option is on, XBoard displays the board as usual but does
765 not display pieces or move highlights.  You can still move in the
766 usual way (with the mouse or by typing moves in ICS mode), even though
767 the pieces are invisible.
768 @item Flash Moves
769 @cindex Flash Moves, Menu Item
770 If this option is on, whenever a move is completed, the moved piece flashes.
771 The number of times to flash is set by the flashCount command-line
772 option; it defaults to 3 if Flash Moves is first turned on from the menu.
773
774 If you are playing a game on an ICS, the board is always
775 oriented at the start of the game so that your pawns move from
776 the bottom of the window towards the top. Otherwise, the starting
777 orientation is determined by the @code{flipView} command line option;
778 if it is false (the default), White's pawns move from bottom to top
779 at the start of each game; if it is true, Black's pawns move from
780 bottom to top. @xref{User interface options}.
781 @item Get Move List
782 @cindex Get Move List, Menu Item
783 If this option is on, whenever XBoard
784 receives the first board of a new ICS game (or a different game from
785 the one it is currently displaying), it
786 retrieves the list of past moves from the ICS.
787 You can then review the moves with the @samp{Forward} and @samp{Backward}
788 commands
789 or save them with @samp{Save Game}.  You might want to
790 turn off this option if you are observing several blitz games at once,
791 to keep from wasting time and network bandwidth fetching the move lists over
792 and over.
793 When you turn this option on from the menu, XBoard
794 immediately fetches the move list of the current game (if any).
795 @item Highlight Last Move
796 @cindex Highlight Last Move, Menu Item
797 If Highlight Last Move is on, after a move is made, the starting and
798 ending squares remain highlighted. In addition, after you use Backward
799 or Back to Start, the starting and ending squares of the last move to
800 be unmade are highlighted.
801 @item Move Sound
802 @cindex Move Sound, Menu Item
803 If this option is on, XBoard alerts you by playing a sound
804 after each of your opponent's moves (or after every
805 move if you are observing a game on the Internet Chess Server).
806 The sound is not played after moves you make or moves read from a
807 saved game file. By default, the
808 sound is the terminal bell, but on some systems you can change it
809 to a sound file using the soundMove option; see below.
810
811 If you turn on this option when using XBoard with the Internet
812 Chess Server, you will probably want to give the
813 @kbd{set bell 0}
814 command to the ICS, since otherwise the ICS will ring the terminal bell
815 after every move (not just yours). (The @file{.icsrc} file
816 is a good place for this; see @ref{ICS options}.)
817 @item ICS Alarm
818 @cindex ICS Alarm, Menu Item
819 When this option is on, an alarm sound is played when your clock
820 counts down to the icsAlarmTime (by default, 5 seconds) in an ICS
821 game.  For games with time controls that include an increment, the
822 alarm will sound each time the clock counts down to the icsAlarmTime.
823 By default, the alarm sound is the terminal bell, but on some systems
824 you can change it to a sound file using the soundIcsAlarm option; see
825 below.
826 @item Old Save Style
827 @cindex Old Save Style, Menu Item
828 If this option is off, XBoard saves games in PGN
829 (portable game notation) and positions in FEN (Forsythe-Edwards
830 notation).  If the option is on, a save style that is compatible
831 with older versions of XBoard is used instead.
832 The old position style is more human-readable
833 than FEN; the old game style has no particular advantages.
834 @item Periodic Updates
835 @cindex Periodic Updates, Menu Item
836 If this option is off (or if
837 you are using a chess engine that does not support periodic updates),
838 the analysis window
839 will only be updated when the analysis changes. If this option is
840 on, the Analysis Window will be updated every two seconds.
841 @item Ponder Next Move
842 @cindex Ponder Next Move, Menu Item
843 If this option is off, the chess engine will think only when it is on
844 move.  If the option is on, the engine will also think while waiting
845 for you to make your move.
846 @item Popup Exit Message
847 @cindex Popup Exit Message, Menu Item
848 If this option is on, when XBoard wants to display a message just
849 before exiting, it brings up a modal dialog box and waits for you to
850 click OK before exiting.  If the option is off, XBoard prints the
851 message to standard error (the terminal) and exits immediately.
852 @item Popup Move Errors
853 @cindex Popup Move Errors, Menu Item
854 If this option is off, when you make an error in moving (such as
855 attempting an illegal move or moving the wrong color piece), the
856 error message is displayed in the message area.  If the option is
857 on, move errors are displayed in small popup windows like other errors.
858 You can dismiss an error popup either by clicking its OK button or by
859 clicking anywhere on the board, including downclicking to start a move.
860 @item Premove
861 @cindex Premove, Menu Item
862 If this option is on while playing a game on an ICS, you can register
863 your next planned move before it is your turn.  Move the piece with
864 the mouse in the ordinary way, and the starting and ending squares
865 will be highlighted with a special color (red by default).  When it is
866 your turn, if your registered move is legal, XBoard will send it to
867 ICS immediately; if not, it will be ignored and you can make a
868 different move.  If you change your mind about your premove, either
869 make a different move, or double-click on any piece to cancel the move
870 entirely.
871 @item Quiet Play
872 @cindex Quiet Play, Menu Item
873 If this option is on, XBoard will automatically issue an ICS
874 @kbd{set shout 0}
875 command whenever you start a game and a
876 @kbd{set shout 1}
877 command whenever you finish one.  Thus, you will not be distracted
878 by shouts from other ICS users while playing.
879 @item Show Coords
880 @cindex Show Coords, Menu Item
881 If this option is on, XBoard displays algebraic coordinates
882 along the board's left and bottom edges.
883 @item Hide Thinking
884 @cindex Hide Thinking, Menu Item
885 If this option is off, the chess engine's notion of the score and best
886 line of play from the current position is displayed as it is
887 thinking. The score indicates how many pawns ahead (or if negative,
888 behind) the chess engine thinks it is. In matches between two
889 machines, the score is prefixed by @samp{W} or @samp{B} to indicate
890 whether it is showing White's thinking or Black's, and only the thinking
891 of the engine that is on move is shown.
892 @item Test Legality
893 @cindex Test Legality, Menu Item
894 If this option is on, XBoard tests whether the moves you try to make
895 with the mouse are legal and refuses to let you make an illegal move.
896 Moves loaded from a file with @samp{Load Game} are also checked.  If
897 the option is off, all moves are accepted, but if a local chess engine
898 or the ICS is active, they will still reject illegal moves.  Turning
899 off this option is useful if you are playing a chess variant with
900 rules that XBoard does not understand.  (Bughouse, suicide, and wild
901 variants where the king may castle after starting on the d file are
902 generally supported with Test Legality on.)
903 @end table
904
905 @node Help Menu
906 @section Help Menu
907 @cindex Menu, Help
908 @cindex Help Menu
909 @table @asis
910 @item Info XBoard
911 @cindex Info XBoard, Menu Item
912 Displays the XBoard documentation in info format.  For this feature to
913 work, you must have the GNU info program installed on your system, and
914 the file @file{xboard.info} must either be present in the current
915 working directory, or have been installed by the @samp{make install}
916 command when you built XBoard.
917 @item Man XBoard
918 @cindex Man XBoard, Menu Item
919 Displays the XBoard documentation in man page format.  For this
920 feature to work, the file @file{xboard.6} must have been installed by
921 the @samp{make install} command when you built XBoard, and the
922 directory it was placed in must be on the search path for your
923 system's @samp{man} command.
924 @item Hint
925 @cindex Hint, Menu Item
926 Displays a move hint from the chess engine.
927 @item Book
928 @cindex Book, Menu Item
929 Displays a list of possible moves from the chess engine's opening
930 book.  The exact format depends on what chess engine you are using.
931 With GNU Chess 4, the first column gives moves, the second column
932 gives one possible response for each move, and the third column shows
933 the number of lines in the book that include the move from the first
934 column. If you select this option and nothing happens, the chess
935 engine is out of its book or does not support this feature.
936 @item About XBoard
937 @cindex About XBoard, Menu Item
938 Shows the current XBoard version number.
939 @end table
940
941 @node Keys
942 @section Other Shortcut Keys
943 @cindex Keys
944 @cindex Shortcut keys
945 @table @asis
946 @item Iconize
947 Pressing the @kbd{i} or @kbd{c} key iconizes XBoard. The graphical
948 icon displays a white knight if it is White's move, or a black knight
949 if it is Black's move. If your X window manager displays only text
950 icons, not graphical ones, check its documentation; there is probably
951 a way to enable graphical icons.  If you get black and white reversed,
952 we would like to hear about it; see @ref{Problems} below for
953 instructions on how to report this problem.
954 @end table
955
956 You can add or remove shortcut keys using the X resources
957 @code{form.translations}. Here is an example of what would go in your
958 @file{.Xresources} file:
959
960 @example
961 XBoard*form.translations: \
962   Shift<Key>?: AboutGameProc() \n\
963   <Key>y: AcceptProc() \n\
964   <Key>n: DeclineProc() \n\
965   <Key>i: NothingProc()
966 @end example
967 @noindent
968 Binding a key to @code{NothingProc} makes it do nothing, thus removing
969 it as a shortcut key. The XBoard commands that can be bound to keys
970 are:
971
972 @example
973 AbortProc, AboutGameProc, AboutProc, AcceptProc, AdjournProc,
974 AlwaysQueenProc, AnalysisModeProc, AnalyzeFileProc,
975 AnimateDraggingProc, AnimateMovingProc, AutobsProc, AutoflagProc,
976 AutoflipProc, AutoraiseProc, AutosaveProc, BackwardProc,
977 BlindfoldProc, BookProc, CallFlagProc, CopyGameProc, CopyPositionProc,
978 DebugProc, DeclineProc, DrawProc, EditCommentProc, EditGameProc,
979 EditPositionProc, EditTagsProc, EnterKeyProc, FlashMovesProc,
980 FlipViewProc, ForwardProc, GetMoveListProc, HighlightLastMoveProc,
981 HintProc, Iconify, IcsAlarmProc, IcsClientProc, IcsInputBoxProc,
982 InfoProc, LoadGameProc, LoadNextGameProc, LoadNextPositionProc,
983 LoadPositionProc, LoadPrevGameProc, LoadPrevPositionProc,
984 LoadSelectedProc, MachineBlackProc, MachineWhiteProc, MailMoveProc,
985 ManProc, MoveNowProc, MoveSoundProc, NothingProc, OldSaveStyleProc,
986 PasteGameProc, PastePositionProc, PauseProc, PeriodicUpdatesProc,
987 PonderNextMoveProc, PopupExitMessageProc, PopupMoveErrorsProc,
988 PremoveProc, QuietPlayProc, QuitProc, ReloadCmailMsgProc,
989 ReloadGameProc, ReloadPositionProc, RematchProc, ResetProc,
990 ResignProc, RetractMoveProc, RevertProc, SaveGameProc,
991 SavePositionProc, ShowCoordsProc, ShowGameListProc, ShowThinkingProc,
992 StopExaminingProc, StopObservingProc, TestLegalityProc, ToEndProc,
993 ToStartProc, TrainingProc, TruncateGameProc, and TwoMachinesProc.
994 @end example
995
996 @node Options
997 @chapter Options
998 @cindex Options
999 @cindex Options
1000
1001 This section documents the command-line options to XBoard.  You can
1002 set these options in two ways: by typing them on the shell command
1003 line you use to start XBoard, or by setting them as X resources
1004 (typically in your @file{.Xresources} file).  Many of the options
1005 cannot be changed while XBoard is running; others set the initial
1006 state of items that can be changed with the @ref{Options} menu.
1007
1008 Most of the options have both a long name and a short name. To turn a
1009 boolean option on or off from the command line, either give its long
1010 name followed by the value true or false
1011 (@samp{-longOptionName true}), or give just the short name to turn the
1012 option on (@samp{-opt}), or the short name preceded by @samp{x} to
1013 turn the option off (@samp{-xopt}). For options that take strings or
1014 numbers as values, you can use the long or short option names
1015 interchangeably.
1016
1017 Each option corresponds to an X resource with the same name, so
1018 if you like, you can set options in your @file{.Xresources} file
1019 or in a file named @file{XBoard} in your home directory.
1020 For options that have two names, the longer one is the name of
1021 the corresponding X resource; the short name is not recognized.
1022 To turn a boolean option on or off as an
1023 X resource, give its long name followed by the value
1024 true or false (@samp{XBoard*longOptionName: true}).
1025
1026 @menu
1027 * Chess engine options::        Controlling the chess engine.
1028 * UCI + WB Engine Settings::    Setting some very common engine parameters
1029 * ICS options::                 Connecting to and using ICS.
1030 * Load and Save options::       Input/output options.
1031 * User interface options::      Look and feel options.
1032 * Adjudication Options::        Control adjudcation of engine-engine games.
1033 * Other options::               Miscellaneous.
1034 @end menu
1035
1036 @node Chess engine options
1037 @section Chess Engine Options
1038 @cindex options, Chess engine
1039 @cindex Chess engine options
1040 @table @asis
1041 @item -tc or -timeControl minutes[:seconds]
1042 @cindex tc, option
1043 @cindex timeControl, option
1044 Each player begins with his clock set to the @code{timeControl} period.
1045 Default: 5 minutes.
1046 The additional options @code{movesPerSession} and @code{timeIncrement}
1047 are mutually exclusive.  
1048 @item -mps or -movesPerSession moves
1049 @cindex mps, option
1050 @cindex movesPerSession, option
1051 When both players have made @code{movesPerSession} moves, a
1052 new @code{timeControl} period is added to both clocks.  Default: 40 moves.
1053 @item -inc or -timeIncrement seconds
1054 @cindex inc, option
1055 @cindex timeIncrement, option
1056 If this option is specified, @code{movesPerSession} is ignored.
1057 Instead, after each player's move, @code{timeIncrement} seconds are
1058 added to his clock.  
1059 Use @samp{-inc 0} if you want to require the entire
1060 game to be played in one @code{timeControl} period, with no increment.
1061 Default: -1, which specifies @code{movesPerSession} mode.
1062 @item -clock/-xclock or -clockMode true/false
1063 @cindex clock, option
1064 @cindex clockMode, option
1065 Determines whether or not to display the chess clocks. If clockMode is
1066 false, the clocks are not shown, but the side that is to play next
1067 is still highlighted. Also, unless @code{searchTime}
1068 is set, the chess engine still keeps track of the clock time and uses it to
1069 determine how fast to make its moves.
1070 @item -st or -searchTime minutes[:seconds]
1071 @cindex st, option
1072 @cindex searchTime, option
1073 Tells the chess engine to spend at most the given amount of time
1074 searching for each of its moves. Without this option, the chess engine
1075 chooses its search time based on the number of moves and amount
1076 of time remaining until the next time control.
1077 Setting this option also sets clockMode to false.
1078 @item -depth or -searchDepth number
1079 @cindex sd, option
1080 @cindex searchDepth, option
1081 Tells the chess engine to look ahead at most the given number of moves
1082 when searching for a move to make. Without this option, the chess
1083 engine chooses its search depth based on the number of moves and
1084 amount of time remaining until the next time control.  With the option,
1085 the engine will cut off its search early if it reaches the specified depth.
1086 @item -firstNPS number
1087 @itemx -secondNPS number
1088 @cindex firstNPS, option
1089 @cindex secondNPS, option
1090 Tells the chess engine to use an internal time standard based on its node count, 
1091 rather then wall-clock time, to make its timing decisions. 
1092 The time in virtual seconds should be obtained by dividing the node count 
1093 through the given number, like the number was a rate in nodes per second. 
1094 Xboard will manage the clocks in accordance with this, relying on the number 
1095 of nodes reported by the engine in its thinking output. If the given number equals zero, 
1096 it can obviously not be used to convert nodes to seconds, and the time reported 
1097 by the engine is used to decrement the XBoard clock in stead. The engine is supposed to 
1098 report in CPU time it uses, rather than wall-clock time, in this mode. This option 
1099 can provide fairer conditions for engine-engine matches on heavily loaded machines, 
1100 or with very fast games (where the wall clock is too inaccurate). 
1101 @code{showThinking} must be on for this option to work. Default: -1 (off).
1102 Not many engines might support this yet!
1103 @item -firstTimeOdds factor
1104 @itemx -secondTimeOdds factor
1105 @cindex firstTimeOdds, option
1106 @cindex secondTimeOdds, option
1107 Reduces the time given to the mentioned engine by the given factor. 
1108 If pondering is off, the effect is indistinguishable from what would happen 
1109 if the engine was running on an n-times slower machine. Default: 1.
1110 @item -timeOddsMode mode
1111 @cindex timeOddsMode, option
1112 This option determines how the case is handled where both engines have a time-odds handicap. 
1113 If mode=1, the engine that gets the most time will always get the nominal time, 
1114 as specified by the time-control options, and its opponent's time is renormalized accordingly. 
1115 If mode=0, both play with reduced time. Default: 0.
1116 @item -hideThinkingFromHuman true/false
1117 Controls the Hide Thinking option. @xref{Options Menu}. Default: true.
1118 (Relaces the Show-Thinking option of older xboard versions.)
1119 @item -thinking/-xthinking or -showThinking true/false
1120 @cindex thinking, option
1121 @cindex showThinking, option
1122 Forces the engine to send thinking output to xboard. 
1123 Used to be the only way to control if thinking output was displayed 
1124 in older xboard versions,
1125 but as the thinking output in xboard 4.3 is also used for several other
1126 purposes (adjudication, storing in PGN file) the display of it is now controlled
1127 by the new option Hide Thinking. @xref{Options Menu}. Default: false.
1128 (But if xboard needs the thinking output for some purpose,
1129 it makes the engine send it despite the setting of this option.)
1130 @item -ponder/-xponder or -ponderNextMove true/false
1131 @cindex ponder, option
1132 @cindex ponderNextMove, option
1133 Sets the Ponder Next Move menu option. @xref{Options Menu}. Default: true.
1134 @item -smpCores number
1135 Specifies the maxmum nmber of CPUs an SMP engine is allowed to use.
1136 Only works for engines that support the WinBoard-protocol cores feature.
1137 @item -mg or -matchGames n
1138 @cindex mg, option
1139 @cindex matchGames, option
1140 Automatically runs an n-game match between two chess engines,
1141 with alternating colors.
1142 If the @code{loadGameFile} or @code{loadPositionFile} option is set,
1143 XBoard
1144 starts each game with the given opening moves or the given position;
1145 otherwise, the games start with the standard initial chess position.
1146 If the @code{saveGameFile} option is set, a move record for the
1147 match is appended to the specified file. If the @code{savePositionFile}
1148 option is set, the final position reached in each game of the match is appended
1149 to the specified file. When the match is over, XBoard
1150 displays the match score and exits. Default: 0 (do not run a match).
1151 @item -mm/-xmm or -matchMode true/false
1152 @cindex mm, option
1153 @cindex matchMode, option
1154 Setting @code{matchMode} to true is equivalent to setting
1155 @code{matchGames} to 1.
1156 @item -sameColorGames n
1157 @cindex sameColorGames, option
1158 Automatically runs an n-game match between two chess engines,
1159 without alternating colors.
1160 Otherwise the same applies as for the @samp{-matchGames} option,
1161 over which it takes precedence if both are specified. (See there.)
1162 Default: 0 (do not run a match).
1163 @item -fcp or -firstChessProgram program
1164 @cindex fcp, option
1165 @cindex firstChessProgram, option
1166 Name of first chess engine.
1167 Default: @file{Fairy-Max}.
1168 @item -scp or -secondChessProgram program
1169 @cindex scp, option
1170 @cindex secondChessProgram, option
1171 Name of second chess engine, if needed.
1172 A second chess engine is started only in Two Machines (match) mode.
1173 Default: @file{Fairy-Max}.
1174 @item -fb/-xfb or -firstPlaysBlack true/false
1175 @cindex fb, option
1176 @cindex firstPlaysBlack, option
1177 In games between two chess engines, firstChessProgram normally plays
1178 white.  If this option is true, firstChessProgram plays black.  In a
1179 multi-game match, this option affects the colors only for the first
1180 game; they still alternate in subsequent games.
1181 @item -fh or -firstHost host
1182 @itemx -sh or -secondHost host
1183 @cindex fh, option
1184 @cindex firstHost, option
1185 @cindex sh, option
1186 @cindex secondHost, option
1187 Hosts on which the chess engines are to run. The default for
1188 each is @file{localhost}. If you specify another host, XBoard
1189 uses @file{rsh} to run the chess engine there. (You can substitute a
1190 different remote shell program for rsh using the @code{remoteShell}
1191 option described below.)
1192 @item -fd or -firstDirectory dir
1193 @itemx -sd or -secondDirectory dir
1194 @cindex fd, option
1195 @cindex firstDirectory, option
1196 @cindex sd, option
1197 @cindex secondDirectory, option
1198 Working directories in which the chess engines are to be run.
1199 The default is "", which means to run the chess engine
1200 in the same working directory as XBoard
1201 itself.  (See the CHESSDIR environment variable.)
1202 This option is effective only when the chess engine is being run
1203 on the local host; it does not work if the engine is run remotely
1204 using the -fh or -sh option.
1205 @item -initString string
1206 @itemx -secondInitString string
1207 @cindex initString, option
1208 @cindex secondInitString, option
1209 The string that is sent to initialize each chess engine for a new game.
1210 Default:
1211
1212 @example
1213 new
1214 random
1215 @end example
1216 @noindent
1217 Setting this option from the command line is tricky, because you must
1218 type in real newline characters, including one at the very end.
1219 In most shells you can do this by
1220 entering a @samp{\} character followed by a newline. It is easier to set
1221 the option from your @file{.Xresources} file; in that case you can
1222 include the character sequence @samp{\n} in the string, and it will
1223 be converted to a newline.
1224
1225 If you change this option, don't remove the @samp{new} 
1226 command; it is required by all chess engines to
1227 start a new game.
1228
1229 You can remove the @samp{random} command if you like; including it
1230 causes GNU Chess 4 to randomize its move selection slightly so that it
1231 doesn't play the same moves in every game.  Even without
1232 @samp{random}, GNU Chess 4 randomizes its choice of moves from its
1233 opening book.  Many other chess engines ignore this command entirely
1234 and always (or never) randomize.
1235
1236 You can also try adding other commands to the initString; see the
1237 documentation of the chess engine you are using for details.
1238 @item -firstComputerString string
1239 @itemx -secondComputerString string
1240 @cindex firstComputerString, option
1241 @cindex secondComputerString, option
1242 The string that is sent to the chess engine if its opponent is another
1243 computer chess engine.  The default is @samp{computer\n}.  Probably the
1244 only useful alternative is the empty string (@samp{}), which keeps the
1245 engine from knowing that it is playing another computer.
1246 @item -reuse/-xreuse or -reuseFirst true/false
1247 @itemx -reuse2/-xreuse2 or -reuseSecond true/false
1248 @cindex reuse, option
1249 @cindex reuseFirst, option
1250 @cindex reuse2, option
1251 @cindex reuseSecond, option
1252 If the option is false,
1253 XBoard kills off the chess engine after every game and starts
1254 it again for the next game.  
1255 If the option is true (the default), 
1256 XBoard starts the chess engine only once
1257 and uses it repeatedly to play multiple games.
1258 Some old chess engines may not work properly when
1259 reuse is turned on, but otherwise games will start faster if it is left on.
1260 @item -firstProtocolVersion version-number
1261 @itemx -secondProtocolVersion version-number
1262 @cindex firstProtocolVersion, option
1263 @cindex secondProtocolVersion, option
1264 This option specifies which version of the chess engine communication
1265 protocol to use.  By default, version-number is 2.  In version 1, the
1266 "protover" command is not sent to the engine; since version 1 is a
1267 subset of version 2, nothing else changes.  Other values for
1268 version-number are not supported.
1269 @item -firstScoreAbs true/false
1270 @itemx -secondScoreAbs true/false
1271 @cindex firstScoreAbs, option
1272 @cindex secondScoreAbs, option
1273 If this option is set, the score reported by the engine is taken to be 
1274 that in favor of white, even when the engine plays black. 
1275 Important when XBoard uses the score for adjudications, or in PGN reporting. 
1276 @end table
1277
1278 @node UCI + WB Engine Settings
1279 @section UCI + WB Engine Settings
1280 @cindex Engine Settings
1281 @cindex Settings, Engine
1282 @table @asis
1283 @item -fUCI or -firstIsUCI true/false
1284 @itemx -sUCI or -secondIsUCI true/false
1285 @cindex fUCI, option
1286 @cindex sUCI, option
1287 @cindex firstIsUCI, option
1288 @cindex secondIsUCI, option
1289 Indicates if the mentioned engine executable file is an UCI engine, 
1290 and should be run with the aid of the Polyglot adapter rather than directly. 
1291 Xboard will then pass the other UCI options and engine name to Polyglot 
1292 through a .ini temporary file ceated for the purpose.
1293 @item -PolyglotDir filename
1294 @cindex PolyglotDir, option
1295 Gives the name of the directory in which the Polyglot adapter for UCI engines expects its files.
1296 Default: "/usr/local/share/polyglot".
1297 @item -usePolyglotBook true/false
1298 @cindex usePolyglotBook, option
1299 Specifies if the Polygot book should be used.
1300 @item -PolyglotBook filename
1301 @cindex PolyglotBook, option
1302 Gives the filename of the opening book that Polyglot should use. 
1303 From XBoard 4.3.15 on, native WinBoard engines will also use the opening book specified here, 
1304 provided the @code{usePolyglotBook} option is set to true,
1305 and the option @code{firstHasOwnBookUCI} or @code{secondHasOwnBookUCI} applying to the engine
1306 is set to false.
1307 The engine will be kept in force mode as long as the current position is in book, 
1308 and XBoard will select the book moves for it. Default "".
1309 @item -fNoOwnBookUCI or -firstHasOwnBookUCI true/false
1310 @itemx -sNoOwnBookUCI or -secondHasOwnBookUCI true/false
1311 @cindex fNoOwnBookUCI, option
1312 @cindex sNoOwnBookUCI, option
1313 @cindex firstHasOwnBookUCI, option
1314 @cindex secondHasOwnBookUCI, option
1315 Indicates if the mentioned engine has its own opening book it should play from,
1316 rather than using the external book through XBoard. Default: false.
1317 @item -defaultHashSize n
1318 @cindex defaultHashSize, option
1319 Sets the size of the hash table to n MegaBytes. Together with the EGTB cache size 
1320 this number is also used to calculate the memory setting of WinBoard engines, 
1321 for those that support the memory feature of WinBoard protocol. Default: 64.
1322 @item -defaultCacheSizeEGTB n
1323 @cindex defaultCacheSizeEGTB, option
1324 Sets the size of the EGTB cache to n MegaBytes. Together with the hash-table size 
1325 this number is also used to calculate the memory setting of WinBoard engines, 
1326 for those that support the memory feature of WinBoard protocol. Default: 4.
1327 @item -defaultPathEGTB filename
1328 @cindex defaultPathEGTB, option
1329 Gives the name of the directory where the end-game tablebases are installed, for UCI engines.
1330 Default: "/usr/local/share/egtb".
1331 @item -egtFormats string
1332 @cindex egtFormats, option
1333 Specifies which end-game tables are installed on the computer, and where. 
1334 The argument is a comma-separated list of format specifications, 
1335 each specification consisting of a format name, a colon, and a directory path name, 
1336 e.g. "nalimov:/usr/local/share/egtb". 
1337 If the name part matches that of a format that the engine requests through a feature command, 
1338 xboard will relay the path name for this format to the engine through an egtpath command. 
1339 One egtpath command for each matching format will be sent. 
1340 Popular formats are "nalimov" DTM tablebases and "scorpio" bitbases.
1341 Default: "".
1342 @end table
1343
1344 @node ICS options
1345 @section ICS options
1346 @cindex ICS options
1347 @cindex Options, ICS
1348 @table @asis
1349 @item -ics/-xics or -internetChessServerMode true/false
1350 @cindex ics, option
1351 @cindex internetChessServerMode, option
1352 Connect with an Internet Chess Server to play chess against its
1353 other users, observe games they are playing, or review games
1354 that have recently finished. Default: false.
1355 @item -icshost or -internetChessServerHost host
1356 @cindex icshost, option
1357 @cindex internetChessServerHost, option
1358 The Internet host name or address of the chess server to connect
1359 to when in ICS mode. Default: @code{chessclub.com}.
1360 Another popular chess server to try is @code{freechess.org}.
1361 If your site doesn't have a working Internet name server, try
1362 specifying the host address in numeric form. 
1363 You may also need
1364 to specify the numeric address when using the icshelper option
1365 with timestamp or timeseal (see below).
1366 @item -icsport or -internetChessServerPort port-number
1367 @cindex icsport, option
1368 @cindex internetChessServerPort, option
1369 The port number to use when connecting to a chess server in ICS
1370 mode. Default: 5000.
1371 @item -icshelper or -internetChessServerHelper prog-name
1372 @cindex icshelper, option
1373 @cindex internetChessServerHelper, option
1374 An external helper program used to communicate with the chess server.
1375 You would set it to "timestamp" for ICC (chessclub.com) or
1376 "timeseal" for FICS (freechess.org), after
1377 obtaining the correct version of timestamp or timeseal for your
1378 computer.  See "help timestamp" on ICC and "help timeseal" on FICS.
1379 This option is shorthand for @code{-useTelnet -telnetProgram program}.
1380 @item -telnet/-xtelnet or -useTelnet true/false
1381 @cindex telnet, option
1382 @cindex useTelnet, option
1383 This option is poorly named; it should be called useHelper.
1384 If set to true, it instructs XBoard to run an external
1385 program to communicate with the Internet Chess Server. 
1386 The program to use is given by the telnetProgram option.
1387 If the option is
1388 false (the default), XBoard opens a TCP socket and uses its own
1389 internal implementation of the telnet protocol to communicate with the
1390 ICS. @xref{Firewalls}.
1391 @item -telnetProgram prog-name
1392 @cindex telnetProgram, option
1393 This option is poorly named; it should be called helperProgram.
1394 It gives the name of the telnet program to be used with
1395 the @code{gateway} and @code{useTelnet} options.  The default is
1396 @file{telnet}. The telnet program is invoked with the value of
1397 @code{internetChessServerHost} as its first argument and the value
1398 of @code{internetChessServerPort} as its second argument.
1399 @xref{Firewalls}.
1400 @item -gateway host-name
1401 @cindex gateway, option
1402 If this option is set to a host name, XBoard communicates with the
1403 Internet Chess Server by using @file{rsh} to run
1404 the @code{telnetProgram} on the given host,
1405 instead of using its own internal implementation
1406 of the telnet protocol. You can substitute a different remote shell
1407 program for @file{rsh} using the @code{remoteShell} option described below.
1408 @xref{Firewalls}.
1409 @item -internetChessServerCommPort or -icscomm dev-name
1410 @cindex internetChessServerCommPort, option
1411 @cindex icscomm, option
1412 If this option is set, XBoard communicates with the ICS through
1413 the given character I/O device instead of opening a TCP connection.
1414 Use this option if your system does not have any kind of
1415 Internet connection itself (not even a SLIP or PPP connection),
1416 but you do have dialup access (or a hardwired terminal line) to
1417 an Internet service provider from which you can telnet to the ICS.
1418
1419 The support for this option in XBoard is minimal. You need to
1420 set all communication parameters and tty modes before you enter
1421 XBoard.
1422
1423 Use a script something like this:
1424
1425 @example
1426 stty raw -echo 9600 > /dev/tty00
1427 xboard -ics -icscomm /dev/tty00
1428 @end example
1429
1430 Here replace @samp{/dev/tty00} with the name of the device that your
1431 modem is connected to. You might have to add several more
1432 options to these stty commands. See the man pages for @file{stty}
1433 and @code{tty} if you run into problems. Also, on many systems stty
1434 works on its standard input instead of standard output, so you
1435 have to use @samp{<} instead of @samp{>}.
1436
1437 If you are using linux, try starting with the script below.
1438 Change it as necessary for your installation.
1439
1440 @example
1441 #!/bin/sh -f
1442 # configure modem and fire up XBoard
1443
1444 # configure modem
1445 (
1446   stty 2400 ; stty raw ; stty hupcl ; stty -clocal
1447   stty ignbrk ; stty ignpar ; stty ixon ; stty ixoff
1448   stty -iexten ; stty -echo
1449 ) < /dev/modem
1450 xboard -ics -icscomm /dev/modem
1451 @end example
1452 @noindent
1453 After you start XBoard in this way, type whatever commands are
1454 necessary to dial out to your Internet provider and log in.
1455 Then telnet to ICS, using a command like
1456 @kbd{telnet chessclub.com 5000}.
1457 Important: See the paragraph below about extra echoes, 
1458 in @ref{Limitations}.
1459 @item -icslogon or -internetChessServerLogonScript file-name
1460 @cindex icslogon, option
1461 @cindex internetChessServerLogonScript, option
1462 @cindex .icsrc
1463 Whenever XBoard connects to the Internet Chess Server,
1464 if it finds a file with the name given in this option, it feeds the
1465 file's contents to the ICS as commands. The default file name
1466 is @file{.icsrc}.
1467 Usually the first two lines of the file should be
1468 your ICS user name and password.
1469 The file can be either in $CHESSDIR, in XBoard's working
1470 directory if CHESSDIR is not set, or in your home directory.
1471 @item -msLoginDelay delay
1472 @cindex msLoginDelay, option
1473 If you experience trouble logging on to an ICS when using the
1474 @code{-icslogon} option, inserting some delay between characters
1475 of the logon script may help. This option adds @code{delay}
1476 milliseconds of delay between characters. Good values to try
1477 are 100 and 250.
1478 @item -icsinput/-xicsinput or -internetChessServerInputBox true/false
1479 @cindex icsinput, option
1480 @cindex internetChessServerInputBox, option
1481 Sets the ICS Input Box menu option. @xref{Mode Menu}. Default: false.
1482 @item -autocomm/-xautocomm or -autoComment true/false
1483 @cindex autocomm, option
1484 @cindex autoComment, option
1485 Sets the Auto Comment menu option. @xref{Options Menu}. Default: false.
1486 @item -autoflag/-xautoflag or -autoCallFlag true/false
1487 @cindex autoflag, option
1488 @cindex autoCallFlag, option
1489 Sets the Auto Flag menu option.  @xref{Options Menu}. Default: false.
1490 @item -autobs/-xautobs or -autoObserve true/false
1491 @cindex autobs, option
1492 @cindex autoObserve, option
1493 Sets the Auto Observe menu option.  @xref{Options Menu}. Default: false.
1494 @item -autoKibitz
1495 @cindex autoKibitz, option`
1496 Enables kibitzing of the engines last thinking output (depth, score, time, speed, PV) 
1497 before it moved
1498 to the ICS, in zippy mode. The option @code{showThinking} must be switched on for 
1499 this option to work.
1500 @item -moves/-xmoves or -getMoveList true/false
1501 @cindex moves, option
1502 @cindex getMoveList, option
1503 Sets the Get Move List menu option.  @xref{Options Menu}.  Default: true.
1504 @item -alarm/-xalarm or -icsAlarm true/false
1505 @cindex alarm, option
1506 @cindex icsAlarm, option
1507 Sets the ICS Alarm menu option.  @xref{Options Menu}. Default: true.
1508 @item -icsAlarmTime ms
1509 @cindex icsAlarmTime, option
1510 Sets the time in milliseconds for the ICS Alarm menu option. 
1511 @xref{Options Menu}. Default: 5000.
1512 @item -pre/-xpre \fRor\fB -premove true/false
1513 @cindex pre, option
1514 @cindex premove, option
1515 Sets the Premove menu option. @xref{Options Menu}. Default: true.
1516 @item -quiet/-xquiet or -quietPlay true/false
1517 @cindex quiet, option
1518 @cindex quietPlay, option
1519 Sets the Quiet Play menu option.  @xref{Options Menu}.  Default: false.
1520 @item -colorizeMessages or -colorize
1521 @cindex Colors
1522 @cindex colorize, option
1523 Setting colorizeMessages
1524 to true tells XBoard to colorize the messages received from
1525 the ICS.  Colorization works only if your xterm 
1526 supports ISO 6429 escape sequences for changing text colors.
1527 @item -colorShout foreground,background,bold
1528 @itemx -colorSShout foreground,background,bold
1529 @itemx -colorChannel1 foreground,background,bold
1530 @itemx -colorChannel foreground,background,bold
1531 @itemx -colorKibitz foreground,background,bold
1532 @itemx -colorTell foreground,background,bold
1533 @itemx -colorChallege foreground,background,bold
1534 @itemx -colorRequest foreground,background,bold
1535 @itemx -colorSeek foreground,background,bold
1536 @itemx -colorNormal foreground,background,bold
1537 @cindex Colors
1538 @cindex colorShout, option
1539 @cindex colorSShout, option
1540 @cindex colorChannel1, option
1541 @cindex colorChannel, option
1542 @cindex colorKibitz, option
1543 @cindex colorTell, option
1544 @cindex colorChallenge, option
1545 @cindex colorRequest, option
1546 @cindex colorSeek, option
1547 @cindex colorNormal, option
1548 These options set the colors used when colorizing ICS messages.
1549 All ICS messages are grouped into one of these categories:
1550 shout, sshout, channel 1, other channel, kibitz, tell, challenge, 
1551 request (including abort, adjourn, draw, pause, and takeback), or
1552 normal (all other messages).  
1553
1554 Each foreground or background argument can be one of the following:
1555 black, red, green, yellow, blue, magenta, cyan, white, or default.
1556 Here ``default'' means the default foreground or background color of
1557 your xterm.  Bold can be 1 or 0.  If background is omitted, ``default''
1558 is assumed; if bold is omitted, 0 is assumed.
1559
1560 Here is an example of how to set the colors in your @file{.Xresources} file.
1561 The colors shown here are the default values; you will get
1562 them if you turn @code{-colorize} on without specifying your own colors.
1563
1564 @example
1565 xboard*colorizeMessages: true   
1566 xboard*colorShout: green
1567 xboard*colorSShout: green, black, 1
1568 xboard*colorChannel1: cyan
1569 xboard*colorChannel: cyan, black, 1
1570 xboard*colorKibitz: magenta, black, 1
1571 xboard*colorTell: yellow, black, 1
1572 xboard*colorChallenge: red, black, 1
1573 xboard*colorRequest: red
1574 xboard*colorSeek: blue
1575 xboard*colorNormal: default
1576 @end example
1577 @item -soundProgram progname
1578 @cindex soundProgram, option
1579 @cindex Sounds
1580 If this option is set to a sound-playing program that is installed and
1581 working on your system, XBoard can play sound files when certain
1582 events occur, listed below.  The default program name is "play".  If
1583 any of the sound options is set to "$", the event rings the terminal
1584 bell by sending a ^G character to standard output, instead of playing
1585 a sound file.  If an option is set to the empty string "", no sound is
1586 played for that event.
1587 @item -soundShout filename
1588 @itemx -soundSShout filename
1589 @itemx -soundChannel filename
1590 @itemx -soundKibitz filename
1591 @itemx -soundTell filename
1592 @itemx -soundChallenge filename
1593 @itemx -soundRequest filename
1594 @itemx -soundSeek filename
1595 @cindex soundShout, option
1596 @cindex soundSShout, option
1597 @cindex soundChannel, option
1598 @cindex soundKibitz, option
1599 @cindex soundTell, option
1600 @cindex soundChallenge, option
1601 @cindex soundRequest, option
1602 @cindex soundSeek, option
1603 These sounds are triggered in the same way as the colorization events
1604 described above.  They all default to "", no sound.  They are played
1605 only if the colorizeMessages is on.
1606 @item -soundMove filename
1607 @cindex soundMove, option
1608 This sound is used by the Move Sound menu option.  Default: "$".
1609 @item -soundIcsAlarm filename
1610 @cindex soundIcsAlarm, option
1611 This sound is used by the ICS Alarm menu option.  Default: "$".
1612 @item -soundIcsWin filename
1613 @cindex soundIcsWin, option
1614 This sound is played when you win an ICS game.  Default: "" (no sound).
1615 @item -soundIcsLoss filename
1616 @cindex soundIcsLoss, option
1617 This sound is played when you lose an ICS game.  Default: "" (no sound).
1618 @item -soundIcsDraw filename
1619 @cindex soundIcsDraw, option
1620 This sound is played when you draw an ICS game.  Default: "" (no sound).
1621 @item -soundIcsUnfinished filename
1622 @cindex soundIcsUnfinished, option
1623 This sound is played when an ICS game that you are participating in is
1624 aborted, adjourned, or otherwise ends inconclusively.  Default: "" (no
1625 sound).
1626
1627 Here is an example of how to set the sounds in your @file{.Xresources} file:
1628
1629 @example
1630 xboard*soundShout: shout.wav
1631 xboard*soundSShout: sshout.wav
1632 xboard*soundChannel1: channel1.wav
1633 xboard*soundChannel: channel.wav
1634 xboard*soundKibitz: kibitz.wav
1635 xboard*soundTell: tell.wav
1636 xboard*soundChallenge: challenge.wav
1637 xboard*soundRequest: request.wav
1638 xboard*soundSeek: seek.wav
1639 xboard*soundMove: move.wav
1640 xboard*soundIcsWin: win.wav
1641 xboard*soundIcsLoss: lose.wav
1642 xboard*soundIcsDraw: draw.wav
1643 xboard*soundIcsUnfinished: unfinished.wav
1644 xboard*soundIcsAlarm: alarm.wav
1645 @end example
1646 @end table
1647
1648 @node Load and Save options
1649 @section Load and Save options
1650 @cindex Options, Load and Save
1651 @cindex Load and Save options
1652 @table @asis
1653 @item -lgf or -loadGameFile file
1654 @itemx -lgi or -loadGameIndex index
1655 @cindex lgf, option
1656 @cindex loadGameFile, option
1657 @cindex lgi, option
1658 @cindex loadGameIndex, option
1659 If the @code{loadGameFile} option is set, XBoard loads the specified
1660 game file at startup. The file name @file{-} specifies the standard
1661 input. If there is more than one game in the file, XBoard
1662 pops up a menu of the available games, with entries based on their PGN 
1663 (Portable Game Notation) tags.
1664 If the @code{loadGameIndex} option is set to @samp{N}, the menu is suppressed
1665 and the N th game found in the file is loaded immediately.
1666 The menu is also suppressed if @code{matchMode} is enabled or if the game file
1667 is a pipe; in these cases the first game in the file is loaded immediately.
1668 Use the @file{pxboard} shell script provided with XBoard if you
1669 want to pipe in files containing multiple games and still see the menu.
1670 If the loadGameIndex specifies an index -1, this triggers auto-increment
1671 of the index in @code{matchMode}, which means that after every game the
1672 index is incremented by one, causing each game of the match to be played
1673 from the next game in the file. Similarly, specifying an index value of -2
1674 causes the index to be incremented every two games, so that each game
1675 in the file is used twice (with reversed colors).
1676 The @code{rewindIndex} option causes the index to be reset to the
1677 first game of the file when it has reached a specified value.
1678 @item -rewindIndex n
1679 Causes a position file or game file to be rewound to its beginning after n
1680 positions or games in auto-increment @code{matchMode}. 
1681 See @code{loadPositionIndex} and @code{loadGameIndex}.
1682 default: 0 (no rewind).
1683 @item -td or -timeDelay seconds
1684 @cindex td, option
1685 @cindex timeDelay, option
1686 Time delay between moves during @samp{Load Game}. Fractional seconds
1687 are allowed; try @samp{-td 0.4}. A time delay value of -1 tells
1688 XBoard not to step through game files automatically. Default: 1
1689 second.
1690 @item -sgf or -saveGameFile file
1691 @cindex sgf, option
1692 @cindex saveGameFile, option
1693 If this option is set, XBoard appends a record of every game
1694 played to the specified file. The file name @file{-} specifies the
1695 standard output.
1696 @item -autosave/-xautosave or -autoSaveGames true/false
1697 @cindex autosave, option
1698 @cindex autoSaveGames, option
1699 Sets the Auto Save menu option.  @xref{Options Menu}.  Default: false.
1700 Ignored if @code{saveGameFile} is set.
1701 @item -lpf or -loadPositionFile file
1702 @itemx -lpi or -loadPositionIndex index
1703 @cindex lpf, option
1704 @cindex loadPositionFile, option
1705 @cindex lpi, option
1706 @cindex loadPositionIndex, option
1707 If the @code{loadPositionFile} option is set, XBoard loads the
1708 specified position file at startup. The file name @file{-} specifies the
1709 standard input. If the @code{loadPositionIndex} option is set to N,
1710 the Nth position found in the file is loaded; otherwise the
1711 first position is loaded.
1712 If the loadPositionIndex specifies an index -1, this triggers auto-increment
1713 of the index in @code{matchMode}, which means that after every game the
1714 index is incremented by one, causing each game of the match to be played
1715 from the next position in the file. Similarly, specifying an index value of -2
1716 causes the index to be incremented every two games, so that each position
1717 in the file is used twice (with the engines playing opposite colors).
1718 The @code{rewindIndex} option causes the index to be reset to the
1719 first position of the file when it has reached a specified value.
1720 @item -spf or -savePositionFile file
1721 @cindex spf, option
1722 @cindex savePositionFile, option
1723 If this option is set, XBoard appends the final position reached
1724 in every game played to the specified file. The file name @file{-}
1725 specifies the standard output.
1726 @item -pgnExtendedInfo true/false
1727 @cindex pgnExtendedInfo, option`
1728 If this option is set, WinBoard saves depth, score and time used for each 
1729 move that the engine found as a comment in the PGN file.
1730 Default: false.
1731 @item -pgnEventHeader string
1732 @cindex pgnEventHeader, option`
1733 Sets the name used in the PGN event tag to string. 
1734 Default: "Computer Chess Game".
1735 @item -saveOutOfBookInfo true/false
1736 @cindex saveOutOfBookInfo, option`
1737 Include the information on how the engine(s) game out of its opening book in a special Â‘annotatorÂ’ tag with the PGN file.@item -oldsave/-xoldsave or -oldSaveStyle true/false
1738 @cindex oldsave, option
1739 @cindex oldSaveStyle, option
1740 Sets the Old Save Style menu option.  @xref{Options Menu}.  Default: false.
1741 @end table
1742
1743 @node User interface options
1744 @section User interface options
1745 @cindex User interface options
1746 @cindex Options, User interface
1747 @table @asis
1748 @item -display
1749 @itemx -geometry
1750 @itemx -iconic
1751 @cindex display, option
1752 @cindex geometry, option
1753 @cindex iconic, option
1754 These and most other standard Xt options are accepted.
1755 @item -movesound/-xmovesound or -ringBellAfterMoves true/false
1756 @cindex movesound, option
1757 @cindex bell, option
1758 @cindex ringBellAfterMoves, option
1759 Sets the Move Sound menu option.  @xref{Options Menu}.  Default: false.
1760 For compatibility with old XBoard versions, -bell/-xbell are also 
1761 accepted as abbreviations for this option.
1762 @item -exit/-xexit or -popupExitMessage true/false
1763 @cindex exit, option
1764 @cindex popupExitMessage, option
1765 Sets the Popup Exit Message menu option.  @xref{Options Menu}. Default: true.
1766 @item -popup/-xpopup or -popupMoveErrors true/false
1767 @cindex popup, option
1768 @cindex popupMoveErrors, option
1769 Sets the Popup Move Errors menu option.  @xref{Options Menu}. Default: false.
1770 @item -queen/-xqueen or -alwaysPromoteToQueen true/false
1771 @cindex queen, option
1772 @cindex alwaysPromoteToQueen, option
1773 Sets the Always Queen menu option.  @xref{Options Menu}.  Default: false.
1774 @item -legal/-xlegal or -testLegality true/false
1775 @cindex legal, option
1776 @cindex testLegality, option
1777 Sets the Test Legality menu option.  @xref{Options Menu}.  Default: true.
1778 @item -size or -boardSize (sizeName | n1,n2,n3,n4,n5,n6,n7)
1779 @cindex size, option
1780 @cindex boardSize, option
1781 @cindex board size
1782 Determines how large the board will be, by selecting the pixel size
1783 of the pieces and setting a few related parameters.
1784 The sizeName can be one of: Titanic, giving 129x129 pixel pieces,
1785 Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72,
1786 Medium 64x64, Moderate 58x58, Average 54x54, Middling 49x49, Mediocre
1787 45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25,
1788 or Tiny 21x21.
1789 Pieces of all these sizes are built into XBoard.
1790 Other sizes can
1791 be used if you have them; see the pixmapDirectory and bitmapDirectory
1792 options.
1793 The default depends on the size of your screen; it is approximately the
1794 largest size that will fit without clipping.
1795
1796 You can select other sizes or vary other layout parameters by providing
1797 a list of comma-separated values (with no spaces) as the argument.
1798 You do not need to provide all the values; for any you omit from the
1799 end of the list, defaults are taken from the nearest built-in size.
1800 The value @code{n1} gives the piece size, @code{n2} the width of the
1801 black border
1802 between squares, @code{n3} the desired size for the 
1803 clockFont, @code{n4} the desired size for the coordFont,
1804 @code{n5} the desired size for the default font,
1805 @code{n6} the smallLayout flag (0 or 1), 
1806 and @code{n7} the tinyLayout flag (0 or 1).  
1807 All dimensions are in pixels.
1808 If the border between squares is eliminated (0 width), the various
1809 highlight options will not work, as there is nowhere to draw the highlight.
1810 If smallLayout is 1 and @code{titleInWindow} is true, 
1811 the window layout is rearranged to make more room for the title.
1812 If tinyLayout is 1, the labels on the menu bar are abbreviated
1813 to one character each and the buttons in the button bar are made narrower.
1814 @item -coords/-xcoords or -showCoords true/false
1815 @cindex coords, option
1816 @cindex showCoords, option
1817 Sets the Show Coords menu option.  @xref{Options Menu}.  Default: false.
1818 The @code{coordFont} option specifies what font to use.
1819 @item -autoraise/-xautoraise or -autoRaiseBoard true/false
1820 @cindex autoraise, option
1821 @cindex autoRaiseBoard, option
1822 Sets the Auto Raise Board menu option.  @xref{Options Menu}.  Default: true.
1823 @item -autoflip/-xautoflip or -autoFlipView true/false
1824 @cindex autoflip, option
1825 @cindex autoFlipView, option
1826 Sets the Auto Flip View menu option.  @xref{Options Menu}.  Default: true.
1827 @item -flip/-xflip or -flipView true/false
1828 @cindex flip, option
1829 @cindex flipView, option
1830 If Auto Flip View is not set, or if you are observing but not participating
1831 in a game, then the positioning of the board at the start of each game
1832 depends on the flipView option.  If flipView is false (the default),
1833 the board is positioned so that the white pawns move from the bottom to the
1834 top; if true, the black pawns move from the bottom to the top.
1835 In any case, the Flip menu option (see @ref{Options Menu})
1836 can be used to flip the board after
1837 the game starts.
1838 @item -title/-xtitle or -titleInWindow true/false
1839 @cindex title, option
1840 @cindex titleInWindow, option
1841 If this option is true, XBoard displays player names (for ICS
1842 games) and game file names (for @samp{Load Game}) inside its main
1843 window. If the option is false (the default), this information is
1844 displayed only in the window banner. You probably won't want to
1845 set this option unless the information is not showing up in the
1846 banner, as happens with a few X window managers.
1847 @item -buttons/-xbuttons or -showButtonBar True/False
1848 @cindex buttons, option
1849 @cindex showButtonBar, option
1850 If this option is False, xboard omits the [<<] [<] [P] [>] [>>] button
1851 bar from the window, allowing the message line to be wider.  You can
1852 still get the functions of these buttons using the menus or their keyboard
1853 shortcuts.  Default: true.
1854 @item -mono/-xmono or -monoMode true/false
1855 @cindex mono, option
1856 @cindex monoMode, option
1857 Determines whether XBoard displays its pieces and squares with
1858 two colors (true) or four (false). You shouldn't have to
1859 specify @code{monoMode}; XBoard will determine if it is necessary.
1860 @item -flashCount count
1861 @itemx -flashRate rate
1862 @itemx -flash/-xflash
1863 @cindex flashCount, option
1864 @cindex flashRate, option
1865 @cindex flash, option
1866 @cindex xflash, option
1867 These options enable flashing of pieces when they
1868 land on their destination square.
1869 @code{flashCount}
1870 tells XBoard how many times to flash a piece after it
1871 lands on its destination square.
1872 @code{flashRate}
1873 controls the rate of flashing (flashes/sec).
1874 Abbreviations:
1875 @code{flash}
1876 sets flashCount to 3.
1877 @code{xflash}
1878 sets flashCount to 0.
1879 Defaults:  flashCount=0 (no flashing), flashRate=5.
1880 @item -highlight/-xhighlight or -highlightLastMove true/false
1881 @cindex highlight, option
1882 @cindex highlightLastMove, option
1883 Sets the Highlight Last Move menu option. @xref{Options Menu}. Default: false.
1884 @item -blind/-xblind or -blindfold true/false
1885 @cindex blind, option
1886 @cindex blindfold, option
1887 Sets the Blindfold menu option.  @xref{Options Menu}.  Default: false.
1888 @item -clockFont font
1889 @cindex clockFont, option
1890 @cindex Font, clock
1891 The font used for the clocks. If the option value is a pattern
1892 that does not specify the font size, XBoard tries to choose an
1893 appropriate font for the board size being used.
1894 Default: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
1895 @item -coordFont font
1896 @cindex coordFont, option
1897 @cindex Font, coordinates
1898 The font used for rank and file coordinate labels if @code{showCoords}
1899 is true. If the option value is a pattern that does not specify
1900 the font size, XBoard tries to choose an appropriate font for
1901 the board size being used.
1902 Default: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
1903 @item -font font
1904 @cindex font, option
1905 @cindex Font
1906 The font used for popup dialogs, menus, comments, etc.
1907 If the option value is a pattern that does not specify
1908 the font size, XBoard tries to choose an appropriate font for
1909 the board size being used.
1910 Default: -*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*.
1911 @item -fontSizeTolerance tol
1912 @cindex fontSizeTolerance, option
1913 In the font selection algorithm, a nonscalable font will be preferred
1914 over a scalable font if the nonscalable font's size differs
1915 by @code{tol} pixels
1916 or less from the desired size.  A value of -1 will force
1917 a scalable font to always be used if available; a value of 0 will
1918 use a nonscalable font only if it is exactly the right size; 
1919 a large value (say 1000) will force a nonscalable font to always be
1920 used if available.  Default: 4.
1921 @item -bm or -bitmapDirectory dir
1922 @itemx -pixmap or -pixmapDirectory dir
1923 @cindex bm, option
1924 @cindex bitmapDirectory, option
1925 @cindex pixmap, option
1926 @cindex pixmapDirectory, option
1927 These options control what piece images xboard uses.  The XBoard
1928 distribution includes one set of pixmap pieces in xpm format, in the
1929 directory @file{pixmaps}, and one set of bitmap pieces in xbm format,
1930 in the directory @file{bitmaps}.  Pixmap
1931 pieces give a better appearance on the screen: the white pieces have
1932 dark borders, and the black pieces have opaque internal details.  With
1933 bitmaps, neither piece color has a border, and the internal details
1934 are transparent; you see the square color or other background color
1935 through them.
1936
1937 If XBoard is configured and compiled on a system that includes libXpm,
1938 the X pixmap library, the xpm pixmap pieces are compiled in as the
1939 default.  A different xpm piece set can be selected at runtime with
1940 the @code{pixmapDirectory} option, or a bitmap piece set can be selected
1941 with the @code{bitmapDirectory} option.
1942
1943 If XBoard is configured and compiled on a system that does not include
1944 libXpm (or the @code{--disable-xpm} option is given to the configure
1945 program), the bitmap pieces are compiled in as the default.  It is not
1946 possible to use xpm pieces in this case, but pixmap pieces in another
1947 format called "xim" can be used by giving the @code{pixmapDirectory} option.
1948 Or again, a different bitmap piece set can be selected with the
1949 @code{bitmapDirectory} option.
1950
1951 Files in the @code{bitmapDirectory} must be named as follows:
1952 The first character of a piece bitmap name gives the piece it 
1953 represents (@samp{p}, @samp{n}, @samp{b}, @samp{r}, @samp{q}, or @samp{k}),
1954 the next characters give the size in pixels, the
1955 following character indicates whether the piece is
1956 solid or outline (@samp{s} or @samp{o}),
1957 and the extension is @samp{.bm}.
1958 For example, a solid 80x80 knight would be named @file{n80s.bm}.
1959 The outline bitmaps are used only in monochrome mode.
1960 If bitmap pieces are compiled in and the bitmapDirectory is missing
1961 some files, the compiled in pieces are used instead.
1962
1963 If the bitmapDirectory option is given,
1964 it is also possible to replace xboard's icons and menu checkmark,
1965 by supplying files named @file{icon_white.bm}, @file{icon_black.bm}, and
1966 @file{checkmark.bm}.
1967
1968 For more information about pixmap pieces and how to get additional
1969 sets, see @ref{zic2xpm} below.
1970 @item -whitePieceColor color
1971 @itemx -blackPieceColor color
1972 @itemx -lightSquareColor color
1973 @itemx -darkSquareColor color
1974 @itemx -highlightSquareColor color
1975 @cindex Colors
1976 @cindex whitePieceColor, option
1977 @cindex blackPieceColor, option
1978 @cindex lightSquareColor, option
1979 @cindex darkSquareColor, option
1980 @cindex highlightSquareColor, option
1981 Colors to use for the pieces, squares, and square highlights.
1982 Defaults:
1983
1984 @example
1985 -whitePieceColor       #FFFFCC
1986 -blackPieceColor       #202020
1987 -lightSquareColor      #C8C365
1988 -darkSquareColor       #77A26D
1989 -highlightSquareColor  #FFFF00
1990 -premoveHighlightColor #FF0000
1991 @end example
1992
1993 On a grayscale monitor you might prefer:
1994
1995 @example
1996 -whitePieceColor       gray100
1997 -blackPieceColor       gray0
1998 -lightSquareColor      gray80
1999 -darkSquareColor       gray60
2000 -highlightSquareColor  gray100
2001 -premoveHighlightColor gray70
2002 @end example
2003 @item -drag/-xdrag or -animateDragging true/false
2004 @cindex drag, option
2005 @cindex animateDragging, option
2006 Sets the Animate Dragging menu option. @xref{Options Menu}.  Default: true.
2007 @item -animate/-xanimate or -animateMoving true/false
2008 @cindex animate, option
2009 @cindex animateMoving, option
2010 Sets the Animate Moving menu option. @xref{Options Menu}.  Default: true.
2011 @item -animateSpeed n
2012 @cindex -animateSpeed, option
2013 Number of milliseconds delay between each animation frame when Animate
2014 Moves is on.
2015 @end table
2016
2017 @node Adjudication Options
2018 @section Adjudication Options
2019 @cindex Options, adjudication
2020 @table @asis
2021 @item -adjudicateLossThreshold n
2022 @cindex adjudicateLossThreshold, option
2023 If the given value is non-zero, XBoard adjudicates the game as a loss 
2024 if both engines agree for a duration of 6 consecutive ply that the score 
2025 is below the given score threshold for that engine. Make sure the score 
2026 is interpreted properly by XBoard, 
2027 using @code{-firstScoreAbs} and @code{-secondScoreAbs} if needed. 
2028 Default: 0 (no adjudiction)
2029 @item -adjudicateDrawMoves n
2030 @cindex adjudicateDrawMoves, option
2031 If the given value is non-zero, XBoard adjudicates the game as a draw 
2032 if after the given number of moves it was not yet decided. Defaut: 0 (no adjudication)
2033 @item -checkMates true/false
2034 @cindex checkMates, option
2035 If this option is set, XBoard detects all checkmates and stalemates, 
2036 and ends the game as soon as they occur. 
2037 Legality-testing must be switched on for this option to work.
2038 Default: true
2039 @item -testClaims true/false
2040 @cindex testClaims, option
2041 If this option is set, XBoard verifies all result claims made by engines, 
2042 and those who send false claims will forfeit the game because of it. 
2043 Legality-testing must be switched on for this option to work. Default: true
2044 @item -materialDraws true/false
2045 @cindex materialDraws, option
2046 If this option is set, XBoard adjudicates games as draws when there is 
2047 no sufficient material left to inflict a checkmate. 
2048 This applies to KBKB with like bishops (any number, actually), and to KBK, KNK and KK. 
2049 Legality-testing must be switched on for this option to work. Default: true
2050 @item -trivialDraws true/false
2051 @cindex trivialDraws, option
2052 If this option is set, XBoard adjudicates games as draws that cannot be 
2053 usually won without opponent cooperation. This applies to KBKB with unlike bishops, 
2054 and to KBKN, KNKN, KNNK, KRKR and KQKQ. The draw is called after 6 ply into these end-games, 
2055 to allow quick mates that can occur in some exceptional positions to be found by the engines. 
2056 KQKQ does not really belong in this category, and might be taken out in the future. 
2057 (When bitbase-based adjudications are implemented.) 
2058 Legality-testing must be on for this option to work. Default: false
2059 @item -ruleMoves n
2060 @cindex ruleMoves, option
2061 If the given value is non-zero, XBoard adjudicates the game as a draw after the given 
2062 number of consecutive reversible moves. Engine draw claims are always accepted after 50 moves, 
2063 irrespective of the given value of n.
2064 @item -repeatsToDraw n
2065 If the given value is non-zero, xboard adjudicates the game as a draw if a position 
2066 is repeated the given number of times. Engines draw claims are always accepted after 3 repeats, 
2067 (on the 3rd occurrence, actually), irrespective of the value of n. 
2068 Beware that positions that have different castling or en-passant rights do not count 
2069 as repeats, XBoard is fully e.p. and castling aware!
2070 @end table
2071
2072 @node Other options
2073 @section Other options
2074 @cindex Options, miscellaneous
2075 @table @asis
2076 @item -ncp/-xncp or -noChessProgram true/false
2077 @cindex ncp, option
2078 @cindex noChessProgram, option
2079 If this option is true, XBoard acts as a passive chessboard; it
2080 does not start a chess engine at all. Turning on this option
2081 also turns off clockMode. Default: false.
2082 @item -mode or -initialMode modename
2083 @cindex mode, option
2084 @cindex initalMode, option
2085 If this option is given, XBoard selects the given modename
2086 from the Mode menu after starting and (if applicable) processing the
2087 loadGameFile or loadPositionFile option. Default: "" (no selection). 
2088 Other supported values are 
2089 MachineWhite, MachineBlack, TwoMachines, Analysis, 
2090 AnalyzeFile, EditGame, EditPosition, and Training.
2091 @item -variant varname
2092 @cindex variant, option
2093 Activates preliminary, partial support for playing chess variants
2094 against a local engine or editing variant games.  This flag is not
2095 needed in ICS mode.  Recognized variant names are:
2096
2097 @example
2098 normal        Normal chess
2099 wildcastle    Shuffle chess, king can castle from d file
2100 nocastle      Shuffle chess, no castling allowed
2101 fischerandom  Fischer Random shuffle chess
2102 bughouse      Bughouse, ICC/FICS rules
2103 crazyhouse    Crazyhouse, ICC/FICS rules
2104 losers        Lose all pieces or get mated (ICC wild 17)
2105 suicide       Lose all pieces including king (FICS)
2106 giveaway      Try to have no legal moves (ICC wild 26)
2107 twokings      Weird ICC wild 9
2108 kriegspiel    Opponent's pieces are invisible
2109 atomic        Capturing piece explodes (ICC wild 27)
2110 3check        Win by giving check 3 times (ICC wild 25)
2111 shatranj      An ancient precursor of chess (ICC wild 28)
2112 xiangqi       Chinese Chess (on a 9x10 board)
2113 shogi         Japanese Chess (on a 9x9 board & piece drops) 
2114 capablanca    Capablanca Chess (10x8 board, with Archbishop 
2115               and Chancellor pieces)
2116 gothic        similar, with a better initial position
2117 caparandom    An FRC-like version of Capablanca Chess (10x8) 
2118 janus         A game with two Archbishops (10x8 board)
2119 courier       Medieval intermedite between shatranj and 
2120               modern Chess (on 12x8 board) 
2121 falcon        Patented 10x8 variant with two Falcon pieces
2122 berolina      Pawns capture straight ahead, and move diagonal 
2123 cylinder      Pieces wrap around the board edge
2124 knightmate    King moves as Knight, and vice versa 
2125 super         Superchess (shuffle variant with 4 exo-pieces)
2126 fairy         A catchall variant in which all piece types 
2127               known to XBoard can participate (8x8)
2128 unknown       Catchall for other unknown variants
2129 @end example
2130
2131 In the shuffle variants, XBoard now does shuffle the pieces, although
2132 you can still do it by hand using Edit Position.  Some variants are
2133 supported only in ICS mode, including bughouse, and
2134 kriegspiel.  The winning/drawing conditions in crazyhouse (offboard
2135 interposition on mate), losers, suicide, giveaway, atomic, and 3check
2136 are not fully understood.  
2137 Berolina and cylinder chess can only be played with legality testing off.
2138 In crazyhouse, XBoard now does keep
2139 track of offboard pieces.  In shatranj it does implement the baring
2140 rule when mate detection is switched on.
2141 @item -boardHeight N
2142 @cindex boardHeight, option
2143 Allows you to set a non-standard number of board ranks in any variant. 
2144 If the height is given as -1, the default height for the variant is used.
2145 Default: -1
2146 @item -boardWidth N
2147 @cindex boardWidth, option
2148 Allows you to set a non-standard number of board files in any variant. 
2149 If the width is given as -1, the default width for the variant is used. 
2150 With a non-standard width, the initial position will always be an empty board, 
2151 as the usual opening array will not fit.
2152 Default: -1
2153 @item -holdingsSize N
2154 @cindex holdingsSize, option
2155 Allows you to set a non-standard size for the holdings in any variant. 
2156 If the size is given as -1, the default holdings size for the variant is used. 
2157 The first N piece types will go into the holdings on capture, and you will be 
2158 able to drop them on the board in stead of making a normal move. If size equals 0, 
2159 there will be no holdings.
2160 Default: -1
2161 @item -defaultFrcPosition N
2162 @cindex defaultFrcPosition, option
2163 Specifies the number of the opening position in shuffle games like Chess960. 
2164 A value of -1 means the position is randomly generated by XBoard
2165 at the beginning of every game.
2166 Default: -1
2167 @item -pieceToSquareTable string
2168 @cindex pieceToSquareTable, option
2169 The characters that are used to represent the piece types XBoard knows in FEN 
2170 diagrams and SAN moves. The string argument has to have an even length 
2171 (or it will be ignored), as white and black pieces have to be given separately 
2172 (in that order). The last letter for each color will be the King. 
2173 The letters before that will be PNBRQ and then a whole host of fairy pieces 
2174 in an order that has not fully crystallized yet (currently FEACWMOHIJGDVSLU, 
2175 F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, 
2176 H=Nightrider). You should list at least all pieces that occur in the variant 
2177 you are playing. If you have less than 44 characters in the string, the pieces 
2178 not mentioned will get assigned a period, and you will not be able to distinguish 
2179 them in FENs. You can also explicitly assign pieces a period, in which case they 
2180 will not be counted in deciding which captured pieces can go into the holdings.
2181 A tilde '~' as a piece name does mean this piece is used to represent a promoted 
2182 Pawn in crazyhouse-like games, i.e. on capture it turns back onto a Pawn. 
2183 A '+' similarly indicates the piece is a shogi-style promoted piece, that should 
2184 revert to its non-promoted version on capture (rather than to a Pawn).
2185 Note that promoted pieces are represented by pieces 11 further in the list.
2186 You should not have to use this option often: each variant has its own default 
2187 setting for the piece representation in FEN, which should be sufficient in normal use.
2188 Default: ""
2189 @item -debug/-xdebug or -debugMode true/false
2190 @cindex debug, option
2191 @cindex debugMode, option
2192 Turns on debugging printout.
2193 @item -rsh or -remoteShell shell-name
2194 @cindex rsh, option
2195 @cindex remoteShell, option
2196 Name of the command used to run programs remotely. The default
2197 is @file{rsh} or @file{remsh}, determined when XBoard is
2198 configured and compiled.
2199 @item -ruser or -remoteUser user-name
2200 @cindex ruser, option
2201 @cindex remoteUser, option
2202 User name on the remote system when running programs with the
2203 @code{remoteShell}. The default is your local user name.
2204 @item -userName username
2205 @cindex userName, option
2206 Name under which the Human player will be listed in the PGN file. 
2207 Default is the login name on your local computer.
2208 @end table
2209
2210 @node Chess Servers
2211 @chapter Chess Servers
2212 @cindex ICS
2213 @cindex ICS, addresses
2214 @cindex Internet Chess Server
2215 An @dfn{Internet Chess Server}, or @dfn{ICS}, is a place on the
2216 Internet where people can get together to play chess, watch other
2217 people's games, or just chat.  You can use either @code{telnet} or a
2218 client program like XBoard to connect to the server.  There are
2219 thousands of registered users on the different ICS hosts, and it is
2220 not unusual to meet 200 on both chessclub.com and freechess.org.
2221
2222 Most people can just type @kbd{xboard -ics} to start XBoard as an ICS
2223 client.  Invoking XBoard in this way connects you to the Internet
2224 Chess Club (ICC), a commercial ICS.  You can log in there as a guest
2225 even if you do not have a paid account.  To connect to the largest
2226 Free ICS (FICS), use the command @kbd{xboard -ics -icshost freechess.org}
2227 instead, or substitute a different host name to connect to your
2228 favorite ICS.
2229 For a full description of command-line options that control 
2230 the connection to ICS and change the default values of ICS options, see
2231 @ref{ICS options}.  
2232
2233 While you are running XBoard as an ICS client,
2234 you use the terminal window that you started XBoard from
2235 as a place to type in commands and read information that is
2236 not available on the chessboard.
2237
2238 The first time you need to use the terminal is to enter your login name
2239 and password, if you are a registered player. (You don't need to do
2240 this manually; the @code{icsLogon} option can do it for you.
2241 @pxref{ICS options}.)  If you are not registered, 
2242 enter @kbd{g} as your name, and the server will pick a
2243 unique guest name for you.
2244
2245 Some useful ICS commands
2246 include
2247 @table @kbd
2248 @item help <topic>
2249 @cindex help, ICS command
2250 to get help on the given <topic>. To get a list of possible topics type
2251 @dfn{help} without topic.  Try the help command before you ask other
2252 people on the server for help.
2253
2254 For example @kbd{help register} tells you how to become a registered
2255 ICS player.
2256 @item who <flags>
2257 @cindex who, ICS command
2258 to see a list of people who are logged on.  Administrators
2259 (people you should talk to if you have a problem) are marked
2260 with the character @samp{*}, an asterisk. The <flags> allow you to
2261 display only selected players: For example, @kbd{who of} shows a
2262 list of players who are interested in playing but do not have
2263 an opponent.
2264 @item games
2265 @cindex games, ICS command
2266 to see what games are being played
2267 @item match <player> [<mins>] [<inc>]
2268 to challenge another player to a game. Both opponents get <mins> minutes
2269 for the game, and <inc> seconds will be added after each move.
2270 If another player challenges you, the server asks if you want to
2271 accept the challenge; use the @kbd{accept} or @kbd{decline} commands
2272 to answer.
2273 @item accept
2274 @itemx decline
2275 @cindex accept, ICS command
2276 @cindex decline, ICS command
2277 to accept or decline another player's offer. 
2278 The offer may be to start a new game, or to agree to a 
2279 @kbd{draw}, @kbd{adjourn} or @kbd{abort} the current game. @xref{Action Menu}.
2280
2281 If you have more than one pending offer (for example, if more than one player
2282 is challenging you, or if your opponent offers both a draw and to adjourn the
2283 game), you have to supply additional information, by typing something
2284 like @kbd{accept <player>}, @kbd{accept draw}, or @kbd{draw}.
2285 @item draw
2286 @itemx adjourn
2287 @itemx abort
2288 @cindex draw, ICS command
2289 @cindex adjourn, ICS command
2290 @cindex abort, ICS command
2291 asks your opponent to terminate a game by mutual agreement. Adjourned
2292 games can be continued later. 
2293 Your opponent can either @kbd{decline} your offer or accept it (by typing the
2294 same command or typing @kbd{accept}).  In some cases these commands work
2295 immediately, without asking your opponent to agree.  For example, you can
2296 abort the game unilaterally if your opponent is out of time, and you can claim
2297 a draw by repetition or the 50-move rule if available simply by typing 
2298 @kbd{draw}.
2299 @item finger <player>
2300 @cindex finger, ICS command
2301 to get information about the given <player>. (Default: yourself.)
2302 @item vars
2303 @cindex vars, ICS command
2304 to get a list of personal settings
2305 @item set <var> <value>
2306 @cindex set, ICS command
2307 to modify these settings
2308 @item observe <player>
2309 @cindex observe, ICS command
2310 to observe an ongoing game of the given <player>.
2311 @item examine
2312 @itemx oldmoves
2313 @cindex examine, ICS command
2314 @cindex oldmoves, ICS command
2315 to review a recently completed game
2316 @end table
2317
2318 Some special XBoard features are activated when you are
2319 in examine mode on ICS.  See the descriptions of the menu commands
2320 @samp{Forward}, @samp{Backward}, @samp{Pause}, @samp{ICS Client}, 
2321 and @samp{Stop Examining} on the @ref{Step Menu}, @ref{Mode Menu}, and
2322 @ref{Options Menu}.
2323
2324 @node Firewalls
2325 @chapter Firewalls
2326 By default, XBoard communicates with an Internet Chess Server
2327 by opening a TCP socket directly from the machine it is running on
2328 to the ICS. If there is a firewall between your machine and the ICS,
2329 this won't work. Here are some recipes for getting around common
2330 kinds of firewalls using special options to XBoard.
2331 Important: See the paragraph in the below about extra echoes, in
2332 @ref{Limitations}.
2333
2334 Suppose that you can't telnet directly to ICS, but you can telnet
2335 to a firewall host, log in, and then telnet from there to ICS.
2336 Let's say the firewall is called @samp{firewall.example.com}. Set
2337 command-line options as follows:
2338
2339 @example
2340 xboard -ics -icshost firewall.example.com -icsport 23
2341 @end example
2342 @noindent
2343 Or in your @file{.Xresources} file:
2344
2345 @example
2346 XBoard*internetChessServerHost: firewall.example.com
2347 XBoard*internetChessServerPort: 23
2348 @end example
2349 @noindent
2350 Then when you run XBoard in ICS mode, you will be prompted
2351 to log in to the firewall host. This works because port 23 is the
2352 standard telnet login service. Do so, then telnet to ICS, using a
2353 command like @samp{telnet chessclub.com 5000}, or whatever command
2354 the firewall provides for telnetting to port 5000.
2355
2356 If your firewall lets you telnet (or rlogin) to remote hosts but
2357 doesn't let you telnet to port 5000, you may be able to connect to the
2358 chess server on port 23 instead, which is the port the telnet program
2359 uses by default.  Some chess servers support this (including
2360 chessclub.com and freechess.org), while some do not.
2361
2362 If your chess server does not allow connections on port 23 and your
2363 firewall does not allow you to connect to other ports, you may be able
2364 to connect by hopping through another host outside the firewall that
2365 you have an account on.  For instance, suppose you have a shell
2366 account at @samp{foo.edu}. Follow the recipe above, but instead of
2367 typing @samp{telnet chessclub.com 5000} to the firewall, type
2368 @samp{telnet foo.edu} (or @samp{rlogin foo.edu}), log in there, and
2369 then type @samp{telnet chessclub.com 5000}.
2370
2371 Suppose that you can't telnet directly to ICS, but you can use rsh
2372 to run programs on a firewall host, and that host can telnet to ICS.
2373 Let's say the firewall is called @samp{rsh.example.com}. Set
2374 command-line options as follows:
2375
2376 @example
2377 xboard -ics -gateway rsh.example.com -icshost chessclub.com
2378 @end example
2379
2380 @noindent
2381 Or in your @file{.Xresources} file:
2382
2383 @example
2384 XBoard*gateway: rsh.example.com
2385 XBoard*internetChessServerHost: chessclub.com
2386 @end example
2387
2388 Then when you run XBoard in ICS mode, it will connect to
2389 the ICS by using @file{rsh} to run the command
2390 @samp{telnet chessclub.com 5000} on host @samp{rsh.example.com}.
2391
2392 Suppose that you can telnet anywhere you want, but you have to
2393 run a special program called @file{ptelnet} to do so.
2394
2395 First, we'll consider the easy case, in which
2396 @samp{ptelnet chessclub.com 5000} gets you to the chess server.
2397 In this case set command line options as follows:
2398
2399 @example
2400 xboard -ics -telnet -telnetProgram ptelnet
2401 @end example
2402
2403 @noindent
2404 Or in your @file{.Xresources} file:
2405
2406 @example
2407 XBoard*useTelnet: true
2408 XBoard*telnetProgram: ptelnet
2409 @end example
2410
2411 @noindent
2412 Then when you run XBoard in ICS mode, it will issue the
2413 command @samp{ptelnet chessclub.com 5000} to connect to the ICS.
2414
2415 Next, suppose that @samp{ptelnet chessclub.com 5000} doesn't work;
2416 that is, your @file{ptelnet} program doesn't let you connect to
2417 alternative ports. As noted above, your chess server may allow you to
2418 connect on port 23 instead.  In that case, just add the option
2419 @samp{-icsport ""} to the above command, or add
2420 @samp{XBoard*internetChessServerPort:} to your @file{.Xresources} file.
2421 But if your chess server doesn't let you connect on port 23, you will have
2422 to find some other host outside the firewall and hop through it. For
2423 instance, suppose you have a shell account at @samp{foo.edu}. Set
2424 command line options as follows:
2425
2426 @example
2427 xboard -ics -telnet -telnetProgram ptelnet -icshost foo.edu -icsport ""
2428 @end example
2429
2430 @noindent
2431 Or in your @file{.Xresources} file:
2432
2433 @example
2434 XBoard*useTelnet: true
2435 XBoard*telnetProgram: ptelnet
2436 XBoard*internetChessServerHost: foo.edu
2437 XBoard*internetChessServerPort:
2438 @end example
2439
2440 @noindent
2441 Then when you run XBoard in ICS mode, it will issue the
2442 command @samp{ptelnet foo.edu} to connect to your account at
2443 @samp{foo.edu}. Log in there, then type @samp{telnet chessclub.com 5000}.
2444
2445 ICC timestamp and FICS timeseal do not work through some
2446 firewalls.  You can use them only if your firewall gives a clean TCP
2447 connection with a full 8-bit wide path.  If your firewall allows you
2448 to get out only by running a special telnet program, you can't use
2449 timestamp or timeseal across it.  But if you have access to a
2450 computer just outside your firewall, and you have much lower netlag
2451 when talking to that computer than to the ICS, it might be worthwhile
2452 running timestamp there.  Follow the instructions above for hopping
2453 through a host outside the firewall (foo.edu in the example),
2454 but run timestamp or timeseal on that host instead of telnet.
2455
2456 Suppose that you have a SOCKS firewall that will give you a clean
2457 8-bit wide TCP connection to the chess server, but only after you
2458 authenticate yourself via the SOCKS protocol.  In that case, you could
2459 make a socksified version of XBoard and run that.  If you are using
2460 timestamp or timeseal, you will to socksify it, not XBoard; this may
2461 be difficult seeing that ICC and FICS do not provide source code for
2462 these programs.  Socksification is beyond the scope of this document,
2463 but see the SOCKS Web site at http://www.socks.permeo.com/.
2464 If you are missing SOCKS, try http://www.funbureau.com/.
2465
2466 @node Environment
2467 @chapter Environment variables
2468 @cindex Environment variables
2469 @cindex CHESSDIR
2470 Game and position files are found in a directory named by the
2471 @code{CHESSDIR} environment variable. If this variable is not set, the
2472 current working directory is used. If @code{CHESSDIR} is set,
2473 XBoard actually changes its working directory to
2474 @code{$CHESSDIR}, so any files written by the chess engine
2475 will be placed there too.
2476
2477 @node Limitations
2478 @chapter Limitations and known bugs
2479 @cindex Limitations
2480 @cindex Bugs
2481 There is no way for two people running copies of XBoard to play
2482 each other without going through an Internet Chess Server.
2483
2484 Under some circumstances, your ICS password may be echoed when you log on.
2485
2486 If you are connecting to the ICS by running telnet on an Internet
2487 provider or firewall host, you may find that each line you type is
2488 echoed back an extra time after you hit @key{Enter}. If your Internet
2489 provider is a Unix system, you can probably turn its echo off by
2490 typing @kbd{stty -echo} after you log in, and/or typing
2491 @key{^E}@key{Enter} (Ctrl+E followed by the Enter key) to the telnet
2492 program after you have logged into ICS.  It is a good idea to do this
2493 if you can, because the extra echo can occasionally confuse XBoard's
2494 parsing routines.
2495
2496 The game parser recognizes only algebraic notation.
2497
2498 Many of the following points used to be limitations in XBoard 4.2.7 and earlier, 
2499 but are now fixed:
2500 The internal move legality tester in XBoard 4.3.xx does look at the game history, 
2501 and is fully aware of castling or en-passant-capture rights. It permits castling with 
2502 the king on the d file because this is possible in some "wild 1" games on ICS. 
2503 The piece-drop menu does not check piece drops in bughouse to see if you actually hold 
2504 the piece you are trying to drop. But this way of dropping pieces should be considered 
2505 an obsolete feature, now that pieces can be dropped by dragging them from the holdings 
2506 to the board. Anyway, if you would attempt an illegal move when using a chess engine or the ICS, 
2507 WinBoard will accept the error message that comes back, undo the move, and let you try another.
2508 FEN positions saved by XBoard do include correct information about whether castling or 
2509 en passant are legal, and also handle the 50-move counter.
2510 The mate detector does not understand that non-contact mate is not really mate in bughouse. 
2511 The only problem this causes while playing is minor: a "#" (mate indicator) character will 
2512 show up after a non-contact mating move in the move list. XBoard will not assume the game 
2513 is over at that point, not even when the option Detect Mates is on.
2514 Edit Game mode always uses the rules of the selected variant, 
2515 which can be a variant that uses piece drops.  
2516 You can load and edit games that contain piece drops. 
2517 The (obsolete) piece menus are not active, 
2518 but you can perform piece drops by dragging pieces from the holdings.
2519 Edit Position mode does not allow you to edit the crazyhouse holdings properly. 
2520 You cannot drag pieces to the holding, and using the popup menu to put pieces 
2521 there does not adapt the holding counts and leads to an inconsistent state. 
2522 Set up crazyhouse positions by loading / pasting a bFEN, from there you can set the holdings.
2523 Fischer Random castling is fully understood. 
2524 You can enter castlings by dragging the King on top of your Rook. 
2525 You can probably also play Fischer Random successfully on ICS by typing 
2526 castling moves into the ICS Interaction window.
2527
2528 The menus may not work if your keyboard is in Caps Lock or Num Lock mode.
2529 This seems to be a problem with the Athena menu widget,
2530 not an XBoard bug.
2531
2532 Also see the ToDo file included with the distribution for many other
2533 possible bugs, limitations, and ideas for improvement that have been
2534 suggested.
2535 @node Problems
2536 @chapter Reporting problems
2537 @cindex Bugs
2538 @cindex Bug reports
2539 @cindex Reporting bugs
2540 @cindex Problems
2541 @cindex Reporting problems
2542
2543 Report bugs and problems with XBoard to @code{<bug-xboard@@gnu.org>}.
2544
2545 Please use the @file{script} program to start a typescript, run 
2546 XBoard with the @samp{-debug} option, and include the typescript
2547 output in your message.
2548 Also tell us what kind of machine and what operating system version
2549 you are using.  The command @samp{uname -a} will often tell you this.
2550 Here is a sample of approximately what you should type:
2551
2552 @example
2553 script
2554 uname -a
2555 ./configure
2556 make
2557 ./xboard -debug
2558 exit
2559 mail bug-xboard@@gnu.org
2560 Subject: Your short description of the problem
2561 Your detailed description of the problem
2562 ~r typescript
2563 .
2564 @end example
2565
2566 The WinBoard / XBoard 4.3 line is being developed by H.G. Muller 
2567 independently of the GNU Savannah xboard project. 
2568 Bug reports on this version, and suggestions for improvements and additions, 
2569 are best posted in the WinBoard forum, 
2570 WinBoard-development section (http://www.open-aurec.com/wbforum). 
2571
2572 If you improve XBoard, please send a message about your changes,
2573 and we will get in touch with you about merging them in
2574 to the main line of development.
2575 Also see our Web site at http://savannah.gnu.org/projects/xboard/.
2576
2577 @node Contributors
2578 @chapter Authors and contributors
2579 @cindex Authors
2580 @cindex Contributors
2581
2582 Tim Mann has been responsible for XBoard versions 1.3 and beyond, and
2583 for WinBoard, a port of XBoard to Microsoft Win32 (Windows NT and
2584 Windows 95). H.G.Muller is responsible for version 4.3.
2585
2586 Mark Williams contributed the initial (WinBoard-only) implementation
2587 of many new features added to both XBoard and WinBoard in version
2588 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training
2589 mode, auto raise, and blindfold.  Ben Nye contributed X copy/paste
2590 code for XBoard.
2591
2592 Hugh Fisher added animated piece movement to XBoard, and Henrik Gram
2593 (henrikg@@funcom.com) added it to WinBoard.  Frank McIngvale added
2594 click/click moving, the Analysis modes, piece flashing, ZIICS import,
2595 and ICS text colorization to XBoard.  Jochen Wiedmann ported XBoard to
2596 the Amiga, creating AmyBoard, and converted the documentation to
2597 texinfo.  Elmar Bartel contributed the new piece bitmaps introduced in
2598 version 3.2.  John Chanak contributed the initial implementation of
2599 ICS mode.  The color scheme and the old 80x80 piece bitmaps were taken
2600 from Wayne Christopher's @code{XChess} program.
2601
2602 Chris Sears and Dan Sears wrote the original XBoard.  They were
2603 responsible for versions 1.0 through 1.2.
2604
2605 Evan Welsh wrote @code{CMail}.  Patrick Surry helped in designing,
2606 testing, and documenting CMail.
2607
2608 Allessandro Scotti added many elements to the user interface of WinBoard, 
2609 including the board textures and font-based rendering, the evaluation-graph, 
2610 move-history and engine-output window. 
2611 He was also responsible for adding the UCI support. 
2612
2613 H.G. Muller made WinBoard castling- and e.p.-aware, 
2614 added variant support with adjustable board sizes, 
2615 the crazyhouse holdings, and the fairy pieces. 
2616 In addition he added most of the adjudication options, 
2617 made WinBoard more robust in dealing with buggy and crashing engines, 
2618 and extended time control with a time-odds and node-count-based modes.
2619 Most of the options that initially wre WinBoard only have now been back-ported to XBoard.
2620
2621 Michel van den Bergh provided the code for reading Polyglot opening books.
2622
2623 @node CMail
2624 @chapter CMail
2625 @cindex cmail
2626 The @file{cmail} program can help you play chess by email with opponents of
2627 your choice using XBoard as an interface.
2628
2629 You will usually run @file{cmail} without giving any options.
2630
2631 @menu
2632 * CMail options::    Invoking CMail.
2633 * CMail game::       Starting a CMail game.
2634 * CMail answer::     Answering a move.
2635 * CMail multi::      Multiple games in one message.
2636 * CMail completion:: Completing a game.
2637 * CMail trouble::    Known CMail problems.
2638 @end menu
2639
2640 @node CMail options
2641 @section CMail options
2642 @table @asis
2643 @item -h
2644 Displays @file{cmail} usage information.
2645 @item -c
2646 Shows the conditions of the GNU General Public License.
2647 @xref{Copying}.
2648 @item -w
2649 Shows the warranty notice of the GNU General Public License.
2650 @xref{Copying}.
2651 @item -v
2652 @itemx -xv
2653 Provides or inhibits verbose output from @file{cmail} and XBoard,
2654 useful for debugging. The
2655 @code{-xv}
2656 form also inhibits the cmail introduction message.
2657 @item -mail
2658 @itemx -xmail
2659 Invokes or inhibits the sending of a mail message containing the move.
2660 @item -xboard
2661 @itemx -xxboard
2662 Invokes or inhibits the running of XBoard on the game file.
2663 @item -reuse
2664 @itemx -xreuse
2665 Invokes or inhibits the reuse of an existing XBoard to display the
2666 current game.
2667 @item -remail
2668 Resends the last mail message for that game. This inhibits running
2669 XBoard.
2670 @item -game <name>
2671 The name of the game to be processed.
2672 @item -wgames <number>
2673 @itemx -bgames <number>
2674 @itemx -games <number>
2675 Number of games to start as White, as Black or in total. Default is 1 as
2676 white and none as black. If only one color is specified then none of the
2677 other color is assumed. If no color is specified then equal numbers of
2678 White and Black games are started, with the extra game being as White if an
2679 odd number of total games is specified.
2680 @item -me <short name>
2681 @itemx -opp <short name>
2682 A one-word alias for yourself or your opponent.
2683 @item -wname <full name>
2684 @itemx -bname <full name>
2685 @itemx -name <full name>
2686 @itemx -oppname <full name>
2687 The full name of White, Black, yourself or your opponent.
2688 @item -wna <net address>
2689 @itemx -bna <net address>
2690 @itemx -na <net address>
2691 @itemx -oppna <net address>
2692 The email address of White, Black, yourself or your opponent.
2693 @item -dir <directory>
2694 The directory in which @file{cmail} keeps its files. This defaults to the
2695 environment variable @code{$CMAIL_DIR} or failing that, @code{$CHESSDIR},
2696 @file{$HOME/Chess} or @file{~/Chess}. It will be created if it does not exist.
2697 @item -arcdir <directory>
2698 The directory in which @file{cmail} archives completed games. Defaults to
2699 the environment variable @code{$CMAIL_ARCDIR} or, in its absence, the same
2700 directory as cmail keeps its working files (above).
2701 @item -mailprog <mail program>
2702 The program used by cmail to send email messages. This defaults to the
2703 environment variable @code{$CMAIL_MAILPROG} or failing that
2704 @file{/usr/ucb/Mail}, @file{/usr/ucb/mail} or @file{Mail}. You will need
2705 to set this variable if none of the above paths fit your system.
2706 @item -gamesFile <file>
2707 @cindex .cmailgames
2708 A file containing a list of games with email addresses. This defaults to
2709 the environment variable @code{$CMAIL_GAMES} or failing that
2710 @file{.cmailgames}.
2711 @item -aliasesFile <file>
2712 @cindex .cmailaliases
2713 A file containing one or more aliases for a set of email addresses. This
2714 defaults to the environment variable @code{$CMAIL_ALIASES} or failing
2715 that @file{.cmailaliases}.
2716 @item -logFile <file>
2717 A file in which to dump verbose debugging messages that are invoked with
2718 the @samp{-v}
2719 option.
2720 @item -event <event>
2721 The PGN Event tag (default @samp{Email correspondence game}).
2722 @item -site <site>
2723 The PGN Site tag (default @samp{NET}).
2724 @item -round <round>
2725 The PGN Round tag (default @samp{-}, not applicable).
2726 @item -mode <mode>
2727 The PGN Mode tag (default @samp{EM}, Electronic Mail).
2728 @item Other options
2729 Any option flags not listed above are passed through to XBoard.
2730 Invoking XBoard through CMail changes the default values of two XBoard
2731 options: The default value for @samp{-noChessProgram} is changed to
2732 true; that is, by default no chess engine is started.  The default
2733 value for @samp{-timeDelay} is changed to 0; that is, by default
2734 XBoard immediately goes to the end of the game as played so far,
2735 rather than stepping through the moves one by one.  You can still set
2736 these options to whatever values you prefer by supplying them on
2737 CMail's command line.  @xref{Options}.
2738 @end table
2739
2740 @node CMail game
2741 @section Starting a CMail Game
2742 Type @file{cmail} from a shell to start a game as white. After an opening
2743 message, you will be prompted for a game name, which is optional---if you
2744 simply press @key{Enter}, the game name will take the form
2745 @samp{you-VS-opponent}. You will next be prompted for the short name
2746 of your opponent. If you haven't played this person before, you will also
2747 be prompted for his/her email address. @file{cmail} will then invoke
2748 XBoard in the background. Make your first move and select
2749 @samp{Mail Move} from the @samp{File} menu. @xref{File Menu}. If all is well,
2750 @file{cmail} will mail a copy of the move to your opponent. If you select
2751 @samp{Exit} without having selected @samp{Mail Move} then no move will be
2752 made.
2753
2754 @node CMail answer
2755 @section Answering a Move
2756 When you receive a message from an opponent containing a move in one of
2757 your games, simply pipe the message through @file{cmail}. In some mailers
2758 this is as simple as typing @kbd{| cmail} when viewing the message, while in
2759 others you may have to save the message to a file and do @kbd{cmail < file}
2760 at the command line. In either case @file{cmail} will display the game using
2761 XBoard. If you didn't exit XBoard when you made your first move
2762 then @file{cmail} will do its best to use the existing XBoard instead
2763 of starting a new one. As before, simply make a move and select
2764 @samp{Mail Move} from the @samp{File} menu. @xref{File Menu}. @file{cmail}
2765 will try to use the
2766 XBoard that was most recently used to display the current game. This
2767 means that many games can be in progress simultaneously, each with its own
2768 active XBoard.
2769
2770 If you want to look at the history or explore a variation, go ahead, but
2771 you must return to the current position before XBoard will allow you
2772 to mail a move. If you edit the game's history you must select
2773 @samp{Reload Same Game} from the @samp{File} menu to get back to the original
2774 position, then make the move you want and select @samp{Mail Move}.
2775 As before, if you decide you aren't ready to make a move just yet you can
2776 either select @samp{Exit} without sending a move or just leave
2777 XBoard running until you are ready.
2778
2779 @node CMail multi
2780 @section Multi-Game Messages
2781
2782 It is possible to have a @file{cmail} message carry more than one game.
2783 This feature was implemented to handle IECG (International Email Chess
2784 Group) matches, where a match consists of one game as white and one as black,
2785 with moves transmitted simultaneously. In case there are more general uses,
2786 @file{cmail} itself places no limit on the number of black/white games
2787 contained in a message; however, XBoard does.
2788
2789 @node CMail completion
2790 @section Completing a Game
2791 Because XBoard can detect checkmate and stalemate, @file{cmail}
2792 handles game termination sensibly. As well as resignation, the
2793 @samp{Action} menu allows draws to be offered and accepted for
2794 @file{cmail} games.
2795
2796 For multi-game messages, only unfinished and just-finished games will be
2797 included in email messages. When all the games are finished, they are
2798 archived in the user's archive directory, and similarly in the opponent's
2799 when he or she pipes the final message through @file{cmail}. The archive
2800 file name includes the date the game was started.
2801
2802 @node CMail trouble
2803 @section Known CMail Problems
2804 It's possible that a strange conjunction of conditions may occasionally
2805 mean that @file{cmail} has trouble reactivating an existing
2806 XBoard. If this should happen, simply trying it again should work.
2807 If not, remove the file that stores the XBoard's PID
2808 (@file{game.pid}) or use the @samp{-xreuse} option to force
2809 @file{cmail} to start a new XBoard.
2810
2811 Versions of @file{cmail} after 2.16 no longer understand the old file format
2812 that XBoard used to use and so cannot be used to correspond with
2813 anyone using an older version.
2814
2815 Versions of @file{cmail} older than 2.11 do not handle multi-game messages,
2816 so multi-game correspondence is not possible with opponents using an older
2817 version.
2818
2819 @node Other programs
2820 @chapter Other programs you can use with XBoard
2821 @cindex Other programs
2822
2823 Here are some other programs you can use with XBoard
2824
2825 @menu
2826 * GNU Chess::        The GNU Chess engine.
2827 * Fairy-Max::        The Fairy-Max chess engine.
2828 * HoiChess::         The HoiChess chess engine.
2829 * Crafty::           The Crafty chess engine.
2830 * zic2xpm::          The program used to import chess sets from ZIICS.
2831 @end menu
2832
2833 @node GNU Chess
2834 @section GNU Chess
2835
2836 The GNU Chess engine is available from:
2837
2838 ftp://ftp.gnu.org/gnu/gnuchess/
2839
2840 You can use XBoard to play a game against GNU Chess, or to
2841 interface GNU Chess to an ICS.
2842
2843 @node Fairy-Max
2844 @section Fairy-Max
2845
2846 Fairy-Max is a derivative from the World's smallest Chess program micro-Max,
2847 which measures only about 100 lines of source code.
2848 The main difference with micro-Max is that Fairy-Max loads its move-generator
2849 tables from a file, so that the rules for piece movement can be easily configured
2850 to implement unorthodox pieces.
2851 Fairy-Max can therefore play a lage number of variants, normal Chess being one of those.
2852 In addition it plas Knightmate, Capablanca and Gothic Chess, Shatranj, Courier Chess,
2853 Cylinder chess, Berolina Chess, while the user can easily define new variants.
2854 It can be obtained from:
2855
2856 http://home.hccnet.nl/h.g.muller/dwnldpage.html
2857
2858 @node HoiChess
2859 @section HoiChess
2860
2861 HoiChess is a not-so-very-strong Chess engine, which comes with a derivative HoiXiangqi,
2862 able to play Chinese Chess. It can be obtained from the standard Linux repositories
2863 through:
2864
2865 sudo apt-get install hoichess
2866
2867 @node Crafty
2868 @section Crafty
2869
2870 Crafty is a chess engine written by Bob Hyatt.
2871 You can use XBoard to play a game against Crafty, hook Crafty up
2872 to an ICS, or use Crafty to interactively analyze games and positions
2873 for you.
2874
2875 Crafty is a strong, rapidly evolving chess program. This rapid
2876 pace of development is good, because it means Crafty is always
2877 getting better.  This can sometimes cause problems with
2878 backwards compatibility, but usually the latest version of Crafty
2879 will work well with the latest version of XBoard.
2880 Crafty can be obtained from its author's FTP site:
2881 ftp://ftp.cis.uab.edu/hyatt/.
2882
2883 To use Crafty with XBoard, give the -fcp and -fd options as follows, where
2884 <crafty's directory> is the directory in which you installed Crafty
2885 and placed its book and other support files.
2886
2887 @node zic2xpm
2888 @section zic2xpm
2889
2890 The ``zic2xpm'' program is used to import chess sets from the ZIICS(*)
2891 program into XBoard. ``zic2xpm'' is part of the XBoard distribution.
2892 ZIICS is available from:
2893
2894 ftp://ftp.freechess.org/pub/chess/DOS/ziics131.exe
2895
2896 To import ZIICS pieces, do this:
2897 @table @asis
2898 @item 1. Unzip ziics131.exe into a directory:
2899
2900 @example
2901 unzip -L ziics131.exe -d ~/ziics
2902 @end example
2903 @item 2. Use zic2xpm to convert a set of pieces to XBoard format.
2904
2905 For example, let's say you want to use the
2906 FRITZ4 set. These files are named ``fritz4.*'' in the ZIICS distribution.
2907
2908 @example
2909 mkdir ~/fritz4
2910 cd ~/fritz4
2911 zic2xpm ~/ziics/fritz4.*
2912 @end example
2913 @item 3. Give XBoard the ``-pixmap'' option when starting up, e.g.:
2914
2915 @example
2916 xboard -pixmap ~/fritz4
2917 @end example
2918
2919 Alternatively, you can add this line to your @file{.Xresources} file:
2920
2921 @example
2922 xboard*pixmapDirectory: ~/fritz4
2923 @end example
2924 @end table
2925
2926 (*) ZIICS is a separate copyrighted work of Andy McFarland.
2927 The ``ZIICS pieces'' are copyrighted works of their respective
2928 creators. Files produced by ``zic2xpm'' are for PERSONAL USE ONLY
2929 and may NOT be redistributed without explicit permission from
2930 the original creator(s) of the pieces.
2931
2932 @ifnottex
2933 @node Copyright
2934 @unnumbered Copyright
2935 @include copyright.texi
2936 @end ifnottex
2937
2938 @node Copying
2939 @unnumbered GNU GENERAL PUBLIC LICENSE
2940 @include gpl.texinfo
2941
2942 @c noman
2943 @node Index
2944 @unnumbered Index
2945
2946 @printindex cp
2947 @contents
2948 @c end noman
2949
2950 @bye