[SCM] xboard PKG branch, master, updated. debian/4.4.0-1-9-ged97e14

Vincent Legout vincent at legout.info
Wed Nov 4 01:34:16 UTC 2009


The following commit has been merged in the master branch:
commit 3446c400a5012441802463f83c93cd5ed11cca48
Author: Vincent Legout <vincent at legout.info>
Date:   Tue Nov 3 16:53:00 2009 +0800

    Imported Upstream version 4.4.1

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 5195908..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,27 +0,0 @@
-*~
-*.o
-.deps/
-Makefile
-Makefile.in
-aclocal.m4
-autom4te.cache/
-cmail
-./config.h
-config.log
-config.status
-configure
-copyright.info
-config.h.in
-depcomp
-mdate-sh
-missing
-./parser.c
-stamp-h
-stamp-h1
-stamp-vti
-texinfo.tex
-version.texi
-xboard
-xboard.info
-xboard.man
-ylwrap
\ No newline at end of file
diff --git a/AUTHORS b/AUTHORS
index b1d150c..f19c6ff 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -205,10 +205,11 @@ pg_key.c, pgntags.c, pg_show.c, pixmaps/*, pxboard, README, READ_ME,
 readme_HGM.txt, shiphtml, shogibitmaps/*, texi2man, ToDo, uci.c,
 winboard/bitmaps/*, winboard/config.h, winboard/cygwin.mak,
 winboard/defaults.h, winboard/help.c, winboard/help/*,
-winboard/jaws.c, winboard/jaws.h, winboard/jaws.rc,
-winboard/makefile.gcc, winboard/makefile.ms, winboard/parser.c,
+winboard/internationalize, winboard/jaws.c, winboard/jaws.h, 
+winboard/jaws.rc,winboard/language.txt, winboard/makefile.gcc,
+ winboard/makefile.ms, winboard/metascript.txt, winboard/parser.c,
 winboard/readme.txt, winboard/resource.h, winboard/shogibitmaps/*,
-winboard/wclipbrd.c, winboard/wclipbrd.h, winboard/wedittags.c,
+winboard/wchat.c, winboard/wclipbrd.c, winboard/wclipbrd.h, winboard/wedittags.c,
 winboard/wedittags.h, winboard/wengineo.c, winboard/wengineoutput.c,
 winboard/wevalgraph.c, winboard/wgamelist.c, winboard/wgamelist.h,
 winboard/whistory.c, winboard/winboard.c, winboard/winboard.h,
@@ -232,8 +233,8 @@ copyright.texi, FAQ.html, frontend.h, gamelist.c, gettext.h,
 lists.c, lists.h, Makefile.am, moves.c, moves.h, NEWS, parser.c,
 parser.h, parser.l, pgntags.c, pixmaps/pixmaps.h, po/de.po,
 po/LINGUAS, po/Makefile.in.in, README, READ_ME, shogibitmaps/README,
-texi2man, ToDo, uci.c, uci/uci_protocol.txt,
-winboard/bitmaps/bitmaps.h, winboard/config.h, winboard/defaults.h,
+texi2man, ToDo, TODO,  uci.c, uci/uci_protocol.txt, winboard/bitmaps/bitmaps.h,
+winboard/wchat.c, winboard/config.h, winboard/defaults.h,
 winboard/jaws.c, winboard/parser.c, winboard/readme.txt,
 winboard/shogibitmaps/README, winboard/WB4Jaws.dev,
 winboard/wclipbrd.c, winboard/wclipbrd.h, winboard/wedittags.c,
@@ -253,7 +254,8 @@ zic2xpm.man, zippy.c, zippy.h, zippy.README
 Makefiles for different compilers for windows, several changes for
 those compilers
 
-change to: AUTHORS, backend.c, README, winboard/bcc32.cfg,
+change to: AUTHORS, backend.c, backend.h, backendz.h, 
+common.h, frontend.h, gamelist.c, README, winboard/bcc32.cfg,
 winboard/borland.mak, winboard/COMPILING, winboard/config.h,
 winboard/cygwin.mak, winboard/help.c, winboard/help.h,
 winboard/jaws.c, winboard/makefile.gcc, winboard/makefile.ms,
@@ -262,6 +264,7 @@ winboard/resource.h, winboard/res/winboard.exe.manifest,
 winboard/WB4Jaws.dev, winboard/wevalgraph.c, winboard/winboard.c,
 winboard/Winboard.dev, winboard/winboard.dsp, winboard/winboard.dsw,
 winboard/winboard.h, winboard/winboard.ini, winboard/winboard.rc,
-winboard/woptions.c
+winboard/woptions.c, winboard/wsettings.c, 
+xboard.c
 
-also: prepared installer files for winboard (not in the tar-ball, but available via Savannah)
\ No newline at end of file
+also: prepared installer files for winboard (not in the tar-ball, but available via Savannah)
diff --git a/ChangeLog b/ChangeLog
index 036967d..66983be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,38 +1,865 @@
-ChangeLog for XBoard/WinBoard 
+ChangeLog for XBoard/WinBoard
 -----------------------------
 
-(latest entries created by git log --no-merges --pretty="* %ai: %s%n %b" vnew vold)
+(latest entries created by git log --no-merges --pretty="%ai %an <%ae>:%n%s%n%n%b" vnew vold)
 
-* 2009-09-05 09:44:21 -0700: updated AUTHORS and README files for release
- 
-* 2009-09-05 08:52:09 -0700: fixed some typos
- 
-* 2009-09-04 22:39:45 -0700: set castling rights after setting up a position
- I was going through old WB forum posts, and I encountered a
+2009-10-30 19:59:23 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+cleaned up ChangeLog and NEWS
+
+2009-10-30 20:02:40 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+use xtell instead of tell in wchat
+
+2009-10-28 20:35:06 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+prevent buffer overflow
+
+This is a buffer-size adjustments to prevent the JAWS version from
+crashing when it has to read out loud very long comments.
+
+2009-10-28 02:17:16 -0700 Tim Mann <tim at tim-mann.org>:
+Further copy/paste fixes
+
+We needed to implement the XA_TARGETS target in order for more
+sophisticated apps to really believe we put anything on the clipboard
+they can use.
+
+2009-10-27 23:57:25 -0700 Tim Mann <tim at tim-mann.org>:
+Make copy/paste position and game use clipboard, bug #27810
+
+Copy actually sets both the clipboard and the selection for
+convenience and compatibility with the old way of doing things.
+Paste pastes from the clipboard by default, but the new -pasteSelection
+option lets you get back the old behavior of pasting from the
+selection.
+
+2009-10-27 15:44:28 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+switch focus to the board after loading a game
+
+2009-10-27 15:32:07 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27826: fixed autoDisplayComment
+
+apparently the -autoDisplayComment option was not working,
+not even in WinBoard. This patch should fix it,both for WB and XB.
+(Unfortunately xboard.c and winboard.c were using a different name
+for the same front-end variable I needed, so I had to change one of them.)
+
+2009-10-27 12:24:56 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27826: ported two options to xboard
+
+also updated the documentation
+
+2009-10-27 12:22:36 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed jaws version
+
+turns out the new mouse handler broke the JAWS patch, as I discarded
+the function IsPromotion. I adapted it to call HasPromotionChoice instead.
+Also fixed two arnings by removing a no-longer needed debug print.
+
+2009-10-27 12:03:02 -0700 Arun Persaud <arun at nubati.net>:
+reformated html to be correctly validated
+
+2009-10-27 10:33:42 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+quick fix for "White Mates" in parser.l
+
+2009-10-27 10:32:24 -0700 Arun Persaud <arun at nubati.net>:
+fixed a regression
+
+2009-10-26 20:45:15 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changed stderr to debug output, since stderr is closed in winboard
+
+2009-10-26 20:42:24 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+removing empty lines from ICS play
+
+this patch causes removal of spurious prompts during ICS play
+also if the prompt is preceeded by a number of empty lines
+(as the board for the opponent move is on FICS).
+
+2009-10-26 20:40:00 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+another bug in VariantSwitch: an unitialized board was printed.
+
+Must have been there a long time, but this time it crashed WinBoard.
+
+2009-10-26 20:38:37 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+more work on variant switch
+
+the previous solution to the cosmetic problem of displaying a wrong shuffle
+in an ICS game that was observed from the very start unfortunately turned
+out to cause a real error in diplaying a stored game through the smoves
+command, for variants not using the FIDE setup as standard.
+
+This patch displays the position from before setting up the start position
+of the new variant, but does setup boards[0] to the initial position of that
+variant. (If this is a wrong shuffle, it is thus ot displayed, and a new board
+will immediately be sent from the ICS to correct the shuffle.)
+
+2009-10-26 20:34:04 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+force full redraw in winboard
+
+Full redraw is now always forced when highlightMovesWithArrow is on,
+rather than only when highlight info is available. (As in drop moves the
+latter is invalid, but we must still erase the arrow from the previous move.)
+
+2009-10-26 20:25:55 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27790 and #277772. Suppressing the display of a wrong shuffle
+when observing shuffle games from the first move (#27790 bis),
+and the sounding of the FICS bell on crazyhouse captures (#27772 bis).
+
+2009-10-26 20:22:13 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed bug related to unsigned char in convert.c
+
+I also fixed the unsigned-char bug in the convert.c for bitmaps that caused the
+129x129 XBoard bitmaps to be defective, and a bug that required fixup with sed
+afterwards (so I could use it to create a new m33s.bm)
+
+2009-10-25 23:37:48 -0700 Arun Persaud <arun at nubati.net>:
+unguarded debug printf. added the appropiate if statement
+
+2009-10-25 23:31:13 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for two compiler warnings
+
+2009-10-25 23:29:43 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27799: fix for nested-nested-nested variations
+
+2009-10-25 23:21:07 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+The book-probe code forgot to close the book file after opening it.
+
+fixed by adding an fclose at two points.
+
+2009-10-25 23:18:18 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+removed unused v54?.bm bitmaps from resource file
+
+it seems the v54?.bmp bitmaps were actually included in the WinBoard build
+(in the resource file), although they were never actually used. So I have
+removed their inclusion in the resource file now.
+
+2009-10-25 23:05:30 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+replaced defective bitmaps with copies from 4.2.7
+
+2009-10-25 23:02:08 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+removed bitmaps files that are not needed any more
+
+2009-10-25 22:58:34 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed some bitmaps
+
+2009-10-24 09:41:39 -0700 Tim Mann <tim at tim-mann.org>:
+Drop an obsolete script that was only used to update my personal web site
+
+2009-10-24 01:23:29 -0700 Tim Mann <tim at tim-mann.org>:
+Silence warnings when compiling 64-bit xboard
+
+Some harmless warnings were caused by 64-bit mode having 32-bit
+int but 64-bit long and pointer.  Add casts (etc.) to silence them.
+This might require adding a definition of intptr_t (a signed int
+type that is the same width as a pointer) on old systems that don't
+have it.
+
+2009-10-24 00:56:37 -0700 Tim Mann <tim at tim-mann.org>:
+Fix up man page some more
+
+Sigh, the project history was still partly in reverse chronological
+order and partly in forward order.  Swapped the order of some
+sentences to help straighten it out.  I don't really care about this,
+so other project members should feel free to do what they like here,
+but the messed-up order was bugging me.
+
+2009-10-24 00:46:20 -0700 Tim Mann <tim at tim-mann.org>:
+Fix some issues in the XBoard man page
+
+Correct places where the XBoard man page was calling XBoard
+"WinBoard".  Change references to "WinBoard engines" and "WinBoard
+protocol" to "XBoard/WinBoard ...".  Update bug reporting guidelines.
+Reorganize project history to something more like chronological order
+-- it had gotten pretty randomly ordered.
+
+2009-10-22 21:45:32 -0700 Arun Persaud <arun at nubati.net>:
+new pre-release version; updated version numbers
+
+2009-10-22 21:33:07 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+This patch adds <Enter> to the characters that cause an automatic
+switch to the ICS console when typed to the board window.
+
+2009-10-22 21:31:16 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix to the minor graphics issue contained some typos,
+as was remarked in the bugs reports
+
+2009-10-22 21:30:08 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+improved mouse handler
+
+The improved mouse handler still needed an extra call to DrawPosition to
+work in XBoard.
+
+2009-10-22 21:28:38 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+NPS plays and pondering
+
+Clock updating did not work correctly in node-based time controls when the
+engine was pondering. (It was not really meant for use with pondering. Oh well...)
+This patch checks if the engine reporting the node count is indeed thinking
+(as opposed to pondering).
+
+2009-10-22 21:25:36 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+holdings update and regression fix
+
+The holdings-update patch was not yet satisfactory, because FICS seems to send
+holdings both before and after the board! And those received before did overwrite
+the holdings received after the previous board. I know tried to fix that in a kludgey
+way, by hiding a flag in the board that tells if the holdings have already been written
+by the ICS or not, and ignore new holdings when they are. (Except in bughouse,
+where holdings updates cannot be tied to a particular board and multiple updates
+between boards are normal. (I hope?).)
+
+I also undid a regression in my previous fix for the minor graphics problem,
+and solved it in a slightly different way to prevent flicker.
+
+2009-10-22 21:23:39 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+improved mouse handler
+
+I improved the mouse handler in a way which will preclude disappearence of pieces
+on off-board or ambiguous (in-between squares) drag & drop moves. (As was reported
+in the "premove bug?" thread. Also the command-line premove problem reported there
+is now fixed, by removing the prefixing.
+
+2009-10-22 21:18:05 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #8847: moving backward while examining on FICS not reported to engine
+
+I moved Daniel's code that backs up the engine when a bord with a
+lower number is received to a place where it is always done in zippy mode,
+rather than only when the engine is analyzing.
+
+Apart from taking back moves, there was also the case where the
+user moves forward by more than one move (usually immediately to
+end-of-game). In this case a new movelist is fetched from the ICS
+to recover the moves that were skipped. But this assumes that the
+engine is at the start of the game and feeds all these moves to the
+engine. So the engine had to be reset in this case to stay in sync.
+
+2009-10-22 21:16:56 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+better init for random number generator
+
+2009-10-21 23:01:09 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27772: holdings not updated
+
+holdings lines from the ICS nor update the holdings
+of boards[forwardMostMove] in stead of boards[currentMove].
+
+2009-10-21 21:32:14 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+allowe parsing / disambiguation of SAN moves like Xe4 in certain situations
+
+This patch allows parsing / disambiguation of SAN moves like Xe4, if there
+is only one wild-card piece X on the board. Moves with wild-card pieces
+are now considered illegal if they leave the King in check by a piece of
+known gait.
+
+2009-10-20 19:09:46 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed bug when switching to variantsuper
+
+2009-10-20 19:06:43 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27715: 2 (minor) graphic issues
+
+I forced a total redraw when Reset is called from the ICS code in case a
+new game is encountered, in the hope it will make the reported
+(irreproducible) problem go away. As game switches are not frequent, I
+guess there is hardly any downside to this.
+
+2009-10-20 18:57:17 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27667: PV line missing in analysis window, part 3
+
+"3. Wish for Engine state string (right to the icon):
+Can you add the actual search depth in analyzing mode? A change like "
+
+I also added the requested display of depth of the analysis move in the
+EngineOutput window. I guess a similar change could be made to wengineo.c
+(as this is in the code they share in common), but no one ever requested
+that in the 5 years since Alessandro wrote it. So for now I leave it alone.
+
+2009-10-20 18:52:14 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27760: debug printf in backend.c and additional check for variant
+
+2009-10-19 23:17:46 -0700 Arun Persaud <arun at nubati.net>:
+fix for bug #10990: cmail does not seem to support .cmailgames or .cmailaliases
+
+this is correct, deleted the text out of the documentation that claims we support it
+
+2009-10-19 18:40:40 -0700 Arun Persaud <arun at nubati.net>:
+new alpha version; first one with new naming scheme
+
+2009-10-19 18:07:21 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+smarter analysis of the boards that XBoard receives from an ICS
+
+I added smarter analysis of the boards that XBoard receves from an ICS,
+based on board size and piece types in the position, to recognize cases
+where the board does not match the current variant, and switch to an
+appropriate variant.
+
+2009-10-19 18:04:08 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27667: window should be reference to toplevel
+
+The remaining objections of #27667 should be fixed by bringing the
+EngineOutput window under control of the TOPLEVEL compile-time switch.
+
+2009-10-19 18:02:42 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+partly fix for bug #27715: scaling of menu bar
+
+the menu bar to the left edge of the window.
+
+2009-10-19 17:59:43 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed bug reported in WB forum: second game of a match would
+not start when using the GUI book
+
+2009-10-19 17:57:14 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27751: negative holding counts displayed
+
+I put code in the back-end to prevent holdings counts from
+becoming negative when a drop move is made from empty holdings.
+(This can happen when re-loading ICS bughouse games,
+as the smoves command fails to fill the holdings.)
+
+2009-10-18 20:54:53 -0600 Eric Mullins <emwine at earthlink.net>:
+Updated compiling instructions.
+
+2009-10-18 11:32:55 -0600 Eric Mullins <emwine at earthlink.net>:
+Changes to allow fonts with any charset (such as terminal)
+
+Affects winboard only.
+
+2009-10-16 23:02:41 -0600 Eric Mullins <emwine at earthlink.net>:
+Moved SIGWINCH signal so it can be used...
+
+I goofed putting this in StartChildProcess() originally.
+
+2009-10-16 22:54:12 -0600 Eric Mullins <emwine at earthlink.net>:
+Added internal wrapping ability.
+
+New options:
+  -wrapContinuationSequence "foo"  (default: "\\   "
+  -useInternalWrap (Winboard default: false, XBoard default: true)
+
+Note: -keepLineBreaksICS if set, prevents wrapping, usurping the
+   useInternalWrap setting.  The idea is if you want to keep ICS line
+   breaks, then you don't want internal wrapping.  Because of this,
+   the new default for keepLineBreaksICS is now false for XBoard.
+
+2009-10-16 19:14:34 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed segfaul in convert.c used to convert pixmaps
+
+2009-10-15 19:46:07 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+new mousehandler to correct for premove and promotion popup
+
+this is the new mouse handler for XBoard, which should fully implement
+premove, including promotion popup, and yet suppress the promotion popup
+on illegal moves that are not premoves. It is almost completely moved to
+the back-end now, so that WinBoard will be able to use it as well. I just
+must hook it up to winboard.c, in particular harmonize the call-backs of
+the mouse driver into the front-end for grabbing and releasing pieces for
+dragging, to make sure they have the same names and arguments.
+
+2009-10-15 19:32:55 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated black fairy pieces
+
+here is a set of black fairy pieces with opaque white details,
+so they have the same style as the orthodox XBoard pieces.
+
+2009-10-15 16:54:51 -0600 Eric Mullins <emwine at earthlink.net>:
+Adjustment to joining to work around server not always including space.
+
+This patch implements commit 98aa02bda540f17f1f50be00e494efafe439b004
+into the updated joining routine.  This issue seems not to be server
+variance, but instead the server electing to omit the space between
+words when it occurs at exactly your width setting (-1 actually).
+
+This patch makes the joiner add back the space just like the referenced
+commit.  Note: this is just a workaround to a server issue-- the joiner
+actually joins correctly before this patch.
+
+2009-10-15 07:18:42 -0600 Eric Mullins <emwine at earthlink.net>:
+Fixed joiner detection, allowing it to work with timeseal
+
+When timeseal's buffer fills in the middle of the continuation
+sequence, detection fails, and the lines aren't joined.
+
+As a result of this fix, measures intended to bypass joining are
+no longer needed, so I removed them.  These utilize server vars
+when available to prevent splitting.
+
+2009-10-14 14:42:37 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed engingeoutput routine
+
+removed outdated code regarding analysis window
+
+2009-10-14 14:39:06 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+moved bitmap to correct location
+
+was misplaced in a previous commit
+
+2009-10-14 14:26:09 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed wrong number of arguments for EngineOutputPopUp
+
+2009-10-13 21:00:27 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+new bitmap converter (including fill option) and new pixmaps
+
+2009-10-13 20:52:40 -0700 Arun Persaud <arun at nubati.net>:
+forgot to add these two lines to the last commit
+
+2009-10-13 20:51:17 -0700 Arun Persaud <arun at nubati.net>:
+removed AnalysisPopUp. Use EngineOutputPopUp instead
+
+this was already in Winboard, copied it to xboard and removed unused code.
+
+2009-10-13 20:32:32 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Proper board and holdings size when switching to variants
+gothic, capablanca, great and super within an ICS game.
+
+2009-10-13 20:25:13 -0700 Arun Persaud <arun at nubati.net>:
+cleaned up an old #ifdef in zippy
+
+2009-10-12 19:25:17 -0600 Eric Mullins <emwine at earthlink.net>:
+neglected this for the auto-width updating in xboard
+
+2009-10-12 19:19:59 -0600 Eric Mullins <emwine at earthlink.net>:
+Added server width adjustment based on client width changes
+
+2009-10-12 19:14:53 -0600 Eric Mullins <emwine at earthlink.net>:
+silence some compiler warnings
+
+2009-10-11 18:39:24 -0600 Eric Mullins <emwine at earthlink.net>:
+Maintainence to support all compilers.
+
+2009-10-11 17:07:27 -0600 Eric Mullins <emwine at earthlink.net>:
+Adjusted alternative joining method to obey keepLineBreaksICS
+
+2009-10-11 14:48:55 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27668: e.p. field still not passed to engine
+
+PositionToFEN now takes the e.p. rights from epStatus[moveNr],
+rather than calculating it on the spot from moveList[moveNr-1]
+(which failed on the first move).
+
+2009-10-11 14:46:14 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27666: naming of variants
+
+Variant names "misc/xxx" are recognized as "normal", rather than "xxx"
+to not get confused by the board "misc shogi" run by FICS.
+
+2009-10-11 10:14:09 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changed enable menus
+
+Put the "Open Chat Window", "Machine Both", and "Engine #N Settings" menu items
+in the appropriate enable lists for graying them out wen not applicable.
+
+2009-10-11 10:13:14 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Added a command-line option -keepLineBreaksICS true/false to control line joining.
+
+2009-10-10 19:30:23 -0600 Eric Mullins <emwine at earthlink.net>:
+Added code to prevent unnecessary width updates.
+
+2009-10-10 18:34:37 -0600 Eric Mullins <emwine at earthlink.net>:
+Turned off wrap when possible on ICS servers.
+
+Turning off line wrap prevents splitting lines up using the
+continuation sequence "\\   ".  This is desirable when using
+timeseal because timeseal's buffer is sometimes too small,
+causing it to break lines itself.  These lines can't be joined.
+
+2009-10-10 16:30:56 -0600 Eric Mullins <emwine at earthlink.net>:
+vsnprintf() must be _vsnprintf() for MSVC
+
+2009-10-10 16:16:45 -0600 Eric Mullins <emwine at earthlink.net>:
+added code to handle initial width update
+
+2009-10-10 14:21:12 -0600 Eric Mullins <emwine at earthlink.net>:
+Added width updates to ICS client on font and window size changes
+
+What still needs to be done is placing an update call after login
+to initialize with the correct width.  I didn't see where to put
+that.
+
+2009-10-10 14:19:30 -0600 Eric Mullins <emwine at earthlink.net>:
+added ics_printf() and ics_update_width() and utility functions
+
+2009-10-10 11:15:50 -0600 Eric Mullins <emwine at earthlink.net>:
+Cleaned up ConsoleWndProc  (not complete, see below)
+
+Using static variables this way is not appropriate.  I only addressed
+hInput and hText in this commit though.  But imagine the WndProc being
+used by multiple windows instead of just one, and you can see why
+using static variables in this way is wrong.
+
+2009-10-10 11:12:10 -0600 Eric Mullins <emwine at earthlink.net>:
+Restructured URL code so it fits better with how winboard is set up.
+
+2009-10-10 08:57:39 -0700 Arun Persaud <arun at nubati.net>:
+cleanup: removed "#if 1" statements
+
+2009-10-10 08:55:21 -0700 Arun Persaud <arun at nubati.net>:
+cleanup: removed "#if 0" from source
+
+a bit of cleanup of the source code
+
+2009-10-10 08:34:10 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix joining of lines split by ICS
+
+This patch fixes the joining of lines that were split by an ICS, so that adding
+a space at the break point is done only when there was not a space already.
+(Some ICS leave a space at the end of the broken line, others do not.)
+An extra space would interefere with board12 in Gothic Chess, which is so
+long that the ICS breaks it, and the WB parser could not handle a double
+space within the board.
+
+2009-10-10 08:27:55 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for bug #27642: Clock jumps strangely in engine mode
+
+This moves SwitchClocks() back to after incrementing forwardMostMove,
+so that it knows again who has the move (which was broken by the "bare" patch),
+and will take the appropriate tick length.
+
+2009-10-10 08:26:13 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+removed test for premove
+
+this was added while looking for the premove bug, but is not needed
+
+2009-10-10 02:03:45 -0600 Eric Mullins <emwine at earthlink.net>:
+added URL detection and provided hotlinks in the ICS client
+
+2009-10-10 02:00:52 -0600 Eric Mullins <emwine at earthlink.net>:
+reverted winboard.c beofre URL commit to correct whitespace conversion
+
+2009-10-09 02:14:22 -0600 Eric Mullins <emwine at earthlink.net>:
+Added URL detection into the console text window for ICS.
+
+2009-10-08 23:51:06 -0700 Arun Persaud <arun at nubati.net>:
+added some comments and formated code
+
+2009-10-08 23:46:52 -0700 Chris Rorvick <>:
+fix printing out help message (list of command line options) (tiny change)
+
+The postfix increment always resulted in an attempt to print out an
+option on the right side regardless of one actually existing. Use
+prefix increment to prevent a crash when printing an odd number of
+options.
+
+2009-10-09 00:04:51 -0600 Eric Mullins <emwine at earthlink.net>:
+Updated navigation accelerators, fixing ICS problems.
+
+Recent changes to the navigation accelerators were in the wrong
+accelerator table.  Since the goal was to correct non-JAWS versions
+back to 4.2.7 behavior, I updated it to how 4.2.7 did it, but still
+retained the #ifdef JAWS conditional compilation.
+
+On an ICS, the navigation keys took control away from the ics
+client to navigate the game.  The update requires the ALT key to
+be pressed, but it works identical to 4.2.7, not causing an
+unexpected focus back to the board window when you're just editing
+text.
+
+2009-10-08 20:33:39 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed premove recapture problem;promotion popup appearing on
+obviously illegal moves; promotions in Superchess and Great Shatranj
+
+1) the premove recapture problem
+2) the promotion popup appearing on obviously illegal moves (the 1. e2a8
+problem)
+3) promotions in Superchess and Great Shatranj, where the piece can now be
+selected from the holdings
+
+2009-10-08 20:28:50 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added forceIllegalMove to xboard
+
+2009-10-05 21:01:32 -0700 Arun Persaud <arun at nubati.net>:
+bugfix: segfault when invalid option argument was given (bug #27427)
+
+when given a wrong argument to an option (e.g. -tc 0) xboard aborts
+before setting up the window, but tried to write a message to the
+messageWidget which doesn't exist at that point.
+
+2009-10-05 20:05:00 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+small improvement for JAWS version
+
+This is a patch to make JAWS read out any comments when /autoDiplaycomment=true.
+As focus does not stay on the Comment window, the comment was not spoken otherwise.
+
+2009-10-05 20:02:50 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated to winboard internationalization scripts
+
+Also a slight improvement of the internationalization scripting,
+to prevent it from crashing on messages containing a slash.
+
+2009-10-05 20:01:53 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+new forceIllegalMoves option
+
+The -forceIllegalMoves option uses setboard or edit to force a position
+when an engine refuses the move leading to it by an "Illegal Move" message.
+Especially for engines using the edit command this was a bit tricky,
+because of the a2a3 kludge to avoid using the white and black commands.
+
+2009-10-05 01:01:54 -0600 Eric Mullins <emwine at earthlink.net>:
+removed _winmajor if not defined so that VC 2008 can compile the project
+
+The oldDialog variable should just be set to 0 in all cases now, and
+as such, legacy code supporting the old dialog ought to be removed.
+The test for _winmajor is against < 4, which is always false at present,
+causing oldDialog to be 0 in every conceviable circumstance.
+
+2009-10-04 09:58:29 -0700 Arun Persaud <arun at nubati.net>:
+getting ready for 4.4.1 release
+
+2009-10-02 20:47:01 -0600 Eric Mullins <emwine at earthlink.net>:
+Simplified future version changes.
+
+Added a numeric version to config.h that is now used in winboard.rc
+instead of being hard-coded there.  Just be sure to preserve the
+proper format (4 comma-separated 16 bit integers) or else it won't
+compile.
+
+2009-10-02 16:56:01 -0700 Arun Persaud <arun at nubati.net>:
+updated version number to 4.4.1.pre
+
+should have done this straight after the last release, but forgot...
+
+2009-10-02 16:48:03 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+worked on premove bug
+
+I made an attempt to make premove unsensitive to a race condition,
+just in case the premove problem was caused by that (which seems unlikely,
+but in any case  I added some debug printout to test this).
+
+2009-10-02 16:41:12 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed loading of saved games via command line
+
+the variables forwardMostMove and backwardMostMove where set to zero
+at the wrong place.
+
+2009-10-02 16:39:20 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+small fixes for the JAWS version
+
+* I moved saying 'check' by the JAWS version to where castling also benefits from it.
+* I made sure the check symbols are also recognized on promotion moves
+* In the non-JAWS version, define the plain arrows as shortcut keys for the button bar
+
+2009-10-01 16:50:28 -0600 Eric Mullins <emwine at earthlink.net>:
+Fixed bug dereferencing garbage, causing crash.
+
+Commit fa8be4a3fc5d81e9ec1f6c218fcf55c95d34fd10 included code to free the
+resultDetails of the gameInfo structure.  That exact code exists a few lines
+above where it was added.  None of these free() calls finish by setting the
+member to NULL afterword, therefore repeated attempts to test/free() the
+members result in an attempt to free() memory winboard no longer owns, and
+an eventual crash.
+
+link to problematic commit: http://git.savannah.gnu.org/cgit/xboard.git/commit/?id=fa8be4a3fc5d81e9ec1f6c218fcf55c95d34fd10
+
+2009-10-01 16:49:57 -0600 Eric Mullins <emwine at earthlink.net>:
+Added wchat.c to the project files we maintain.
+
+2009-10-01 15:52:50 -0600 Eric Mullins <emwine at earthlink.net>:
+Previous fix for VC++/strcasecmp() was wrong-- use StrCaseCmp().
+
+2009-10-01 14:49:58 -0600 Eric Mullins <emwine at earthlink.net>:
+Add resource ID for new Mute menu item.
+
+I know this was probably done by HG, and simply left out of
+his commit.  Anyway, the project can be built now after this change.
+
+2009-10-01 14:49:09 -0600 Eric Mullins <emwine at earthlink.net>:
+Use of strcasecmp() broke Visual C++.
+
+2009-09-30 20:47:00 -0700 Arun Persaud <arun at nubati.net>:
+wrong default value for engineDebugOutput
+
+the new default is now 1
+
+2009-09-29 22:55:41 -0700 Arun Persaud <arun at nubati.net>:
+updated cmail.in to adapt the CVS->git change
+
+don't reference $Revision:$ anymore.
+Instead use reference xboard-version via autoconf.
+
+2009-09-29 22:04:25 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+bugfix for protocol extensions: egtbpath -> egtpath
+
+A new and very bad bug was discovered in the implementation of
+the protocol extensions: XBoard sends a command "egtbpath" to the
+engine in stead of "egtpath" from the protocol specs.
+After discussion on WB forum it was decided that egtpath was better
+than the egtbpath I originally had proposed, and I changed it accordingly,
+but I had not realized that this string occurred TWICE in backend.c,
+depending on if matched the -defaultPathEGTB of -egtFormats option.
+I only changed the first occurence.
+
+2009-09-27 12:27:44 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for edit-position "moves" being sent by XBoard to the engine
+
+2009-09-27 12:25:25 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Engine did not start playing when out of GUI book on second move with white
+
+2009-09-27 12:24:30 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Opening Engine #1 Settings crashed XBoard when there were no
+text-edit options in the dialog (to which to set keyboard focus)
+
+
+2009-09-27 12:18:35 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added a "Mute All Sounds" item in the WinBoard Options menu, on Eric's request
+
+2009-09-27 12:15:20 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Updated the RTF docs for the chat windows, engine-settings dialog,
+/keepAlive option and new game-list tag
+
+2009-09-27 12:14:25 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Made the beep sounds for JAWS board navigation configurable through
+command-line options
+
+2009-09-27 12:11:49 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Prepared a system to internationalize the WinBoard menus
+
+2009-09-27 12:10:38 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added the result comment to the game-list tags when the game list is
+exported to the clipboard
+
+2009-09-27 12:05:32 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+rewrote wevalgraph for better frontend/backend separation
+
+I have finished re-writing the eval-graph code to have some
+front-end / backe-end separation, something I had already started on my
+holiday in Norway (when I had no internet :-)  ).
+The new code now appears to work exactly like the old code,
+and I guess it could be ported to gtk comparatively easily.
+
+2009-09-27 12:00:51 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for keepalive and chat window
+
+I made a fix to the keepAlive option so it does not send the date command
+to the ICS after every move. This required changing ScheduleDelayedEvent()
+so that it does not execute the event if a new identical one gets scheduled.
+I also added the option to XBoard. Affects xboard.c (DOS!) and winboard.c
+
+(This also cures the regression of the winboard.c copyright patch)
+
+I extended the chatbox patch to also listen to channel tells, and divert
+them to a chatbox for that channel number. Affects
+backend.c and wchat.c
+
+That should make those patches fully operational. No docs for either of them
+yet, though.
+
+2009-09-27 10:36:23 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed parse bug for pgn files
+
+fixed the existing bug that the time-control tag was displayed as "?"
+in the game list; turns out it was never parsed on reading PGN files
+
+2009-09-27 10:35:58 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+allow the result comment as a display item in the game list
+
+2009-09-27 10:35:13 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed the HAVE_LIBXPM-dependent compile errors
+
+2009-09-27 10:24:47 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added a chat window to keep track of multiple conversations
+
+The chat-window patch affects:
+winboard.c, backend.c, winboard.rc, resource.h, backend.h, and adds
+the file winboard/wchat.c, which also affects makefile.gcc and makefile.ms.
+
+In addition I added a new option -keepAlive, which affects
+common.h (in addition to winboard.c and backend.c).
+
+As I had to modify backend.h, I also defined the -reset option type there,
+which we are going to add later. This required some changes
+to suppress warnings in wsettings.c.
+
+2009-09-27 10:22:16 -0700 Arun Persaud <arun at nubati.net>:
+more files for git to ignore
+
+most of these are generated by make distcheck
+
+2009-09-08 09:33:53 -0700 Arun Persaud <arun at nubati.net>:
+another bug fix found by Stanislav Brabec
+
+returned -1  in some case although the variable was a char...
+changed to signed char
+
+2009-09-20 23:13:13 -0600 Eric Mullins <emwine at earthlink.net>:
+Swapped 'tell' and 'message' parsing order for colorization.
+Sometimes messages are relayed as tells and should be colorized as tells.
+
+2009-09-08 09:10:34 -0700 Arun Persaud <arun at nubati.net>:
+added some more files to be distributed via make dist
+
+as suggested by Stanislav Brabec
+
+2009-09-08 09:01:07 -0700 Arun Persaud <arun at nubati.net>:
+fixed some implicit declarations reported by Stanislav Brabec
+
+2009-09-07 22:04:39 -0700 Arun Persaud <arun at nubati.net>:
+fixed a few more small bugs reported by Stanislav Brabec
+
+- A function uses a 'return;' statement, but has actually a value to
+return, like an integer ('return 42;') or similar: xboard voidreturn
+xengineoutput.c:766, 782
+
+- Program returns random data in a function at xengineoutput.c:602
+
+- With a new toolchain, AM_LDFLAGS cannot contain libraries. Linker
+ignores them. Fix is attached.
+
+- ToDo: Convenient name in most projects is TODO (autotools package it
+automatically).
+
+2009-09-06 19:11:22 -0700 Arun Persaud <arun at nubati.net>:
+reverted .texi file and fixed Makefile.am
+
+the problem was actually not in the texi-file, but the Makefile.am.
+Reverted changes in the .texi and fixed it (hopefully) correctly now.
+
+2009-09-06 18:23:01 -0700 Arun Persaud <arun at nubati.net>:
+get "make distcheck" to work
+
+needed to add all *.h files to Makefile.am and also the bitmaps that
+are needed and some other files. Also had modified copyright.texi.
+
+2009-09-05 09:54:37 -0700 Arun Persaud <arun at nubati.net>:
+changed to version 4.4.0
+
+2009-09-05 09:44:21 -0700 Arun Persaud <arun at nubati.net>:
+updated AUTHORS, README and ChangeLog files for release
+
+2009-09-05 08:52:09 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed some typos
+
+2009-09-04 22:39:45 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+set castling rights after setting up a position
+
+I was going through old WB forum posts, and I encountered a
 bug report for a bug that I never fixed: The castling rights should
 be properly set (actually: cleared) after setting up a position
 in Edit Position mode (as opposed to pasting a FEN).
 
-* 2009-09-03 23:11:18 -0700: removed install files from master
- they now live in their own branch
+2009-09-03 23:11:18 -0700 Arun Persaud <arun at nubati.net>:
+removed install files from master
 
-* 2009-09-03 22:30:18 -0700: updated polyglot protocol
- I added a new option type "-reset" to the protocol for the new option feature.
+they now live in their own branch
+
+2009-09-03 22:30:18 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated polyglot protocol
+
+I added a new option type "-reset" to the protocol for the new option feature.
 4.4.0 does not implement it yet, but Michel wants it for future Polyglots,
-and I think it is best to update the protocol in one big swoop. So I want to already
-include it in the specs now. (engine-intf.html)
+and I think it is best to update the protocol in one big swoop.
+So I want to already include it in the specs now. (engine-intf.html)
+I made xboard's response to an unknown option type compliant
+with the new protocol specs.
+
+2009-09-03 22:28:50 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed some typos
 
-I made xboard's response to an unknown option type compliant with the new protocol specs.
+2009-09-03 20:47:13 -0600 Eric Mullins <emwine at earthlink.net>:
+Updated project files for DevCpp and Visual Studio to add wsettings.c
 
-* 2009-09-03 22:28:50 -0700: fixed some typos
- 
-* 2009-09-03 20:47:13 -0600: Updated project files for DevCpp and Visual Studio to add wsettings.c
- 
-* 2009-09-03 20:46:33 -0600: Added newline at end of file to silence warning.
- 
-* 2009-08-31 20:29:49 -0700: workaround for error message for missing pieces used in variants and initstring bugfix
- error messages showed for non-existing pieces showed up for old user supplied pixmaps. Loading a pixmap of the king for
- the missing pieces now.
+2009-09-03 20:46:33 -0600 Eric Mullins <emwine at earthlink.net>:
+Added newline at end of file to silence warning.
+
+2009-08-31 20:29:49 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+workaround for error message for missing pieces used in variants
+and initstring bugfix: error messages showed for non-existing pieces
+showed up for old user supplied pixmaps.
+Loading a pixmap of the king for the missing pieces now.
 
 Another bad bug surfaced: the -initString argument does not work in any
 XBoard version! (Including 4.2.7b) The escape sequences for linefeed in
@@ -43,98 +870,134 @@ valid command)!
 So I also added a patch to expand escape sequences in the InitString and
 ComputerString command-line options.
 
-* 2009-08-31 20:27:24 -0700: updated installe script
- I re-organized the doc files in the install, so they now all go in the
-WinBoard\doc folder
-(and none in the root). I so included the COPYING and COPYRIGHT files there.
-This required some updates of the links in some html files, and of the menu
-link
-to README.html in the install script. I also fixed an error with the
-current directory
-in the menu short-cuts of some engines (which started in the fonts folder, and
-could not find the opening book there...).
-
-* 2009-08-31 20:25:17 -0700: updated documentation
- 
-* 2009-08-31 20:20:55 -0700: updated installer script
- 
-* 2009-08-31 19:51:48 -0700: new help files for windows
- 
-* 2009-08-25 20:41:29 -0700: updated installer
- 
-* 2009-08-25 20:36:53 -0700: undid some previous changes
- some files got mixed up
-
-* 2009-08-25 20:32:22 -0700: fixed small bug in wsetting
- 
-* 2009-08-25 20:29:06 -0700: trigger a focus switch to ICS input field when typing
- old behavior was that "." or "," triggered this, now every printable character  except 1-9 will trigger the focus switc
-h
-
-* 2009-08-25 20:26:20 -0700: bug in backend.c when receiving lines from ICS
- A space was appended to every character received from an ICS in stead of just at line breaks.
-
-* 2009-08-24 23:47:48 -0700: fixed warning messages from compiler
- 
-* 2009-08-23 14:24:38 -0700: fixed build on OS X
- this seems to fix it. Bug reported by Louis Zulli who also did the testing.
-
-* 2009-08-23 11:54:28 -0700: OK, this is the beefed up version of the Polyglot info-string kludge, for WB and XB.
- 
-* 2009-08-23 10:22:48 -0700: added missing X_LIBS references to Makefile.am
- 
-* 2009-08-22 23:33:44 -0700: made the install script and executable
- 
-* 2009-08-22 23:19:07 -0700: changed beta1 to beta2
- 
-* 2009-08-22 23:14:11 -0700: fixed enable zippy in configure script and added some checks for OS X
- make tried to compile zippy even when --disable-zippy was given. Also fixed a bug in xboard.c where #ifdef instead of #
-if was used to test for ZIPPY (it's either 0 or 1, so we need #if).
-
-Also added some special checks for OS X, not sure if these will do it, but it's a start;)
-
-* 2009-08-22 19:09:54 -0700: added configure summary to configure output, also cleaned up configure.ac a bit
- used AS_HELP_STRING where possible
-
-* 2009-08-22 18:10:57 -0700: added check for malloc.h
- this should fix a build error on OS X
-
-* 2009-08-22 17:47:44 -0700: A small cosmetic change in the size of buttons inside a groupbox of the Engine-Setup dialog
-.
- 
-* 2009-08-22 17:32:14 -0700: make xboard usable with UCI engines
- I made a small patch in xoptions.c (where the corresponding Engine Settings
+2009-08-31 20:27:24 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated installe script
+
+I re-organized the doc files in the install, so they now all go in the
+WinBoard\doc folder (and none in the root). I so included the COPYING
+and COPYRIGHT files there. This required some updates of the links in
+some html files, and of the menu link to README.html in the install script.
+I also fixed an error with the current directory
+in the menu short-cuts of some engines (which started in the fonts folder,
+and could not find the opening book there...).
+
+2009-08-31 20:25:17 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated documentation
+
+2009-08-31 20:20:55 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated installer script
+
+2009-08-31 19:51:48 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+new help files for windows
+
+2009-08-25 20:41:29 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated installer
+
+2009-08-25 20:36:53 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+undid some previous changes
+
+some files got mixed up
+
+2009-08-25 20:32:22 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed small bug in wsetting
+
+2009-08-25 20:29:06 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+trigger a focus switch to ICS input field when typing
+
+old behavior was that "." or "," triggered this,
+now every printable character  except 1-9 will trigger the focus switch
+
+2009-08-25 20:26:20 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+bug in backend.c when receiving lines from ICS
+
+A space was appended to every character received from an ICS
+in stead of just at line breaks.
+
+2009-08-24 23:47:48 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed warning messages from compiler
+
+2009-08-23 14:24:38 -0700 Arun Persaud <arun at nubati.net>:
+fixed build on OS X
+
+this seems to fix it. Bug reported by Louis Zulli who also did the testing.
+
+2009-08-23 11:54:28 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+OK, this is the beefed up version of the Polyglot info-string kludge,
+for WB and XB.
+
+2009-08-23 10:22:48 -0700 Arun Persaud <arun at nubati.net>:
+added missing X_LIBS references to Makefile.am
+
+2009-08-22 23:33:44 -0700 Arun Persaud <arun at nubati.net>:
+made the install script and executable
+
+2009-08-22 23:19:07 -0700 Arun Persaud <arun at nubati.net>:
+changed beta1 to beta2
+
+2009-08-22 23:14:11 -0700 Arun Persaud <arun at nubati.net>:
+fixed enable zippy in configure script and added some checks for OS X
+
+make tried to compile zippy even when --disable-zippy was given.
+Also fixed a bug in xboard.c where #ifdef instead of #if was used
+to test for ZIPPY (it's either 0 or 1, so we need #if). Also added
+some special checks for OS X, not sure if these will do it, but it's a start;)
+
+2009-08-22 19:09:54 -0700 Arun Persaud <arun at nubati.net>:
+added configure summary to configure output, also cleaned up configure.ac a bit
+
+used AS_HELP_STRING where possible
+
+2009-08-22 18:10:57 -0700 Arun Persaud <arun at nubati.net>:
+added check for malloc.h
+
+this should fix a build error on OS X
+
+2009-08-22 17:47:44 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+A small cosmetic change in the size of buttons
+inside a groupbox of the Engine-Setup dialog.
+
+2009-08-22 17:32:14 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+make xboard usable with UCI engines
+
+I made a small patch in xoptions.c (where the corresponding Engine Settings
 dialog was for XBoard), to make it at least usable for UCI engines: I now
 divide the options over upto 4 columns, if there are too many to fit into
 a single column. This seems to work. Still looks very ugly, but it is
 functional.
 
-* 2009-08-22 17:30:05 -0700: fix premove for winboard
- This might fix the illusive premove problem. In 4.2.7 the code was not properly
+2009-08-22 17:30:05 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix premove for winboard
+
+This might fix the illusive premove problem. In 4.2.7 the code was not properly
 indented, and this led to an unbalanced braces error that I then fixed the
-wrong way.
-Click-click premoves did only work after clicking the toSquare twice. It
-might be
-that they actually did work after clicking it once, but that the highlights
-were not
-displayed (although set) for lack of a display refresh.
-
-* 2009-08-22 17:28:11 -0700: fixed bug for double saved games
- This patch should solve the problem with doubly saved games when XBoard is
-closed.
-I calculate a cecksum of each saved game now (including move comments),
+wrong way. Click-click premoves did only work after clicking the toSquare twice.
+It might be that they actually did work after clicking it once,
+but that the highlights were not displayed (although set)
+for lack of a display refresh.
+
+2009-08-22 17:28:11 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed bug for double saved games
+
+This patch should solve the problem with doubly saved games when XBoard is
+closed. I calculate a cecksum of each saved game now (including move comments),
 and suppress saving if the checksum is not changed.
 
-* 2009-08-22 17:25:58 -0700: fixed xengineoutput.c, to keep the duplicated code identical to that of wengineo.c.
- 
-* 2009-08-22 17:24:08 -0700: updated xboard.texi: added warning that pixmaps are not build for all variants
- 
-* 2009-08-22 17:19:11 -0700: added a dialog for engine-specific option settings
- 
-* 2009-08-22 17:09:58 -0700: updated some documentation
- 
-* 2009-08-22 17:07:10 -0700: fixed several bugs in the backend and added some more polyglot support
- * I added recognition for the new UCI3 option types that are recognized in the WB
+2009-08-22 17:25:58 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed xengineoutput.c, to keep the duplicated code identical to that of wengineo.c.
+
+2009-08-22 17:24:08 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated xboard.texi: added warning that pixmaps are not build for all variants
+
+2009-08-22 17:19:11 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added a dialog for engine-specific option settings
+
+2009-08-22 17:09:58 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated some documentation
+
+2009-08-22 17:07:10 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed several bugs in the backend and added some more polyglot support
+
+* I added recognition for the new UCI3 option types that are recognized in the WB
 option features, to make sure this version is compatible with future Polyglots.
 Also fixed a bug that failed to strip an asterisk prefix from the first
 combo-box item.
@@ -144,60 +1007,88 @@ combo-box item.
 * I fixed a bug which caused a space to be missing when long lines broken up by
 an ICS were joined.
 
-* 2009-08-22 17:02:58 -0700: better polyglot support for engine ouput
- I fixed the algorithm for clearing the Engine Output window to work better with
+2009-08-22 17:02:58 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+better polyglot support for engine ouput
+
+I fixed the algorithm for clearing the Engine Output window to work better with
 the latest Polyglot, whight outputs UCI "info strings" amongst the thinking
 output.
 
-* 2009-08-22 16:23:32 -0600: Beginnings of installer for 4.4.0.  HGM asked me to forward the nsi file, but it seemed bes
-t to just add the installer tree to git even though it's not finished.  You must install NSIS then FontName-0.7.exe (inc
-luded in installer folder) then run build.bat in the same directory.
- 
-* 2009-08-05 22:18:29 -0700: patch backend.c to make the -noGUI option also work in ICS mode.
- 
-* 2009-08-01 13:09:49 -0700: temporary fix for pre-select
- As a temporary kludge I replaced looking into the holdings for the piece type by figuring out which piece would belong 
-on the clicked holdings square. This is a non-trivial process, as it depends on which pieces participate in a certain va
-riant.
-
-* 2009-07-30 00:19:37 -0700: changed click-click moves
- I got complaints about the way XBoard 4.4.0 handles click-click moves, in particular changing the selected piece after 
-selecting King (for which I suppressed interference with FRC castling in a rather brutal way). People tell me it is very
- annoying that clicks sometimes don't work to select a piece. WinBoard uses refined logic in the back-end to handle this
-, but the XBoard front-end is not interfaced with that yet. (This would require a major rewrite of the mouse handler.)
-
-This temporary patch suppresses this behavior in all variants that do not support Fischer castling, and even there only 
-exhibit it for Rook-after-King selection (which will be interpreted as an attempt to enter a castling move as K x own R)
-.
-
-* 2009-07-26 08:43:35 -0700: option -adjudicateDrawMoves is not included in the XBoard list.
- added it to the option list
-
-* 2009-07-21 20:23:23 -0700: converted files from dos to unix format
- run dos2unix over a bunch of files
-
-* 2009-07-16 07:43:38 -0600: Stripped out unused VersionInfo
- 
-* 2009-07-15 23:16:19 -0700: changed version to 4.4.0.beta1
- 
-* 2009-07-15 23:12:37 -0700: updated INSTALL file to add ./autogen.sh
- 
-* 2009-07-15 22:44:05 -0700: higher number of engine options possible now
- I upped the number of options per engine from
+2009-08-22 16:23:32 -0600 Eric Mullins <emwine at earthlink.net>:
+Beginnings of installer for 4.4.0.  HGM asked me to forward the nsi file,
+but it seemed best to just add the installer tree to git even though
+it's not finished.  You must install NSIS then FontName-0.7.exe
+(included in installer folder) then run build.bat in the same directory.
+
+2009-08-05 22:18:29 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+patch backend.c to make the -noGUI option also work in ICS mode.
+
+2009-08-01 13:09:49 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+temporary fix for pre-select
+
+As a temporary kludge I replaced looking into the holdings for the piece type
+by figuring out which piece would belong on the clicked holdings square.
+This is a non-trivial process, as it depends on which pieces participate
+in a certain variant.
+
+2009-07-30 00:19:37 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changed click-click moves
+
+I got complaints about the way XBoard 4.4.0 handles click-click moves,
+in particular changing the selected piece after selecting King
+(for which I suppressed interference with FRC castling in a rather brutal way).
+People tell me it is very annoying that clicks sometimes don't work to select a piece.
+WinBoard uses refined logic in the back-end to handle this, but the XBoard
+front-end is not interfaced with that yet.
+(This would require a major rewrite of the mouse handler.)
+This temporary patch suppresses this behavior in all variants that do not support
+Fischer castling, and even there only exhibit it for Rook-after-King selection
+(which will be interpreted as an attempt to enter a castling move as K x own R).
+
+2009-07-26 08:43:35 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+option -adjudicateDrawMoves is not included in the XBoard list.
+
+added it to the option list
+
+2009-07-21 20:23:23 -0700 Arun Persaud <arun at nubati.net>:
+converted files from dos to unix format
+
+run dos2unix over a bunch of files
+
+2009-07-16 07:43:38 -0600 Eric Mullins <emwine at earthlink.net>:
+Stripped out unused VersionInfo
+
+2009-07-15 23:16:19 -0700 Arun Persaud <arun at nubati.net>:
+changed version to 4.4.0.beta1
+
+2009-07-15 23:12:37 -0700 Arun Persaud <arun at nubati.net>:
+updated INSTALL file to add ./autogen.sh
+
+2009-07-15 22:44:05 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+higher number of engine options possible now
+
+I upped the number of options per engine from
 50 to 100, and the average number of characters per option from 10 to 20.
 
-* 2009-07-15 12:30:37 -0600: Fix of bad bug
- 
-* 2009-07-14 23:41:36 -0600: Added version information to resources.
- 
-* 2009-07-14 23:40:50 -0600: Added Jaws targets to IDE projects.
- 
-* 2009-07-14 23:39:12 -0600: Final makefile adjustments and compiling instructions.
- 
-* 2009-07-13 22:35:17 -0600: Cleaned up garbage left behind from my makefile update.
- 
-* 2009-07-13 22:26:56 -0600: Updated cmdline makefiles to be able to produce JAWS binaries.
- This breaks support for MSVC 4.x.  It may still be possible to
+2009-07-15 12:30:37 -0600 H.G. Muller <h.g.muller at hccnet.nl>:
+Fix of bad bug
+
+2009-07-14 23:41:36 -0600 Eric Mullins <emwine at earthlink.net>:
+Added version information to resources.
+
+2009-07-14 23:40:50 -0600 Eric Mullins <emwine at earthlink.net>:
+Added Jaws targets to IDE projects.
+
+2009-07-14 23:39:12 -0600 Eric Mullins <emwine at earthlink.net>:
+Final makefile adjustments and compiling instructions.
+
+2009-07-13 22:35:17 -0600 Eric Mullins <emwine at earthlink.net>:
+Cleaned up garbage left behind from my makefile update.
+
+2009-07-13 22:26:56 -0600 Eric Mullins <emwine at earthlink.net>:
+Updated cmdline makefiles to be able to produce JAWS binaries.
+
+This breaks support for MSVC 4.x.  It may still be possible to
 use that compiler if you obtain the latest SDK from Microsoft.
 MSVC 6.0 still works, but I had to change the target windows
 version to 0x500 which causes warnings about building beta
@@ -206,21 +1097,30 @@ type in the jaws binary.  You can reduce the WINVER to 0x0400
 safely if you are not building a JAWS binary, and MSVC 4.x
 will work fine.
 
-* 2009-07-13 22:26:10 -0600: Removed dependency on jfwapi.h
- Allows anyone to compile a jaws compatible binary.
+2009-07-13 22:26:10 -0600 Eric Mullins <emwine at earthlink.net>:
+Removed dependency on jfwapi.h
 
-* 2009-07-13 22:23:31 -0600: Fixed duplicate resource in winboard.rc
- PLEASE remember to pull before commiting.  This is the 2nd
+Allows anyone to compile a jaws compatible binary.
+
+2009-07-13 22:23:31 -0600 Eric Mullins <emwine at earthlink.net>:
+Fixed duplicate resource in winboard.rc
+
+PLEASE remember to pull before commiting.  This is the 2nd
 time I've fixed this.  It's a waste of time to keep fixing
 the same problems.
 
-* 2009-07-13 19:36:58 -0700: resolved conflict between Xt and Xaw libraries
- seems like we don't need to link against Xt.
+2009-07-13 19:36:58 -0700 Arun Persaud <arun at nubati.net>:
+resolved conflict between Xt and Xaw libraries
+
+seems like we don't need to link against Xt.
 
-* 2009-07-13 19:33:57 -0700: help-menu was not un-grayed in the JAWS version, when it played with engines
- 
-* 2009-07-13 19:29:53 -0700: integrated jaws into winboard
- I integrated the JAWS patch now into WinBoard in such a way that the
+2009-07-13 19:33:57 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+help-menu was not un-grayed in the JAWS version, when it played with engines
+
+2009-07-13 19:29:53 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+integrated jaws into winboard
+
+I integrated the JAWS patch now into WinBoard in such a way that the
 JAWS and standard version can use the same resource file. This new
 winboard.c contains the improved dialog layot of the JAWS version,
 but none of the menus and JAWS-specific acclerator keys. The latter
@@ -229,48 +1129,68 @@ could be cancelled, as there the JAWS-specific defines are no
 longer needed outside jaws.c (now the .rc does not use them), and
 is incorporated in it.
 
-* 2009-07-12 15:37:26 -0700: fixed problem in autoconf using Xaw3d
- rewrote the section for Xaw3d in the autoconf file
+2009-07-12 15:37:26 -0700 Arun Persaud <arun at nubati.net>:
+fixed problem in autoconf using Xaw3d
+
+rewrote the section for Xaw3d in the autoconf file
+
+2009-07-12 15:29:28 -0600 Eric Mullins <emwine at earthlink.net>:
+Added Jaws support to GCC makefile
 
-* 2009-07-12 15:29:28 -0600: Added Jaws support to GCC makefile
- 
-* 2009-07-12 15:28:20 -0600: added help support: MSVC IDE and DevCpp IDE project files
- 
-* 2009-07-12 15:26:49 -0600: Removed obsolete makefiles and support files.
+2009-07-12 15:28:20 -0600 Eric Mullins <emwine at earthlink.net>:
+added help support: MSVC IDE and DevCpp IDE project files
 
-* 2009-07-12 12:33:26 -0700: updated AUTHORS with the help of git
- use
+2009-07-12 15:26:49 -0600 Eric Mullins <emwine at earthlink.net>:
+Removed obsolete makefiles and support files.
+
+2009-07-12 12:33:26 -0700 Arun Persaud <arun at nubati.net>:
+updated AUTHORS with the help of git. use
 
 git log --pretty=oneline --name-only --author=AUTHORNAME v4.2.7..HEAD  |sort |uniq
 
-a bit of hand editing and a quick emacs macro later and you have a nice comma seperated list of all files changes by one
- author between two commits.
+a bit of hand editing and a quick emacs macro later and you have a nice
+comma seperated list of all files changes by one author between two commits.
+
+2009-07-12 12:31:47 -0700 Arun Persaud <arun at nubati.net>:
+updated Changelog using git log --no-merges --pretty="* %ai: %s%n %b" HEAD v4.2.7
+
+2009-07-12 11:34:28 -0700 Arun Persaud <arun at nubati.net>:
+cleaned up some more copyright notices
+
+2009-07-12 11:22:30 -0700 Arun Persaud <arun at nubati.net>:
+updated copyright to reflect A. Scotte as copyright holder
 
-* 2009-07-12 12:31:47 -0700: updated Changelog using git log --no-merges --pretty="* %ai: %s%n %b" HEAD v4.2.7
-	
-* 2009-07-12 11:34:28 -0700: cleaned up some more copyright notices
- 
-* 2009-07-12 11:22:30 -0700: updated copyright to reflect A. Scotte as copyright holder
- need to mention him, since the paperwork won't be finished before the next release
+need to mention him, since the paperwork won't be finished before the next release
 
-* 2009-07-12 10:56:29 -0700: updated patchlevel to "k"
- 
-* 2009-07-12 10:53:50 -0700: fixed autoconf problem with VERSION/PATCHLEVEL variables
- xboard used it's own version of PRODUCT, VERSION and PATCHLEVEL variables. Switched to PACKAGE_STRING provided by autoconf
+2009-07-12 10:56:29 -0700 Arun Persaud <arun at nubati.net>:
+updated patchlevel to "k"
 
-* 2009-07-12 10:29:46 -0700: cleaned up old CVS left overs
- removed $Id tags from all files
+2009-07-12 10:53:50 -0700 Arun Persaud <arun at nubati.net>:
+fixed autoconf problem with VERSION/PATCHLEVEL variables
 
-* 2009-07-12 10:10:17 -0700: converted xhistory via dos2unix
- 
-* 2009-07-12 10:09:24 -0700: fixed crash in history window
- someone discovered that opening the move-history window in XBoard leads to
+xboard used it's own version of PRODUCT, VERSION and PATCHLEVEL variables.
+Switched to PACKAGE_STRING provided by autoconf
+
+2009-07-12 10:29:46 -0700 Arun Persaud <arun at nubati.net>:
+cleaned up old CVS left overs
+
+removed $Id tags from all files
+
+2009-07-12 10:10:17 -0700 Arun Persaud <arun at nubati.net>:
+converted xhistory via dos2unix
+
+2009-07-12 10:09:24 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed crash in history window
+
+someone discovered that opening the move-history window in XBoard leads to
 an immediate crash. Turns out that renaming the menu item broke it! (The
 name of the item was apprently used elsewhere in the code to access it,
 for putting a check mark there.)
 
-* 2009-07-12 10:04:30 -0700: fix for Animation of castling moves in Chess960
- Animation of castling moves in Chess960 turned out to sometimes make the
+2009-07-12 10:04:30 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fix for Animation of castling moves in Chess960
+
+Animation of castling moves in Chess960 turned out to sometimes make the
 king disappear from the display. For the time being I patched this in
 xboard.c to suppress animation of FRC castling moves altogether. As FRC
 castlings internally are represented as KxR, the to-square does not make
@@ -278,82 +1198,123 @@ sense anyway, which made the animation look very weird even when it led
 not to a king disappearance act. And the Rook move of a castling is never
 animated.
 
-* 2009-07-11 22:44:53 -0600: Update GCC makefile to remove .obj targets.
- Dunno how they got in there, but they should be .o
+2009-07-11 22:44:53 -0600 Eric Mullins <eric at hiarcs.(none)>:
+Update GCC makefile to remove .obj targets.
+
+Dunno how they got in there, but they should be .o
+
+2009-07-11 22:42:41 -0600 Eric Mullins <eric at hiarcs.(none)>:
+Update makefile dependencies on help.c and help.h.
 
-* 2009-07-11 22:42:41 -0600: Update makefile dependencies on help.c and help.h.
- 
-* 2009-07-11 22:36:59 -0600: Allow compiling with MSVC6.0 and 4.1
- Move prototypes into help.h, after making sure that DWORD_PTR is
+2009-07-11 22:36:59 -0600 Eric Mullins <eric at hiarcs.(none)>:
+Allow compiling with MSVC6.0 and 4.1
+
+Move prototypes into help.h, after making sure that DWORD_PTR is
 defined.  Include help.h from winboard.c and help.c so both files
 benefit from the definition.
 
-* 2009-07-11 18:26:16 -0700:  lists these accelerator keys in the menus for JAWS
- 
-* 2009-07-11 18:24:19 -0700: added shortcuts
- This patch allows the use of Ctrl+C and Ctrl+V for Copy Game and Paste even in I C S mode when the board has focus.
+2009-07-11 18:26:16 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+ lists these accelerator keys in the menus for JAWS
+
+2009-07-11 18:24:19 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added shortcuts
+
+This patch allows the use of Ctrl+C and Ctrl+V for Copy Game
+and Paste even in I C S mode when the board has focus.
+
+2009-07-11 18:22:17 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+better handling of pasting a game without PGN tags
 
-* 2009-07-11 18:22:17 -0700: better handling of pasting a game without PGN tags
- patch in wclipbrd.h to make it smarter to decide between pasting a game or a position so it can handle games without PGN tags. If it doesn't parse as a FEN it is assumed to be a game.
+patch in wclipbrd.h to make it smarter to decide between pasting
+a game or a position so it can handle games without PGN tags.
+If it doesn't parse as a FEN it is assumed to be a game.
 
-* 2009-07-11 18:20:56 -0700: fixed parser error for knight move
- The parser had a strange quirk: it recognized bd2 as a valid Knight move
+2009-07-11 18:20:56 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed parser error for knight move
+
+The parser had a strange quirk: it recognized bd2 as a valid Knight move
 (Nb1-d2) while this SAN format should be reserved for Pawn moves only.
 
-* 2009-07-11 18:19:30 -0700:  fixed a few warnings in connection with the help patch (now warning free)
- 
-* 2009-07-11 18:13:50 -0700: some major re-assignment of accelerator keys in the JAWS
- 
-* 2009-07-11 16:54:53 -0600: several small fixes
- uptracked winboard.ini
+2009-07-11 18:19:30 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+ fixed a few warnings in connection with the help patch (now warning free)
+
+2009-07-11 18:13:50 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+some major re-assignment of accelerator keys in the JAWS
+
+2009-07-11 16:54:53 -0600 Eric Mullins <eric at hiarcs.(none)>:
+several small fixes
+
+uptracked winboard.ini
 
-Cleanup: moved "Some definitions required..." from winboard.c to config.h,
+* Cleanup: moved "Some definitions required..." from winboard.c to config.h,
 and combined some definitions from borland w/ MS.
 
-Changed internal HtmlHelp return type and 4th argument to facilitate various
+* Changed internal HtmlHelp return type and 4th argument to facilitate various
 compilers.  These changes, while not strictly adhering to HtmlHelp() conventions,
 won't impact anything since the function modified is internal only.
 
-Modified HtmlHelp return values to integer to silence warnings.
+* Modified HtmlHelp return values to integer to silence warnings.
+* Added help.c to the project in makefile.gcc & makefile.ms.
+* Fixed duplicate resource in winboard.rc.
 
-Added help.c to the project in makefile.gcc & makefile.ms.
+2009-07-09 22:08:15 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added JAWS support; help files for Vista; bugfixes for winboard.c
 
-Fixed duplicate resource in winboard.rc.
-
-* 2009-07-09 22:08:15 -0700: added JAWS support; help files for Vista; bugfixes for winboard.c
- * JAWS support
-* help files should now work under Vista (the user has to have either a program to view old windows help files or to view html-files installed)
+* JAWS support
+* help files should now work under Vista (the user has to have either
+  a program to view old windows help files or to view html-files installed)
 * I fixed the tabbing between all windows that were added according to Tim's sugestions.
-* I added typing in of a move number in the move type-in dialog as a shortcut to going to that position by use of the < and > buttons. Mainly intended to ease life for the blind, but I think it can be generally useful. (Although the move-history dialog provides that functionality too, this is quicker if you don't happen to have it open.)
-* I added typing of a FEN in the move type-in dialog in Edit Position mode. (Which could not be used without mouse at all, and is defective in crazyhouse even with mouse, as there was no way to populate holdings.)
-
-* 2009-07-09 22:03:00 -0700: some bugfixes: ICS error handling
- * play a different sound for takebacks in ICS mode
+* I added typing in of a move number in the move type-in dialog as a shortcut
+  to going to that position by use of the < and > buttons. Mainly intended to
+  ease life for the blind, but I think it can be generally useful.
+  (Although the move-history dialog provides that functionality too,
+  this is quicker if you don't happen to have it open.)
+* I added typing of a FEN in the move type-in dialog in Edit Position mode.
+  (Which could not be used without mouse at all, and is defective
+  in crazyhouse even with mouse, as there was no way to populate holdings.)
+
+2009-07-09 22:03:00 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+some bugfixes: ICS error handling
+
+* play a different sound for takebacks in ICS mode
 * pop up error messages for illegal moves for typed-in moves
 
-* 2009-07-09 21:50:41 -0700: removed no longer needed debug message
- 
-* 2009-07-09 21:48:23 -0700: fixed compile error from a previous change
- 
-* 2009-07-09 21:44:54 -0700: user selectable font in game list
- This makes the game list use the same (user selectable) font as the the move-history window.
-
-* 2009-06-30 21:27:34 -0700: fixed typos in xboard.texi documentation.
- 
-* 2009-06-30 21:16:59 -0700: updated the FAQ
- 
-* 2009-06-27 17:06:26 -0700: changed font in engine output window
- The engine-output window now uses the same font as the move-history window
+2009-07-09 21:50:41 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+removed no longer needed debug message
+
+2009-07-09 21:48:23 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed compile error from a previous change
+
+2009-07-09 21:44:54 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+user selectable font in game list
+
+This makes the game list use the same (user selectable) font
+as the the move-history window.
+
+2009-06-30 21:27:34 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed typos in xboard.texi documentation.
+
+2009-06-30 21:16:59 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated the FAQ
+
+2009-06-27 17:06:26 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changed font in engine output window
+
+The engine-output window now uses the same font as the move-history window
 (which was selectable in the "Options  -> Fonts..." menu, while the other
 wasn't).
 
-* 2009-06-27 17:03:19 -0700: fixed some characters in xboard.texi
- It seems that copying manual sections from the RTF to th texi file did
+2009-06-27 17:03:19 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed some characters in xboard.texi
+
+It seems that copying manual sections from the RTF to th texi file did
 somehow mess up the double-quote characters, and changed them into some
 strange (unicode?) symbols.
 
-* 2009-06-27 16:56:36 -0700: two shogi related bugfixes
- I discovered a bug in the move generator for the Shogi Dragon King. I
+2009-06-27 16:56:36 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+two shogi related bugfixes
+
+I discovered a bug in the move generator for the Shogi Dragon King. I
 guess it went unnoticed so far because this is a promoted version of the
 Rook, which hardly occurs in games. (moves.c)
 
@@ -362,195 +1323,334 @@ chosen as initial variant did use wrong piece symbols. (I had tested this
 on gothic, but there it happened to work for a different reason, unique to
 gothic.) This affects xboard.c.
 
-* 2009-06-27 16:54:04 -0700: small cleanup
- 
-* 2009-06-27 16:51:02 -0700: adds bitmaps for shogi promotions, and selects the bitmaps or pixmaps for the more rarely used piece types on a per-variant basis.
- 
-* 2009-06-27 16:44:36 -0700: adds new piece types in the promotion dialog and edit-position piece menu
- 
-* 2009-06-27 16:13:15 -0700: updated bitmaps files
- files for fairy pieces where missing, others had names that didn't work with autoloading.
-
-* 2009-06-27 16:06:35 -0700: fixed a bug concerning bitmaps
- 
-* 2009-06-27 15:53:45 -0700: give a default directory for bitmaps files (tiny change)
- this is also one of the debian patches, should be rewritten to use the correct install directory. No Author was given.
-
-* 2009-06-27 15:47:52 -0700: verbose_error_message_about_recognized_options (tiny change from Debian patches)
- 
-* 2009-06-27 15:45:14 -0700: add a visual low time warning (tiny change from Debian patches)
- 
-* 2009-06-24 23:31:52 -0700: dos 2 unix conversion of backend.c
- 
-* 2009-06-24 23:30:07 -0700: exchanged some sprintf with snprintf
- found in a patch for the debian system, extended it a bit to other sprintf's
-original patch included only 11 lines by Florian Ernst <florian at debian.org>
-
-* 2009-06-24 23:07:23 -0700: enabled a patch for default settings in winboard
- 
-* 2009-06-24 22:53:11 -0700: updated copyright notice
- 
-* 2009-06-24 22:52:20 -0700: patches a bug in chosing the initial board size on a virgin startup I introduced recently
- 
-* 2009-06-24 22:49:33 -0700: I put in testing for the winning condition in 3checks
- on a check it just goes through the entire game to subject every position on a check test, to see if there were two more.
-
-* 2009-06-24 22:47:01 -0700: updated copyright notice in docs
- 
-* 2009-06-24 22:41:40 -0700: added small patch from debian (tiny change)
- according to the debian patch tracker, this patch is by Florian Ernst <florian at debian.org>.
+2009-06-27 16:54:04 -0700 Arun Persaud <arun at nubati.net>:
+small cleanup
+
+2009-06-27 16:51:02 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+adds bitmaps for shogi promotions, and selects the bitmaps or
+pixmaps for the more rarely used piece types on a per-variant basis.
+
+2009-06-27 16:44:36 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+adds new piece types in the promotion dialog and edit-position piece menu
+
+2009-06-27 16:13:15 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated bitmaps files: files for fairy pieces where missing,
+others had names that didn't work with autoloading.
+
+2009-06-27 16:06:35 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed a bug concerning bitmaps
+
+2009-06-27 15:53:45 -0700 Arun Persaud <arun at nubati.net>:
+give a default directory for bitmaps files (tiny change)
+
+this is also one of the debian patches, should be rewritten to use
+the correct install directory. No Author was given.
+
+2009-06-27 15:47:52 -0700 Brian May <>:
+verbose_error_message_about_recognized_options (tiny change from Debian patches)
+
+2009-06-27 15:45:14 -0700 Matt Zimmerman <>:
+add a visual low time warning (tiny change from Debian patches)
+
+2009-06-24 23:31:52 -0700 Arun Persaud <arun at nubati.net>:
+dos 2 unix conversion of backend.c
+
+2009-06-24 23:30:07 -0700 Arun Persaud <arun at nubati.net>:
+exchanged some sprintf with snprintf found in a patch for the debian system,
+extended it a bit to other sprintf's original patch included only 11 lines
+by Florian Ernst <florian at debian.org>
+
+2009-06-24 23:07:23 -0700 Mark Ioli <chessknight>:
+enabled a patch for default settings in winboard
+
+2009-06-24 22:53:11 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated copyright notice
+
+
+2009-06-24 22:52:20 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+patches a bug in chosing the initial board size on a virgin startup
+I introduced recently
+
+2009-06-24 22:49:33 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+I put in testing for the winning condition in 3checks
+
+on a check it just goes through the entire game to subject
+every position on a check test, to see if there were two more.
+
+2009-06-24 22:47:01 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated copyright notice in docs
+
+2009-06-24 22:41:40 -0700 Florian Ernst <florian at debian.org>:
+added small patch from debian (tiny change)
+
+according to the debian patch tracker, this patch is by
+Florian Ernst <florian at debian.org>.
 It fixes whitespace issues in filename called from cmail.
 
-* 2009-06-24 22:33:13 -0700: converted dos2unix format for xboard.texi
- 
-* 2009-06-24 22:31:57 -0700: deleted two more files that don't need to be in git
- these files can be generated by autogen.sh
+2009-06-24 22:33:13 -0700 Arun Persaud <arun at nubati.net>:
+converted dos2unix format for xboard.texi
 
-* 2009-06-21 12:10:31 -0700: major overhaul of the -stickyWindows feature
- I did a major overhaul of the -stickyWindows feature. The game-list and ICS-interaction windows are now also sticky. I also added a form of stickiness when the main window is resized; edges of auxiliary windows sticking to the right or bottom side of the main window stay attached when the window resizes (due to nr of board squares or their size). The way the window coordinates are saved in the .ini file is now relative to the main window, and some dummy options are added to be able to recognize right- and bottom-edge sticking, and reconstruct that when WB starts up with another board size. Also added are volatile options to ensure there will be space for auxiliary windows above and left of the main window.
+2009-06-24 22:31:57 -0700 Arun Persaud <arun at nubati.net>:
+deleted two more files that don't need to be in git
 
-* 2009-06-21 12:07:01 -0700: fixed long-algebraic form of drops
- The WB parser turned out not to understand the long-algebraic form of drops send by an ICS. (like B/@@-e4), so even with legality testing off I now use the SAN move for drops.
+these files can be generated by autogen.sh
 
-* 2009-06-18 18:35:31 -0700: Refined stalemate adjudication in Suicide, some cleanup
- Refined stalemate adjudication in Suicide, which seems to be not always won
+2009-06-21 12:10:31 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+major overhaul of the -stickyWindows feature
+
+I did a major overhaul of the -stickyWindows feature.
+The game-list and ICS-interaction windows are now also sticky.
+I also added a form of stickiness when the main window is resized;
+edges of auxiliary windows sticking to the right or bottom side of
+the main window stay attached when the window resizes
+(due to nr of board squares or their size). The way the window
+coordinates are saved in the .ini file is now relative to the
+main window, and some dummy options are added to be able to
+recognize right- and bottom-edge sticking, and reconstruct that
+when WB starts up with another board size. Also added are
+volatile options to ensure there will be space for auxiliary windows
+above and left of the main window.
+
+2009-06-21 12:07:01 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed long-algebraic form of drops
+
+The WB parser turned out not to understand the long-algebraic form
+of drops send by an ICS. (like B/@@-e4), so even with
+legality testing off I now use the SAN move for drops.
+
+2009-06-18 18:35:31 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Refined stalemate adjudication in Suicide, some cleanup
+
+Refined stalemate adjudication in Suicide, which seems to be not always won
 for the stalemated side, but for the side with the smallest number of pieces.
 Cleaned up the adjudication code in the process. (backend.c moves.c, moves.h)
 Also includes a tiny change in the -autoKibitz format, as requested on
 Talkchess.
 
-* 2009-06-18 18:32:57 -0700: Enhancement of the way -autoLogo decides which logos to display
- 
-* 2009-06-16 00:06:59 -0700: bugfix and enhancement in autoKibitz mode
- changed the format of the autoKibitz: score/depth in stead of depth/score, as in PGN. I also supress the ICS time for the move now in the PGN if extended info is available.
-
-When enhancing the functionality of the autoKibitz command (using the
-opponent engine kibitz for the saved PGN) I discovered that the xengineoutput.c
-in our tree was obsolete, and contained a routine of which the arguments
-were no
-longer compatble with the call from backend.c, and caused segfaulting. I
-copied in
+2009-06-18 18:32:57 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Enhancement of the way -autoLogo decides which logos to display
+
+2009-06-16 00:06:59 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+bugfix and enhancement in autoKibitz mode
+
+changed the format of the autoKibitz: score/depth in stead of depth/score,
+as in PGN. I also supress the ICS time for the move now in the PGN
+if extended info is available. When enhancing the functionality of
+the autoKibitz command (using the opponent engine kibitz for the saved PGN)
+I discovered that the xengineoutput.c in our tree was obsolete,
+and contained a routine of which the arguments were no longer compatble
+with the call from backend.c, and caused segfaulting. I copied in
 the  corresponding routine in wengineo.c, which was compatible. That the
-compiler
-did not flag this is a sign of badly organized code, I suppose...
+compiler did not flag this is a sign of badly organized code, I suppose...
 
 The enhancement itself affected backend.c.
 
-* 2009-06-16 00:04:13 -0700: modified clock layout
- I altered the display of the clocks in the presence of engine logos; I used to
+2009-06-16 00:04:13 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+modified clock layout
+
+I altered the display of the clocks in the presence of engine logos; I used to
 stack them, but some inquiry on Talkchess sowed that people disliked the
 stacking. So now I display them next to each other again, but as 2-line-high
 fields to make room for te logos.
 
-* 2009-06-15 23:59:32 -0700: new zippy option zippyShortGame
- On request of Mike Adams I added a new zippy option, -zippyShortGame, to make life more difficult for abusers of abort and disconnect for cheating.
+2009-06-15 23:59:32 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+new zippy option zippyShortGame
+
+On request of Mike Adams I added a new zippy option, -zippyShortGame,
+to make life more difficult for abusers of abort and disconnect for cheating.
+
+2009-06-15 23:56:40 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed some bugs in the animation of atomic captures
+
+2009-06-13 15:27:26 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+some small bugfixes
+
+I had overlooked one place from which the FEN writer
+(of whicf I changed the argument types), which made WB crash
+if you copied a FEN (or PGN that cotained FEN) to the clipboard.
+I must have overlooked a warning during compile, or some depedency
+is not correct in the makefile. Anyway, wclipboard.c had to be changed.
+I also moved adjudication of some losing conditions to before tetsing
+for stalemate, (e.g. in atomic, if your king get destroyd you lose,
+even if you have no moves after that because it was your only piece.).
+this affects backend.c.
+I had used the same bits in the rule-modifier flags for indicating
+mandatory capture as was already used for indicating FRC-style castling.
+This led to frequent illegal move calls in FRC... (moves.h)
+
+2009-06-13 10:45:17 -0700 Arun Persaud <arun at nubati.net>:
+cleaned up HTML in FAQ.html -- still need to work on content
+
+2009-06-13 09:36:26 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added option for work-around for some FRC engines in regards to FRCFENs
+
+It suddenly occurred to me that I had promised on CCC to include an option
+to provide a work-around for the problem that some FRC engines do not
+understand FRC FENs (and thus do not play at all under WinBoard,
+as FRC always has to begin with sending the initial position).
+So I added the options -firstNeedsNoncompliantFEN, -secondNeedsNoncompliantFEN.
+This affects winboard.c and xboard.c, (for defining the option),
+common.h, backend.h, backend.c, (for implementing it),
+xboard.texi and winboard.rtf (decribing it).
+This option provides users with a means to always force the FEN castling field
+to KQkq (but can be used for many other work-arounds as well).
+
+2009-06-13 09:30:31 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed bug with random calls
+
+There also seemed to be a bug with the shuffling of opening positions;
+I had changed the declaration of the position number from
+long long int to u64 to comply with MSVC, but this suppressed shuffling
+completely. I now changed it to int. I recently noted a problem with true
+randomizing anyway: this was based on srand(time()), but time() apparently
+did not change fast enough, so that starting several games in rapid succession
+(because the book line contained a 3-fold repetition) produced identical games.
+So I now seed the random once and for all during startup, based on the msec of
+the time mark, and removed the other calls to srand().
+
+2009-06-13 09:26:14 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changed name for fairymax program in xboard.h
+
+2009-06-13 09:25:07 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+removed my name from copyright message in help->about menu
+
+2009-06-13 09:22:02 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed -stickyWindows option
+
+I figured out why -stickyWindows was not working in XP and Vista
+(while it always worked under Win2K), and I think I found a fix for
+it that works under all Windows versions. (I tried XP and Win2K.)
+
+2009-06-13 09:20:38 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Updated docs for Engine-Settings menu
 
-* 2009-06-15 23:56:40 -0700: fixed some bugs in the animation of atomic captures
- 
-* 2009-06-13 15:27:26 -0700: some small bugfixes
- I had overlooked one place from which the FEN writer (of whicf I changed the argument types), which made WB crash if you copied a FEN (or PGN that cotained FEN) to the clipboard. I must have overlooked a warning during compile, or some depedency is not correct in the makefile. Anyway, wclipboard.c had to be changed.
+2009-06-13 09:19:05 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Awareness of winning conditions for atomic and giveaway variants; two bugfixes
 
-I also moved adjudication of some losing conditions to before tetsing for stalemate, (e.g. in atomic, if your king get destroyd you lose, even if you have no moves after that because it was your only piece.). this affects backend.c.
+fixed bug in claim verification
+Bugfix on initial position of Great Shatranj
 
-I had used the same bits in the frule-modifier flags for indicating mandatory capture as was already used for indicating FRC-style castling. This led to frequent illegal move calls in FRC... (moves.h)
+2009-06-13 09:16:47 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Legality testing (mandatory capture) in giveaway variants
 
-* 2009-06-13 10:45:17 -0700: cleaned up HTML in FAQ.html -- still need to work on content
- 
-* 2009-06-13 09:36:26 -0700: added option for work-around for some FRC engines in regards to FRCFENs
- It suddenly occurred to me that I had promised on CCC to include an option to provide a work-around for the problem that some FRC engines do not understand FRC FENs (and thus do not play at all under WinBoard, as FRC always has to begin with sending the initial position).
+2009-06-13 09:16:17 -0700 Arun Persaud <arun at nubati.net>:
+don't ignore winboard/parser.c
 
-So I added the options -firstNeedsNoncompliantFEN, -secondNeedsNoncompliantFEN. This affects winboard.c and xboard.c, (for defining the option), common.h, backend.h, backend.c, (for implementing it), xboard.texi and winboard.rtf (decribing it). This option provides users with a means to always force the FEN castling field to KQkq (but can be used for many other work-arounds as well).
+2009-06-13 09:12:15 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Added new variant Twilight Chess
 
-* 2009-06-13 09:30:31 -0700: fixed bug with random calls
- There also seemed to be a bug with the shuffling of opening positions; I had changed the declaration of the position number from long long int to u64 to comply with MSVC, but this suppressed shuffling completely. I now changed it to int. I recently noted a problem with true randomizing anyway: this was based on srand(time()), but time() apparently did not change fast enough, so that starting several games in rapid succession (because the book line contained a 3-fold repetition) produced identical games. So I now seed the random once and for all during startup, based on the msec of the time mark, and removed the other calls to srand().
+2009-06-13 09:08:57 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+some renaming and restructuring of WB menu items, to conform more to XBoard
 
-* 2009-06-13 09:26:14 -0700: changed name for fairymax program in xboard.h
- 
-* 2009-06-13 09:25:07 -0700: removed my name from copyright message in help->about menu
- 
-* 2009-06-13 09:22:02 -0700: fixed -stickyWindows option
- I figured out why -stickyWindows was not working in XP and Vista
-(while it always worked under Win2K), and I think I found a fix for
-it that works under all Windows versions. (I tried XP and Win2K.)
+2009-06-13 09:07:07 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Fixed bug in atomic patch that interfered with non-atomic variants
 
-* 2009-06-13 09:20:38 -0700: Updated docs for Engine-Settings menu
- 
-* 2009-06-13 09:19:05 -0700: Awareness of winning conditions for atomic and giveaway variants; two bugfixes
- fixed bug in claim verification
-Bugfix on initial position of Great Shatranj
+2009-06-10 21:46:11 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed different use of engine option compared to Polyglot
 
-* 2009-06-13 09:16:47 -0700: Legality testing (mandatory capture) in giveaway variants
- 
-* 2009-06-13 09:16:17 -0700: don't ignore winboard/parser.c
- 
-* 2009-06-13 09:12:15 -0700: Added new variant Twilight Chess
- 
-* 2009-06-13 09:08:57 -0700: some renaming and restructuring of WB menu items, to conform more to XBoard
- 
-* 2009-06-13 09:07:07 -0700: Fixed bug in atomic patch that interfered with non-atomic variants
- 
-* 2009-06-10 21:46:11 -0700: fixed different use of engine option compared to Polyglot
- it turns out the new Polyglot uses a sightly different version of the GUI->engine option command than the one I proposed (and implemented in XBoard; Michel sneaked in an '=' sign between the NAME and VALUE of the option, to allow for more unambiguous parsing.
-
-I guess in principle this is a good idea, so I adapted XBoard to Polyglot rather than the other way around. The result is that there are canges in xboard.c, and the documentation.
-
-I noticed that I unjustly had internationalized the option strings to be send to the engine in xoptions.c; this was of course nonsense, as this was WB protocol. So I undid that too.
-
-* 2009-06-10 21:37:47 -0700: add the already supported variants 3check and great (=Great Shatranj) to the New Variant... menu.
- 
-* 2009-06-10 21:32:22 -0700: animate explosions in variant atomic (if animate moves is on).
- 
-* 2009-06-10 21:30:19 -0700: fixed castling bug in variant twokings.
- 
-* 2009-06-10 21:22:36 -0700: fixed forteitary wins for special game variations
- feature that corrects forfeitary wins (e.g. on time) of a bare King to draws of course breaks proper operation in losers, suicide and giveaway
-
-* 2009-06-09 21:02:51 -0700: automatically test ini file extension for files from commandline option @filename
- The winboard.c is a patch that automatically tries indirection files on the
+it turns out the new Polyglot uses a sightly different version
+of the GUI->engine option command than the one I proposed
+(and implemented in XBoard; Michel sneaked in an '=' sign
+between the NAME and VALUE of the option, to allow for
+more unambiguous parsing. I guess in principle this is a good idea,
+so I adapted XBoard to Polyglot rather than the other way around.
+The result is that there are canges in xboard.c, and the documentation.
+I noticed that I unjustly had internationalized the option strings
+to be send to the engine in xoptions.c; this was of course nonsense,
+as this was WB protocol. So I undid that too.
+
+2009-06-10 21:37:47 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+add the already supported variants 3check and great (=Great Shatranj)
+to the New Variant... menu.
+
+2009-06-10 21:32:22 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+animate explosions in variant atomic (if animate moves is on).
+
+2009-06-10 21:30:19 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed castling bug in variant twokings.
+
+2009-06-10 21:22:36 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed forteitary wins for special game variations
+
+feature that corrects forfeitary wins (e.g. on time)
+of a bare King to draws of course breaks proper operation
+in losers, suicide and giveaway
+
+2009-06-09 21:02:51 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+automatically test ini file extension for files from commandline option @filename
+
+The winboard.c is a patch that automatically tries indirection files on the
 command line (@filename type arguments) also with an extension .ini if the name itself
 did not match any existing file and contained no period. This saves the user typing the
 .ini all the time (which I started to find pretty annoying while working on the installer
 package).
 
-* 2009-06-08 15:23:58 -0700: added gamelisttag option to xboard
- also updated documentation.
-
-* 2009-06-08 15:20:00 -0700: updated RTF file for winboard
- 
-* 2009-06-06 09:12:48 -0700: fixed syntax error in texi file
- 
-* 2009-06-06 08:57:52 -0700: updated to patchlevel "j"
- 
-* 2009-06-06 09:00:25 -0700: fixed adjudicating probelm in Shantranj
- Refrain from adjudicating a draw based on insufficient mating material
+2009-06-08 15:23:58 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added gamelisttag option to xboard
+
+also updated documentation.
+
+2009-06-08 15:20:00 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated RTF file for winboard
+
+2009-06-06 09:12:48 -0700 Arun Persaud <arun at nubati.net>:
+fixed syntax error in texi file
+
+2009-06-06 08:57:52 -0700 Arun Persaud <arun at nubati.net>:
+updated to patchlevel "j"
+
+2009-06-06 09:00:25 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+fixed adjudicating probelm in Shantranj
+
+Refrain from adjudicating a draw based on insufficient mating material
 (except bare King vs bare King) in Shatranj (where in this case you can
 still win by baring the opponent's King).
 
-* 2009-06-06 08:55:17 -0700: updated documentation and FAQ
- 
-* 2009-06-04 22:52:31 -0700: source clean up. Fix compiler warning, removed unused variables, etc.
- 
-* 2009-06-04 20:43:29 -0700: adding support for different windows compiler
- Eric kindly provided us with some makefiles for different windows compiler and also fixed some issues that came up while using those compilers.
+2009-06-06 08:55:17 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated documentation and FAQ
+
+2009-06-04 22:52:31 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+source clean up. Fix compiler warning, removed unused variables, etc.
+
+2009-06-04 20:43:29 -0700 Eric Mullins <emwine at earthlink.net>:
+adding support for different windows compiler
+
+Eric kindly provided us with some makefiles for different windows
+compiler and also fixed some issues that came up while using those compilers.
 
-* 2009-06-04 18:27:26 -0700: cleanup: got rid of a lot of files that are not needed for a new release
- lots of documentation was available in several places, old unused source files and not used graphics file were floating around in the tree. This should clean up most of it. No need to keep these files around, especially since we are using version control.
+2009-06-04 18:27:26 -0700 Arun Persaud <arun at nubati.net>:
+cleanup: got rid of a lot of files that are not needed for a new release
 
-* 2009-05-29 18:56:06 -0700: added the Action-menu items that allow the user to adjudicate ongoing games in Two-Machines mode.
- This was an already existing backend function from Winboard_x; I only had to create a menu item for it to be called. Due to an oversight I had forgotten to do that so far. (Logically, I should have done it in the 4.3.5 release, where I updated the XBoard menus to conform to the WinBoard menus.)
+lots of documentation was available in several places,
+old unused source files and not used graphics file were floating around
+in the tree. This should clean up most of it. No need to keep these files
+around, especially since we are using version control.
+
+2009-05-29 18:56:06 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Added the Action-menu items that allow the user to adjudicate
+ongoing games in Two-Machines mode. This was an already existing
+backend function from Winboard_x; I only had to create a menu item for it
+to be called. Due to an oversight I had forgotten to do that so far.
+(Logically, I should have done it in the 4.3.5 release,
+where I updated the XBoard menus to conform to the WinBoard menus.)
 
 I tested them, and they seem to work. (As expected.)
 
-* 2009-05-28 22:23:00 -0700: updated patchlevel to "i"
- 
-* 2009-05-28 22:19:08 -0700: small change to mousewheel support; two changes in window behaviour
- * Visible effects during resizing suppressed, bug in chosing new size fixed.
+2009-05-28 22:23:00 -0700 Arun Persaud <arun at nubati.net>:
+updated patchlevel to "i"
+
+2009-05-28 22:19:08 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+small change to mousewheel support; two changes in window behaviour
+
+* Visible effects during resizing suppressed, bug in chosing new size fixed.
 * No longer reserves left and top margins next to main window on first popup.
 * built in some hysteresis into mousewheel support, ignorng the first event in any new
 direction to suppress effects from accidential mouse movement.
 
-* 2009-05-28 22:11:11 -0700: corrected 'animate dragging'
- I finally figured out how the 'animate dragging' works in XBoard,
+2009-05-28 22:11:11 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+corrected 'animate dragging'
+
+I finally figured out how the 'animate dragging' works in XBoard,
 so that I could add code to do the unstacking of multiple pieces
 in the holdings, rather than always leaving an empty square while
 you drag them. (And then suddenly re-growing the remaining pieces
@@ -560,132 +1660,196 @@ piece, rather than when you lift it. But this is not nearly as
 disturbing as leaving empty holdings (if only temporarily) when
 you still have pieces there.
 
-* 2009-05-28 22:06:15 -0700: Added comand-line options -debugFile (as synonym for -nameOfDebugFile, as WinBoard also has these synonyms), and -engineDebugOutput (wich already existed in the backend).
- 
-* 2009-05-28 21:57:53 -0700: updated documentation for new release
- 
-* 2009-05-28 21:55:51 -0700: added Xiangqi perpetual-chase detection
- 
-* 2009-05-28 00:06:53 -0700: Updated all files to GPL version 3.
- 
-* 2009-05-28 00:03:32 -0700: converted two files from dos to unix format
- 
-* 2009-05-27 23:12:24 -0700: updated INSTALL, NEWS and other files for new release
- cleaned up a bit and updated some information in the text files.
-
-* 2009-05-07 21:48:23 -0700: winboard/config.h shouldn't be in .gitignore, only ./config.h
- 
-* 2009-05-07 21:47:37 -0700: bumped patchlevel to 0g
- 
-* 2009-05-07 21:46:02 -0700: corrected path in makefile
- 
-* 2009-05-07 21:45:48 -0700: updated rtf
- 
-* 2009-05-07 21:45:25 -0700: added firstOptions, secondOptions, noGUI, firstXBook, secondXBook
- 
-* 2009-05-07 21:44:03 -0700: handle promotion case for Shogi
- 
-* 2009-05-07 21:43:34 -0700: add note about RESULT command for GUI programmers
- 
-* 2009-05-07 21:42:37 -0700: small changes to book.c
-  added code for different board sizes
+2009-05-28 22:06:15 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+Added comand-line options -debugFile (as synonym for -nameOfDebugFile,
+as WinBoard also has these synonyms), and -engineDebugOutput
+(wich already existed in the backend).
+
+2009-05-28 21:57:53 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated documentation for new release
+
+2009-05-28 21:55:51 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added Xiangqi perpetual-chase detection
+
+2009-05-28 00:06:53 -0700 Arun Persaud <arun at nubati.net>:
+Updated all files to GPL version 3.
+
+2009-05-28 00:03:32 -0700 Arun Persaud <arun at nubati.net>:
+converted two files from dos to unix format
+
+2009-05-27 23:12:24 -0700 Arun Persaud <arun at nubati.net>:
+updated INSTALL, NEWS and other files for new release
+
+cleaned up a bit and updated some information in the text files.
+
+2009-05-07 21:48:23 -0700 Arun Persaud <arun at nubati.net>:
+winboard/config.h shouldn't be in .gitignore, only ./config.h
+
+2009-05-07 21:47:37 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+bumped patchlevel to 0g
+
+2009-05-07 21:46:02 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+corrected path in makefile
+
+2009-05-07 21:45:48 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+updated rtf
+
+2009-05-07 21:45:25 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+added firstOptions, secondOptions, noGUI, firstXBook, secondXBook
+
+2009-05-07 21:44:03 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+handle promotion case for Shogi
+
+2009-05-07 21:43:34 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+add note about RESULT command for GUI programmers
+
+2009-05-07 21:42:37 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+small changes to book.c
+
+ added code for different board sizes
  added some debuginfo
  handle promotion of pieces
 
-* 2009-05-05 23:07:18 -0700: added a .gitignore file
- 
-* 2009-05-03 12:41:06 -0700: wrong line ending for Unix... ran dos2unix on both files
- 
-* 2009-05-02 13:51:50 -0700: fixed texinfo files, added windows help file, removed config.h from git
- texinfo.in is not needed anymore, since it only provided a version string, but this can be created automatically using autotools
+2009-05-05 23:07:18 -0700 Arun Persaud <arun at nubati.net>:
+added a .gitignore file
+
+2009-05-03 12:41:06 -0700 Arun Persaud <arun at nubati.net>:
+wrong line ending for Unix... ran dos2unix on both files
+
+2009-05-02 13:51:50 -0700 Arun Persaud <arun at nubati.net>:
+fixed texinfo files, added windows help file, removed config.h from git
+
+texinfo.in is not needed anymore, since it only provided a
+version string, but this can be created automatically using autotools
 
 deleted config.h from version control, since it is automatically created.
 added winboard.hlp file (not sure if needed)
 
-* 2009-04-26 23:34:34 -0700: updated autoconf init file
- * renamed autoconf init file from configure.in to configure.ac
- * added bug-report email address to ac_init
- * replaced ac_output(...) with ac_config_files, ac_config_commands and ac_output
- * 2009-04-26 14:49:03 -0700: parser.c is generated by lex, so it shouldn't be tracked and also parcer.c shouldn't be in Makefile.am 
- * 2009-04-26 14:44:51 -0700: added book.c to Makefile.am 
- * 2009-04-26 13:49:15 -0700: use autoheader to create config.h.in
- no need to track this in git anymore
-
-* 2009-04-26 11:13:26 -0700: fixed autoheader warings, remove depreciated acconfig.h
- 
-* 2009-04-26 10:30:23 -0700: added a autogen.sh
- 
-* 2009-05-02 10:55:39 -0700: changes from H.G. Muller; version 4.3.16
- 
-* 2009-05-02 10:50:10 -0700: changes from H.G. Muller; version 4.3.15
- 
-* 2009-05-02 10:38:39 -0700: changes from H.G. Muller; version 4.3.14
- 
-* 2009-05-02 10:13:41 -0700: HGM fixed cygwin compile for winboard
- 
-* 2009-04-24 16:11:57 -0700: cross compilier working
- 
-* 2009-04-19 10:00:52 -0700: changes from H.G. Muller; version 4.3.13
- 
-* 2009-04-19 09:52:47 -0700: changes from H.G. Muller; version 4.3.12
- 
-* 2009-04-19 09:48:59 -0700: changes from H.G. Muller; version 4.3.8
- 
-* 2009-04-19 09:44:15 -0700: changes from H.G. Muller; version 4.3.7
- 
-* 2009-04-19 09:39:19 -0700: changes by H.G. Muller; version 4.3.4
- 
-* 2009-04-19 09:34:31 -0700: changes from H.G. Muller; version 4.3.2
- 
-* 2009-04-19 10:26:24 -0700: changes from H.G. Muller
- 
-* 2009-04-16 23:06:13 -0700: cleaned up the directory a bit. Removed winboard-dm-beta, merged the two Changelogs together
- 
-* 2009-04-16 14:12:48 -0700: changes from Alessandro Scotti from 20060129
- 
-* 2009-04-16 14:09:33 -0700: changes from Alessandro Scotti from 20060112
- 
-* 2009-04-16 14:04:02 -0700: changes from Alessandro Scotti from 20051231
- 
-* 2009-04-16 13:59:12 -0700: changes from Alessandro Scotti from 20051129
- 
-* 2009-04-16 13:53:41 -0700: changes from Alessandro Scotti from 20050322
- 
-* 2009-04-10 04:18:59 +0000: translated a handfull of strings and set the codeset to UTF-8 for the translations.
- 
-* 2009-03-18 03:20:50 +0000: Translation: added German po file (roughly 50% translated)
- 
-* 2009-03-01 04:23:54 +0000: fixed bug #22853: changed all .Xdefaults to .Xresources in xboard.texi
- 
-* 2009-03-01 02:43:43 +0000: fixed bug #25672, patch #6182 by adding DESTDIR support to Makefile.in
- 
-* 2009-03-01 02:33:26 +0000: fixed a warning message in the configure script
- 
-* 2009-02-28 22:58:57 +0000: fixed parser.l. Should fix bug #22812
- 
-* 2009-02-28 22:58:14 +0000: fixed parser.l. Should fix bug #22812
- 
-* 2009-02-28 22:55:30 +0000: added myself to the AUTHOR file
- 
-* 2007-06-15 04:26:57 +0000: Initial check-in of NSIS Winboard installer files.
- 
-* 06/12/2005: bugfix some more possible buffer overflows. 
- 
+2009-04-26 23:34:34 -0700 Arun Persaud <arun at nubati.net>:
+updated autoconf init file
+
+* renamed autoconf init file from configure.in to configure.ac
+* added bug-report email address to ac_init
+* replaced ac_output(...) with ac_config_files, ac_config_commands and ac_output
+
+2009-04-26 14:49:03 -0700 Arun Persaud <arun at nubati.net>:
+parser.c is generated by lex, so it shouldn't be tracked
+and also parcer.c shouldn't be in Makefile.am
+
+2009-04-26 14:44:51 -0700 Arun Persaud <arun at nubati.net>:
+added book.c to Makefile.am
+
+2009-04-26 13:49:15 -0700 Arun Persaud <arun at nubati.net>:
+use autoheader to create config.h.in
+
+no need to track this in git anymore
+
+2009-04-26 11:13:26 -0700 Arun Persaud <arun at nubati.net>:
+fixed autoheader warings, remove depreciated acconfig.h
+
+2009-04-26 10:30:23 -0700 Arun Persaud <arun at nubati.net>:
+added a autogen.sh
+
+2009-05-02 10:55:39 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.16
+
+2009-05-02 10:50:10 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.15
+
+2009-05-02 10:38:39 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.14
+
+2009-05-02 10:13:41 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+HGM fixed cygwin compile for winboard
+
+2009-04-24 16:11:57 -0700 Arun Persaud <arun at nubati.net>:
+cross compilier working
+
+2009-04-19 10:00:52 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.13
+
+2009-04-19 09:52:47 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.12
+
+2009-04-19 09:48:59 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.8
+
+2009-04-19 09:44:15 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.7
+
+2009-04-19 09:39:19 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes by H.G. Muller; version 4.3.4
+
+2009-04-19 09:34:31 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller; version 4.3.2
+
+2009-04-19 10:26:24 -0700 H.G. Muller <h.g.muller at hccnet.nl>:
+changes from H.G. Muller
+
+2009-04-16 23:06:13 -0700 Arun Persaud <arun at nubati.net>:
+cleaned up the directory a bit. Removed winboard-dm-beta,
+merged the two Changelogs together
+
+2009-04-16 14:12:48 -0700 A. Scotti <dev at ascotti.org>:
+changes from Alessandro Scotti from 20060129
+
+2009-04-16 14:09:33 -0700 A. Scotti <dev at ascotti.org>:
+changes from Alessandro Scotti from 20060112
+
+2009-04-16 14:04:02 -0700 A. Scotti <dev at ascotti.org>:
+changes from Alessandro Scotti from 20051231
+
+2009-04-16 13:59:12 -0700 A. Scotti <dev at ascotti.org>:
+changes from Alessandro Scotti from 20051129
+
+2009-04-16 13:53:41 -0700 A. Scotti <dev at ascotti.org>:
+changes from Alessandro Scotti from 20050322
+
+2009-04-10 04:18:59 +0000 Arun Persaud <arun at nubati.net>:
+translated a handfull of strings and set the codeset to UTF-8
+for the translations.
+
+2009-03-18 03:20:50 +0000 Arun Persaud <arun at nubati.net>:
+Translation: added German po file (roughly 50% translated)
+
+2009-03-01 04:23:54 +0000 Arun Persaud <arun at nubati.net>:
+fixed bug #22853: changed all .Xdefaults to .Xresources in xboard.texi
+
+2009-03-01 02:43:43 +0000 Arun Persaud <arun at nubati.net>:
+fixed bug #25672, patch #6182 by adding DESTDIR support to Makefile.in
+
+2009-03-01 02:33:26 +0000 Arun Persaud <arun at nubati.net>:
+fixed a warning message in the configure script
+
+2009-02-28 22:58:57 +0000 Arun Persaud <arun at nubati.net>:
+fixed parser.l. Should fix bug #22812
+
+2009-02-28 22:58:14 +0000 Arun Persaud <arun at nubati.net>:
+fixed parser.l. Should fix bug #22812
+
+2009-02-28 22:55:30 +0000 Arun Persaud <arun at nubati.net>:
+added myself to the AUTHOR file
+
+2007-06-15 04:26:57 +0000 Mark Loli <chessknight>:
+Initial check-in of NSIS Winboard installer files.
+
+* 06/12/2005: bugfix some more possible buffer overflows.
+
 * 06/27/2004: added simple icsEngineAnalyze for xboard
 
-* 06/26/2004: added icsEngineAnalyze for winboard: Analyze observe games 
-with a chessprogram on a Internet Chess Server (ICS) 
+* 06/26/2004: added icsEngineAnalyze for winboard: Analyze observe games
+with a chessprogram on a Internet Chess Server (ICS)
 
-* 02/12/2004: Bugfix ICS interaction console crashed while chess 
-engine starting and user type in some stuff. We wait now to finish 
+* 02/12/2004: Bugfix ICS interaction console crashed while chess
+engine starting and user type in some stuff. We wait now to finish
 the engine boot.
 
-* 02/11/2004: Winboard: Added color lines for the ics interaction 
-console if zippy used 
- 
-* 02/09/2004: Added mousewheel support for winboard. Play moves 
-backward and forward with the mousewheel. 
- 
+* 02/11/2004: Winboard: Added color lines for the ics interaction
+console if zippy used
+
+* 02/09/2004: Added mousewheel support for winboard. Play moves
+backward and forward with the mousewheel.
+
 xboard/WinBoard 4.2.7 -- Fri Nov 28 13:36:00 PST 2003 -- Tim Mann
 
 * 11/26/2003: In WinBoard, setting the -debug flag now logs ICS output
@@ -727,7 +1891,7 @@ deal with differences in features between XBoard and WinBoard.
 * 11/15/2003: Cleaned up and applied a small patch from Daniel
 Mehrmann, to stop overly long PVs in thinking output from causing a
 buffer overflow crash in backend.c.
-	
+
 * 11/5/2003: When a chess engine sends a "telluser" command (including
 the cases where "tellall" or "tellopponent" acts like telluser), the
 information now goes into a nonmodel popup that is automatically
@@ -924,7 +2088,7 @@ Thanks to Igor Syry for the bug report.
 
 xboard/WinBoard 4.2.4 -- Sun Dec  9 14:56:30 PST 2001
 Tim Mann
-	
+
 * WinBoard now includes GNU Chess 5.02 in place of GNU Chess 5.00.
 
 * WinBoard's PasteGameFromClipboard will now handle a paste with
@@ -1014,7 +2178,7 @@ was never designed to work with simuls; it just works by accident, and
 it hasn't been tested much.  So please report any bugs you notice, but
 don't expect them to be fixed rapidly.  Thanks to Paul McGuire for
 noticing that this works.
-	
+
 * Bugfix: Suppress the direct command to engine popup if there is no
 engine.  In WinBoard this case used to cause a crash.  Thanks to
 "Dargon" for the bug report.
@@ -1080,7 +2244,7 @@ matches.  Now we look for "wild/fr" instead, which is what FICS uses.
 * Bugfix: Clicking on a move in the MoveList window only updated the
 displayed position; if a chess engine was active, its state was not
 updated.  Thanks to Alejandro Dubrovsky for the bug report.
-	
+
 * Bugfix: The "resign" command from engine to xboard formerly did not
 work in ICS (Zippy) mode.
 
@@ -1128,7 +2292,7 @@ premove sooner.  As a better fix to the problem that the change in
 opponent's move if you have a premove reply pending.  However, it's
 probably still a good idea for you to turn off AnimateMoves entirely
 if you are trying to play extremely fast games.
-	
+
 * Removed an erroneous patch that left zombie chess engines around
 when both sigterm and reuse were turned off.  (Bug was in xboard only,
 not winboard.)
@@ -1221,7 +2385,7 @@ message; previously the ratings would not be extracted from this
 message properly if you had set the highlight variable.
 
 * Bug fix: Zippy with -zp but not -zt used to be fooled by false
-partner tells inside channel tells; e.g.: 
+partner tells inside channel tells; e.g.:
 Garf(24): Garf (your partner) tells you: sit
 
 * Bug fix: when an engine reported its name with the new "feature
@@ -1242,7 +2406,7 @@ now uses this syntax for string values that contain a backslash or
 newline and do not contain a '}'.  This should address the problem
 that the separate .ini files had been meant to fix; engine command
 line lists can now be written without \-escapes.
-	
+
 * Fixed three bugs in relaying moves between engines in TwoMachines
 mode: an engine would be sent SAN if the *other* engine had set
 feature san=1, a relayed SAN move did not end with a newline, and
@@ -1312,7 +2476,7 @@ On top of that, the Xaw Form widget is very buggy in XFree86 4.0.1
 * The OK button in the WinBoard startup dialog is now simply disabled
 if none of the radio buttons is selected, instead of bringing up an
 error dialog.  Suggested by Ted Milbaugh.
-	
+
 * Used ping to address the worst of the race conditions in the
 protocol.  Now if an engine supports ping, we ping it after sending
 the "new" command and after trying to place it in force mode at the
@@ -1325,7 +2489,7 @@ respond to challenges with a polite message to try again soon instead
 of accepting them.  There are a few more things that should be done
 (and item 5 might not be quite what we want), but it's hard to fit
 them all into the existing code.
-	
+
 * Patched the version of GNU Chess 5.00 included with WinBoard to
 support protover, feature, setboard, and ping, and to fix some minor
 bugs.  See gnu500+.patch.
@@ -1451,7 +2615,7 @@ its opponent is another computer.
 * Added "configure --with-Xaw3d" to allow use of Xaw3d widgets instead
 of Xaw widgets in xboard.  Thanks to Johnny C. Lam of the NetBSD
 project.  I've left Xaw as the default because Xaw3d is too ugly.
-	
+
 * The version of the Xaw Form widget released in XFree86 4.0.1
 (X11R6.4.3) has a bug that causes xboard to display the button bar
 on top of the message widget.  I've reported the bug and have
@@ -1497,7 +2661,7 @@ colorization.
 
 * Added low-tech sound support to xboard, by invoking an external
 program on a filename for each sound to be played.
-	
+
 * ICC wild 27 is now recognized as VariantAtomic, and it sets the
 "ignore check" flag, but is not otherwise supported.
 
@@ -1521,12 +2685,12 @@ the default.  In this case external bitmap (or xim) pieces can be used
 by giving the -bitmapDirectory (or -xpmDirectory) option.  There is no
 way to compile in xim pieces.
 
-Winboard Plus 4.0.8 -- Sat Aug 5 15:51 PDT 2000 
+Winboard Plus 4.0.8 -- Sat Aug 5 15:51 PDT 2000
 Mark Williams
 
 * Bugfix release.
 
-* Main menu now visible in Win NT.  Thanks to Microsoft for creating a 
+* Main menu now visible in Win NT.  Thanks to Microsoft for creating a
 compiler which auto-mutilates the WinBoard.rc file so that the menu is
 displayed under Win 98 but not Win NT.  I fixed the problem by hand editing the
 .rc file.  Sigh.
@@ -1568,10 +2732,10 @@ calls it "giveaway").
 being legality checked correctly.  I think this was introduced in
 4.0.6 when I fixed a different PGN bug.  Thanks to Mark Williams for
 spotting the bug and suggesting a fix.
-	
+
 * Bugfix: the initial "name(" of a kibitz wasn't being colorized.
 
-Winboard Plus 4.0.7 -- Thu May 12 17:57 PDT 2000 
+Winboard Plus 4.0.7 -- Thu May 12 17:57 PDT 2000
 Mark Williams
 
 * New white pieces with black borders.
@@ -1600,19 +2764,19 @@ new game.
 
 * Fixed a nasty bug in parsing ICS game histories that was introduced
 in 4.0.6.
-	
+
 4.0.6 -- Fri Mar  3 16:20:11 PST 2000  Tim Mann
 
 * Fixed bugs in Zippy's code for responding to messages sent with the
 ICS "message" command.
-	
+
 * Fixed bugs where xboard could still create dialogs partially off the
 top of the screen.  Fixed unwanted interactions between initial sizes
 and positions of various unrelated xboard dialogs.  Deleted
 borderXoffset and borderYoffset resources.
 
 * Fixed restoring the xterm name on exit to work in more cases.
-	
+
 * Small fix to the WinBoard self-extracting installer: when it starts
 up, it now always deletes any old wb-setup directory left over from a
 previous installation.  Formerly this worked only on Windows 95/98, so
@@ -1623,7 +2787,7 @@ it was OK to overwrite the old wb-setup files.
 available from http://sourceware.cygnus.com/cygwin/.  Based on work by
 Mark Schoenberg.  (His mods were enough to get WinBoard through the
 compiler, but a few things were broken along the way, so I reworked them.)
-	
+
 * Merged changes from Don Fong to make WinBoard compilable with
 Borland C++ 4.5.  I do not have Borland C++ and am unable to test with
 it, but I did make sure the changes don't stop it working with MSVC++
@@ -1633,7 +2797,7 @@ it, but I did make sure the changes don't stop it working with MSVC++
 mode when machine is on move.  This used to confuse the engine and
 cause problems, because when we try to get the engine to stop, it
 might make a move first, and it might not do that immediately.
-	
+
 * Variant classification now deals with new ICC wild 25, classifying
 it as "3check".  Also, we are now conservative about new wild numbers
 we don't know about, classifying them as "unknown" instead of
@@ -1650,7 +2814,7 @@ e.g., "exf6ep" or "exf6e.p."
 with a move number other than "1." (including "1...").  Thanks to
 Michael Soulier and Stefan Zipproth for example PGN files
 demonstrating the bugs.
-	
+
 * Changed InitComboStringsFromString to not modify the input string;
 this caused an exception when WinBoard was compiled with MSVC++ 6.
 Thanks to Bert Tuyt for the report.
@@ -1659,7 +2823,7 @@ Thanks to Bert Tuyt for the report.
 releasing the mouse button no longer instantly aborts the move.  You
 still must release the mouse button inside a square to complete a
 move, but you can now drag off the edge and come back inside.
-	
+
 * WinBoard bugfix: If you went into EditGame or EditPosition mode
 while observing or playing an ICS game, and a new move came in
 (snapping you back to ICSClient mode) while you were dragging a piece
@@ -1673,18 +2837,18 @@ be displayed until after your next move.  Thanks to DAV for reporting
 the bug repeatedly until I finally understood it.
 
 * Added a Zippy "farewell" feature; see zippy.README.
-	
+
 * Fixed a bug (xboard only) in processing -zippyReplayTimeout on the
 command line.  Thanks to Steve Beer for the report and patch.
 
 * Send "computer" command to both sides in TwoMachines matches.
-	
+
 * Fixed a Y2K bug in Evan's cmail code!  Thanks to Brian Mays for the
 report and patch.
-	
+
 * Bugfix: Initialize variant field of GameInfo struct in gameinfo.c.
 This could cause crashes in LoadGame.  Thanks to Andrzej Nagorko.
-	
+
 * Fixed several pattern matching problems: Finger notes and formula
 vars no longer get replied to by zippyTalk or colorized.  Channel
 tells by players with many titles are now colorized fully, and
@@ -1702,7 +2866,7 @@ Especially nice for the "Exiting: Connection closed by ICS" popup.
 
 * Bugfix: New -zippyReplayTimeout option was misspelled in WinBoard as
 -zippyReplyTimeout.  Thanks to Francesco Di Tolla.
-	
+
 * xboard -ics now restores the xterm's original title upon exit, at
 least if $WINDOWID is set.
 
@@ -1769,7 +2933,7 @@ really have a working middle button despite what Windows says.
 
 * Guest login handles on ICC are now parsed again; an ICC wording
 change had broken this feature.
-	
+
 * Autodetect when the engine does not support the "draw" command and
 don't relay the command to it in that case.  Needed because sending an
 unsupported command to GNU Chess makes it move immediately, so people
@@ -1784,7 +2948,7 @@ leaves the entry line as the background color instead of using 75%
 gray.  Seeks are now colorized with a new color of their own.
 
 * Added -zippyMaxGames feature.
-	
+
 * -zippyNoplayCrafty command line option was missing in xboard; fixed.
 Thanks to John Perry.
 
@@ -1795,20 +2959,20 @@ Thanks to Ben Dean-Kawamura.
 
 * WinBoard will now update the board immediately if a move is made
 while the window is being moved or resized.
-	
+
 4.0.3 -- Sun Aug 15 18:44:39 PDT 1999  Tim Mann
 
 * Bugfix: moved winboard wizard functions that send a command directly
 to the chess engine from Ctrl+Alt+1 and Ctrl+Alt+2 to Alt+1 and Alt+2.
 Ctrl+Alt is equivalent to the European AltGr key, so the old assignments
 conflicted with typing an @-sign on some keyboards.
-	
+
 * Bugfix: prevent "If this message stays up, your chess program does
 not support analysis" from appearing if AnalysisMode is selected when
 already in Analysis or AnalyzeFile mode.  Also, deleting analysis window
 in WinBoard now switches you to EditGame mode, to avoid the anomaly of
 being in an analysis mode with no analysis window present.
-	
+
 * Change all Zippy environment variables to work as command line
 options.  For now they still work as environment variables too, but
 the environment variables are deprecated.
@@ -1821,11 +2985,11 @@ in monochrome mode.  Thanks to Jim Torrance for the bug report.
 * Tightened pattern recognition for ICS messages sent to Zippy; should
 no longer match ICC allobs output.  Fixed recognition of when Zippy is
 sent a message; small change to FICS output had broken it.
-	
+
 * Zippy now exits if the engine dies unexpectedly.
 
 * Added Zippy "spoofedby" feature; see zippy.README.
-	
+
 * Narrowed the margins on some older WinBoard dialogs to make their
 style uniform with the newer ones.
 
@@ -1841,13 +3005,13 @@ just passed on (which also may be the wrong thing to do).
 
 * Added one more built-in sound choice to WinBoard: move.wav from Pete
 Galati.
-	
+
 * Added new larger piece sizes: big, huge, giant, colossal, titanic.
-	
+
 * Modified the xboard font searcher to be able to use scalable fonts.
 The new -fontSizeTolerance flag controls how closely a nonscalable
 font must match to be used in preference to a scalable font.
-	
+
 * Zippy environment variables ZIPPYABORT and ZIPPYADJOURN now control
 whether Zippy will accept abort and adjourn requests.
 
@@ -2140,7 +3304,7 @@ the box for ICS name.
 to run crafty as "crafty xboard".
 
 * Rewrote xboard code for input from engines to fix longstanding bugs.
-Previously an engine that sent one line in two separate writes with 
+Previously an engine that sent one line in two separate writes with
 some time lapse in between (or perhaps that sent several lines in one
 write) could make xboard hang.  WinBoard did not have this bug.
 
@@ -2205,7 +3369,7 @@ default.  Added -firstPlaysBlack to restore old behavior.
 
 * Major rework of code in backend.c for dealing with first and second
 chess engines.  Generalized the code and created a struct type with one
-instance for each engine.  Several small bugs fixed along the way. 
+instance for each engine.  Several small bugs fixed along the way.
 
 * Fixed bugs in Abort in local chess engine mode.
 
@@ -2306,7 +3470,7 @@ GetMoveList.
 * Disable WinBoard Sounds menu entirely in -ncp mode, since not even
 MoveSound is used in that mode.
 
-* WinBoard bugfix: Several problems were caused if the user changed 
+* WinBoard bugfix: Several problems were caused if the user changed
 WinBoard's current directory in a Load, Save, or Browse dialog.  In
 particular, WinBoard.ini would get saved in the wrong directory, and
 sound .wav file names would not get saved with a full pathname.  I think
@@ -2414,7 +3578,7 @@ Interaction windows) in WinBoard.ini.
 
 * WinBoard now provides a way to customize the right-button context menu
 in the output area of the ICS Interaction window.  For now, requires
-editing WinBoard.ini with a text editor.  
+editing WinBoard.ini with a text editor.
 
 * Various minor fixes to ICS message recognition, most affecting only Zippy.
 
@@ -2473,8 +3637,8 @@ nearest (but not too much larger) predefined size.
 clockFont and coordFont have always been.
 
 * Added more sizes: bulky, moderate, average, middling, mediocre, petite.
-	
-* xboard only: Added Animate Moves and Click-Click Moving to Options menu.  
+
+* xboard only: Added Animate Moves and Click-Click Moving to Options menu.
 
 * xboard only: Added code to animate piece movement, from Hugh Fisher.
 
@@ -2615,11 +3779,11 @@ variants defined so far only have different starting positions.
 chance have king and rook start on squares where castling appears legal.
 This could cause a problem later.)
 
-* Zippy now resumes adjourned games by feeding the chess program 
-the move list instead of the position.  Setting -getMoveList to False 
-restores the old behavior.  Feeding in the move list is better because 
-it enables the chess program to correctly handle en passant legality, 
-castling legality, draw by repetition, and draw by the 50 move rule. 
+* Zippy now resumes adjourned games by feeding the chess program
+the move list instead of the position.  Setting -getMoveList to False
+restores the old behavior.  Feeding in the move list is better because
+it enables the chess program to correctly handle en passant legality,
+castling legality, draw by repetition, and draw by the 50 move rule.
 
 * Added a WinBoard startup dialog for people who run WinBoard.exe without
 using the Start menu or reading the help file.  Instead of being dumped
@@ -2921,7 +4085,7 @@ Cracraft.
 
 * Bugfix: Trying to print "No fonts match pattern" error message would
 crash.  This can happen to Linux users who don't install Helvetica, for
-example. 
+example.
 
 * Bugfix: Defaulting feature in -size n,n,n,n,n,n would put us in an
 infinite loop.
@@ -3155,7 +4319,7 @@ host and shipped with the package.
 
 3.2, patchlevel 4 -- Sun Jun 25 19:13:43 PDT 1995  Tim Mann
 
-* Beta test release of xboard only.  
+* Beta test release of xboard only.
 
 * Added FIREWALLS section to man page.
 
@@ -3168,9 +4332,9 @@ him in AmyBoard.  xboard implementation is my own.
 
 * Fixed some missing or incorrect prototypes.
 
-3.2, patchlevel 3 -- Sat Jun  3 18:57:38 1995  Tim Mann 
+3.2, patchlevel 3 -- Sat Jun  3 18:57:38 1995  Tim Mann
 
-* Beta test release of xboard only.  
+* Beta test release of xboard only.
 
 * New version of cmail from Evan Welsh, to fix compatibility problems with
 perl 5.0.
@@ -3193,7 +4357,7 @@ CmailSigHandler.  Bug report from Josh Daynard.
 
 * backend.c wouldn't compile with a non-ANSI compiler.  Fixed.
 
-3.2, patchlevel 2 -- Tue Feb  7 14:50:30 1995  Tim Mann 
+3.2, patchlevel 2 -- Tue Feb  7 14:50:30 1995  Tim Mann
 
 * Minor release of both xboard and WinBoard.
 
@@ -3221,7 +4385,7 @@ telnet negotiation characters aren't displayed (when possible).
 server with "-icsport 23" should work even without giving the -telnet
 option.  The telnet is in "old line-by-line mode".
 
-3.2, patchlevel 1 -- Sat Dec 10 13:50:46 1994  Tim Mann 
+3.2, patchlevel 1 -- Sat Dec 10 13:50:46 1994  Tim Mann
 
 * This patchlevel released for WinBoard only.
 
@@ -3239,7 +4403,7 @@ from initString).  The problem seems to be that GenerateConsoleCtrlEvent
 is not doing anything.  On Windows 95 beta 2, we get error messages on
 both reading and writing to gnuchessx; I didn't investigate why.
 
-3.2, patchlevel 0 -- Wed Dec  7 13:23:36 1994  Tim Mann 
+3.2, patchlevel 0 -- Wed Dec  7 13:23:36 1994  Tim Mann
 
 * Thanks to all the beta testers who gave me feedback: Josef Nelissen,
 Steve Booth, Evan Welsh, Dima Dakhnovsky, Chris Petroff, Peter Jansen,
@@ -3259,7 +4423,7 @@ echoing be done remotely, however; see below.
 
 * cmail bugfix from Evan Welsh (cmail 3.4).
 
-3.1, patchlevel 9 -- Fri Dec  2 23:54:56 1994  Tim Mann 
+3.1, patchlevel 9 -- Fri Dec  2 23:54:56 1994  Tim Mann
 
 * Beta distribution only
 
@@ -3268,8 +4432,8 @@ downstream may seem nicer in some modes, and it can be hard to turn that
 echo off, but the echoed characters can be interleaved with ICS output
 and make it impossible to parse correctly.  For xboard this involved only
 a change to recommendations in the man page, as Raw() isn't implemented.
-For WinBoard, removing Raw() made a real difference.  Added code in 
-WinBoard to change /r/n back into /r on keyboard input, as we get the 
+For WinBoard, removing Raw() made a real difference.  Added code in
+WinBoard to change /r/n back into /r on keyboard input, as we get the
 former when Raw() is not called.
 
 * Do not issue ICS "refresh" command after we start to observe a game
@@ -3309,7 +4473,7 @@ have rsh at all.
 
 * Added -remoteUser option.
 
-3.1, patchlevel 8 -- Mon Nov 28 15:26:07 1994  Tim Mann 
+3.1, patchlevel 8 -- Mon Nov 28 15:26:07 1994  Tim Mann
 
 * Beta distribution only
 
@@ -3337,7 +4501,7 @@ dialogs that don't exist in xboard.)
 * Changed Hint output to a popup.
 
 * ShowThinking output and move output no longer overwrite each other.
-ShowThinking output won't appear if the displayed position is not current. 
+ShowThinking output won't appear if the displayed position is not current.
 ShowThinking output in TwoMachines mode made clearer and documented.
 
 * Implemented --enable-ptys and --disable-ptys arguments to configure.
@@ -3374,7 +4538,7 @@ separate file.  It was hard to split out just the pty configuration from
 all the stuff emacs does with its custom configure script and .h files,
 but I did my best.
 
-* Converted from imake to GNU autoconf.  This was a serious upheaval.  
+* Converted from imake to GNU autoconf.  This was a serious upheaval.
 
 * Put in code to help trap "error gathering move list" problem reported by
 Michel van der List if it recurs.  I couldn't reproduce it.
@@ -3415,7 +4579,7 @@ for the bug report.
 * Added Book feature to use new gnuchess "bk" command.  Mike McGann request.
 
 * Redid code to handle missing "time" command in gnuchess, because latest
-gnuchess no longer sends a response to this command.  
+gnuchess no longer sends a response to this command.
 
 * Eliminated need for -DFLEX.  Thanks to Michael Shields (Vladimir?) for
 the idea.
@@ -3641,7 +4805,7 @@ position is exactly one move past the end of the game you loaded.
 
 * Updates to INSTALL file
 
-3.0, patchlevel 12 -- Sat May  7 21:10:03 PDT 1994 -- Tim Mann 
+3.0, patchlevel 12 -- Sat May  7 21:10:03 PDT 1994 -- Tim Mann
 
 * Beta test release only.
 
@@ -3717,7 +4881,7 @@ mode).
 
 * Renamed ForceMoves to EditGame.
 
-3.0, patchlevel 11 -- Tue Sep 21 15:25:36 PDT 1993 -- Tim Mann 
+3.0, patchlevel 11 -- Tue Sep 21 15:25:36 PDT 1993 -- Tim Mann
 
 * The following changes were present in xboard 3.0, patchlevel 11, but the
 first group did not make it into WinBoard 3.0 until later.  xboard
@@ -3766,7 +4930,7 @@ port device, or with locking it properly.  But it's usable by wizards.
 
 * Suppress extra prompt after ICS sends us a board.
 
-3.0, patchlevel 10 -- Sat Sep 11 18:44:03 PDT 1993 -- Tim Mann 
+3.0, patchlevel 10 -- Sat Sep 11 18:44:03 PDT 1993 -- Tim Mann
 
 * Beta test release only.
 
@@ -3946,7 +5110,7 @@ move or otherwise clicking on the board pops it down.  (Not implemented in
 WinBoard.)
 
 * You can now call your opponent's flag in ICS mode by clicking on his
-clock. 
+clock.
 
 * Fixed minor bugs in -flipView option and documented exactly how xboard
 decides which way to flip the view.
@@ -4008,7 +5172,7 @@ and the ICS.  There is also a front end for Windows NT.
 
 * Boolean command line options now use "-foo" to turn on and "--foo"
 to turn off instead of "-foo true" and "-foo false".  [Later -xfoo;
-see above.] 
+see above.]
 
 * Added menu commands to control autoflag, bell, and coords options.
 
@@ -4574,7 +5738,7 @@ gnuchessx problems, since the position and move history are not lost.
 Version 2.0 -- Thu Apr  2 16:04:54 PST 1992 (patchlevel 12)
 
 * Added small 40x40 pixel pieces; board size now specified as small, medium, or
-large. 
+large.
 
 * Improved man page.
 
@@ -4663,7 +5827,7 @@ redraw request.  Now fixed.
 and go into ForceMoves mode.
 
 * Saved games against gnuchess indicate who won (restored and debugged 1.2
-feature). 
+feature).
 
 * Setting -searchTime turns off -clockMode.
 
@@ -5028,4 +6192,3 @@ Version 1.1 -- Mon Jan  7 14:46:03 PST 1991
   * Fixed a bug in HandleUserMove() where the user could make a move while the
     machine was thinking.  The fix detects and ignores these moves.  onMove
     was not being used and was removed.
-
diff --git a/Makefile.am b/Makefile.am
index d1e2c61..6332932 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,18 +1,43 @@
 
 if ZIPPY
-  ZPY = zippy.c
-else 
+  ZPY = zippy.c zippy.h
+else
   ZPY =
-endif 
+endif
 
 bin_PROGRAMS = xboard
-xboard_SOURCES = backend.c lists.c pgntags.c xedittags.c xhistory.c $(ZPY) childio.c moves.c uci.c xengineoutput.c xoptions.c gamelist.c parser.l xboard.c xgamelist.c book.c
+xboard_SOURCES = backend.c backend.h backendz.h \
+	 	 book.c \
+		 childio.c childio.h \
+	 	 common.h \
+		 frontend.h \
+	  	 gamelist.c \
+	 	 gettext.h  \
+		 lists.c lists.h \
+		 moves.c moves.h \
+		 parser.l parser.h \
+	         pgntags.c \
+	  	 uci.c \
+	 	 xboard.c xboard.h \
+		 xedittags.c xedittags.h \
+		 xengineoutput.c \
+	 	 xgamelist.c xgamelist.h\
+		 xhistory.c  xhistory.h \
+		 xoptions.c \
+		 $(ZPY)
+xboard_LDADD = -lm @X_PRE_LIBS@ @XAW_LIBS@ @X_LIBS@ @X_EXTRA_LIBS@
+
+EXTRA_DIST = pixmaps  bitmaps shogibitmaps \
+	xboard.texi gpl.texinfo texi2man texinfo.tex xboard.man \
+	COPYRIGHT FAQ.html engine-intf.html ics-parsing.txt readme.htm readme_HGM.txt zippy.README
+
+DISTCLEANFILES = stamp-h
 
 AM_CPPFLAGS=-DINFODIR='"$(infodir)"' @X_CFLAGS@
-AM_LDFLAGS= -lm @X_PRE_LIBS@ @XAW_LIBS@ @X_LIBS@ @X_EXTRA_LIBS@ 
 
-info_TEXINFOS = copyright.texi xboard.texi
-man6_MANS = xboard.man 
+info_TEXINFOS =  xboard.texi
+xboard_TEXINFOS =  copyright.texi 
+man6_MANS = xboard.man
 
 xboard.man: xboard.texi copyright.texi gpl.texinfo version.texi
-	$(srcdir)/texi2man xboard.texi > xboard.man || (rm -f xboard.man ; false)
+	$(srcdir)/texi2man $(srcdir)/xboard.texi > xboard.man || (rm -f xboard.man ; false)
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..17e1857
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,969 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = xboard$(EXEEXT)
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/cmail.in $(srcdir)/config.h.in \
+	$(srcdir)/stamp-vti $(srcdir)/version.texi \
+	$(top_srcdir)/configure $(xboard_TEXINFOS) AUTHORS COPYING \
+	ChangeLog INSTALL NEWS TODO config.guess config.rpath \
+	config.sub depcomp install-sh mdate-sh missing mkinstalldirs \
+	parser.c texinfo.tex ylwrap
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = cmail
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" \
+	"$(DESTDIR)$(man6dir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am__xboard_SOURCES_DIST = backend.c backend.h backendz.h book.c \
+	childio.c childio.h common.h frontend.h gamelist.c gettext.h \
+	lists.c lists.h moves.c moves.h parser.l parser.h pgntags.c \
+	uci.c xboard.c xboard.h xedittags.c xedittags.h \
+	xengineoutput.c xgamelist.c xgamelist.h xhistory.c xhistory.h \
+	xoptions.c zippy.c zippy.h
+ at ZIPPY_TRUE@am__objects_1 = zippy.$(OBJEXT)
+am_xboard_OBJECTS = backend.$(OBJEXT) book.$(OBJEXT) childio.$(OBJEXT) \
+	gamelist.$(OBJEXT) lists.$(OBJEXT) moves.$(OBJEXT) \
+	parser.$(OBJEXT) pgntags.$(OBJEXT) uci.$(OBJEXT) \
+	xboard.$(OBJEXT) xedittags.$(OBJEXT) xengineoutput.$(OBJEXT) \
+	xgamelist.$(OBJEXT) xhistory.$(OBJEXT) xoptions.$(OBJEXT) \
+	$(am__objects_1)
+xboard_OBJECTS = $(am_xboard_OBJECTS)
+xboard_DEPENDENCIES =
+DEFAULT_INCLUDES = -I. at am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
+YLWRAP = $(top_srcdir)/ylwrap
+SOURCES = $(xboard_SOURCES)
+DIST_SOURCES = $(am__xboard_SOURCES_DIST)
+INFO_DEPS = $(srcdir)/xboard.info
+am__TEXINFO_TEX_DIR = $(srcdir)
+DVIS = xboard.dvi
+PDFS = xboard.pdf
+PSS = xboard.ps
+HTMLS = xboard.html
+TEXINFOS = xboard.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+man6dir = $(mandir)/man6
+MANS = $(man6_MANS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+AWKPATH = @AWKPATH@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONF_CFLAGS = @CONF_CFLAGS@
+CONF_LDFLAGS = @CONF_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MINFO = @MINFO@
+MKDIR_P = @MKDIR_P@
+NROFF = @NROFF@
+NROFFFLAGS = @NROFFFLAGS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERLPATH = @PERLPATH@
+POST_XMULIB = @POST_XMULIB@
+PRE_XMULIB = @PRE_XMULIB@
+RSH = @RSH@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XAW_LIBS = @XAW_LIBS@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ at ZIPPY_FALSE@ZPY = 
+ at ZIPPY_TRUE@ZPY = zippy.c zippy.h
+xboard_SOURCES = backend.c backend.h backendz.h \
+	 	 book.c \
+		 childio.c childio.h \
+	 	 common.h \
+		 frontend.h \
+	  	 gamelist.c \
+	 	 gettext.h  \
+		 lists.c lists.h \
+		 moves.c moves.h \
+		 parser.l parser.h \
+	         pgntags.c \
+	  	 uci.c \
+	 	 xboard.c xboard.h \
+		 xedittags.c xedittags.h \
+		 xengineoutput.c \
+	 	 xgamelist.c xgamelist.h\
+		 xhistory.c  xhistory.h \
+		 xoptions.c \
+		 $(ZPY)
+
+xboard_LDADD = -lm @X_PRE_LIBS@ @XAW_LIBS@ @X_LIBS@ @X_EXTRA_LIBS@
+EXTRA_DIST = pixmaps  bitmaps shogibitmaps \
+	xboard.texi gpl.texinfo texi2man texinfo.tex xboard.man \
+	COPYRIGHT FAQ.html engine-intf.html ics-parsing.txt readme.htm readme_HGM.txt zippy.README
+
+DISTCLEANFILES = stamp-h
+AM_CPPFLAGS = -DINFODIR='"$(infodir)"' @X_CFLAGS@
+info_TEXINFOS = xboard.texi
+xboard_TEXINFOS = copyright.texi 
+man6_MANS = xboard.man
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .dvi .html .info .l .o .obj .pdf .ps .texi
+am--refresh:
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+cmail: $(top_builddir)/config.status $(srcdir)/cmail.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+xboard$(EXEEXT): $(xboard_OBJECTS) $(xboard_DEPENDENCIES) 
+	@rm -f xboard$(EXEEXT)
+	$(LINK) $(xboard_OBJECTS) $(xboard_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/backend.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/book.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/childio.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gamelist.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lists.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/moves.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pgntags.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uci.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xboard.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xedittags.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xengineoutput.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xgamelist.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xhistory.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xoptions.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/zippy.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.l.c:
+	$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+
+.texi.info:
+	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+	am__cwd=`pwd` && cd $(srcdir) && \
+	rm -rf $$backupdir && mkdir $$backupdir && \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
+	cd "$$am__cwd"; \
+	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+	 -o $@ $<; \
+	then \
+	  rc=0; \
+	  cd $(srcdir); \
+	else \
+	  rc=$$?; \
+	  cd $(srcdir) && \
+	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+	fi; \
+	rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+	$(TEXI2DVI) $<
+
+.texi.pdf:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+	$(TEXI2PDF) $<
+
+.texi.html:
+	rm -rf $(@:.html=.htp)
+	if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+	 -o $(@:.html=.htp) $<; \
+	then \
+	  rm -rf $@; \
+	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+	    mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+	else \
+	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+	    rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+	  exit 1; \
+	fi
+$(srcdir)/xboard.info: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS)
+xboard.dvi: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS)
+xboard.pdf: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS)
+xboard.html: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS)
+$(srcdir)/version.texi:  $(srcdir)/stamp-vti
+$(srcdir)/stamp-vti: xboard.texi $(top_srcdir)/configure
+	@(dir=.; test -f ./xboard.texi || dir=$(srcdir); \
+	set `$(SHELL) $(srcdir)/mdate-sh $$dir/xboard.texi`; \
+	echo "@set UPDATED $$1 $$2 $$3"; \
+	echo "@set UPDATED-MONTH $$2 $$3"; \
+	echo "@set EDITION $(VERSION)"; \
+	echo "@set VERSION $(VERSION)") > vti.tmp
+	@cmp -s vti.tmp $(srcdir)/version.texi \
+	  || (echo "Updating $(srcdir)/version.texi"; \
+	      cp vti.tmp $(srcdir)/version.texi)
+	- at rm -f vti.tmp
+	@cp $(srcdir)/version.texi $@
+
+mostlyclean-vti:
+	-rm -f vti.tmp
+
+maintainer-clean-vti:
+	-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+.dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	$(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(DVIS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+	done
+
+uninstall-html-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(HTMLS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+	  rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+	done
+
+uninstall-info-am:
+	@$(PRE_UNINSTALL)
+	@if test -d '$(DESTDIR)$(infodir)' && \
+	    (install-info --version && \
+	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	  list='$(INFO_DEPS)'; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+	    install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+	  done; \
+	else :; fi
+	@$(NORMAL_UNINSTALL)
+	@list='$(INFO_DEPS)'; \
+	for file in $$list; do \
+	  relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	  relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+	     echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+	     rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+	   else :; fi); \
+	done
+
+uninstall-pdf-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(PDFS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+	done
+
+uninstall-ps-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(PSS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(psdir)/$$f"; \
+	done
+
+dist-info: $(INFO_DEPS)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; \
+	for base in $$list; do \
+	  case $$base in \
+	    $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$base; then d=.; else d=$(srcdir); fi; \
+	  base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+	    if test -f $$file; then \
+	      relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+	      test -f $(distdir)/$$relfile || \
+		cp -p $$file $(distdir)/$$relfile; \
+	    else :; fi; \
+	  done; \
+	done
+
+mostlyclean-aminfo:
+	-rm -rf xboard.aux xboard.cp xboard.cps xboard.fn xboard.fns xboard.ky \
+	  xboard.kys xboard.log xboard.pg xboard.pgs xboard.tmp \
+	  xboard.toc xboard.tp xboard.tps xboard.vr xboard.vrs \
+	  xboard.dvi xboard.pdf xboard.ps xboard.html
+
+maintainer-clean-aminfo:
+	@list='$(INFO_DEPS)'; for i in $$list; do \
+	  i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+	done
+install-man6: $(man6_MANS) $(man_MANS)
+	@$(NORMAL_INSTALL)
+	test -z "$(man6dir)" || $(MKDIR_P) "$(DESTDIR)$(man6dir)"
+	@list='$(man6_MANS) $(dist_man6_MANS) $(nodist_man6_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.6*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+	  else file=$$i; fi; \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    6*) ;; \
+	    *) ext='6' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man6dir)/$$inst'"; \
+	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man6dir)/$$inst"; \
+	done
+uninstall-man6:
+	@$(NORMAL_UNINSTALL)
+	@list='$(man6_MANS) $(dist_man6_MANS) $(nodist_man6_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.6*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    6*) ;; \
+	    *) ext='6' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " rm -f '$(DESTDIR)$(man6dir)/$$inst'"; \
+	  rm -f "$(DESTDIR)$(man6dir)/$$inst"; \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d $(distdir) || mkdir $(distdir)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-info
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-lzma: distdir
+	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lzma*) \
+	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(MANS) config.h
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man6dir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-rm -f parser.c
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-info-am install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+	@$(NORMAL_INSTALL)
+	test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+	@list='$(DVIS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \
+	  $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \
+	done
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am: $(HTMLS)
+	@$(NORMAL_INSTALL)
+	test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+	@list='$(HTMLS)'; for p in $$list; do \
+	  if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  if test -d "$$d$$p"; then \
+	    echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+	    $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+	    echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+	    $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
+	  else \
+	    echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
+	    $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
+	  fi; \
+	done
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+	@$(NORMAL_INSTALL)
+	test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; \
+	for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
+	  file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                       $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+	    if test -f $$ifile; then \
+	      relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
+	      echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
+	      $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
+	    else : ; fi; \
+	  done; \
+	done
+	@$(POST_INSTALL)
+	@if (install-info --version && \
+	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	  list='$(INFO_DEPS)'; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+	  done; \
+	else : ; fi
+install-man: install-man6
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+	@$(NORMAL_INSTALL)
+	test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+	@list='$(PDFS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \
+	  $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \
+	done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+	@$(NORMAL_INSTALL)
+	test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+	@list='$(PSS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \
+	  $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \
+	done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+	maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
+	mostlyclean-generic mostlyclean-vti
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \
+	uninstall-info-am uninstall-man uninstall-pdf-am \
+	uninstall-ps-am
+
+uninstall-man: uninstall-man6
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
+	clean-binPROGRAMS clean-generic ctags dist dist-all dist-bzip2 \
+	dist-gzip dist-info dist-lzma dist-shar dist-tarZ dist-zip \
+	distcheck distclean distclean-compile distclean-generic \
+	distclean-hdr distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-man6 install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-aminfo maintainer-clean-generic \
+	maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+	mostlyclean-compile mostlyclean-generic mostlyclean-vti pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \
+	uninstall-info-am uninstall-man uninstall-man6 \
+	uninstall-pdf-am uninstall-ps-am
+
+
+xboard.man: xboard.texi copyright.texi gpl.texinfo version.texi
+	$(srcdir)/texi2man $(srcdir)/xboard.texi > xboard.man || (rm -f xboard.man ; false)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
index 96872f2..25a1661 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,44 @@
+** Version 4.4.1 **
+   
+ * added chat windows to keep track of multiple conversations (WinBoard only)
+ * allow the result comment as a display item in the game list
+ * added a "Mute All Sounds" item in the WinBoard Options menu
+ * new -forceIllegalMoves option
+ * new -keepAlive option (for ICS play)
+ * ported -autoDisplayComment and -autoDisplayTags to xboard, controling popups
+ * replaces analysispopup with engineoutputpopup in xboard
+ * allow copy/paste position and game to use clipboard (xboard)
+ * updated several bitmaps (xboard)
+ * Made the beep sounds for JAWS board navigation configurable 
+   through command-line options
+ * added the result comment to the game-list tags when the game 
+   list is exported to the clipboard
+ * updated RTF docs
+ * fixed premove problem
+ * fixed engine did not start playing when out of GUI book on second 
+   move with white
+ * fix bug using opening books (file were not closed)
+ * fixed crash when opening Engine #1 Settings when there were no 
+   text-edit options in the dialog
+ * fixed loading of games from command lines, fixes cmail bug
+ * fix joining lines split by ICS and resizing terminal window when using ICS
+   (new option -keepLineBreaksICS, -wrapContinuationSequence, -useInternalWrap)
+ * fixed -autoDisplayComment
+ * fixed wrong default value for engineDebugOutput in xboard
+ * swapped 'tell' and 'message' parsing order for correct colorization.
+ * fixed parse bug for pgn files
+ * fix for edit-position "moves" being sent by XBoard to the engine
+ * bugfix for protocol extensions: egtbpath -> egtpath
+ * fix bug in parser
+ * further bugfixes:  #8847, #10990, #27427, #27642, 
+   #27666, #27667, #27668, #27715, #27751, #27760, 
+   #27772, #27799, #27826 and several small ones
+ * use "make distcheck" to generate tar-balls
+ * prepared a system to internationalize winboard menus
+ * improved mouse handler
+ * rewrote wevalgraph for better frontend/backend separation
+ * code cleanup 
+
 ** Version 4.4.0 **
 
 A new release of both XBoard and WinBoard is now available.  Version
diff --git a/README b/README
index f2246e9..5be3a42 100644
--- a/README
+++ b/README
@@ -12,7 +12,6 @@ COPYING for details.
 
 You can build xboard on most systems with the following commands.
 
-    	./autogen.sh
 	./configure
 	make
 
diff --git a/ToDo b/TODO
similarity index 100%
rename from ToDo
rename to TODO
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..132e431
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,868 @@
+# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(AC_AUTOCONF_VERSION, [2.63],,
+[m4_warning([this file was generated for autoconf 2.63.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.10.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # Grep'ing the whole file is not good either: AIX grep has a line
+  # limit of 2048, but all sed's we know have understand at least 4000.
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 13
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+	      		     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                  [_AM_DEPENDENCIES(OBJC)],
+                  [define([AC_PROG_OBJC],
+                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 4b7da24..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#! /bin/sh
-
-# This file is part of GNU XBoard.
-# 
-# Copyright 2009 Free Software Foundation, Inc.
-# 
-# GNU XBoard is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or (at
-# your option) any later version.
-# 
-# GNU XBoard is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see http://www.gnu.org/licenses/. 
-# 
-#  See the file ChangeLog for a revision history. 
-
-aclocal \
-&& autoheader \
-&& automake --add-missing \
-&& autoconf
\ No newline at end of file
diff --git a/backend.c b/backend.c
old mode 100644
new mode 100755
index 90021ce..6f4fa71
--- a/backend.c
+++ b/backend.c
@@ -77,6 +77,7 @@
 #if STDC_HEADERS
 # include <stdlib.h>
 # include <string.h>
+# include <stdarg.h>
 #else /* not STDC_HEADERS */
 # if HAVE_STRING_H
 #  include <string.h>
@@ -147,11 +148,11 @@ void read_from_player P((InputSourceRef isr, VOIDSTAR closure,
 			 char *buf, int count, int error));
 void read_from_ics P((InputSourceRef isr, VOIDSTAR closure,
 		      char *buf, int count, int error));
+void ics_printf P((char *format, ...));
 void SendToICS P((char *s));
 void SendToICSDelayed P((char *s, long msdelay));
 void SendMoveToICS P((ChessMove moveType, int fromX, int fromY,
 		      int toX, int toY));
-void InitPosition P((int redraw));
 void HandleMachineMove P((char *message, ChessProgramState *cps));
 int AutoPlayOneMove P((void));
 int LoadGameOneMove P((ChessMove readAhead));
@@ -183,7 +184,6 @@ void FeedMovesToProgram P((ChessProgramState *cps, int upto));
 void ResurrectChessProgram P((void));
 void DisplayComment P((int moveNumber, char *text));
 void DisplayMove P((int moveNumber));
-void DisplayAnalysis P((void));
 
 void ParseGameHistory P((char *game));
 void ParseBoard12 P((char *string));
@@ -230,6 +230,7 @@ char *GetInfoFromComment( int, char * ); // [HGM] PV time: returns stripped comm
 void InitEngineUCI( const char * iniDir, ChessProgramState * cps ); // [HGM] moved here from winboard.c
 char *ProbeBook P((int moveNr, char *book)); // [HGM] book: returns a book move
 char *SendMoveToBookUser P((int nr, ChessProgramState *cps, int initial)); // [HGM] book
+void ics_update_width P((int new_width));
 extern char installDir[MSG_SIZ];
 
 extern int tinyLayout, smallLayout;
@@ -243,6 +244,9 @@ VariantClass currentlyInitializedVariant; /* [HGM] variantswitch */
 int lastIndex = 0;      /* [HGM] autoinc: last game/position used in match mode */
 int opponentKibitzes;
 int lastSavedGame; /* [HGM] save: ID of game */
+char chatPartner[MAX_CHAT][MSG_SIZ]; /* [HGM] chat: list of chatting partners */
+extern int chatCount;
+int chattingPartner;
 
 /* States for ics_getting_history */
 #define H_FALSE 0
@@ -297,26 +301,6 @@ static char * safeStrCpy( char * dst, const char * src, size_t count )
     return dst;
 }
 
-#if 0
-//[HGM] for future use? Conditioned out for now to suppress warning.
-static char * safeStrCat( char * dst, const char * src, size_t count )
-{
-    size_t  dst_len;
-
-    assert( dst != NULL );
-    assert( src != NULL );
-    assert( count > 0 );
-
-    dst_len = strlen(dst);
-
-    assert( count > dst_len ); /* Buffer size must be greater than current length */
-
-    safeStrCpy( dst + dst_len, src, count - dst_len );
-
-    return dst;
-}
-#endif
-
 /* Some compiler can't cast u64 to double
  * This function do the job for us:
 
@@ -457,16 +441,17 @@ AppData appData;
 
 Board boards[MAX_MOVES];
 /* [HGM] Following 7 needed for accurate legality tests: */
-char  epStatus[MAX_MOVES];
-char  castlingRights[MAX_MOVES][BOARD_SIZE]; // stores files for pieces with castling rights or -1
-char  castlingRank[BOARD_SIZE]; // and corresponding ranks
-char  initialRights[BOARD_SIZE], FENcastlingRights[BOARD_SIZE], fileRights[BOARD_SIZE];
+signed char  epStatus[MAX_MOVES];
+signed char  castlingRights[MAX_MOVES][BOARD_SIZE]; // stores files for pieces with castling rights or -1
+signed char  castlingRank[BOARD_SIZE]; // and corresponding ranks
+signed char  initialRights[BOARD_SIZE], FENcastlingRights[BOARD_SIZE], fileRights[BOARD_SIZE];
 int   nrCastlingRights; // For TwoKings, or to implement castling-unknown status
 int   initialRulePlies, FENrulePlies;
 char  FENepStatus;
 FILE  *serverMoves = NULL; // next two for broadcasting (/serverMoves option)
 int loadFlag = 0; 
 int shuffleOpenings;
+int mute; // mute all sounds
 
 ChessSquare  FIDEArray[2][BOARD_SIZE] = {
     { WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen,
@@ -622,7 +607,7 @@ InitBackEnd1()
     ShowThinkingEvent(); // [HGM] thinking: make sure post/nopost state is set according to options
 
     GetTimeMark(&programStartTime);
-    srand(programStartTime.ms); // [HGM] book: makes sure random is unpredictabe to msec level
+    srandom((programStartTime.ms + 1000*programStartTime.sec)*0x1001001); // [HGM] book: makes sure random is unpredictabe to msec level
 
     ClearProgramStats();
     programStats.ok_to_send = 1;
@@ -828,20 +813,9 @@ InitBackEnd1()
 	programVersion = (char*) malloc(5 + strlen(PACKAGE_STRING));
 	sprintf(programVersion, "%s", PACKAGE_STRING);
     } else {
-#if 0
-	char *p, *q;
-	q = first.program;
-	while (*q != ' ' && *q != NULLCHAR) q++;
-	p = q;
-	while (p > first.program && *(p-1) != '/' && *(p-1) != '\\') p--; /* [HGM] backslash added */
-	programVersion = (char*) malloc(8 + strlen(PACKAGE_STRING + (q - p));
-	sprintf(programVersion, "%s + ", PACKAGE_STRING);
-	strncat(programVersion, p, q - p);
-#else
-	/* [HGM] tidy: use tidy name, in stead of full pathname (which was probably a bug due to / vs \ ) */
-	programVersion = (char*) malloc(8 + strlen(PACKAGE_STRING) + strlen(first.tidy));
-	sprintf(programVersion, "%s + %s", PACKAGE_STRING, first.tidy);
-#endif
+      /* [HGM] tidy: use tidy name, in stead of full pathname (which was probably a bug due to / vs \ ) */
+      programVersion = (char*) malloc(8 + strlen(PACKAGE_STRING) + strlen(first.tidy));
+      sprintf(programVersion, "%s + %s", PACKAGE_STRING, first.tidy);
     }
 
     if (!appData.icsActive) {
@@ -1007,71 +981,58 @@ ParseTimeControl(tc, ti, mps)
      int ti;
      int mps;
 {
-#if 0
-    int matched, min, sec;
-
-    matched = sscanf(tc, "%d:%d", &min, &sec);
-    if (matched == 1) {
-	timeControl = min * 60 * 1000;
-    } else if (matched == 2) {
-	timeControl = (min * 60 + sec) * 1000;
-    } else {
-	return FALSE;
-    }
-#else
-    long tc1;
-    long tc2;
-    char buf[MSG_SIZ];
-
-    if(ti >= 0 && !strchr(tc, '+') && !strchr(tc, '/') ) mps = 0;
-    if(ti > 0) {
-        if(mps)
-             sprintf(buf, "+%d/%s+%d", mps, tc, ti);
-        else sprintf(buf, "+%s+%d", tc, ti);
-    } else {
-        if(mps)
+  long tc1;
+  long tc2;
+  char buf[MSG_SIZ];
+  
+  if(ti >= 0 && !strchr(tc, '+') && !strchr(tc, '/') ) mps = 0;
+  if(ti > 0) {
+    if(mps)
+      sprintf(buf, "+%d/%s+%d", mps, tc, ti);
+    else sprintf(buf, "+%s+%d", tc, ti);
+  } else {
+    if(mps)
              sprintf(buf, "+%d/%s", mps, tc);
-        else sprintf(buf, "+%s", tc);
-    }
-    fullTimeControlString = StrSave(buf);
-
-    if( NextTimeControlFromString( &tc, &tc1 ) != 0 ) {
-        return FALSE;
-    }
-
-    if( *tc == '/' ) {
-        /* Parse second time control */
-        tc++;
-
-        if( NextTimeControlFromString( &tc, &tc2 ) != 0 ) {
-            return FALSE;
-        }
-
-        if( tc2 == 0 ) {
-            return FALSE;
-        }
-
-        timeControl_2 = tc2 * 1000;
-    }
-    else {
-        timeControl_2 = 0;
-    }
-
-    if( tc1 == 0 ) {
-        return FALSE;
+    else sprintf(buf, "+%s", tc);
+  }
+  fullTimeControlString = StrSave(buf);
+  
+  if( NextTimeControlFromString( &tc, &tc1 ) != 0 ) {
+    return FALSE;
+  }
+  
+  if( *tc == '/' ) {
+    /* Parse second time control */
+    tc++;
+    
+    if( NextTimeControlFromString( &tc, &tc2 ) != 0 ) {
+      return FALSE;
     }
-
-    timeControl = tc1 * 1000;
-#endif
-
-    if (ti >= 0) {
-	timeIncrement = ti * 1000;  /* convert to ms */
-	movesPerSession = 0;
-    } else {
-	timeIncrement = 0;
-	movesPerSession = mps;
+    
+    if( tc2 == 0 ) {
+      return FALSE;
     }
-    return TRUE;
+    
+    timeControl_2 = tc2 * 1000;
+  }
+  else {
+    timeControl_2 = 0;
+  }
+  
+  if( tc1 == 0 ) {
+    return FALSE;
+  }
+  
+  timeControl = tc1 * 1000;
+  
+  if (ti >= 0) {
+    timeIncrement = ti * 1000;  /* convert to ms */
+    movesPerSession = 0;
+  } else {
+    timeIncrement = 0;
+    movesPerSession = mps;
+  }
+  return TRUE;
 }
 
 void
@@ -1081,6 +1042,7 @@ InitBackEnd2()
 	fprintf(debugFP, "%s\n", programVersion);
     }
 
+    set_cont_sequence(appData.wrapContSeq);
     if (appData.matchGames > 0) {
 	appData.matchMode = TRUE;
     } else if (appData.matchMode) {
@@ -1453,6 +1415,26 @@ read_from_player(isr, closure, message, count, error)
 }
 
 void
+KeepAlive()
+{   // [HGM] alive: periodically send dummy (date) command to ICS to prevent time-out
+    SendToICS("date\n");
+    if(appData.keepAlive) ScheduleDelayedEvent(KeepAlive, appData.keepAlive*60*1000);
+}
+
+/* added routine for printf style output to ics */
+void ics_printf(char *format, ...)
+{
+    char buffer[MSG_SIZ];
+    va_list args;
+
+    va_start(args, format);
+    vsnprintf(buffer, sizeof(buffer), format, args);
+    buffer[sizeof(buffer)-1] = '\0';
+    SendToICS(buffer);
+    va_end(args);
+}
+
+void
 SendToICS(s)
      char *s;
 {
@@ -1570,6 +1552,10 @@ StringToVariant(e)
         while( *e++ != '_');
     }
 
+    if(StrCaseStr(e, "misc/")) { // [HGM] on FICS, misc/shogi is not shogi
+	v = VariantNormal;
+	found = TRUE;
+    } else
     for (i=0; i<sizeof(variantNames)/sizeof(char*); i++) {
       if (StrCaseStr(e, variantNames[i])) {
 	v = (VariantClass) i;
@@ -1918,6 +1904,8 @@ CopyHoldings(Board board, char *holdings, ChessSquare lowestPiece)
     ChessSquare piece;
 
     if(gameInfo.holdingsWidth < 2)  return;
+    if(gameInfo.variant != VariantBughouse && board[BOARD_SIZE-1][BOARD_SIZE-2])
+	return; // prevent overwriting by pre-board holdings
 
     if( (int)lowestPiece >= BlackPawn ) {
         holdingsColumn = 0;
@@ -1946,7 +1934,6 @@ CopyHoldings(Board board, char *holdings, ChessSquare lowestPiece)
         board[holdingsStartRow+j*direction][holdingsColumn] = piece;
         board[holdingsStartRow+j*direction][countsColumn]++;
     }
-
 }
 
 
@@ -1954,8 +1941,7 @@ void
 VariantSwitch(Board board, VariantClass newVariant)
 {
    int newHoldingsWidth, newWidth = 8, newHeight = 8, i, j;
-   int oldCurrentMove = currentMove, oldForwardMostMove = forwardMostMove, oldBackwardMostMove = backwardMostMove;
-//   Board tempBoard; int saveCastling[BOARD_SIZE], saveEP;
+   Board oldBoard;
 
    startedFromPositionFile = FALSE;
    if(gameInfo.variant == newVariant) return;
@@ -1972,69 +1958,65 @@ VariantSwitch(Board board, VariantClass newVariant)
     * case we want to add those holdings to the already received position.
     */
 
-
-  if (appData.debugMode) {
-    fprintf(debugFP, "Switch board from %s to %s\n",
-               VariantName(gameInfo.variant), VariantName(newVariant));
-    setbuf(debugFP, NULL);
-  }
-    shuffleOpenings = 0;       /* [HGM] shuffle */
-    gameInfo.holdingsSize = 5; /* [HGM] prepare holdings */
-    switch(newVariant) {
-            case VariantShogi:
-              newWidth = 9;  newHeight = 9;
-              gameInfo.holdingsSize = 7;
-            case VariantBughouse:
-            case VariantCrazyhouse:
-              newHoldingsWidth = 2; break;
-            default:
-              newHoldingsWidth = gameInfo.holdingsSize = 0;
-    }
-
-    if(newWidth  != gameInfo.boardWidth  ||
-       newHeight != gameInfo.boardHeight ||
-       newHoldingsWidth != gameInfo.holdingsWidth ) {
-
-        /* shift position to new playing area, if needed */
-        if(newHoldingsWidth > gameInfo.holdingsWidth) {
-           for(i=0; i<BOARD_HEIGHT; i++) 
-               for(j=BOARD_RGHT-1; j>=BOARD_LEFT; j--)
-                   board[i][j+newHoldingsWidth-gameInfo.holdingsWidth] =
-                                                     board[i][j];
-           for(i=0; i<newHeight; i++) {
-               board[i][0] = board[i][newWidth+2*newHoldingsWidth-1] = EmptySquare;
-               board[i][1] = board[i][newWidth+2*newHoldingsWidth-2] = (ChessSquare) 0;
-           }
-        } else if(newHoldingsWidth < gameInfo.holdingsWidth) {
-           for(i=0; i<BOARD_HEIGHT; i++)
-               for(j=BOARD_LEFT; j<BOARD_RGHT; j++)
-                   board[i][j+newHoldingsWidth-gameInfo.holdingsWidth] =
-                                                 board[i][j];
-        }
-
-        gameInfo.boardWidth  = newWidth;
-        gameInfo.boardHeight = newHeight;
-        gameInfo.holdingsWidth = newHoldingsWidth;
-        gameInfo.variant = newVariant;
-        InitDrawingSizes(-2, 0);
-
-        /* [HGM] The following should definitely be solved in a better way */
-#if 0
-        CopyBoard(board, tempBoard); /* save position in case it is board[0] */
-        for(i=0; i<BOARD_SIZE; i++) saveCastling[i] = castlingRights[0][i];
-        saveEP = epStatus[0];
-#endif
-        InitPosition(FALSE);          /* this sets up board[0], but also other stuff        */
-#if 0
-        epStatus[0] = saveEP;
-        for(i=0; i<BOARD_SIZE; i++) castlingRights[0][i] = saveCastling[i];
-        CopyBoard(tempBoard, board); /* restore position received from ICS   */
-#endif
-    } else { gameInfo.variant = newVariant; InitPosition(FALSE); }
-
-    forwardMostMove = oldForwardMostMove;
-    backwardMostMove = oldBackwardMostMove;
-    currentMove = oldCurrentMove; /* InitPos reset these, but we need still to redraw the position */
+   
+   if (appData.debugMode) {
+     fprintf(debugFP, "Switch board from %s to %s\n",
+	     VariantName(gameInfo.variant), VariantName(newVariant));
+     setbuf(debugFP, NULL);
+   }
+   shuffleOpenings = 0;       /* [HGM] shuffle */
+   gameInfo.holdingsSize = 5; /* [HGM] prepare holdings */
+   switch(newVariant) 
+     {
+     case VariantShogi:
+       newWidth = 9;  newHeight = 9;
+       gameInfo.holdingsSize = 7;
+     case VariantBughouse:
+     case VariantCrazyhouse:
+       newHoldingsWidth = 2; break;
+     case VariantGreat:
+       newWidth = 10;
+     case VariantSuper:
+       newHoldingsWidth = 2;
+       gameInfo.holdingsSize = 8;
+       break;
+     case VariantGothic:
+     case VariantCapablanca:
+     case VariantCapaRandom:
+       newWidth = 10;
+     default:
+       newHoldingsWidth = gameInfo.holdingsSize = 0;
+     };
+   
+   if(newWidth  != gameInfo.boardWidth  ||
+      newHeight != gameInfo.boardHeight ||
+      newHoldingsWidth != gameInfo.holdingsWidth ) {
+     
+     /* shift position to new playing area, if needed */
+     if(newHoldingsWidth > gameInfo.holdingsWidth) {
+       for(i=0; i<BOARD_HEIGHT; i++) 
+	 for(j=BOARD_RGHT-1; j>=BOARD_LEFT; j--)
+	   board[i][j+newHoldingsWidth-gameInfo.holdingsWidth] =
+	     board[i][j];
+       for(i=0; i<newHeight; i++) {
+	 board[i][0] = board[i][newWidth+2*newHoldingsWidth-1] = EmptySquare;
+	 board[i][1] = board[i][newWidth+2*newHoldingsWidth-2] = (ChessSquare) 0;
+       }
+     } else if(newHoldingsWidth < gameInfo.holdingsWidth) {
+       for(i=0; i<BOARD_HEIGHT; i++)
+	 for(j=BOARD_LEFT; j<BOARD_RGHT; j++)
+	   board[i][j+newHoldingsWidth-gameInfo.holdingsWidth] =
+	     board[i][j];
+     }
+     gameInfo.boardWidth  = newWidth;
+     gameInfo.boardHeight = newHeight;
+     gameInfo.holdingsWidth = newHoldingsWidth;
+     gameInfo.variant = newVariant;
+     InitDrawingSizes(-2, 0);
+   } else gameInfo.variant = newVariant;
+   CopyBoard(oldBoard, board);   // remember correctly formatted board
+     InitPosition(FALSE);          /* this sets up board[0], but also other stuff        */
+   DrawPosition(TRUE, currentMove ? boards[currentMove] : oldBoard);
 }
 
 static int loggedOn = FALSE;
@@ -2044,6 +2026,7 @@ int gs_gamenum;
 char gs_kind[MSG_SIZ];
 static char player1Name[128] = "";
 static char player2Name[128] = "";
+static char cont_seq[] = "\n\\   ";
 static int player1Rating = -1;
 static int player2Rating = -1;
 /*----------------------------*/
@@ -2076,6 +2059,8 @@ read_from_ics(isr, closure, data, count, error)
     static int firstTime = TRUE, intfSet = FALSE;
     static ColorClass prevColor = ColorNormal;
     static int savingComment = FALSE;
+    static int cmatch = 0; // continuation sequence match
+    char *bp;
     char str[500];
     int i, oldi;
     int buf_len;
@@ -2083,6 +2068,8 @@ read_from_ics(isr, closure, data, count, error)
     int tkind;
     int backup;    /* [DM] For zippy color lines */
     char *p;
+    char talker[MSG_SIZ]; // [HGM] chat
+    int channel;
 
     if (appData.debugMode) {
       if (!error) {
@@ -2104,17 +2091,66 @@ read_from_ics(isr, closure, data, count, error)
 	      buf[i] = buf[leftover_start + i];
 	}
 
-	/* Copy in new characters, removing nulls and \r's */
-	buf_len = leftover_len;
-	for (i = 0; i < count; i++) {
-	    if (data[i] != NULLCHAR && data[i] != '\r')
-	      buf[buf_len++] = data[i];
-	    if(buf_len >= 5 && buf[buf_len-5]=='\n' && buf[buf_len-4]=='\\' && 
-                               buf[buf_len-3]==' '  && buf[buf_len-2]==' '  && buf[buf_len-1]==' ') {
-		buf_len -= 5; // [HGM] ICS: join continuation line of Lasker 2.2.3 server with previous
-		buf[buf_len++] = ' '; // replace by space (assumes ICS does not break lines within word)
-	    }
-	}
+    /* copy new characters into the buffer */
+    bp = buf + leftover_len;
+    buf_len=leftover_len;
+    for (i=0; i<count; i++)
+    {
+        // ignore these
+        if (data[i] == '\r')
+            continue;
+
+        // join lines split by ICS?
+        if (!appData.noJoin)
+        {
+            /*
+                Joining just consists of finding matches against the
+                continuation sequence, and discarding that sequence
+                if found instead of copying it.  So, until a match
+                fails, there's nothing to do since it might be the
+                complete sequence, and thus, something we don't want
+                copied.
+            */
+            if (data[i] == cont_seq[cmatch])
+            {
+                cmatch++;
+                if (cmatch == strlen(cont_seq))
+                {
+                    cmatch = 0; // complete match.  just reset the counter
+
+                    /*
+                        it's possible for the ICS to not include the space
+                        at the end of the last word, making our [correct]
+                        join operation fuse two separate words.  the server
+                        does this when the space occurs at the width setting.
+                    */
+                    if (!buf_len || buf[buf_len-1] != ' ')
+                    {
+                        *bp++ = ' ';
+                        buf_len++;
+                    }
+                }
+                continue;
+            }
+            else if (cmatch)
+            {
+                /*
+                    match failed, so we have to copy what matched before
+                    falling through and copying this character.  In reality,
+                    this will only ever be just the newline character, but
+                    it doesn't hurt to be precise.
+                */
+                strncpy(bp, cont_seq, cmatch);
+                bp += cmatch;
+                buf_len += cmatch;
+                cmatch = 0;
+            }
+        }
+
+        // copy this char
+        *bp++ = data[i];
+        buf_len++;
+    }
 
 	buf[buf_len] = NULLCHAR;
 	next_out = leftover_len;
@@ -2242,7 +2278,6 @@ read_from_ics(isr, closure, data, count, error)
 		  sprintf(str,
 			  "/set-quietly interface %s\n/set-quietly style 12\n",
 			  programVersion);
-
 		} else if (ics_type == ICS_CHESSNET) {
 		  sprintf(str, "/style 12\n");
 		} else {
@@ -2255,6 +2290,7 @@ read_from_ics(isr, closure, data, count, error)
 		  strcat(str, "$iset lock 1\n$style 12\n");
 		}
 		SendToICS(str);
+		NotifyFrontendLogin();
 		intfSet = TRUE;
 	    }
 
@@ -2263,6 +2299,12 @@ read_from_ics(isr, closure, data, count, error)
 		parse[parse_pos++] = buf[i];
 		if (buf[i] == '\n') {
 		    parse[parse_pos] = NULLCHAR;
+		    if(chattingPartner>=0) {
+			char mess[MSG_SIZ];
+			sprintf(mess, "%s%s", talker, parse);
+			OutputChatMessage(chattingPartner, mess);
+			chattingPartner = -1;
+		    } else
 		    if(!suppressKibitz) // [HGM] kibitz
 			AppendComment(forwardMostMove, StripHighlight(parse));
 		    else { // [HGM kibitz: divert memorized engine kibitz to engine-output window
@@ -2399,6 +2441,45 @@ read_from_ics(isr, closure, data, count, error)
 		}
 	    } // [HGM] kibitz: end of patch
 
+//if(appData.debugMode) fprintf(debugFP, "hunt for tell, buf = %s\n", buf+i);
+
+	    // [HGM] chat: intercept tells by users for which we have an open chat window
+	    channel = -1;
+	    if(started == STARTED_NONE && (looking_at(buf, &i, "* tells you:") || looking_at(buf, &i, "* says:") || 
+					   looking_at(buf, &i, "* whispers:") ||
+					   looking_at(buf, &i, "*(*):") && (sscanf(star_match[1], "%d", &channel),1) ||
+					   looking_at(buf, &i, "*(*)(*):") && sscanf(star_match[2], "%d", &channel) == 1 )) {
+		int p;
+		sscanf(star_match[0], "%[^(]", talker+1); // strip (C) or (U) off ICS handle
+		chattingPartner = -1;
+
+		if(channel >= 0) // channel broadcast; look if there is a chatbox for this channel
+		for(p=0; p<MAX_CHAT; p++) {
+		    if(channel == atoi(chatPartner[p])) {
+		    talker[0] = '['; strcat(talker, "]");
+		    chattingPartner = p; break;
+		    }
+		} else
+		if(buf[i-3] == 'r') // whisper; look if there is a WHISPER chatbox
+		for(p=0; p<MAX_CHAT; p++) {
+		    if(!strcmp("WHISPER", chatPartner[p])) {
+			talker[0] = '['; strcat(talker, "]");
+			chattingPartner = p; break;
+		    }
+		}
+		if(chattingPartner<0) // if not, look if there is a chatbox for this indivdual
+		for(p=0; p<MAX_CHAT; p++) if(!StrCaseCmp(talker+1, chatPartner[p])) {
+		    talker[0] = 0;
+		    chattingPartner = p; break;
+		}
+		if(chattingPartner<0) i = oldi; else {
+		    started = STARTED_COMMENT;
+		    parse_pos = 0; parse[0] = NULLCHAR;
+		    savingComment = TRUE;
+		    suppressKibitz = TRUE;
+		}
+	    } // [HGM] chat: end of patch
+
 	    if (appData.zippyTalk || appData.zippyPlay) {
                 /* [DM] Backup address for color zippy lines */
                 backup = i;
@@ -2417,14 +2498,15 @@ read_from_ics(isr, closure, data, count, error)
        #endif
 #endif
 	    } // [DM] 'else { ' deleted
-	 	if (/* Don't color "message" or "messages" output */
-		    (tkind = 5, looking_at(buf, &i, "*. * (*:*): ")) ||
-		    looking_at(buf, &i, "*. * at *:*: ") ||
-		    looking_at(buf, &i, "--* (*:*): ") ||
+	 	if (
 		    /* Regular tells and says */
 		    (tkind = 1, looking_at(buf, &i, "* tells you: ")) ||
 		    looking_at(buf, &i, "* (your partner) tells you: ") ||
 		    looking_at(buf, &i, "* says: ") ||
+		    /* Don't color "message" or "messages" output */
+		    (tkind = 5, looking_at(buf, &i, "*. * (*:*): ")) ||
+		    looking_at(buf, &i, "*. * at *:*: ") ||
+		    looking_at(buf, &i, "--* (*:*): ") ||
 		    /* Message notifications (same color as tells) */
 		    looking_at(buf, &i, "* has left a message ") ||
 		    looking_at(buf, &i, "* just sent you a message:\n") ||
@@ -2773,18 +2855,10 @@ read_from_ics(isr, closure, data, count, error)
 				  }
 				  SendTimeRemaining(&first, TRUE);
 				}
-#if 0
-				if (first.useColors) {
-				  SendToProgram("white\ngo\n", &first);
-				} else {
-				  SendToProgram("go\n", &first);
-				}
-#else
 				if (first.useColors) {
 				  SendToProgram("white\n", &first); // [HGM] book: made sending of "go\n" book dependent
 				}
 				bookHit = SendMoveToBookUser(forwardMostMove-1, &first, TRUE); // [HGM] book: probe book for initial pos
-#endif
 				first.maybeThinking = TRUE;
 			    } else {
 			        if (first.usePlayother) {
@@ -2805,18 +2879,10 @@ read_from_ics(isr, closure, data, count, error)
 				  }
 				  SendTimeRemaining(&first, FALSE);
 				}
-#if 0
-				if (first.useColors) {
-				  SendToProgram("black\ngo\n", &first);
-				} else {
-				  SendToProgram("go\n", &first);
-				}
-#else
 				if (first.useColors) {
 				  SendToProgram("black\n", &first);
 				}
 				bookHit = SendMoveToBookUser(forwardMostMove-1, &first, TRUE);
-#endif
 				first.maybeThinking = TRUE;
 			    } else {
 			        if (first.usePlayother) {
@@ -2839,7 +2905,7 @@ read_from_ics(isr, closure, data, count, error)
 			currentMove = forwardMostMove;
 			ClearHighlights();/*!!could figure this out*/
 			flipView = appData.flipView;
-			DrawPosition(FALSE, boards[currentMove]);
+			DrawPosition(TRUE, boards[currentMove]);
 			DisplayBothClocks();
 			sprintf(str, "%s vs. %s",
 				gameInfo.white, gameInfo.black);
@@ -3170,16 +3236,14 @@ read_from_ics(isr, closure, data, count, error)
 		      if (currentMove == 0 &&
 			  gameMode == IcsPlayingWhite &&
 			  appData.premoveWhite) {
-			sprintf(str, "%s%s\n", ics_prefix,
-				appData.premoveWhiteText);
+			sprintf(str, "%s\n", appData.premoveWhiteText);
 			if (appData.debugMode)
 			  fprintf(debugFP, "Sending premove:\n");
 			SendToICS(str);
 		      } else if (currentMove == 1 &&
 				 gameMode == IcsPlayingBlack &&
 				 appData.premoveBlack) {
-			sprintf(str, "%s%s\n", ics_prefix,
-				appData.premoveBlackText);
+			sprintf(str, "%s\n", appData.premoveBlackText);
 			if (appData.debugMode)
 			  fprintf(debugFP, "Sending premove:\n");
 			SendToICS(str);
@@ -3196,6 +3260,7 @@ read_from_ics(isr, closure, data, count, error)
 
 		    /* Usually suppress following prompt */
 		    if (!(forwardMostMove == 0 && gameMode == IcsExamining)) {
+			while(looking_at(buf, &i, "\n")); // [HGM] skip empty lines
 			if (looking_at(buf, &i, "*% ")) {
 			    savingComment = FALSE;
 			}
@@ -3217,7 +3282,13 @@ read_from_ics(isr, closure, data, count, error)
                            * to move the position two files to the right to
                            * create room for them!
                            */
-                          VariantSwitch(boards[currentMove], VariantCrazyhouse); /* temp guess */
+			  VariantClass newVariant;
+			  switch(gameInfo.boardWidth) { // base guess on board width
+				case 9:  newVariant = VariantShogi; break;
+				case 10: newVariant = VariantGreat; break;
+				default: newVariant = VariantCrazyhouse; break;
+			  }
+                          VariantSwitch(boards[currentMove], newVariant); /* temp guess */
 			  /* Get a move list just to see the header, which
 			     will tell us whether this is really bug or zh */
 			  if (ics_getting_history == H_FALSE) {
@@ -3233,8 +3304,9 @@ read_from_ics(isr, closure, data, count, error)
                         white_holding[strlen(white_holding)-1] = NULLCHAR;
                         black_holding[strlen(black_holding)-1] = NULLCHAR;
                         /* [HGM] copy holdings to board holdings area */
-                        CopyHoldings(boards[currentMove], white_holding, WhitePawn);
-                        CopyHoldings(boards[currentMove], black_holding, BlackPawn);
+                        CopyHoldings(boards[forwardMostMove], white_holding, WhitePawn);
+                        CopyHoldings(boards[forwardMostMove], black_holding, BlackPawn);
+                        boards[forwardMostMove][BOARD_SIZE-1][BOARD_SIZE-2] = 1; // flag holdings as set
 #if ZIPPY
 			if (appData.zippyPlay && first.initDone) {
 			    ZippyHoldings(white_holding, black_holding,
@@ -3258,6 +3330,7 @@ read_from_ics(isr, closure, data, count, error)
 		    }
 		    /* Suppress following prompt */
 		    if (looking_at(buf, &i, "*% ")) {
+			if(strchr(star_match[0], 7)) SendToPlayer("\007", 1); // Bell(); // FICS fuses bell for next board with prompt in zh captures
 			savingComment = FALSE;
 		    }
 		    next_out = i;
@@ -3327,6 +3400,7 @@ ParseBoard12(string)
     char promoChar;
     int ranks=1, files=0; /* [HGM] ICS80: allow variable board size */
     char *bookHit = NULL; // [HGM] book
+    Boolean weird = FALSE, reqFlag = FALSE;
 
     fromX = fromY = toX = toY = -1;
     
@@ -3342,6 +3416,7 @@ ParseBoard12(string)
         while(i < 199 && (string[i] != ' ' || string[i+2] != ' ')) {
 	    if(string[i] == ' ') { ranks++; files = 0; }
             else files++;
+	    if(!strchr(" -pnbrqkPNBRQK" , string[i])) weird = TRUE; // test for fairies
 	    i++;
 	}
 	for(j = 0; j <i; j++) board_chars[j] = string[j];
@@ -3431,6 +3506,27 @@ ParseBoard12(string)
 	ics_getting_history = H_FALSE;
 	return;
     }
+
+   if (gameInfo.boardHeight != ranks || gameInfo.boardWidth != files || 
+					weird && (int)gameInfo.variant <= (int)VariantShogi) {
+     /* [HGM] We seem to have switched variant unexpectedly
+      * Try to guess new variant from board size
+      */
+	  VariantClass newVariant = VariantFairy; // if 8x8, but fairies present
+	  if(ranks == 8 && files == 10) newVariant = VariantCapablanca; else
+	  if(ranks == 10 && files == 9) newVariant = VariantXiangqi; else
+	  if(ranks == 8 && files == 12) newVariant = VariantCourier; else
+	  if(ranks == 9 && files == 9)  newVariant = VariantShogi; else
+	  if(!weird) newVariant = VariantNormal;
+          VariantSwitch(boards[currentMove], newVariant); /* temp guess */
+	  /* Get a move list just to see the header, which
+	     will tell us whether this is really bug or zh */
+	  if (ics_getting_history == H_FALSE) {
+	    ics_getting_history = H_REQUESTED; reqFlag = TRUE;
+	    sprintf(str, "%smoves %d\n", ics_prefix, gamenum);
+	    SendToICS(str);
+	  }
+    }
     
     /* Take action if this is the first board of a new game, or of a
        different game than is currently being displayed.  */
@@ -3439,15 +3535,15 @@ ParseBoard12(string)
 	
 	/* Forget the old game and get the history (if any) of the new one */
 	if (gameMode != BeginningOfGame) {
-	  Reset(FALSE, TRUE);
+	  Reset(TRUE, TRUE);
 	}
 	newGame = TRUE;
 	if (appData.autoRaiseBoard) BoardToTop();
 	prevMove = -3;
 	if (gamenum == -1) {
 	    newGameMode = IcsIdle;
-	} else if (moveNum > 0 && newGameMode != IcsIdle &&
-		   appData.getMoveList) {
+	} else if ((moveNum > 0 || newGameMode == IcsObserving) && newGameMode != IcsIdle &&
+		   appData.getMoveList && !reqFlag) {
 	    /* Need to get game history */
 	    ics_getting_history = H_REQUESTED;
 	    sprintf(str, "%smoves %d\n", ics_prefix, gamenum);
@@ -3483,7 +3579,7 @@ ParseBoard12(string)
 	timeIncrement = increment * 1000;
 	movesPerSession = 0;
 	gameInfo.timeControl = TimeControlTagValue();
-        VariantSwitch(board, StringToVariant(gameInfo.event) );
+        VariantSwitch(boards[currentMove], StringToVariant(gameInfo.event) );
   if (appData.debugMode) {
     fprintf(debugFP, "ParseBoard says variant = '%s'\n", gameInfo.event);
     fprintf(debugFP, "recognized as %s\n", VariantName(gameInfo.variant));
@@ -3563,6 +3659,7 @@ ParseBoard12(string)
       }
     }
     CopyBoard(boards[moveNum], board);
+    boards[moveNum][BOARD_SIZE-1][BOARD_SIZE-2] = 0; // [HGM] indicate holdings not set
     if (moveNum == 0) {
 	startedFromSetupPosition =
 	  !CompareBoards(board, initialPosition);
@@ -3629,15 +3726,6 @@ ParseBoard12(string)
     /* Update currentMove and known move number limits */
     newMove = newGame || moveNum > forwardMostMove;
 
-    /* [DM] If we found takebacks during icsEngineAnalyze try send to engine */
-    if (!newGame && appData.icsEngineAnalyze && moveNum < forwardMostMove) {
-        takeback = forwardMostMove - moveNum;
-        for (i = 0; i < takeback; i++) {
-             if (appData.debugMode) fprintf(debugFP, "take back move\n");
-             SendToProgram("undo\n", &first);
-        }
-    }
-
     if (newGame) {
 	forwardMostMove = backwardMostMove = currentMove = moveNum;
 	if (gameMode == IcsExamining && moveNum == 0) {
@@ -3650,6 +3738,20 @@ ParseBoard12(string)
 	}
     } else if (moveNum == forwardMostMove + 1 || moveNum == forwardMostMove
 	       || (moveNum < forwardMostMove && moveNum >= backwardMostMove)) {
+#if ZIPPY
+	/* [DM] If we found takebacks during icsEngineAnalyze try send to engine */
+	/* [HGM] applied this also to an engine that is silently watching        */
+	if (appData.zippyPlay && moveNum < forwardMostMove && first.initDone &&
+	    (gameMode == IcsObserving || gameMode == IcsExamining) &&
+	    gameInfo.variant == currentlyInitializedVariant) {
+	  takeback = forwardMostMove - moveNum;
+	  for (i = 0; i < takeback; i++) {
+	    if (appData.debugMode) fprintf(debugFP, "take back move\n");
+	    SendToProgram("undo\n", &first);
+	  }
+	}
+#endif
+
 	forwardMostMove = moveNum;
 	if (!pausing || currentMove > forwardMostMove)
 	  currentMove = forwardMostMove;
@@ -3660,12 +3762,20 @@ ParseBoard12(string)
 	    forwardMostMove = pauseExamForwardMostMove;
 	    return;
 	}
-	forwardMostMove = backwardMostMove = currentMove = moveNum;
 	if (gameMode == IcsExamining && moveNum > 0 && appData.getMoveList) {
+#if ZIPPY
+	    if(appData.zippyPlay && forwardMostMove > 0 && first.initDone) {
+		// [HGM] when we will receive the move list we now request, it will be
+		// fed to the engine from the first move on. So if the engine is not
+		// in the initial position now, bring it there.
+		InitChessProgram(&first, 0);
+	    }
+#endif
 	    ics_getting_history = H_REQUESTED;
 	    sprintf(str, "%smoves %d\n", ics_prefix, gamenum);
 	    SendToICS(str);
 	}
+	forwardMostMove = backwardMostMove = currentMove = moveNum;
     }
     
     /* Update the clocks */
@@ -3768,12 +3878,6 @@ ParseBoard12(string)
     fprintf(debugFP, "Illegal move from ICS '%s'\n", move_str);
     fprintf(debugFP, "board L=%d, R=%d, H=%d, holdings=%d\n", BOARD_LEFT, BOARD_RGHT, BOARD_HEIGHT, gameInfo.holdingsWidth);
   }
-#if 0
-	    if (appData.testLegality && appData.debugMode) {
-		sprintf(str, "Illegal move \"%s\" from ICS", move_str);
-		DisplayError(str, 0);
-	    }
-#endif
 	    strcpy(parseList[moveNum - 1], move_str);
 	    strcat(parseList[moveNum - 1], " ");
 	    strcat(parseList[moveNum - 1], elapsed_time);
@@ -3947,6 +4051,12 @@ AnalysisPeriodicEvent(force)
     programStats.ok_to_send = 0;
 }
 
+void ics_update_width(new_width)
+	int new_width;
+{
+	ics_printf("set width %d\n", new_width);
+}
+
 void
 SendMoveToProgram(moveNum, cps)
      int moveNum;
@@ -4087,6 +4197,8 @@ SendMoveToICS(moveType, fromX, fromY, toX, toY)
 	break;
     }
     SendToICS(user_move);
+    if(appData.keepAlive) // [HGM] alive: schedule sending of dummy 'date' command
+	ScheduleDelayedEvent(KeepAlive, appData.keepAlive*60*1000);
 }
 
 void
@@ -4497,7 +4609,6 @@ InitPosition(redraw)
     oldh = gameInfo.holdingsWidth,
     oldv = gameInfo.variant;
 
-    currentMove = forwardMostMove = backwardMostMove = 0;
     if(appData.icsActive) shuffleOpenings = FALSE; // [HGM] shuffle: in ICS mode, only shuffle on ICS request
 
     /* [AS] Initialize pv info list [HGM] and game status */
@@ -4713,17 +4824,6 @@ InitPosition(redraw)
 	initialPosition[BOARD_HEIGHT-1-PieceToNumber(WhiteMan)][0] = BlackMan;
 	initialPosition[BOARD_HEIGHT-1-PieceToNumber(WhiteMan)][1] = 9;
      }
-#if 0
-    if(gameInfo.variant == VariantFischeRandom) {
-      if( appData.defaultFrcPosition < 0 ) {
-        ShuffleFRC( initialPosition );
-      }
-      else {
-        SetupFRC( initialPosition, appData.defaultFrcPosition );
-      }
-      startedFromSetupPosition = TRUE;
-    } else 
-#else
   if (appData.debugMode) {
     fprintf(debugFP, "shuffleOpenings = %d\n", shuffleOpenings);
   }
@@ -4731,7 +4831,6 @@ InitPosition(redraw)
 	SetUpShuffle(initialPosition, appData.defaultFrcPosition);
 	startedFromSetupPosition = TRUE;
     }
-#endif
     if(startedFromPositionFile) {
       /* [HGM] loadPos: use PositionFile for every new game */
       CopyBoard(initialPosition, filePosition);
@@ -4831,24 +4930,29 @@ SendBoard(cps, moveNum)
 }
 
 int
-IsPromotion(fromX, fromY, toX, toY)
-     int fromX, fromY, toX, toY;
+HasPromotionChoice(int fromX, int fromY, int toX, int toY, char *promoChoice)
 {
+    /* [HGM] rewritten IsPromotion to only flag promotions that offer a choice */
     /* [HGM] add Shogi promotions */
     int promotionZoneSize=1, highestPromotingPiece = (int)WhitePawn;
     ChessSquare piece;
+    ChessMove moveType;
+    Boolean premove;
+
+    if(fromX < BOARD_LEFT || fromX >= BOARD_RGHT) return FALSE; // drop
+    if(toX   < BOARD_LEFT || toX   >= BOARD_RGHT) return FALSE; // move into holdings
+
+    if(gameMode == EditPosition || gameInfo.variant == VariantXiangqi || // no promotions
+      !(fromX >=0 && fromY >= 0 && toX >= 0 && toY >= 0) ) // invalid move
+	return FALSE;
 
-    if(gameMode == EditPosition || gameInfo.variant == VariantXiangqi ||
-      !(fromX >=0 && fromY >= 0 && toX >= 0 && toY >= 0) ) return FALSE;
-   /* [HGM] Note to self: line above also weeds out drops */
     piece = boards[currentMove][fromY][fromX];
     if(gameInfo.variant == VariantShogi) {
         promotionZoneSize = 3;
-        highestPromotingPiece = (int)WhiteKing;
-        /* [HGM] Should be Silver = Ferz, really, but legality testing is off,
-           and if in normal chess we then allow promotion to King, why not
-           allow promotion of other piece in Shogi?                         */
+        highestPromotingPiece = (int)WhiteFerz;
     }
+
+    // next weed out all moves that do not touch the promotion zone at all
     if((int)piece >= BlackPawn) {
         if(toY >= promotionZoneSize && fromY >= promotionZoneSize)
              return FALSE;
@@ -4857,7 +4961,62 @@ IsPromotion(fromX, fromY, toX, toY)
         if(  toY < BOARD_HEIGHT - promotionZoneSize &&
            fromY < BOARD_HEIGHT - promotionZoneSize) return FALSE;
     }
-    return ( (int)piece <= highestPromotingPiece );
+
+    if( (int)piece > highestPromotingPiece ) return FALSE; // non-promoting piece
+
+    // weed out mandatory Shogi promotions
+    if(gameInfo.variant == VariantShogi) {
+	if(piece >= BlackPawn) {
+	    if(toY == 0 && piece == BlackPawn ||
+	       toY == 0 && piece == BlackQueen ||
+	       toY <= 1 && piece == BlackKnight) {
+		*promoChoice = '+';
+		return FALSE;
+	    }
+	} else {
+	    if(toY == BOARD_HEIGHT-1 && piece == WhitePawn ||
+	       toY == BOARD_HEIGHT-1 && piece == WhiteQueen ||
+	       toY >= BOARD_HEIGHT-2 && piece == WhiteKnight) {
+		*promoChoice = '+';
+		return FALSE;
+	    }
+	}
+    }
+
+    // weed out obviously illegal Pawn moves
+    if(appData.testLegality  && (piece == WhitePawn || piece == BlackPawn) ) {
+	if(toX > fromX+1 || toX < fromX-1) return FALSE; // wide
+	if(piece == WhitePawn && toY != fromY+1) return FALSE; // deep
+	if(piece == BlackPawn && toY != fromY-1) return FALSE; // deep
+	if(fromX != toX && gameInfo.variant == VariantShogi) return FALSE;
+	// note we are not allowed to test for valid (non-)capture, due to premove
+    }
+
+    // we either have a choice what to promote to, or (in Shogi) whether to promote
+    if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier) {
+	*promoChoice = PieceToChar(BlackFerz);  // no choice
+	return FALSE;
+    }
+    if(appData.alwaysPromoteToQueen) { // predetermined
+	if(gameInfo.variant == VariantSuicide || gameInfo.variant == VariantLosers)
+	     *promoChoice = PieceToChar(BlackKing); // in Suicide Q is the last thing we want
+	else *promoChoice = PieceToChar(BlackQueen);
+	return FALSE;
+    }
+
+    // suppress promotion popup on illegal moves that are not premoves
+    premove = gameMode == IcsPlayingWhite && !WhiteOnMove(currentMove) ||
+	      gameMode == IcsPlayingBlack &&  WhiteOnMove(currentMove);
+    if(appData.testLegality && !premove) {
+	moveType = LegalityTest(boards[currentMove], PosFlags(currentMove),
+			epStatus[currentMove], castlingRights[currentMove],
+			fromY, fromX, toY, toX, NULLCHAR);
+	if(moveType != WhitePromotionQueen && moveType  != BlackPromotionQueen &&
+	   moveType != WhitePromotionKnight && moveType != BlackPromotionKnight)
+	    return FALSE;
+    }
+
+    return TRUE;
 }
 
 int
@@ -4991,39 +5150,15 @@ int lastLoadGameUseList = FALSE;
 char lastLoadGameTitle[MSG_SIZ], lastLoadPositionTitle[MSG_SIZ];
 ChessMove lastLoadGameStart = (ChessMove) 0;
 
-
 ChessMove
-UserMoveTest(fromX, fromY, toX, toY, promoChar)
+UserMoveTest(fromX, fromY, toX, toY, promoChar, captureOwn)
      int fromX, fromY, toX, toY;
      int promoChar;
+     Boolean captureOwn;
 {
     ChessMove moveType;
     ChessSquare pdown, pup;
 
-    if (fromX < 0 || fromY < 0) return ImpossibleMove;
-    if ((fromX == toX) && (fromY == toY)) {
-        return ImpossibleMove;
-    }
-
-    /* [HGM] suppress all moves into holdings area and guard band */
-    if( toX < BOARD_LEFT || toX >= BOARD_RGHT || toY < 0 )
-            return ImpossibleMove;
-
-    /* [HGM] <sameColor> moved to here from winboard.c */
-    /* note: this code seems to exist for filtering out some obviously illegal premoves */
-    pdown = boards[currentMove][fromY][fromX];
-    pup = boards[currentMove][toY][toX];
-    if (    gameMode != EditPosition &&
-            (WhitePawn <= pdown && pdown < BlackPawn &&
-             WhitePawn <= pup && pup < BlackPawn  ||
-             BlackPawn <= pdown && pdown < EmptySquare &&
-             BlackPawn <= pup && pup < EmptySquare 
-            ) && !((gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) &&
-                    (pup == WhiteRook && pdown == WhiteKing && fromY == 0 && toY == 0||
-                     pup == BlackRook && pdown == BlackKing && fromY == BOARD_HEIGHT-1 && toY == BOARD_HEIGHT-1  ) 
-        )           )
-         return ImpossibleMove;
-
     /* Check if the user is playing in turn.  This is complicated because we
        let the user "pick up" a piece before it is his turn.  So the piece he
        tried to pick up may have been captured by the time he puts it down!
@@ -5142,6 +5277,10 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
         return ImpossibleMove;
     }
 
+    if(toX < 0 || toY < 0) return ImpossibleMove;
+    pdown = boards[currentMove][fromY][fromX];
+    pup = boards[currentMove][toY][toX];
+
     /* [HGM] If move started in holdings, it means a drop */
     if( fromX == BOARD_LEFT-2 || fromX == BOARD_RGHT+1) { 
          if( pup != EmptySquare ) return ImpossibleMove;
@@ -5163,7 +5302,6 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
     moveType = LegalityTest(boards[currentMove], PosFlags(currentMove),
                           epStatus[currentMove], castlingRights[currentMove],
                                          fromY, fromX, toY, toX, promoChar);
-
     /* [HGM] but possibly ignore an IllegalMove result */
     if (appData.testLegality) {
 	if (moveType == IllegalMove || moveType == ImpossibleMove) {
@@ -5379,12 +5517,199 @@ UserMoveEvent(fromX, fromY, toX, toY, promoChar)
        FinishMove if the first part succeeded. Calls that do not need
        to do anything in between, can call this routine the old way. 
     */
-    ChessMove moveType = UserMoveTest(fromX, fromY, toX, toY, promoChar);
+    ChessMove moveType = UserMoveTest(fromX, fromY, toX, toY, promoChar, FALSE);
 if(appData.debugMode) fprintf(debugFP, "moveType 4 = %d, promochar = %x\n", moveType, promoChar);
-    if(moveType != ImpossibleMove)
+    if(moveType == AmbiguousMove)
+	DrawPosition(FALSE, boards[currentMove]);
+    else if(moveType != ImpossibleMove && moveType != Comment)
         FinishMove(moveType, fromX, fromY, toX, toY, promoChar);
 }
 
+void LeftClick(ClickType clickType, int xPix, int yPix)
+{
+    int x, y;
+    Boolean saveAnimate;
+    static int second = 0, promotionChoice = 0;
+    char promoChoice = NULLCHAR;
+
+    if (clickType == Press) ErrorPopDown();
+
+    x = EventToSquare(xPix, BOARD_WIDTH);
+    y = EventToSquare(yPix, BOARD_HEIGHT);
+    if (!flipView && y >= 0) {
+	y = BOARD_HEIGHT - 1 - y;
+    }
+    if (flipView && x >= 0) {
+	x = BOARD_WIDTH - 1 - x;
+    }
+
+    if(promotionChoice) { // we are waiting for a click to indicate promotion piece
+	if(clickType == Release) return; // ignore upclick of click-click destination
+	promotionChoice = FALSE; // only one chance: if click not OK it is interpreted as cancel
+	if(appData.debugMode) fprintf(debugFP, "promotion click, x=%d, y=%d\n", x, y);
+	if(gameInfo.holdingsWidth && 
+		(WhiteOnMove(currentMove) 
+			? x == BOARD_WIDTH-1 && y < gameInfo.holdingsSize && y > 0
+			: x == 0 && y >= BOARD_HEIGHT - gameInfo.holdingsSize && y < BOARD_HEIGHT-1) ) {
+	    // click in right holdings, for determining promotion piece
+	    ChessSquare p = boards[currentMove][y][x];
+	    if(appData.debugMode) fprintf(debugFP, "square contains %d\n", (int)p);
+	    if(p != EmptySquare) {
+		FinishMove(NormalMove, fromX, fromY, toX, toY, ToLower(PieceToChar(p)));
+		fromX = fromY = -1;
+		return;
+	    }
+	}
+	DrawPosition(FALSE, boards[currentMove]);
+	return;
+    }
+
+    /* [HGM] holdings: next 5 lines: ignore all clicks between board and holdings */
+    if(clickType == Press
+            && ( x == BOARD_LEFT-1 || x == BOARD_RGHT
+              || x == BOARD_LEFT-2 && y < BOARD_HEIGHT-gameInfo.holdingsSize
+              || x == BOARD_RGHT+1 && y >= gameInfo.holdingsSize) )
+	return;
+
+    if (fromX == -1) {
+	if (clickType == Press) {
+	    /* First square */
+	    if (OKToStartUserMove(x, y)) {
+		fromX = x;
+		fromY = y;
+		second = 0;
+		DragPieceBegin(xPix, yPix);
+		if (appData.highlightDragging) {
+		    SetHighlights(x, y, -1, -1);
+		}
+	    }
+	}
+	return;
+    }
+
+    /* fromX != -1 */
+    if (clickType == Press && gameMode != EditPosition) {
+	ChessSquare fromP;
+	ChessSquare toP;
+	int frc;
+
+	// ignore off-board to clicks
+	if(y < 0 || x < 0) return;
+
+	/* Check if clicking again on the same color piece */
+	fromP = boards[currentMove][fromY][fromX];
+	toP = boards[currentMove][y][x];
+	frc = gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom;
+ 	if ((WhitePawn <= fromP && fromP <= WhiteKing &&
+	     WhitePawn <= toP && toP <= WhiteKing &&
+	     !(fromP == WhiteKing && toP == WhiteRook && frc) &&
+	     !(fromP == WhiteRook && toP == WhiteKing && frc)) ||
+	    (BlackPawn <= fromP && fromP <= BlackKing && 
+	     BlackPawn <= toP && toP <= BlackKing &&
+	     !(fromP == BlackRook && toP == BlackKing && frc) && // allow also RxK as FRC castling
+	     !(fromP == BlackKing && toP == BlackRook && frc))) {
+	    /* Clicked again on same color piece -- changed his mind */
+	    second = (x == fromX && y == fromY);
+	    if (appData.highlightDragging) {
+		SetHighlights(x, y, -1, -1);
+	    } else {
+		ClearHighlights();
+	    }
+	    if (OKToStartUserMove(x, y)) {
+		fromX = x;
+		fromY = y;
+		DragPieceBegin(xPix, yPix);
+	    }
+	    return;
+	}
+	// ignore clicks on holdings
+	if(x < BOARD_LEFT || x >= BOARD_RGHT) return;
+    }
+
+    if (clickType == Release && x == fromX && y == fromY) {
+	DragPieceEnd(xPix, yPix);
+	if (appData.animateDragging) {
+	    /* Undo animation damage if any */
+	    DrawPosition(FALSE, NULL);
+	}
+	if (second) {
+	    /* Second up/down in same square; just abort move */
+	    second = 0;
+	    fromX = fromY = -1;
+	    ClearHighlights();
+	    gotPremove = 0;
+	    ClearPremoveHighlights();
+	} else {
+	    /* First upclick in same square; start click-click mode */
+	    SetHighlights(x, y, -1, -1);
+	}
+	return;
+    }
+
+    /* we now have a different from- and (possibly off-board) to-square */
+    /* Completed move */
+    toX = x;
+    toY = y;
+    saveAnimate = appData.animate;
+    if (clickType == Press) {
+	/* Finish clickclick move */
+	if (appData.animate || appData.highlightLastMove) {
+	    SetHighlights(fromX, fromY, toX, toY);
+	} else {
+	    ClearHighlights();
+	}
+    } else {
+	/* Finish drag move */
+	if (appData.highlightLastMove) {
+	    SetHighlights(fromX, fromY, toX, toY);
+	} else {
+	    ClearHighlights();
+	}
+	DragPieceEnd(xPix, yPix);
+	/* Don't animate move and drag both */
+	appData.animate = FALSE;
+    }
+
+    // moves into holding are invalid for now (later perhaps allow in EditPosition)
+    if(x >= 0 && x < BOARD_LEFT || x >= BOARD_RGHT) {
+	ClearHighlights();
+	fromX = fromY = -1;
+	DrawPosition(TRUE, NULL);
+	return;
+    }
+
+    // off-board moves should not be highlighted
+    if(x < 0 || x < 0) ClearHighlights();
+
+    if (HasPromotionChoice(fromX, fromY, toX, toY, &promoChoice)) {
+	SetHighlights(fromX, fromY, toX, toY);
+	if(gameInfo.variant == VariantSuper || gameInfo.variant == VariantGreat) {
+	    // [HGM] super: promotion to captured piece selected from holdings
+	    ChessSquare p = boards[currentMove][fromY][fromX], q = boards[currentMove][toY][toX];
+	    promotionChoice = TRUE;
+	    // kludge follows to temporarily execute move on display, without promoting yet
+	    boards[currentMove][fromY][fromX] = EmptySquare; // move Pawn to 8th rank
+	    boards[currentMove][toY][toX] = p;
+	    DrawPosition(FALSE, boards[currentMove]);
+	    boards[currentMove][fromY][fromX] = p; // take back, but display stays
+	    boards[currentMove][toY][toX] = q;
+	    DisplayMessage("Click in holdings to choose piece", "");
+	    return;
+	}
+	PromotionPopUp();
+    } else {
+	UserMoveEvent(fromX, fromY, toX, toY, promoChoice);
+	if (!appData.highlightLastMove || gotPremove) ClearHighlights();
+	if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY);
+	fromX = fromY = -1;
+    }
+    appData.animate = saveAnimate;
+    if (appData.animate || appData.animateDragging) {
+	/* Undo animation damage if needed */
+	DrawPosition(FALSE, NULL);
+    }
+}
+
 void SendProgramStatsToFrontend( ChessProgramState * cps, ChessProgramStats * cpstats )
 {
 //    char * hint = lastHint;
@@ -5647,7 +5972,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 	  if(appData.autoKibitz && !appData.icsEngineAnalyze ) { /* [HGM] kibitz: send most-recent PV info to ICS */
 		char buf[3*MSG_SIZ];
 
-		sprintf(buf, "kibitz !!! %+.2f/%d (%.2f sec, %u nodes, %1.0f knps) PV=%s\n",
+		sprintf(buf, "kibitz !!! %+.2f/%d (%.2f sec, %u nodes, %.0f knps) PV=%s\n",
 			programStats.score / 100.,
 			programStats.depth,
 			programStats.time / 100.,
@@ -5655,6 +5980,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 			(unsigned int)programStats.nodes / (10*abs(programStats.time) + 1.),
 			programStats.movelist);
 		SendToICS(buf);
+if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.nodes, programStats.nodes);
 	  }
 	}
 #endif
@@ -5898,16 +6224,16 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                 } else moveCount = 6;
 	    }
 	  }
-#if 1
-    if (appData.debugMode) { int i;
-      fprintf(debugFP, "repeat test fmm=%d bmm=%d ep=%d, reps=%d\n",
-              forwardMostMove, backwardMostMove, epStatus[backwardMostMove],
-              appData.drawRepeats);
-      for( i=forwardMostMove; i>=backwardMostMove; i-- )
-           fprintf(debugFP, "%d ep=%d\n", i, epStatus[i]);
+	  
+	  if (appData.debugMode) { int i;
+	    fprintf(debugFP, "repeat test fmm=%d bmm=%d ep=%d, reps=%d\n",
+		    forwardMostMove, backwardMostMove, epStatus[backwardMostMove],
+		    appData.drawRepeats);
+	    for( i=forwardMostMove; i>=backwardMostMove; i-- )
+	      fprintf(debugFP, "%d ep=%d\n", i, epStatus[i]);
+	    
+	  }
 
-    }
-#endif
                 /* Check for rep-draws */
                 count = 0;
                 for(k = forwardMostMove-2;
@@ -5916,17 +6242,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                         epStatus[k+2] <= EP_NONE && epStatus[k+1] <= EP_NONE;
                     k-=2)
                 {   int rights=0;
-#if 0
-    if (appData.debugMode) {
-      fprintf(debugFP, " loop\n");
-    }
-#endif
                     if(CompareBoards(boards[k], boards[forwardMostMove])) {
-#if 0
-    if (appData.debugMode) {
-      fprintf(debugFP, "match\n");
-    }
-#endif
                         /* compare castling rights */
                         if( castlingRights[forwardMostMove][2] != castlingRights[k][2] &&
                              (castlingRights[k][0] >= 0 || castlingRights[k][1] >= 0) )
@@ -5944,16 +6260,6 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                                 castlingRights[forwardMostMove][4] != castlingRights[k][4] )
                                    rights++;
                         }
-#if 0
-    if (appData.debugMode) {
-      for(i=0; i<nrCastlingRights; i++)
-      fprintf(debugFP, " (%d,%d)", castlingRights[forwardMostMove][i], castlingRights[k][i]);
-    }
-
-    if (appData.debugMode) {
-      fprintf(debugFP, " %d %d\n", rights, k);
-    }
-#endif
                         if( rights == 0 && ++count > appData.drawRepeats-2
                             && appData.drawRepeats > 1) {
                              /* adjudicate after user-specified nr of repeats */
@@ -6143,7 +6449,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
             DisplayError(_("Bad FEN received from engine"), 0);
             return ;
         } else {
-           Reset(FALSE, FALSE);
+           Reset(TRUE, FALSE);
            CopyBoard(boards[0], initial_position);
            initialRulePlies = FENrulePlies;
            epStatus[0] = FENepStatus;
@@ -6305,17 +6611,30 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 	if (gameMode == BeginningOfGame || gameMode == EndOfGame ||
 	    gameMode == IcsIdle) return;
 	if (forwardMostMove <= backwardMostMove) return;
-#if 0
-	/* Following removed: it caused a bug where a real illegal move
-	   message in analyze mored would be ignored. */
-	if (cps == &first && programStats.ok_to_send == 0) {
-	    /* Bogus message from Crafty responding to "."  This filtering
-	       can miss some of the bad messages, but fortunately the bug 
-	       is fixed in current Crafty versions, so it doesn't matter. */
-	    return;
-	}
-#endif
 	if (pausing) PauseEvent();
+      if(appData.forceIllegal) {
+	    // [HGM] illegal: machine refused move; force position after move into it
+          SendToProgram("force\n", cps);
+          if(!cps->useSetboard) { // hideous kludge on kludge, because SendBoard sucks.
+		// we have a real problem now, as SendBoard will use the a2a3 kludge
+		// when black is to move, while there might be nothing on a2 or black
+		// might already have the move. So send the board as if white has the move.
+		// But first we must change the stm of the engine, as it refused the last move
+		SendBoard(cps, 0); // always kludgeless, as white is to move on boards[0]
+		if(WhiteOnMove(forwardMostMove)) {
+		    SendToProgram("a7a6\n", cps); // for the engine black still had the move
+		    SendBoard(cps, forwardMostMove); // kludgeless board
+		} else {
+		    SendToProgram("a2a3\n", cps); // for the engine white still had the move
+		    CopyBoard(boards[forwardMostMove+1], boards[forwardMostMove]);
+		    SendBoard(cps, forwardMostMove+1); // kludgeless board
+		}
+          } else SendBoard(cps, forwardMostMove); // FEN case, also sets stm properly
+	    if(gameMode == MachinePlaysWhite || gameMode == MachinePlaysBlack ||
+		 gameMode == TwoMachinesPlay)
+              SendToProgram("go\n", cps);
+	    return;
+      } else
 	if (gameMode == PlayFromGameFile) {
 	    /* Stop reading this game file */
 	    gameMode = EditGame;
@@ -6552,13 +6871,6 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
             /* [HGM] in two-machine mode we delay relaying draw offer      */
             /* until after we also have move, to see if it is really claim */
 	    }
-#if 0
-              else {
-	        if (cps->other->sendDrawOffers) {
-		    SendToProgram("draw\n", cps->other);
-		}
-	    }
-#endif
 	} else if (gameMode == MachinePlaysWhite ||
 		   gameMode == MachinePlaysBlack) {
 	  if (userOfferedDraw) {
@@ -6638,9 +6950,12 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 
 			if(cps->nps == 0) ticklen = 10*time;                    // use engine reported time
 			else ticklen = (1000. * u64ToDouble(nodes)) / cps->nps; // convert node count to time
-			if(WhiteOnMove(forwardMostMove)) 
+			if(WhiteOnMove(forwardMostMove) && (gameMode == MachinePlaysWhite ||
+						gameMode == TwoMachinesPlay && cps->twoMachinesColor[0] == 'w')) 
 			     whiteTimeRemaining = timeRemaining[0][forwardMostMove] - ticklen;
-			else blackTimeRemaining = timeRemaining[1][forwardMostMove] - ticklen;
+			if(!WhiteOnMove(forwardMostMove) && (gameMode == MachinePlaysBlack ||
+						gameMode == TwoMachinesPlay && cps->twoMachinesColor[0] == 'b')) 
+			     blackTimeRemaining = timeRemaining[1][forwardMostMove] - ticklen;
 		}
 
 		/* Buffer overflow protection */
@@ -6648,8 +6963,8 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 		    if (strlen(buf1) >= sizeof(programStats.movelist)
 			&& appData.debugMode) {
 			fprintf(debugFP,
-				"PV is too long; using the first %d bytes.\n",
-				sizeof(programStats.movelist) - 1);
+				"PV is too long; using the first %u bytes.\n",
+				(unsigned) sizeof(programStats.movelist) - 1);
 		    }
 
                     safeStrCpy( programStats.movelist, buf1, sizeof(programStats.movelist) );
@@ -6699,7 +7014,6 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                 if (currentMove == forwardMostMove || gameMode == AnalyzeMode
                         || gameMode == AnalyzeFile || appData.icsEngineAnalyze) {
 		    DisplayMove(currentMove - 1);
-		    DisplayAnalysis();
 		}
 		return;
 
@@ -6727,7 +7041,6 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 		if (currentMove == forwardMostMove || gameMode==AnalyzeMode || 
                            gameMode == AnalyzeFile || appData.icsEngineAnalyze) {
 		    DisplayMove(currentMove - 1);
-		    DisplayAnalysis();
 		}
 		return;
 	    } else if (sscanf(message,"stat01: %d " u64Display " %d %d %d %s",
@@ -6752,7 +7065,6 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 
                 SendProgramStatsToFrontend( cps, &programStats );
 
-		DisplayAnalysis();
 		return;
 
 	    } else if (strncmp(message,"++",2) == 0) {
@@ -6788,7 +7100,6 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 		if (currentMove == forwardMostMove || gameMode==AnalyzeMode ||
                            gameMode == AnalyzeFile || appData.icsEngineAnalyze) {
 		    DisplayMove(currentMove - 1);
-		    DisplayAnalysis();
 		}
 		return;
 	    }
@@ -7260,14 +7571,20 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board, castling, ep)
         p = (int) fromX;
         if(p < (int) BlackPawn) { /* white drop */
              p -= (int)WhitePawn;
+		 p = PieceToNumber((ChessSquare)p);
              if(p >= gameInfo.holdingsSize) p = 0;
-             if(--board[p][BOARD_WIDTH-2] == 0)
+             if(--board[p][BOARD_WIDTH-2] <= 0)
                   board[p][BOARD_WIDTH-1] = EmptySquare;
+             if((int)board[p][BOARD_WIDTH-2] < 0)
+			board[p][BOARD_WIDTH-2] = 0;
         } else {                  /* black drop */
              p -= (int)BlackPawn;
+		 p = PieceToNumber((ChessSquare)p);
              if(p >= gameInfo.holdingsSize) p = 0;
-             if(--board[BOARD_HEIGHT-1-p][1] == 0)
+             if(--board[BOARD_HEIGHT-1-p][1] <= 0)
                   board[BOARD_HEIGHT-1-p][0] = EmptySquare;
+             if((int)board[BOARD_HEIGHT-1-p][1] < 0)
+			board[BOARD_HEIGHT-1-p][1] = 0;
         }
       }
       if (captured != EmptySquare && gameInfo.holdingsSize > 0
@@ -7301,7 +7618,6 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board, castling, ep)
           board[BOARD_HEIGHT-1-p][0] = WHITE_TO_BLACK captured;
 	}
       }
-
     } else if (gameInfo.variant == VariantAtomic) {
       if (captured != EmptySquare) {
 	int y, x;
@@ -7391,9 +7707,6 @@ MakeMove(fromX, fromY, toX, toY, promoChar)
 			0, 1);
       return;
     }
-    SwitchClocks();
-    timeRemaining[0][forwardMostMove+1] = whiteTimeRemaining;
-    timeRemaining[1][forwardMostMove+1] = blackTimeRemaining;
     if (commentList[forwardMostMove+1] != NULL) {
 	free(commentList[forwardMostMove+1]);
 	commentList[forwardMostMove+1] = NULL;
@@ -7403,6 +7716,9 @@ MakeMove(fromX, fromY, toX, toY, promoChar)
     ApplyMove(fromX, fromY, toX, toY, promoChar, boards[forwardMostMove+1], 
 				castlingRights[forwardMostMove+1], &epStatus[forwardMostMove+1]);
     forwardMostMove++; // [HGM] bare: moved to after ApplyMove, to make sure clock interrupt finds complete board
+    SwitchClocks(); // uses forwardMostMove, so must be done after incrementing it !
+    timeRemaining[0][forwardMostMove] = whiteTimeRemaining;
+    timeRemaining[1][forwardMostMove] = blackTimeRemaining;
     gameInfo.result = GameUnfinished;
     if (gameInfo.resultDetails != NULL) {
 	free(gameInfo.resultDetails);
@@ -7489,7 +7805,7 @@ void SendEgtPath(ChessProgramState *cps)
 		while(*r && *r != ',') r++; // path info is everything upto next ';' or end of string
 		c = *r; *r = 0;             // temporarily null-terminate path info
 		    *--q = 0;               // strip of trailig ':' from name
-		    sprintf(buf, "egtbpath %s %s\n", name+1, s);
+		    sprintf(buf, "egtpath %s %s\n", name+1, s);
 		*r = c;
 		SendToProgram(buf,cps);     // send egtbpath command for this format
 	    }
@@ -7679,7 +7995,7 @@ TwoMachinesEventIfReady P((void))
 void
 NextMatchGame P((void))
 {
-    int index; /* [HGM] autoinc: step lod index during match */
+    int index; /* [HGM] autoinc: step load index during match */
     Reset(FALSE, TRUE);
     if (*appData.loadGameFile != NULLCHAR) {
 	index = appData.loadGameIndex;
@@ -8218,6 +8534,7 @@ Reset(redraw, init)
     gameMode = BeginningOfGame;
     ModeHighlight();
     if(appData.icsActive) gameInfo.variant = VariantNormal;
+    currentMove = forwardMostMove = backwardMostMove = 0;
     InitPosition(redraw);
     for (i = 0; i < MAX_MOVES; i++) {
 	if (commentList[i] != NULL) {
@@ -9295,26 +9612,8 @@ LoadPosition(f, positionNumber, title)
 	DisplayError(_("Position not found in file"), 0);
 	return FALSE;
     }
-#if 0
-    switch (line[0]) {
-      case '#':  case 'x':
-      default:
-	fenMode = FALSE;
-	break;
-      case 'p':  case 'n':  case 'b':  case 'r':  case 'q':  case 'k':
-      case 'P':  case 'N':  case 'B':  case 'R':  case 'Q':  case 'K':
-      case '1':  case '2':  case '3':  case '4':  case '5':  case '6':
-      case '7':  case '8':  case '9':
-      case 'H':  case 'A':  case 'M':  case 'h':  case 'a':  case 'm':
-      case 'E':  case 'F':  case 'G':  case 'e':  case 'f':  case 'g':
-      case 'C':  case 'W':             case 'c':  case 'w': 
-	fenMode = TRUE;
-	break;
-    }
-#else
     // [HGM] FEN can begin with digit, any piece letter valid in this variant, or a + for Shogi promoted pieces
     fenMode = line[0] >= '0' && line[0] <= '9' || line[0] == '+' || CharToPiece(line[0]) != EmptySquare;
-#endif
 
     if (pn >= 2) {
 	if (fenMode || line[0] == '#') pn--;
@@ -9627,23 +9926,13 @@ SaveGamePGN(f)
 	    fprintf(f, " ");
 	    linelen++;
 	}
-	fprintf(f, numtext);
+	fprintf(f, "%s", numtext);
 	linelen += numlen;
 
 	/* Get move */
 	strcpy(move_buffer, SavePart(parseList[i])); // [HGM] pgn: print move via buffer, so it can be edited
 	movelen = strlen(move_buffer); /* [HGM] pgn: line-break point before move */
-#if 0
-	// SavePart already does this!
-        if( i >= 0 && appData.saveExtendedInfoInPGN && pvInfoList[i].depth > 0 ) {
-		int p = movelen - 1;
-		if(move_buffer[p] == ' ') p--;
-		if(move_buffer[p] == ')') { // [HGM] pgn: strip off ICS time if we have extended info
-		    while(p && move_buffer[--p] != '(');
-		    if(p && move_buffer[p-1] == ' ') move_buffer[movelen=p-1] = 0;
-		}
-        }
-#endif
+
 	/* Print move */
 	blank = linelen > 0 && movelen > 0;
 	if (linelen + (blank ? 1 : 0) + movelen > PGN_MAX_LINE) {
@@ -9655,7 +9944,7 @@ SaveGamePGN(f)
 	    fprintf(f, " ");
 	    linelen++;
 	}
-	fprintf(f, move_buffer);
+	fprintf(f, "%s", move_buffer);
 	linelen += movelen;
 
         /* [AS] Add PV info if present */
@@ -9663,7 +9952,6 @@ SaveGamePGN(f)
             /* [HGM] add time */
             char buf[MSG_SIZ]; int seconds = 0;
 
-#if 1
             if(i >= backwardMostMove) {
 		if(WhiteOnMove(i))
 			seconds = timeRemaining[0][i] - timeRemaining[0][i+1]
@@ -9673,9 +9961,6 @@ SaveGamePGN(f)
                                   + GetTimeQuota(i/2) / (1000*WhitePlayer()->other->timeOdds);
             }
             seconds = (seconds+50)/100; // deci-seconds, rounded to nearest
-#else
-            seconds = (pvInfoList[i].time + 5)/10; // [HGM] PVtime: use engine time
-#endif
 
             if( seconds <= 0) buf[0] = 0; else
             if( seconds < 30 ) sprintf(buf, " %3.1f%c", seconds/10., 0); else {
@@ -9703,7 +9988,7 @@ SaveGamePGN(f)
 		fprintf(f, " ");
 		linelen++;
 	    }
-	    fprintf(f, move_buffer);
+	    fprintf(f, "%s", move_buffer);
 	    linelen += movelen;
         }
 
@@ -10222,24 +10507,10 @@ ExitEvent(status)
     if (icsPR != NoProc) {
       DestroyChildProcess(icsPR, TRUE);
     }
-#if 0
-    /* Save game if resource set and not already saved by GameEnds() */
-    if ((gameInfo.resultDetails == NULL || errorExitFlag )
-                             && forwardMostMove > 0) {
-      if (*appData.saveGameFile != NULLCHAR) {
-	SaveGameToFile(appData.saveGameFile, TRUE);
-      } else if (appData.autoSaveGames) {
-	AutoSaveGame();
-      }
-      if (*appData.savePositionFile != NULLCHAR) {
-	SavePositionToFile(appData.savePositionFile);
-      }
-    }
-    GameEnds((ChessMove) 0, NULL, GE_PLAYER);
-#else
+
     /* [HGM] crash: leave writing PGN and position entirely to GameEnds() */
     GameEnds(gameInfo.result, gameInfo.resultDetails==NULL ? "xboard exit" : gameInfo.resultDetails, GE_PLAYER);
-#endif
+
     /* [HGM] crash: the above GameEnds() is a dud if another one was running */
     /* make sure this other one finishes before killing it!                  */
     if(endingGame) { int count = 0;
@@ -10380,8 +10651,7 @@ AnalyzeModeEvent()
 	first.analyzing = TRUE;
 	/*first.maybeThinking = TRUE;*/
 	first.maybeThinking = FALSE; /* avoid killing GNU Chess */
-	AnalysisPopUp(_("Analysis"),
-		      _("Starting analysis mode...\nIf this message stays up, your chess program does not support analysis."));
+	EngineOutputPopUp();
     }
     if (!appData.icsEngineAnalyze) gameMode = AnalyzeMode;
     pausing = FALSE;
@@ -10407,8 +10677,7 @@ AnalyzeFileEvent()
 	first.analyzing = TRUE;
 	/*first.maybeThinking = TRUE;*/
 	first.maybeThinking = FALSE; /* avoid killing GNU Chess */
-	AnalysisPopUp(_("Analysis"),
-		      _("Starting analysis mode...\nIf this message stays up, your chess program does not support analysis."));
+	EngineOutputPopUp();
     }
     gameMode = AnalyzeFile;
     pausing = FALSE;
@@ -10480,6 +10749,7 @@ MachineWhiteEvent()
     SetMachineThinkingEnables();
     first.maybeThinking = TRUE;
     StartClocks();
+    firstMove = FALSE;
 
     if (appData.autoFlipView && !flipView) {
       flipView = !flipView;
@@ -10717,7 +10987,9 @@ TwoMachinesEvent P((void))
 
 	strcpy(bookMove, "move ");
 	strcat(bookMove, bookHit);
-	HandleMachineMove(bookMove, &first);
+	savedMessage = bookMove; // args for deferred call
+	savedState = onmove;
+	ScheduleDelayedEvent(DeferredBookMove, 1);
     }
 }
 
@@ -10905,7 +11177,6 @@ ExitAnalyzeMode()
       SendToProgram("exit\n", &first);
       first.analyzing = FALSE;
     }
-    AnalysisPopDown();
     thinkOutput[0] = NULLCHAR;
 }
 
@@ -12210,7 +12481,8 @@ ReceiveFromProgram(isr, closure, message, count, error)
 		   sscanf(message, "resign%c", &c)!=1 && sscanf(message, "feature %c", &c)!=1 &&
 		   sscanf(message, "error %c", &c)!=1 && sscanf(message, "illegal %c", &c)!=1 &&
 		   sscanf(message, "tell%c", &c)!=1   && sscanf(message, "0-1 %c", &c)!=1 &&
-		   sscanf(message, "1-0 %c", &c)!=1   && sscanf(message, "1/2-1/2 %c", &c)!=1 && start != '#')
+		   sscanf(message, "1-0 %c", &c)!=1   && sscanf(message, "1/2-1/2 %c", &c)!=1 &&
+		   sscanf(message, "pong %c", &c)!=1   && start != '#')
 			{ quote = "# "; print = (appData.engineComments == 2); }
 		message[0] = start; // restore original message
 	}
@@ -12578,7 +12850,7 @@ ParseFeatures(args, cps)
     /* unknown feature: complain and skip */
     q = p;
     while (*q && *q != '=') q++;
-    sprintf(buf, "rejected %.*s\n", q-p, p);
+    sprintf(buf, "rejected %.*s\n", (int)(q-p), p);
     SendToProgram(buf, cps);
     p = q;
     if (*p == '=') {
@@ -12605,7 +12877,7 @@ PeriodicUpdatesEvent(newState)
     appData.periodicUpdates=newState;
 
     /* Display type changes, so update it now */
-    DisplayAnalysis();
+//    DisplayAnalysis();
 
     /* Get the ball rolling again... */
     if (newState) {
@@ -12745,92 +13017,6 @@ DisplayMove(moveNumber)
 }
 
 void
-DisplayAnalysisText(text)
-     char *text;
-{
-    char buf[MSG_SIZ];
-
-    if (gameMode == AnalyzeMode || gameMode == AnalyzeFile 
-               || appData.icsEngineAnalyze) {
-	sprintf(buf, "Analysis (%s)", first.tidy);
-	AnalysisPopUp(buf, text);
-    }
-}
-
-static int
-only_one_move(str)
-     char *str;
-{
-    while (*str && isspace(*str)) ++str;
-    while (*str && !isspace(*str)) ++str;
-    if (!*str) return 1;
-    while (*str && isspace(*str)) ++str;
-    if (!*str) return 1;
-    return 0;
-}
-
-void
-DisplayAnalysis()
-{
-    char buf[MSG_SIZ];
-    char lst[MSG_SIZ / 2];
-    double nps;
-    static char *xtra[] = { "", " (--)", " (++)" };
-    int h, m, s, cs;
-  
-    if (programStats.time == 0) {
-	programStats.time = 1;
-    }
-  
-    if (programStats.got_only_move) {
-	safeStrCpy(buf, programStats.movelist, sizeof(buf));
-    } else {
-        safeStrCpy( lst, programStats.movelist, sizeof(lst));
-
-        nps = (u64ToDouble(programStats.nodes) /
-             ((double)programStats.time /100.0));
-
-	cs = programStats.time % 100;
-	s = programStats.time / 100;
-	h = (s / (60*60));
-	s = s - h*60*60;
-	m = (s/60);
-	s = s - m*60;
-
-	if (programStats.moves_left > 0 && appData.periodicUpdates) {
-	  if (programStats.move_name[0] != NULLCHAR) {
-	    sprintf(buf, "depth=%d %d/%d(%s) %+.2f %s%s\nNodes: " u64Display " NPS: %d\nTime: %02d:%02d:%02d.%02d",
-		    programStats.depth,
-		    programStats.nr_moves-programStats.moves_left,
-		    programStats.nr_moves, programStats.move_name,
-		    ((float)programStats.score)/100.0, lst,
-		    only_one_move(lst)?
-		    xtra[programStats.got_fail] : "",
-		    (u64)programStats.nodes, (int)nps, h, m, s, cs);
-	  } else {
-	    sprintf(buf, "depth=%d %d/%d %+.2f %s%s\nNodes: " u64Display " NPS: %d\nTime: %02d:%02d:%02d.%02d",
-		    programStats.depth,
-		    programStats.nr_moves-programStats.moves_left,
-		    programStats.nr_moves, ((float)programStats.score)/100.0,
-		    lst,
-		    only_one_move(lst)?
-		    xtra[programStats.got_fail] : "",
-		    (u64)programStats.nodes, (int)nps, h, m, s, cs);
-	  }
-	} else {
-	    sprintf(buf, "depth=%d %+.2f %s%s\nNodes: " u64Display " NPS: %d\nTime: %02d:%02d:%02d.%02d",
-		    programStats.depth,
-		    ((float)programStats.score)/100.0,
-		    lst,
-		    only_one_move(lst)?
-		    xtra[programStats.got_fail] : "",
-		    (u64)programStats.nodes, (int)nps, h, m, s, cs);
-	}
-    }
-    DisplayAnalysisText(buf);
-}
-
-void
 DisplayComment(moveNumber, text)
      int moveNumber;
      char *text;
@@ -12838,26 +13024,23 @@ DisplayComment(moveNumber, text)
     char title[MSG_SIZ];
     char buf[8000]; // comment can be long!
     int score, depth;
-
-    if( appData.autoDisplayComment ) {
-        if (moveNumber < 0 || parseList[moveNumber][0] == NULLCHAR) {
-	    strcpy(title, "Comment");
-        } else {
-	    sprintf(title, "Comment on %d.%s%s", moveNumber / 2 + 1,
-		    WhiteOnMove(moveNumber) ? " " : ".. ",
-		    parseList[moveNumber]);
-        }
-	// [HGM] PV info: display PV info together with (or as) comment
-	if(moveNumber >= 0 && (depth = pvInfoList[moveNumber].depth) > 0) {
-	    if(text == NULL) text = "";                                           
-	    score = pvInfoList[moveNumber].score;
-	    sprintf(buf, "%s%.2f/%d %d\n%s", score>0 ? "+" : "", score/100.,
-                              depth, (pvInfoList[moveNumber].time+50)/100, text);
-	    text = buf;
-	}
-    } else title[0] = 0;
-
-    if (text != NULL)
+    
+    if (moveNumber < 0 || parseList[moveNumber][0] == NULLCHAR) {
+      strcpy(title, "Comment");
+    } else {
+      sprintf(title, "Comment on %d.%s%s", moveNumber / 2 + 1,
+	      WhiteOnMove(moveNumber) ? " " : ".. ",
+	      parseList[moveNumber]);
+    }
+    // [HGM] PV info: display PV info together with (or as) comment
+    if(moveNumber >= 0 && (depth = pvInfoList[moveNumber].depth) > 0) {
+      if(text == NULL) text = "";                                           
+      score = pvInfoList[moveNumber].score;
+      sprintf(buf, "%s%.2f/%d %d\n%s", score>0 ? "+" : "", score/100.,
+	      depth, (pvInfoList[moveNumber].time+50)/100, text);
+      text = buf;
+    }
+    if (text != NULL && (appData.autoDisplayComment || commentUp))
         CommentPopUp(title, text);
 }
 
@@ -13556,6 +13739,14 @@ PositionToFEN(move, overrideCastling)
 	} else {
 	    *p++ = '-';
 	}
+    } else if(move == backwardMostMove) {
+	// [HGM] perhaps we should always do it like this, and forget the above?
+	if(epStatus[move] >= 0) {
+	    *p++ = epStatus[move] + AAA;
+	    *p++ = whiteToPlay ? '6'+BOARD_HEIGHT-8 : '3';
+	} else {
+	    *p++ = '-';
+	}
     } else {
 	*p++ = '-';
     }
@@ -13839,3 +14030,110 @@ EditPositionPasteFEN(char *fen)
     }
   }
 }
+
+static char cseq[12] = "\\   ";
+
+Boolean set_cont_sequence(char *new_seq)
+{
+    int len;
+    Boolean ret;
+
+    // handle bad attempts to set the sequence
+	if (!new_seq)
+		return 0; // acceptable error - no debug
+
+    len = strlen(new_seq);
+    ret = (len > 0) && (len < sizeof(cseq));
+    if (ret)
+        strcpy(cseq, new_seq);
+    else if (appData.debugMode)
+        fprintf(debugFP, "Invalid continuation sequence \"%s\"  (maximum length is: %u)\n", new_seq, (unsigned) sizeof(cseq)-1);
+    return ret;
+}
+
+/*
+    reformat a source message so words don't cross the width boundary.  internal
+    newlines are not removed.  returns the wrapped size (no null character unless
+    included in source message).  If dest is NULL, only calculate the size required
+    for the dest buffer.  lp argument indicats line position upon entry, and it's
+    passed back upon exit.
+*/
+int wrap(char *dest, char *src, int count, int width, int *lp)
+{
+    int len, i, ansi, cseq_len, line, old_line, old_i, old_len, clen;
+
+    cseq_len = strlen(cseq);
+    old_line = line = *lp;
+    ansi = len = clen = 0;
+
+    for (i=0; i < count; i++)
+    {
+        if (src[i] == '\033')
+            ansi = 1;
+
+        // if we hit the width, back up
+        if (!ansi && (line >= width) && src[i] != '\n' && src[i] != ' ')
+        {
+            // store i & len in case the word is too long
+            old_i = i, old_len = len;
+
+            // find the end of the last word
+            while (i && src[i] != ' ' && src[i] != '\n')
+            {
+                i--;
+                len--;
+            }
+
+            // word too long?  restore i & len before splitting it
+            if ((old_i-i+clen) >= width)
+            {
+                i = old_i;
+                len = old_len;
+            }
+
+            // extra space?
+            if (i && src[i-1] == ' ')
+                len--;
+
+            if (src[i] != ' ' && src[i] != '\n')
+            {
+                i--;
+                if (len)
+                    len--;
+            }
+
+            // now append the newline and continuation sequence
+            if (dest)
+                dest[len] = '\n';
+            len++;
+            if (dest)
+                strncpy(dest+len, cseq, cseq_len);
+            len += cseq_len;
+            line = cseq_len;
+            clen = cseq_len;
+            continue;
+        }
+
+        if (dest)
+            dest[len] = src[i];
+        len++;
+        if (!ansi)
+            line++;
+        if (src[i] == '\n')
+            line = 0;
+        if (src[i] == 'm')
+            ansi = 0;
+    }
+    if (dest && appData.debugMode)
+    {
+        fprintf(debugFP, "wrap(count:%d,width:%d,line:%d,len:%d,*lp:%d,src: ",
+            count, width, line, len, *lp);
+        show_bytes(debugFP, src, count);
+        fprintf(debugFP, "\ndest: ");
+        show_bytes(debugFP, dest, len);
+        fprintf(debugFP, "\n");
+    }
+    *lp = dest ? line : old_line;
+
+    return len;
+}
diff --git a/backend.h b/backend.h
index f02835f..b44c45a 100644
--- a/backend.h
+++ b/backend.h
@@ -93,7 +93,7 @@
 
 extern int gotPremove;
 extern GameMode gameMode;
-extern int pausing, cmailMsgLoaded, flipView;
+extern int pausing, cmailMsgLoaded, flipView, mute;
 extern char white_holding[], black_holding[];
 extern int currentMove, backwardMostMove, forwardMostMove;
 extern int blackPlaysFirst;
@@ -114,7 +114,7 @@ void SetWhiteToPlayEvent P((void));
 void SetBlackToPlayEvent P((void));
 void InitBackEnd1 P((void));
 void InitBackEnd2 P((void));
-int IsPromotion P((int fromX, int fromY, int toX, int toY));
+int HasPromotionChoice P((int fromX, int fromY, int toX, int toY, char *choice));
 int InPalace P((int row, int column));
 int PieceForSquare P((int x, int y));
 int OKToStartUserMove P((int x, int y));
@@ -167,7 +167,7 @@ void BookEvent P((void));
 void AboutGameEvent P((void));
 void ExitEvent P((int status));
 char *DefaultFileName P((char *));
-ChessMove UserMoveTest P((int fromX, int fromY, int toX, int toY, int promoChar));
+ChessMove UserMoveTest P((int fromX, int fromY, int toX, int toY, int promoChar, Boolean captureOwn));
 void UserMoveEvent P((int fromX, int fromY, int toX, int toY, int promoChar));
 void DecrementClocks P((void));
 char *TimeString P((long millisec));
@@ -189,6 +189,8 @@ void GetMoveListEvent P((void));
 void ExitAnalyzeMode P((void));
 void AnalyzeModeEvent P((void));
 void AnalyzeFileEvent P((void));
+void InitPosition P((int redraw));
+void NewSettingEvent P((int option, char *command, int value));
 void DoEcho P((void));
 void DontEcho P((void));
 void TidyProgramName P((char *prog, char *host, char *buf));
@@ -200,6 +202,8 @@ Boolean ParseOneMove P((char *move, int moveNum,
 char *VariantName P((VariantClass v));
 VariantClass StringToVariant P((char *e));
 double u64ToDouble P((u64 value));
+void OutputChatMessage P((int partner, char *mess));
+
 
 char *StrStr P((char *string, char *match));
 char *StrCaseStr P((char *string, char *match));
@@ -254,8 +258,11 @@ char * GameListLineFull P(( int, GameInfo *));
 
 extern char* StripHighlight P((char *));  /* returns static data */
 extern char* StripHighlightAndTitle P((char *));  /* returns static data */
+extern void ics_update_width P((int new_width));
+extern Boolean set_cont_sequence P((char *new_seq));
+extern int wrap P((char *dest, char *src, int count, int width, int *lp));
 
-typedef enum { CheckBox, ComboBox, TextBox, Button, Spin, 
+typedef enum { CheckBox, ComboBox, TextBox, Button, Spin, ResetButton,
 		   SaveButton, FileName, PathName, Slider, Message } Control;
 
 typedef struct _OPT {   // [HGM] options: descriptor of UCI-style option
diff --git a/backendz.h b/backendz.h
index eb8df7d..51d4780 100644
--- a/backendz.h
+++ b/backendz.h
@@ -64,6 +64,7 @@ extern ProcRef firstProgramPR;
 extern int startedFromSetupPosition;
 extern int firstMove;
 extern GameInfo gameInfo;
+extern void ics_printf P((char *format, ...));
 extern void SendToICS P((char *s));
 extern int looking_at P((char *, int *, char *));
 extern void SendToProgram P((char *message, ChessProgramState *cps));
diff --git a/bitmaps/a49c.bm b/bitmaps/a49c.bm
deleted file mode 100644
index 0c54c34..0000000
--- a/bitmaps/a49c.bm
+++ /dev/null
@@ -1,27 +0,0 @@
-#define a49c_width 49
-#define a49c_height 49
-static unsigned char a49c_bits[] = {
-0x77,0x77,0x77,0x77,0xf7,0xff,0x01,0x77,0x77,0x77,0xf7,0xff,0x7f,0x01,0x77
-,0x77,0x77,0xff,0xff,0x77,0x01,0xf7,0xff,0xff,0xff,0x77,0x77,0x01,0x77,0x77
-,0x77,0x77,0x77,0x77,0x01,0x77,0xff,0xff,0xff,0xff,0xff,0x01,0x77,0x77,0x77
-,0x77,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0xf7,0xff,0x01,0xf7,0x7f,0x77,0x77
-,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0xf7,0xff,0xff,0xff,0x77
-,0x77,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0x77,0x77,0xff,0x77,0x77,0xf7
-,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0x7f,0x77,0x77,0x77,0xf7,0xff,0x01
-,0x7f,0x77,0xf7,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xf7
-,0xff,0xff,0xff,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0xf7,0xff,0x01,0x77,0x77
-,0x77,0xff,0xf7,0x7f,0x01,0x77,0x77,0xf7,0xff,0x77,0x77,0x01,0x77,0x77,0x7f
-,0x77,0xf7,0xff,0x01,0x77,0xf7,0x7f,0x77,0x77,0x77,0x01,0x77,0x77,0x77,0x77
-,0x77,0x77,0x01,0xf7,0xff,0xff,0xff,0x77,0x77,0x01,0xff,0xff,0xff,0xff,0x7f
-,0x77,0x01,0xff,0xff,0x77,0x77,0x77,0x77,0x01,0x77,0x77,0x7f,0x77,0xff,0xff
-,0x01,0xf7,0xff,0x7f,0x77,0xf7,0xff,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01
-,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0xf7,0xff,0xff,0xff,0x77,0x77,0x01,0x77
-,0x77,0x77,0x77,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0x77,0x77
-,0x77,0x77,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0xf7,0xff,0x01,0x77,0x77,0x77
-,0x77,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0xf7,0xff,0xff,0xff
-,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0x77,0x77,0x77,0x77,0x77
-,0x77,0x01,0x77,0x77,0x77,0x77,0x77,0x77,0x01,0xff,0xff,0xff,0xff,0xff,0xff
-,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x01
-,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xff
-,0xff,0xff,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x01
-};
diff --git a/bitmaps/b129o.bm b/bitmaps/b129o.bm
index 6dba2c2..5aee87c 100644
--- a/bitmaps/b129o.bm
+++ b/bitmaps/b129o.bm
@@ -1,5 +1,186 @@
-#define b129o_width -127
-#define b129o_height -127
+#define b129o_width 129
+#define b129o_height 129
 static unsigned char b129o_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xe0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x07, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xe0, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x0f, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
+   0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0xf0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x07, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x80, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00,
+   0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xc0,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x01, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00,
+   0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x80, 0x01, 0x00, 0xc0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
+   0x00, 0xc0, 0x03, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x03, 0x00, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x03, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3e, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x7c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xe0, 0xff, 0xff,
+   0x07, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+   0xe0, 0xff, 0xff, 0x07, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0xc0, 0x03, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x7c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1f, 0xfc, 0xff, 0xff, 0x3f, 0xf8, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x07, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0,
+   0xff, 0xff, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0xfc, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x1f, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0xff, 0x3f, 0x00, 0xfc, 0x07, 0xe0, 0x3f, 0x00, 0xfc, 0xff,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
+   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
+   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc,
+   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0xe0,
+   0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xfc, 0x3f, 0x00, 0x00,
+   0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xf8, 0xc0, 0xff, 0x3f, 0x00,
+   0xf8, 0x3f, 0xfc, 0x1f, 0x00, 0xfc, 0xff, 0x03, 0x1f, 0x00, 0x00, 0x00,
+   0xf0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff,
+   0x1f, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
+   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x07,
+   0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0xf0,
+   0xff, 0x07, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/b129s.bm b/bitmaps/b129s.bm
index a9a797b..df05f20 100644
--- a/bitmaps/b129s.bm
+++ b/bitmaps/b129s.bm
@@ -1,5 +1,186 @@
-#define b129s_width -127
-#define b129s_height -127
+#define b129s_width 129
+#define b129s_height 129
 static unsigned char b129s_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+   0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0xff, 0x7f, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f,
+   0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0xfc, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0x3f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0xfc,
+   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff,
+   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0x0f, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x3f,
+   0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0xfc, 0xff,
+   0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
+   0x3f, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0xfc,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00,
+   0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0xf1, 0xff, 0xff, 0x8f, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
+   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f,
+   0x80, 0xff, 0xff, 0x01, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0x1f, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfe,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x07,
+   0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0xe0,
+   0xff, 0x07, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/bitmaps.h b/bitmaps/bitmaps.h
index c3d87b6..4ce9f4b 100644
--- a/bitmaps/bitmaps.h
+++ b/bitmaps/bitmaps.h
@@ -1,530 +1,530 @@
-/*
- * bitmaps.h - Include bitmap files for pieces and icons
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts.
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-// [HGM] Note: the bitmaps for Shogi promoted pieces are #included, but not referred to in the list bitmapBits.
-//       The front-end would have to substitutes them for some listed pieces, in variant shogi.
-//       It would also have to replace the Queen bitmap with that of the Lance.
-//       The Japanese-style Shogi symbols for size 58 are not included at all. To have those
-//       you would have to convert the WinBoard .bmp files in the shogibitmaps folder with convert.c
-
-
-#include "p129s.bm"
-#include "n129s.bm"
-#include "b129s.bm"
-#include "r129s.bm"
-#include "q129s.bm"
-#include "k129s.bm"
-
-#include "p129o.bm"
-#include "n129o.bm"
-#include "b129o.bm"
-#include "r129o.bm"
-#include "q129o.bm"
-#include "k129o.bm"
-
-#include "p116s.bm"
-#include "n116s.bm"
-#include "b116s.bm"
-#include "r116s.bm"
-#include "q116s.bm"
-#include "k116s.bm"
-
-#include "p116o.bm"
-#include "n116o.bm"
-#include "b116o.bm"
-#include "r116o.bm"
-#include "q116o.bm"
-#include "k116o.bm"
-
-#include "p108s.bm"
-#include "n108s.bm"
-#include "b108s.bm"
-#include "r108s.bm"
-#include "q108s.bm"
-#include "k108s.bm"
-
-#include "p108o.bm"
-#include "n108o.bm"
-#include "b108o.bm"
-#include "r108o.bm"
-#include "q108o.bm"
-#include "k108o.bm"
-
-#include "p95s.bm"
-#include "n95s.bm"
-#include "b95s.bm"
-#include "r95s.bm"
-#include "q95s.bm"
-#include "k95s.bm"
-
-#include "p95o.bm"
-#include "n95o.bm"
-#include "b95o.bm"
-#include "r95o.bm"
-#include "q95o.bm"
-#include "k95o.bm"
-
-#include "p87s.bm"
-#include "n87s.bm"
-#include "b87s.bm"
-#include "r87s.bm"
-#include "q87s.bm"
-#include "k87s.bm"
-
-#include "p87o.bm"
-#include "n87o.bm"
-#include "b87o.bm"
-#include "r87o.bm"
-#include "q87o.bm"
-#include "k87o.bm"
-
-#include "p80s.bm"
-#include "n80s.bm"
-#include "b80s.bm"
-#include "r80s.bm"
-#include "q80s.bm"
-#include "k80s.bm"
-
-#include "p80o.bm"
-#include "n80o.bm"
-#include "b80o.bm"
-#include "r80o.bm"
-#include "q80o.bm"
-#include "k80o.bm"
-
-#include "p72s.bm"
-#include "n72s.bm"
-#include "b72s.bm"
-#include "r72s.bm"
-#include "q72s.bm"
-#include "f72s.bm"
-#include "e72s.bm"
-#include "a72s.bm"
-#include "c72s.bm"
-#include "w72s.bm"
-#include "m72s.bm"
-#include "o72s.bm"
-#include "h72s.bm"
-#include "i72s.bm"
-#include "j72s.bm"
-#include "g72s.bm"
-#include "d72s.bm"
-#include "v72s.bm"
-#include "l72s.bm"
-#include "s72s.bm"
-#include "u72s.bm"
-#include "k72s.bm"
-#include "wp72s.bm"
-#include "wl72s.bm"
-#include "wn72s.bm"
-#include "ws72s.bm"
-
-#include "p72o.bm"
-#include "n72o.bm"
-#include "b72o.bm"
-#include "r72o.bm"
-#include "q72o.bm"
-#include "f72o.bm"
-#include "e72o.bm"
-#include "a72o.bm"
-#include "c72o.bm"
-#include "w72o.bm"
-#include "m72o.bm"
-#include "o72o.bm"
-#include "h72o.bm"
-#include "i72o.bm"
-#include "j72o.bm"
-#include "g72o.bm"
-#include "d72o.bm"
-#include "v72o.bm"
-#include "l72o.bm"
-#include "s72o.bm"
-#include "u72o.bm"
-#include "k72o.bm"
-#include "wp72o.bm"
-#include "wl72o.bm"
-#include "wn72o.bm"
-#include "ws72o.bm"
-
-#include "p64s.bm"
-#include "n64s.bm"
-#include "b64s.bm"
-#include "r64s.bm"
-#include "q64s.bm"
-#include "a64s.bm"
-#include "c64s.bm"
-#include "d64s.bm"
-#include "l64s.bm"
-#include "k64s.bm"
-
-#include "p64o.bm"
-#include "n64o.bm"
-#include "b64o.bm"
-#include "r64o.bm"
-#include "q64o.bm"
-#include "a64o.bm"
-#include "c64o.bm"
-#include "d64o.bm"
-#include "l64o.bm"
-#include "k64o.bm"
-
-#include "p58s.bm"
-#include "n58s.bm"
-#include "b58s.bm"
-#include "r58s.bm"
-#include "q58s.bm"
-#include "a58s.bm"
-#include "c58s.bm"
-#include "d58s.bm"
-#include "l58s.bm"
-#include "k58s.bm"
-
-#include "p58o.bm"
-#include "n58o.bm"
-#include "b58o.bm"
-#include "r58o.bm"
-#include "q58o.bm"
-#include "a58o.bm"
-#include "c58o.bm"
-#include "d58o.bm"
-#include "l58o.bm"
-#include "k58o.bm"
-
-#include "p54s.bm"
-#include "n54s.bm"
-#include "b54s.bm"
-#include "r54s.bm"
-#include "q54s.bm"
-#include "a54s.bm"
-#include "c54s.bm"
-#include "d54s.bm"
-#include "l54s.bm"
-#include "k54s.bm"
-
-#include "p54o.bm"
-#include "n54o.bm"
-#include "b54o.bm"
-#include "r54o.bm"
-#include "q54o.bm"
-#include "a54o.bm"
-#include "c54o.bm"
-#include "d54o.bm"
-#include "l54o.bm"
-#include "k54o.bm"
-
-#include "p49s.bm"
-#include "n49s.bm"
-#include "b49s.bm"
-#include "r49s.bm"
-#include "q49s.bm"
-#include "f49s.bm"
-#include "e49s.bm"
-#include "a49s.bm"
-#include "c49s.bm"
-#include "w49s.bm"
-#include "m49s.bm"
-#include "o49s.bm"
-#include "h49s.bm"
-#include "i49s.bm"
-#include "j49s.bm"
-#include "g49s.bm"
-#include "d49s.bm"
-#include "v49s.bm"
-#include "l49s.bm"
-#include "s49s.bm"
-#include "u49s.bm"
-#include "k49s.bm"
-#include "wp49s.bm"
-#include "wl49s.bm"
-#include "wn49s.bm"
-#include "ws49s.bm"
-
-#include "p49o.bm"
-#include "n49o.bm"
-#include "b49o.bm"
-#include "r49o.bm"
-#include "q49o.bm"
-#include "f49o.bm"
-#include "e49o.bm"
-#include "a49o.bm"
-#include "c49o.bm"
-#include "w49o.bm"
-#include "m49o.bm"
-#include "o49o.bm"
-#include "h49o.bm"
-#include "i49o.bm"
-#include "j49o.bm"
-#include "g49o.bm"
-#include "d49o.bm"
-#include "v49o.bm"
-#include "l49o.bm"
-#include "s49o.bm"
-#include "u49o.bm"
-#include "k49o.bm"
-#include "wp49o.bm"
-#include "wl49o.bm"
-#include "wn49o.bm"
-#include "ws49o.bm"
-
-#include "p45s.bm"
-#include "n45s.bm"
-#include "b45s.bm"
-#include "r45s.bm"
-#include "q45s.bm"
-#include "a45s.bm"
-#include "c45s.bm"
-#include "d45s.bm"
-#include "l45s.bm"
-#include "k45s.bm"
-
-#include "p45o.bm"
-#include "n45o.bm"
-#include "b45o.bm"
-#include "r45o.bm"
-#include "q45o.bm"
-#include "a45o.bm"
-#include "c45o.bm"
-#include "d45o.bm"
-#include "l45o.bm"
-#include "k45o.bm"
-
-#include "p40s.bm"
-#include "n40s.bm"
-#include "b40s.bm"
-#include "r40s.bm"
-#include "q40s.bm"
-#include "a40s.bm"
-#include "c40s.bm"
-#include "d40s.bm"
-#include "l40s.bm"
-#include "k40s.bm"
-
-#include "p40o.bm"
-#include "n40o.bm"
-#include "b40o.bm"
-#include "r40o.bm"
-#include "q40o.bm"
-#include "a40o.bm"
-#include "c40o.bm"
-#include "d40o.bm"
-#include "l40o.bm"
-#include "k40o.bm"
-
-#include "p37s.bm"
-#include "n37s.bm"
-#include "b37s.bm"
-#include "r37s.bm"
-#include "q37s.bm"
-#include "a37s.bm"
-#include "c37s.bm"
-#include "d37s.bm"
-#include "l37s.bm"
-#include "k37s.bm"
-
-#include "p37o.bm"
-#include "n37o.bm"
-#include "b37o.bm"
-#include "r37o.bm"
-#include "q37o.bm"
-#include "a37o.bm"
-#include "c37o.bm"
-#include "d37o.bm"
-#include "l37o.bm"
-#include "k37o.bm"
-
-#include "p33s.bm"
-#include "n33s.bm"
-#include "b33s.bm"
-#include "r33s.bm"
-#include "q33s.bm"
-#include "f33s.bm"
-#include "e33s.bm"
-#include "a33s.bm"
-#include "c33s.bm"
-#include "w33s.bm"
-#include "m33s.bm"
-#include "o33s.bm"
-#include "h33s.bm"
-#include "i33s.bm"
-#include "j33s.bm"
-#include "g33s.bm"
-#include "d33s.bm"
-#include "l33s.bm"
-#include "k33s.bm"
-
-#include "p33o.bm"
-#include "n33o.bm"
-#include "b33o.bm"
-#include "r33o.bm"
-#include "q33o.bm"
-#include "f33o.bm"
-#include "e33o.bm"
-#include "a33o.bm"
-#include "c33o.bm"
-#include "w33o.bm"
-#include "m33o.bm"
-#include "o33o.bm"
-#include "h33o.bm"
-#include "i33o.bm"
-#include "j33o.bm"
-#include "g33o.bm"
-#include "d33o.bm"
-#include "l33o.bm"
-#include "k33o.bm"
-
-#include "p29s.bm"
-#include "n29s.bm"
-#include "b29s.bm"
-#include "r29s.bm"
-#include "q29s.bm"
-#include "k29s.bm"
-
-#include "p29o.bm"
-#include "n29o.bm"
-#include "b29o.bm"
-#include "r29o.bm"
-#include "q29o.bm"
-#include "k29o.bm"
-
-#include "p25s.bm"
-#include "n25s.bm"
-#include "b25s.bm"
-#include "r25s.bm"
-#include "q25s.bm"
-#include "k25s.bm"
-
-#include "p25o.bm"
-#include "n25o.bm"
-#include "b25o.bm"
-#include "r25o.bm"
-#include "q25o.bm"
-#include "k25o.bm"
-
-#include "p21s.bm"
-#include "n21s.bm"
-#include "b21s.bm"
-#include "r21s.bm"
-#include "q21s.bm"
-#include "k21s.bm"
-
-#include "p21o.bm"
-#include "n21o.bm"
-#include "b21o.bm"
-#include "r21o.bm"
-#include "q21o.bm"
-#include "k21o.bm"
-
-typedef struct {
-    int squareSize;
-    unsigned char *bits[2][(int)BlackPawn+4];
-} BuiltInBits;
-
-BuiltInBits builtInBits[] = {\
-{ 129,\
-  { { p129s_bits, n129s_bits, b129s_bits, r129s_bits, q129s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k129s_bits, NULL, NULL, NULL, NULL },\
-    { p129o_bits, n129o_bits, b129o_bits, r129o_bits, q129o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k129o_bits, NULL, NULL, NULL, NULL } } },\
-{ 116,\
-  { { p116s_bits, n116s_bits, b116s_bits, r116s_bits, q116s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k116s_bits, NULL, NULL, NULL, NULL },\
-    { p116o_bits, n116o_bits, b116o_bits, r116o_bits, q116o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k116o_bits, NULL, NULL, NULL, NULL } } },\
-{ 108,\
-  { { p108s_bits, n108s_bits, b108s_bits, r108s_bits, q108s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k108s_bits, NULL, NULL, NULL, NULL },\
-    { p108o_bits, n108o_bits, b108o_bits, r108o_bits, q108o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k108o_bits, NULL, NULL, NULL, NULL } } },\
-{ 95,\
-  { { p95s_bits, n95s_bits, b95s_bits, r95s_bits, q95s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k95s_bits, NULL, NULL, NULL, NULL },\
-    { p95o_bits, n95o_bits, b95o_bits, r95o_bits, q95o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k95o_bits, NULL, NULL, NULL, NULL } } },\
-{ 87,\
-  { { p87s_bits, n87s_bits, b87s_bits, r87s_bits, q87s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k87s_bits, NULL, NULL, NULL, NULL },\
-    { p87o_bits, n87o_bits, b87o_bits, r87o_bits, q87o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k87o_bits, NULL, NULL, NULL, NULL } } },\
-{ 80,\
-  { { p80s_bits, n80s_bits, b80s_bits, r80s_bits, q80s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k80s_bits, NULL, NULL, NULL, NULL },\
-    { p80o_bits, n80o_bits, b80o_bits, r80o_bits, q80o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k80o_bits }, NULL, NULL, NULL, NULL } },\
-{ 72,\
-  { { p72s_bits, n72s_bits, b72s_bits, r72s_bits, q72s_bits, f72s_bits, e72s_bits, a72s_bits, c72s_bits, w72s_bits, m72s_bits, o72s_bits, h72s_bits, i72s_bits, j72s_bits, g72s_bits, d72s_bits, v72s_bits, l72s_bits, s72s_bits, u72s_bits, k72s_bits, wp_72s_bits, wn_72s_bits, ws_72s_bits, wl_72s_bits },\
-    { p72o_bits, n72o_bits, b72o_bits, r72o_bits, q72o_bits, f72o_bits, e72o_bits, a72o_bits, c72o_bits, w72o_bits, m72o_bits, o72o_bits, h72o_bits, i72o_bits, j72o_bits, g72o_bits, d72o_bits, v72o_bits, l72o_bits, s72o_bits, u72o_bits, k72o_bits, wp_72o_bits, wn_72o_bits, ws_72o_bits, wl_72o_bits } } },\
-{ 64,\
-  { { p64s_bits, n64s_bits, b64s_bits, r64s_bits, q64s_bits, l64s_bits, l64s_bits, a64s_bits, c64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, d64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, k64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits },\
-    { p64o_bits, n64o_bits, b64o_bits, r64o_bits, q64o_bits, l64o_bits, l64o_bits, a64o_bits, c64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, d64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, k64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits } } },\
-{ 58,\
-  { { p58s_bits, n58s_bits, b58s_bits, r58s_bits, q58s_bits, l58s_bits, l58s_bits, a58s_bits, c58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, d58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, k58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits },\
-    { p58o_bits, n58o_bits, b58o_bits, r58o_bits, q58o_bits, l58o_bits, l58o_bits, a58o_bits, c58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, d58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, k58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits } } },\
-{ 54,\
-  { { p54s_bits, n54s_bits, b54s_bits, r54s_bits, q54s_bits, l54s_bits, l54s_bits, a54s_bits, c54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, d54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, k54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits },\
-    { p54o_bits, n54o_bits, b54o_bits, r54o_bits, q54o_bits, l54o_bits, l54o_bits, a54o_bits, c54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, d54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, k54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits } } },\
-{ 49,\
-  { { p49s_bits, n49s_bits, b49s_bits, r49s_bits, q49s_bits, f49s_bits, e49s_bits, a49s_bits, c49s_bits, w49s_bits, m49s_bits, o49s_bits, h49s_bits, i49s_bits, j49s_bits, g49s_bits, d49s_bits, v49s_bits, l49s_bits, s49s_bits, u49s_bits, k49s_bits, wp49s_bits, wn49s_bits, ws49s_bits, wl49s_bits },\
-    { p49o_bits, n49o_bits, b49o_bits, r49o_bits, q49o_bits, f49o_bits, e49o_bits, a49o_bits, c49o_bits, w49o_bits, m49o_bits, o49o_bits, h49o_bits, i49s_bits, j49o_bits, g49o_bits, d49o_bits, v49o_bits, l49o_bits, s49o_bits, u49o_bits, k49o_bits, wp49o_bits, wn49o_bits, ws49o_bits, wl49o_bits } } },\
-{ 45,\
-  { { p45s_bits, n45s_bits, b45s_bits, r45s_bits, q45s_bits, l45s_bits, l45s_bits, a45s_bits, c45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, d45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, k45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits },\
-    { p45o_bits, n45o_bits, b45o_bits, r45o_bits, q45o_bits, l45o_bits, l45o_bits, a45o_bits, c45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, d45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, k45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits } } },\
-{ 40,\
-  { { p40s_bits, n40s_bits, b40s_bits, r40s_bits, q40s_bits, l40s_bits, l40s_bits, a40s_bits, c40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, d40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, k40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits },\
-    { p40o_bits, n40o_bits, b40o_bits, r40o_bits, q40o_bits, l40o_bits, l40o_bits, a40o_bits, c40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, d40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, k40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits } } },\
-{ 37,\
-  { { p37s_bits, n37s_bits, b37s_bits, r37s_bits, q37s_bits, l37s_bits, l37s_bits, a37s_bits, c37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, d37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, k37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits },\
-    { p37o_bits, n37o_bits, b37o_bits, r37o_bits, q37o_bits, l37o_bits, l37o_bits, a37o_bits, c37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, d37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, k37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits } } },\
-{ 33,\
-  { { p33s_bits, n33s_bits, b33s_bits, r33s_bits, q33s_bits, f33s_bits, e33s_bits, a33s_bits, c33s_bits, w33s_bits, m33s_bits, o33s_bits, h33s_bits, a33s_bits, j33s_bits, g33s_bits, d33s_bits, l33s_bits, d33s_bits, l33s_bits, l33s_bits, k33s_bits, l33s_bits, l33s_bits, l33s_bits, l33s_bits },\
-    { p33o_bits, n33o_bits, b33o_bits, r33o_bits, q33o_bits, f33o_bits, e33o_bits, a33o_bits, c33o_bits, w33o_bits, m33o_bits, o33o_bits, h33o_bits, a33o_bits, j33o_bits, g33o_bits, d33o_bits, l33o_bits, d33o_bits, l33o_bits, l33o_bits, k33o_bits, l33o_bits, l33o_bits, l33o_bits, l33o_bits } } },\
-{ 29,\
-  { { p29s_bits, n29s_bits, b29s_bits, r29s_bits, q29s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k29s_bits, NULL, NULL, NULL, NULL },\
-    { p29o_bits, n29o_bits, b29o_bits, r29o_bits, q29o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k29o_bits, NULL, NULL, NULL, NULL } } },\
-{ 25,\
-  { { p25s_bits, n25s_bits, b25s_bits, r25s_bits, q25s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k25s_bits, NULL, NULL, NULL, NULL },\
-    { p25o_bits, n25o_bits, b25o_bits, r25o_bits, q25o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k25o_bits, NULL, NULL, NULL, NULL } } },\
-{ 21,\
-  { { p21s_bits, n21s_bits, b21s_bits, r21s_bits, q21s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k21s_bits, NULL, NULL, NULL, NULL },\
-    { p21o_bits, n21o_bits, b21o_bits, r21o_bits, q21o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k21o_bits, NULL, NULL, NULL, NULL } } },\
-{ 0,\
-  { { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },\
-    { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } } }\
-};
-
-
+/*
+ * bitmaps.h - Include bitmap files for pieces and icons
+ *
+ * Copyright 1991 by Digital Equipment Corporation, Maynard,
+ * Massachusetts.
+ *
+ * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
+ * 2007, 2008, 2009 Free Software Foundation, Inc.
+ *
+ * The following terms apply to Digital Equipment Corporation's copyright
+ * interest in XBoard:
+ * ------------------------------------------------------------------------
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Digital not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * ------------------------------------------------------------------------
+ *
+ * The following terms apply to the enhanced version of XBoard
+ * distributed by the Free Software Foundation:
+ * ------------------------------------------------------------------------
+ *
+ * GNU XBoard is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * GNU XBoard is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see http://www.gnu.org/licenses/.  *
+ *
+ *------------------------------------------------------------------------
+ ** See the file ChangeLog for a revision history.  */
+
+// [HGM] Note: the bitmaps for Shogi promoted pieces are #included, but not referred to in the list bitmapBits.
+//       The front-end would have to substitutes them for some listed pieces, in variant shogi.
+//       It would also have to replace the Queen bitmap with that of the Lance.
+//       The Japanese-style Shogi symbols for size 58 are not included at all. To have those
+//       you would have to convert the WinBoard .bmp files in the shogibitmaps folder with convert.c
+
+
+#include "p129s.bm"
+#include "n129s.bm"
+#include "b129s.bm"
+#include "r129s.bm"
+#include "q129s.bm"
+#include "k129s.bm"
+
+#include "p129o.bm"
+#include "n129o.bm"
+#include "b129o.bm"
+#include "r129o.bm"
+#include "q129o.bm"
+#include "k129o.bm"
+
+#include "p116s.bm"
+#include "n116s.bm"
+#include "b116s.bm"
+#include "r116s.bm"
+#include "q116s.bm"
+#include "k116s.bm"
+
+#include "p116o.bm"
+#include "n116o.bm"
+#include "b116o.bm"
+#include "r116o.bm"
+#include "q116o.bm"
+#include "k116o.bm"
+
+#include "p108s.bm"
+#include "n108s.bm"
+#include "b108s.bm"
+#include "r108s.bm"
+#include "q108s.bm"
+#include "k108s.bm"
+
+#include "p108o.bm"
+#include "n108o.bm"
+#include "b108o.bm"
+#include "r108o.bm"
+#include "q108o.bm"
+#include "k108o.bm"
+
+#include "p95s.bm"
+#include "n95s.bm"
+#include "b95s.bm"
+#include "r95s.bm"
+#include "q95s.bm"
+#include "k95s.bm"
+
+#include "p95o.bm"
+#include "n95o.bm"
+#include "b95o.bm"
+#include "r95o.bm"
+#include "q95o.bm"
+#include "k95o.bm"
+
+#include "p87s.bm"
+#include "n87s.bm"
+#include "b87s.bm"
+#include "r87s.bm"
+#include "q87s.bm"
+#include "k87s.bm"
+
+#include "p87o.bm"
+#include "n87o.bm"
+#include "b87o.bm"
+#include "r87o.bm"
+#include "q87o.bm"
+#include "k87o.bm"
+
+#include "p80s.bm"
+#include "n80s.bm"
+#include "b80s.bm"
+#include "r80s.bm"
+#include "q80s.bm"
+#include "k80s.bm"
+
+#include "p80o.bm"
+#include "n80o.bm"
+#include "b80o.bm"
+#include "r80o.bm"
+#include "q80o.bm"
+#include "k80o.bm"
+
+#include "p72s.bm"
+#include "n72s.bm"
+#include "b72s.bm"
+#include "r72s.bm"
+#include "q72s.bm"
+#include "f72s.bm"
+#include "e72s.bm"
+#include "a72s.bm"
+#include "c72s.bm"
+#include "w72s.bm"
+#include "m72s.bm"
+#include "o72s.bm"
+#include "h72s.bm"
+#include "i72s.bm"
+#include "j72s.bm"
+#include "g72s.bm"
+#include "d72s.bm"
+#include "v72s.bm"
+#include "l72s.bm"
+#include "s72s.bm"
+#include "u72s.bm"
+#include "k72s.bm"
+#include "wp72s.bm"
+#include "wl72s.bm"
+#include "wn72s.bm"
+#include "ws72s.bm"
+
+#include "p72o.bm"
+#include "n72o.bm"
+#include "b72o.bm"
+#include "r72o.bm"
+#include "q72o.bm"
+#include "f72o.bm"
+#include "e72o.bm"
+#include "a72o.bm"
+#include "c72o.bm"
+#include "w72o.bm"
+#include "m72o.bm"
+#include "o72o.bm"
+#include "h72o.bm"
+#include "i72o.bm"
+#include "j72o.bm"
+#include "g72o.bm"
+#include "d72o.bm"
+#include "v72o.bm"
+#include "l72o.bm"
+#include "s72o.bm"
+#include "u72o.bm"
+#include "k72o.bm"
+#include "wp72o.bm"
+#include "wl72o.bm"
+#include "wn72o.bm"
+#include "ws72o.bm"
+
+#include "p64s.bm"
+#include "n64s.bm"
+#include "b64s.bm"
+#include "r64s.bm"
+#include "q64s.bm"
+#include "a64s.bm"
+#include "c64s.bm"
+#include "d64s.bm"
+#include "l64s.bm"
+#include "k64s.bm"
+
+#include "p64o.bm"
+#include "n64o.bm"
+#include "b64o.bm"
+#include "r64o.bm"
+#include "q64o.bm"
+#include "a64o.bm"
+#include "c64o.bm"
+#include "d64o.bm"
+#include "l64o.bm"
+#include "k64o.bm"
+
+#include "p58s.bm"
+#include "n58s.bm"
+#include "b58s.bm"
+#include "r58s.bm"
+#include "q58s.bm"
+#include "a58s.bm"
+#include "c58s.bm"
+#include "d58s.bm"
+#include "l58s.bm"
+#include "k58s.bm"
+
+#include "p58o.bm"
+#include "n58o.bm"
+#include "b58o.bm"
+#include "r58o.bm"
+#include "q58o.bm"
+#include "a58o.bm"
+#include "c58o.bm"
+#include "d58o.bm"
+#include "l58o.bm"
+#include "k58o.bm"
+
+#include "p54s.bm"
+#include "n54s.bm"
+#include "b54s.bm"
+#include "r54s.bm"
+#include "q54s.bm"
+#include "a54s.bm"
+#include "c54s.bm"
+#include "d54s.bm"
+#include "l54s.bm"
+#include "k54s.bm"
+
+#include "p54o.bm"
+#include "n54o.bm"
+#include "b54o.bm"
+#include "r54o.bm"
+#include "q54o.bm"
+#include "a54o.bm"
+#include "c54o.bm"
+#include "d54o.bm"
+#include "l54o.bm"
+#include "k54o.bm"
+
+#include "p49s.bm"
+#include "n49s.bm"
+#include "b49s.bm"
+#include "r49s.bm"
+#include "q49s.bm"
+#include "f49s.bm"
+#include "e49s.bm"
+#include "a49s.bm"
+#include "c49s.bm"
+#include "w49s.bm"
+#include "m49s.bm"
+#include "o49s.bm"
+#include "h49s.bm"
+#include "i49s.bm"
+#include "j49s.bm"
+#include "g49s.bm"
+#include "d49s.bm"
+#include "v49s.bm"
+#include "l49s.bm"
+#include "s49s.bm"
+#include "u49s.bm"
+#include "k49s.bm"
+#include "wp49s.bm"
+#include "wl49s.bm"
+#include "wn49s.bm"
+#include "ws49s.bm"
+
+#include "p49o.bm"
+#include "n49o.bm"
+#include "b49o.bm"
+#include "r49o.bm"
+#include "q49o.bm"
+#include "f49o.bm"
+#include "e49o.bm"
+#include "a49o.bm"
+#include "c49o.bm"
+#include "w49o.bm"
+#include "m49o.bm"
+#include "o49o.bm"
+#include "h49o.bm"
+#include "i49o.bm"
+#include "j49o.bm"
+#include "g49o.bm"
+#include "d49o.bm"
+#include "v49o.bm"
+#include "l49o.bm"
+#include "s49o.bm"
+#include "u49o.bm"
+#include "k49o.bm"
+#include "wp49o.bm"
+#include "wl49o.bm"
+#include "wn49o.bm"
+#include "ws49o.bm"
+
+#include "p45s.bm"
+#include "n45s.bm"
+#include "b45s.bm"
+#include "r45s.bm"
+#include "q45s.bm"
+#include "a45s.bm"
+#include "c45s.bm"
+#include "d45s.bm"
+#include "l45s.bm"
+#include "k45s.bm"
+
+#include "p45o.bm"
+#include "n45o.bm"
+#include "b45o.bm"
+#include "r45o.bm"
+#include "q45o.bm"
+#include "a45o.bm"
+#include "c45o.bm"
+#include "d45o.bm"
+#include "l45o.bm"
+#include "k45o.bm"
+
+#include "p40s.bm"
+#include "n40s.bm"
+#include "b40s.bm"
+#include "r40s.bm"
+#include "q40s.bm"
+#include "a40s.bm"
+#include "c40s.bm"
+#include "d40s.bm"
+#include "l40s.bm"
+#include "k40s.bm"
+
+#include "p40o.bm"
+#include "n40o.bm"
+#include "b40o.bm"
+#include "r40o.bm"
+#include "q40o.bm"
+#include "a40o.bm"
+#include "c40o.bm"
+#include "d40o.bm"
+#include "l40o.bm"
+#include "k40o.bm"
+
+#include "p37s.bm"
+#include "n37s.bm"
+#include "b37s.bm"
+#include "r37s.bm"
+#include "q37s.bm"
+#include "a37s.bm"
+#include "c37s.bm"
+#include "d37s.bm"
+#include "l37s.bm"
+#include "k37s.bm"
+
+#include "p37o.bm"
+#include "n37o.bm"
+#include "b37o.bm"
+#include "r37o.bm"
+#include "q37o.bm"
+#include "a37o.bm"
+#include "c37o.bm"
+#include "d37o.bm"
+#include "l37o.bm"
+#include "k37o.bm"
+
+#include "p33s.bm"
+#include "n33s.bm"
+#include "b33s.bm"
+#include "r33s.bm"
+#include "q33s.bm"
+#include "f33s.bm"
+#include "e33s.bm"
+#include "a33s.bm"
+#include "c33s.bm"
+#include "w33s.bm"
+#include "m33s.bm"
+#include "o33s.bm"
+#include "h33s.bm"
+#include "i33s.bm"
+#include "j33s.bm"
+#include "g33s.bm"
+#include "d33s.bm"
+#include "l33s.bm"
+#include "k33s.bm"
+
+#include "p33o.bm"
+#include "n33o.bm"
+#include "b33o.bm"
+#include "r33o.bm"
+#include "q33o.bm"
+#include "f33o.bm"
+#include "e33o.bm"
+#include "a33o.bm"
+#include "c33o.bm"
+#include "w33o.bm"
+#include "m33o.bm"
+#include "o33o.bm"
+#include "h33o.bm"
+#include "i33o.bm"
+#include "j33o.bm"
+#include "g33o.bm"
+#include "d33o.bm"
+#include "l33o.bm"
+#include "k33o.bm"
+
+#include "p29s.bm"
+#include "n29s.bm"
+#include "b29s.bm"
+#include "r29s.bm"
+#include "q29s.bm"
+#include "k29s.bm"
+
+#include "p29o.bm"
+#include "n29o.bm"
+#include "b29o.bm"
+#include "r29o.bm"
+#include "q29o.bm"
+#include "k29o.bm"
+
+#include "p25s.bm"
+#include "n25s.bm"
+#include "b25s.bm"
+#include "r25s.bm"
+#include "q25s.bm"
+#include "k25s.bm"
+
+#include "p25o.bm"
+#include "n25o.bm"
+#include "b25o.bm"
+#include "r25o.bm"
+#include "q25o.bm"
+#include "k25o.bm"
+
+#include "p21s.bm"
+#include "n21s.bm"
+#include "b21s.bm"
+#include "r21s.bm"
+#include "q21s.bm"
+#include "k21s.bm"
+
+#include "p21o.bm"
+#include "n21o.bm"
+#include "b21o.bm"
+#include "r21o.bm"
+#include "q21o.bm"
+#include "k21o.bm"
+
+typedef struct {
+    int squareSize;
+    unsigned char *bits[2][(int)BlackPawn+4];
+} BuiltInBits;
+
+BuiltInBits builtInBits[] = {\
+{ 129,\
+  { { p129s_bits, n129s_bits, b129s_bits, r129s_bits, q129s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k129s_bits, NULL, NULL, NULL, NULL },\
+    { p129o_bits, n129o_bits, b129o_bits, r129o_bits, q129o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k129o_bits, NULL, NULL, NULL, NULL } } },\
+{ 116,\
+  { { p116s_bits, n116s_bits, b116s_bits, r116s_bits, q116s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k116s_bits, NULL, NULL, NULL, NULL },\
+    { p116o_bits, n116o_bits, b116o_bits, r116o_bits, q116o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k116o_bits, NULL, NULL, NULL, NULL } } },\
+{ 108,\
+  { { p108s_bits, n108s_bits, b108s_bits, r108s_bits, q108s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k108s_bits, NULL, NULL, NULL, NULL },\
+    { p108o_bits, n108o_bits, b108o_bits, r108o_bits, q108o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k108o_bits, NULL, NULL, NULL, NULL } } },\
+{ 95,\
+  { { p95s_bits, n95s_bits, b95s_bits, r95s_bits, q95s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k95s_bits, NULL, NULL, NULL, NULL },\
+    { p95o_bits, n95o_bits, b95o_bits, r95o_bits, q95o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k95o_bits, NULL, NULL, NULL, NULL } } },\
+{ 87,\
+  { { p87s_bits, n87s_bits, b87s_bits, r87s_bits, q87s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k87s_bits, NULL, NULL, NULL, NULL },\
+    { p87o_bits, n87o_bits, b87o_bits, r87o_bits, q87o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k87o_bits, NULL, NULL, NULL, NULL } } },\
+{ 80,\
+  { { p80s_bits, n80s_bits, b80s_bits, r80s_bits, q80s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k80s_bits, NULL, NULL, NULL, NULL },\
+    { p80o_bits, n80o_bits, b80o_bits, r80o_bits, q80o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k80o_bits }, NULL, NULL, NULL, NULL } },\
+{ 72,\
+  { { p72s_bits, n72s_bits, b72s_bits, r72s_bits, q72s_bits, f72s_bits, e72s_bits, a72s_bits, c72s_bits, w72s_bits, m72s_bits, o72s_bits, h72s_bits, i72s_bits, j72s_bits, g72s_bits, d72s_bits, v72s_bits, l72s_bits, s72s_bits, u72s_bits, k72s_bits, wp72s_bits, wn72s_bits, ws72s_bits, wl72s_bits },\
+    { p72o_bits, n72o_bits, b72o_bits, r72o_bits, q72o_bits, f72o_bits, e72o_bits, a72o_bits, c72o_bits, w72o_bits, m72o_bits, o72o_bits, h72o_bits, i72o_bits, j72o_bits, g72o_bits, d72o_bits, v72o_bits, l72o_bits, s72o_bits, u72o_bits, k72o_bits, wp72o_bits, wn72o_bits, ws72o_bits, wl72o_bits } } },\
+{ 64,\
+  { { p64s_bits, n64s_bits, b64s_bits, r64s_bits, q64s_bits, l64s_bits, l64s_bits, a64s_bits, c64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, d64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, k64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits },\
+    { p64o_bits, n64o_bits, b64o_bits, r64o_bits, q64o_bits, l64o_bits, l64o_bits, a64o_bits, c64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, d64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, k64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits } } },\
+{ 58,\
+  { { p58s_bits, n58s_bits, b58s_bits, r58s_bits, q58s_bits, l58s_bits, l58s_bits, a58s_bits, c58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, d58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, k58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits },\
+    { p58o_bits, n58o_bits, b58o_bits, r58o_bits, q58o_bits, l58o_bits, l58o_bits, a58o_bits, c58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, d58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, k58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits } } },\
+{ 54,\
+  { { p54s_bits, n54s_bits, b54s_bits, r54s_bits, q54s_bits, l54s_bits, l54s_bits, a54s_bits, c54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, d54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, k54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits },\
+    { p54o_bits, n54o_bits, b54o_bits, r54o_bits, q54o_bits, l54o_bits, l54o_bits, a54o_bits, c54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, d54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, k54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits } } },\
+{ 49,\
+  { { p49s_bits, n49s_bits, b49s_bits, r49s_bits, q49s_bits, f49s_bits, e49s_bits, a49s_bits, c49s_bits, w49s_bits, m49s_bits, o49s_bits, h49s_bits, i49s_bits, j49s_bits, g49s_bits, d49s_bits, v49s_bits, l49s_bits, s49s_bits, u49s_bits, k49s_bits, wp49s_bits, wn49s_bits, ws49s_bits, wl49s_bits },\
+    { p49o_bits, n49o_bits, b49o_bits, r49o_bits, q49o_bits, f49o_bits, e49o_bits, a49o_bits, c49o_bits, w49o_bits, m49o_bits, o49o_bits, h49o_bits, i49s_bits, j49o_bits, g49o_bits, d49o_bits, v49o_bits, l49o_bits, s49o_bits, u49o_bits, k49o_bits, wp49o_bits, wn49o_bits, ws49o_bits, wl49o_bits } } },\
+{ 45,\
+  { { p45s_bits, n45s_bits, b45s_bits, r45s_bits, q45s_bits, l45s_bits, l45s_bits, a45s_bits, c45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, d45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, k45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits },\
+    { p45o_bits, n45o_bits, b45o_bits, r45o_bits, q45o_bits, l45o_bits, l45o_bits, a45o_bits, c45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, d45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, k45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits } } },\
+{ 40,\
+  { { p40s_bits, n40s_bits, b40s_bits, r40s_bits, q40s_bits, l40s_bits, l40s_bits, a40s_bits, c40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, d40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, k40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits },\
+    { p40o_bits, n40o_bits, b40o_bits, r40o_bits, q40o_bits, l40o_bits, l40o_bits, a40o_bits, c40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, d40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, k40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits } } },\
+{ 37,\
+  { { p37s_bits, n37s_bits, b37s_bits, r37s_bits, q37s_bits, l37s_bits, l37s_bits, a37s_bits, c37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, d37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, k37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits },\
+    { p37o_bits, n37o_bits, b37o_bits, r37o_bits, q37o_bits, l37o_bits, l37o_bits, a37o_bits, c37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, d37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, k37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits } } },\
+{ 33,\
+  { { p33s_bits, n33s_bits, b33s_bits, r33s_bits, q33s_bits, f33s_bits, e33s_bits, a33s_bits, c33s_bits, w33s_bits, m33s_bits, o33s_bits, h33s_bits, a33s_bits, j33s_bits, g33s_bits, d33s_bits, l33s_bits, d33s_bits, l33s_bits, l33s_bits, k33s_bits, l33s_bits, l33s_bits, l33s_bits, l33s_bits },\
+    { p33o_bits, n33o_bits, b33o_bits, r33o_bits, q33o_bits, f33o_bits, e33o_bits, a33o_bits, c33o_bits, w33o_bits, m33o_bits, o33o_bits, h33o_bits, a33o_bits, j33o_bits, g33o_bits, d33o_bits, l33o_bits, d33o_bits, l33o_bits, l33o_bits, k33o_bits, l33o_bits, l33o_bits, l33o_bits, l33o_bits } } },\
+{ 29,\
+  { { p29s_bits, n29s_bits, b29s_bits, r29s_bits, q29s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k29s_bits, NULL, NULL, NULL, NULL },\
+    { p29o_bits, n29o_bits, b29o_bits, r29o_bits, q29o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k29o_bits, NULL, NULL, NULL, NULL } } },\
+{ 25,\
+  { { p25s_bits, n25s_bits, b25s_bits, r25s_bits, q25s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k25s_bits, NULL, NULL, NULL, NULL },\
+    { p25o_bits, n25o_bits, b25o_bits, r25o_bits, q25o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k25o_bits, NULL, NULL, NULL, NULL } } },\
+{ 21,\
+  { { p21s_bits, n21s_bits, b21s_bits, r21s_bits, q21s_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k21s_bits, NULL, NULL, NULL, NULL },\
+    { p21o_bits, n21o_bits, b21o_bits, r21o_bits, q21o_bits, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, k21o_bits, NULL, NULL, NULL, NULL } } },\
+{ 0,\
+  { { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },\
+    { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } } }\
+};
+
+
diff --git a/bitmaps/fixup.sed b/bitmaps/fixup.sed
deleted file mode 100644
index 771f078..0000000
--- a/bitmaps/fixup.sed
+++ /dev/null
@@ -1,3 +0,0 @@
-/_$/N
-s/#define .*_\(.*\) \(.*\)/#define NAME_\1 \2/
-s/static char .*/static unsigned char NAME_bits[] = {/
diff --git a/bitmaps/h129o.bm b/bitmaps/h129o.bm
deleted file mode 100644
index 7526382..0000000
--- a/bitmaps/h129o.bm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define h129o_width -127
-#define h129o_height -127
-static unsigned char h129o_bits[] = {
-
-};
diff --git a/bitmaps/k129o.bm b/bitmaps/k129o.bm
index 5759637..34cfa3a 100644
--- a/bitmaps/k129o.bm
+++ b/bitmaps/k129o.bm
@@ -1,5 +1,186 @@
-#define k129o_width -127
-#define k129o_height -127
+#define k129o_width 129
+#define k129o_height 129
 static unsigned char k129o_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0xf8, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x03, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x80,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00,
+   0xf0, 0x00, 0x00, 0x0f, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0xff, 0x03, 0xf0, 0x00, 0x00, 0x0f, 0xc0, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0xf0, 0x00,
+   0x00, 0x0f, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xff, 0x3f, 0xf0, 0x00, 0x00, 0x0f, 0xfc, 0xff, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xe0, 0xff, 0xf0, 0x00, 0x00, 0x0f,
+   0xff, 0x07, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00,
+   0xfe, 0xf1, 0x00, 0x00, 0x8f, 0x7f, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7f, 0x00, 0x00, 0xf8, 0xf7, 0x00, 0x00, 0xef, 0x1f, 0x00,
+   0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xe0, 0xff,
+   0x01, 0x80, 0xff, 0x07, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0xc0,
+   0x07, 0x00, 0x00, 0x80, 0xff, 0x01, 0x80, 0xff, 0x01, 0x00, 0x00, 0xe0,
+   0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xff, 0x01, 0x80,
+   0xff, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00,
+   0x00, 0x00, 0xfc, 0x01, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xc0, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07,
+   0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x0f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xf0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
+   0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
+   0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xe0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0xff, 0x07, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x01, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xe0, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x8f, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xf1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
+   0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0xff, 0x3f,
+   0x00, 0x00, 0xfc, 0xff, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0xfe,
+   0xff, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/k129s.bm b/bitmaps/k129s.bm
index ec29529..c34c17f 100644
--- a/bitmaps/k129s.bm
+++ b/bitmaps/k129s.bm
@@ -1,5 +1,186 @@
-#define k129s_width -127
-#define k129s_height -127
+#define k129s_width 129
+#define k129s_height 129
 static unsigned char k129s_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0xf8, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x0f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x03, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0xc1, 0x83, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0x87,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0xe1, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0, 0x07, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00,
+   0xf0, 0xf0, 0x0f, 0x0f, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0xff, 0x03, 0xf0, 0xf0, 0x0f, 0x0f, 0xc0, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0xf0, 0xf0,
+   0x0f, 0x0f, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xff, 0x3f, 0xf0, 0xf0, 0x0f, 0x0f, 0xfc, 0xff, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x80, 0xff, 0xf0, 0xf0, 0x0f, 0x0f,
+   0xff, 0x01, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
+   0xfc, 0xf1, 0xf0, 0x0f, 0x8f, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3f, 0x00, 0x00, 0xf0, 0xf7, 0xf0, 0x0f, 0xef, 0x0f, 0x00,
+   0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0xff,
+   0xe0, 0x07, 0xff, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xc0,
+   0x07, 0xc0, 0x0f, 0x80, 0xff, 0xe1, 0x87, 0xff, 0x01, 0xf0, 0x03, 0xe0,
+   0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0xf8, 0xff, 0x00, 0xfe, 0xe1, 0x87,
+   0x7f, 0x00, 0xff, 0x1f, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xff,
+   0xff, 0x03, 0xfc, 0xc1, 0x83, 0x3f, 0xc0, 0xff, 0xff, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0xf0, 0xc0, 0xff, 0xff, 0x0f, 0xf8, 0xc3, 0xc3, 0x1f, 0xf0,
+   0xff, 0xff, 0x03, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xe0, 0xff, 0xff, 0x3f,
+   0xf0, 0x83, 0xc1, 0x0f, 0xfc, 0xff, 0xff, 0x07, 0x1f, 0x00, 0x00, 0x00,
+   0x78, 0xf0, 0xff, 0xff, 0x7f, 0xe0, 0x87, 0xe1, 0x07, 0xfe, 0xff, 0xff,
+   0x0f, 0x1e, 0x00, 0x00, 0x00, 0x3c, 0xf8, 0xff, 0xff, 0xff, 0xc0, 0x07,
+   0xe0, 0x03, 0xff, 0xff, 0xff, 0x1f, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0xf8,
+   0xff, 0xff, 0xff, 0x81, 0x0f, 0xf0, 0x81, 0xff, 0xff, 0xff, 0x1f, 0x3c,
+   0x00, 0x00, 0x00, 0x1c, 0xfc, 0xff, 0xff, 0xff, 0x83, 0x0f, 0xf0, 0xc1,
+   0xff, 0xff, 0xff, 0x3f, 0x38, 0x00, 0x00, 0x00, 0x1e, 0xfc, 0xff, 0xff,
+   0xff, 0x07, 0x1f, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0x3f, 0x78, 0x00, 0x00,
+   0x00, 0x1e, 0xfc, 0xff, 0xff, 0xff, 0x0f, 0x1e, 0x78, 0xf0, 0xff, 0xff,
+   0xff, 0x3f, 0x78, 0x00, 0x00, 0x00, 0x1e, 0xfe, 0xff, 0xff, 0xff, 0x0f,
+   0x3e, 0x7c, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x00, 0x00, 0x00, 0x1e,
+   0xfe, 0xff, 0xff, 0xff, 0x1f, 0x3c, 0x3c, 0xf8, 0xff, 0xff, 0xff, 0x7f,
+   0x78, 0x00, 0x00, 0x00, 0x1e, 0xfe, 0xff, 0xff, 0xff, 0x1f, 0x7c, 0x3e,
+   0xf8, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x00, 0x00, 0x00, 0x1e, 0xfe, 0xff,
+   0xff, 0xff, 0x3f, 0x78, 0x1e, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x00,
+   0x00, 0x00, 0x1e, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x78, 0x1e, 0xfc, 0xff,
+   0xff, 0xff, 0x3f, 0x78, 0x00, 0x00, 0x00, 0x1e, 0xfc, 0xff, 0xff, 0xff,
+   0x7f, 0xf0, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x78, 0x00, 0x00, 0x00,
+   0x1c, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0xf0, 0x0f, 0xfe, 0xff, 0xff, 0xff,
+   0x3f, 0x38, 0x00, 0x00, 0x00, 0x3c, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xf0,
+   0x0f, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3c,
+   0x00, 0x00, 0x00, 0x78, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x78, 0xf0, 0xff, 0xff,
+   0xff, 0xff, 0xe1, 0x87, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x1e, 0x00, 0x00,
+   0x00, 0xf0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x83, 0xff, 0xff, 0xff,
+   0xff, 0x07, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xc1, 0xff, 0xff, 0xff, 0xff,
+   0xc1, 0x83, 0xff, 0xff, 0xff, 0xff, 0x83, 0x0f, 0x00, 0x00, 0x00, 0xe0,
+   0x81, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x83, 0xff, 0xff, 0xff, 0xff, 0x81,
+   0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x83,
+   0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xfe,
+   0xff, 0xff, 0xff, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x7f, 0xe0, 0x03, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0xf8, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xff, 0xff,
+   0xff, 0x1f, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0xff, 0xff,
+   0xff, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3e, 0xe0, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x07,
+   0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc0, 0xff, 0xff, 0x07, 0x00,
+   0x00, 0xe0, 0xff, 0xff, 0x03, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x81, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe0, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
+   0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x80, 0xff,
+   0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x7e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x07, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00,
+   0xfe, 0x7f, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xfc, 0xff, 0xff, 0xff,
+   0xff, 0x3f, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfe, 0x7f, 0x00,
+   0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03,
+   0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/m33s.bm b/bitmaps/m33s.bm
index 06e977c..90b6e4e 100644
--- a/bitmaps/m33s.bm
+++ b/bitmaps/m33s.bm
@@ -2,15 +2,15 @@
 #define m33s_height 33
 static unsigned char m33s_bits[] = {
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00
+,0x00,0x80,0x03,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0xc0,0x07,0x00,0x00
+,0x00,0x80,0x03,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x00,0xf8,0x3f,0x00,0x00
+,0x00,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0x07,0x00
+,0xc0,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0x0f,0x00,0xe0,0xff,0xff,0x0f,0x00
+,0xe0,0xff,0xff,0x0f,0x00,0xe0,0xff,0xff,0x0f,0x00,0xf0,0xff,0xff,0x1f,0x00
+,0xf0,0xff,0xff,0x1f,0x00,0xf0,0x03,0x80,0x1f,0x00,0x18,0xfc,0x7f,0x30,0x00
+,0xe8,0xff,0xff,0x2f,0x00,0xfc,0xff,0xff,0x7f,0x00,0xfc,0xff,0xff,0x7f,0x00
+,0xf8,0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0x0f,0x00,0x00,0xfc,0x7f,0x00,0x00
 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 
 };
diff --git a/bitmaps/n129o.bm b/bitmaps/n129o.bm
index 08a1d74..0be0280 100644
--- a/bitmaps/n129o.bm
+++ b/bitmaps/n129o.bm
@@ -1,5 +1,186 @@
-#define n129o_width -127
-#define n129o_height -127
+#define n129o_width 129
+#define n129o_height 129
 static unsigned char n129o_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3e, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x80, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0x01, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xc0, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f,
+   0xe0, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xde, 0x1f, 0xf0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x3f, 0xf0, 0xf0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x7e, 0xf8, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf8, 0x78, 0xe0, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0xf0, 0x7e, 0xe0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3e, 0xf0, 0x7f, 0xe0, 0xff, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xe0, 0x3f,
+   0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0xe0, 0x3f, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xf0, 0x3f, 0xc0, 0xf3,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7c, 0xf8, 0x38, 0xc0, 0x03, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7c, 0x10, 0xc0, 0x03, 0xf0, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e,
+   0x00, 0xc0, 0x01, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc0, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xf8, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3e, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xfc, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x06, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xfe, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x7c, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
+   0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00,
+   0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
+   0x00, 0x00, 0x00, 0xc0, 0x7f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0x07, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00,
+   0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x78, 0x18, 0x00, 0x00, 0xc0, 0x7f,
+   0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x78,
+   0x3c, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x03, 0x00, 0x00, 0x00, 0x78, 0x7e, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x7c, 0x7e, 0x00,
+   0x00, 0xfc, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00,
+   0x00, 0x00, 0x3c, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x80, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x3c, 0x3e, 0x00, 0x00, 0x3f,
+   0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00,
+   0x3c, 0x3e, 0x00, 0x80, 0x0f, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x1c, 0x20, 0xc0, 0x07, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x70, 0xe0, 0x03, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07,
+   0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf8,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00,
+   0x00, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x78, 0x00, 0x3c, 0x3c, 0x00, 0x00,
+   0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0xf8,
+   0x01, 0x3e, 0x3e, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x0f, 0x00, 0x00, 0x00, 0xf0, 0x87, 0x1f, 0x1f, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x9f,
+   0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0x8f, 0x07, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, 0x07, 0x00,
+   0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0x03, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/n129s.bm b/bitmaps/n129s.bm
index 10ede29..12fd727 100644
--- a/bitmaps/n129s.bm
+++ b/bitmaps/n129s.bm
@@ -1,5 +1,186 @@
-#define n129s_width -127
-#define n129s_height -127
+#define n129s_width 129
+#define n129s_height 129
 static unsigned char n129s_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0x03, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x80, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f,
+   0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x3f, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0xe0, 0xff,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xf1, 0xff, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0xff, 0xf9, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xe7,
+   0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x7f, 0xe0, 0xff, 0x01, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xc0, 0xff, 0x03, 0xe0, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03,
+   0xe0, 0xff, 0x07, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x01, 0xf0, 0xff, 0x0f, 0x00, 0xfe, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0xff, 0xff,
+   0xff, 0x01, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xc1, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+   0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x01, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x03, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf3,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf3, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x3f, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x7f, 0xc0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x8f, 0xff, 0xff, 0xff, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff,
+   0xff, 0xff, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x01, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff,
+   0x01, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xe7, 0xff, 0xff, 0xff, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0x03, 0x3e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
+   0xff, 0xff, 0xff, 0x03, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x07,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xfc, 0xff, 0xff, 0xff, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff,
+   0xff, 0xff, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff,
+   0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0xff, 0xff, 0xff, 0x7f,
+   0x00, 0xfe, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0,
+   0x87, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x1f, 0xe0,
+   0x01, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xff, 0xff, 0xff, 0x07, 0x00, 0xfe,
+   0xff, 0xff, 0xff, 0x1f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xff,
+   0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x01, 0x00,
+   0x00, 0x00, 0xf8, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff,
+   0xff, 0x3f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x83, 0xff, 0xff, 0x7f,
+   0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x03, 0x00, 0x00, 0x00,
+   0xf8, 0x83, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f,
+   0xc0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xc7, 0xff, 0xff, 0x0f, 0x00, 0x80,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xbf, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0x9f, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x8f, 0xff,
+   0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xc0, 0x07, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0x8f, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff,
+   0x7f, 0x80, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xc7, 0x7f, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, 0x07, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xc7, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80,
+   0x07, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe3, 0x3f, 0x00, 0x00, 0xfc, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x80, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xf7,
+   0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, 0x07, 0x00,
+   0x00, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xe0, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x01, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/p129o.bm b/bitmaps/p129o.bm
index ae34d44..99d8330 100644
--- a/bitmaps/p129o.bm
+++ b/bitmaps/p129o.bm
@@ -1,5 +1,186 @@
-#define p129o_width -127
-#define p129o_height -127
+#define p129o_width 129
+#define p129o_height 129
 static unsigned char p129o_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0xf0, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x03, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x3e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x7c, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xc0,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xf0, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0x0f, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0xe0, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00,
+   0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x01, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+   0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
+   0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
+   0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+   0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
+   0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x80,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
+   0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00,
+   0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x3f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0x01, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/p129s.bm b/bitmaps/p129s.bm
index ad213c2..3cd5b14 100644
--- a/bitmaps/p129s.bm
+++ b/bitmaps/p129s.bm
@@ -1,5 +1,186 @@
-#define p129s_width -127
-#define p129s_height -127
+#define p129s_width 129
+#define p129s_height 129
 static unsigned char p129s_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff,
+   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff,
+   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
+   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
+   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/q129o.bm b/bitmaps/q129o.bm
index f4c55d9..00cf5d0 100644
--- a/bitmaps/q129o.bm
+++ b/bitmaps/q129o.bm
@@ -1,5 +1,186 @@
-#define q129o_width -127
-#define q129o_height -127
+#define q129o_width 129
+#define q129o_height 129
 static unsigned char q129o_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x3e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00,
+   0x1f, 0xf8, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0x03, 0x00, 0x0f, 0xf0, 0x00, 0xc0, 0xff, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x0f, 0xf0,
+   0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xc7, 0x07, 0x00, 0x0f, 0xf0, 0x00, 0xe0, 0xe3, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x81, 0x0f, 0x00, 0x1f, 0xf8, 0x00, 0xf0,
+   0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x0f,
+   0x00, 0x1e, 0x78, 0x00, 0xf0, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x7e, 0x7e, 0x00, 0xf0, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0xfc,
+   0x3f, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x81, 0x0f, 0x00, 0xf8, 0x1f, 0x00, 0xf0, 0x81, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x81, 0x07, 0x00, 0xf0, 0x0f, 0x00,
+   0xe0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0xe0, 0xe7,
+   0x07, 0x00, 0xc0, 0x03, 0x00, 0xe0, 0xe7, 0x07, 0x00, 0xfc, 0x00, 0x00,
+   0xc0, 0xff, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xe0, 0x07, 0x00, 0xc0, 0xff,
+   0x03, 0x00, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x01, 0x80, 0xff, 0x01, 0x00,
+   0xe0, 0x07, 0x00, 0x80, 0xff, 0x01, 0x80, 0xff, 0x07, 0x00, 0xf0, 0xff,
+   0x03, 0x00, 0xff, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xff, 0x00, 0xc0,
+   0xff, 0x0f, 0x00, 0xf8, 0xe1, 0x03, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x07,
+   0x00, 0x00, 0x3f, 0x00, 0xc0, 0x87, 0x1f, 0x00, 0x78, 0xc0, 0x07, 0x00,
+   0xf8, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0xe0, 0x03, 0x1e,
+   0x00, 0x78, 0x80, 0x07, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00,
+   0x1f, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x78, 0x80, 0x07, 0x00, 0xf8, 0x01,
+   0x00, 0xf0, 0x0f, 0x00, 0x80, 0x1f, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x78,
+   0x80, 0x07, 0x00, 0xf8, 0x01, 0x00, 0xf0, 0x0f, 0x00, 0x80, 0x1f, 0x00,
+   0xe0, 0x01, 0x1e, 0x00, 0x78, 0xc0, 0x07, 0x00, 0xf8, 0x01, 0x00, 0xf0,
+   0x0f, 0x00, 0x80, 0x1f, 0x00, 0xe0, 0x03, 0x1e, 0x00, 0xf8, 0xc1, 0x03,
+   0x00, 0xf8, 0x03, 0x00, 0xf8, 0x1f, 0x00, 0xc0, 0x1f, 0x00, 0xc0, 0x83,
+   0x1f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf8, 0x03, 0x00, 0x78, 0x1e, 0x00,
+   0xc0, 0x1f, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xf8,
+   0x03, 0x00, 0x78, 0x1e, 0x00, 0xc0, 0x1f, 0x00, 0x80, 0xff, 0x07, 0x00,
+   0xc0, 0xff, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x78, 0x1e, 0x00, 0xe0, 0x1f,
+   0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x07, 0x00,
+   0x78, 0x1e, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xf8,
+   0x01, 0x00, 0xbc, 0x07, 0x00, 0x7c, 0x3e, 0x00, 0xe0, 0x3f, 0x00, 0x80,
+   0x1f, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xbc, 0x0f, 0x00, 0x3c, 0x3c,
+   0x00, 0xf0, 0x3d, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00,
+   0x3c, 0x0f, 0x00, 0x3c, 0x3c, 0x00, 0xf0, 0x3c, 0x00, 0xc0, 0x0f, 0x00,
+   0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x1f, 0x00, 0x3c, 0x3c, 0x00, 0xf8,
+   0x3c, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x3c, 0x1e,
+   0x00, 0x3e, 0x7c, 0x00, 0x78, 0x3c, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00,
+   0xf0, 0x0f, 0x00, 0x3c, 0x1e, 0x00, 0x1e, 0x78, 0x00, 0x78, 0x3c, 0x00,
+   0xf0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x3c, 0x3e, 0x00, 0x1e,
+   0x78, 0x00, 0x7c, 0x3c, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x1f,
+   0x00, 0x3c, 0x3c, 0x00, 0x1e, 0x78, 0x00, 0x3c, 0x3c, 0x00, 0xf8, 0x0f,
+   0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x3c, 0x3c, 0x00, 0x1e, 0x78, 0x00,
+   0x3c, 0x3c, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x3c,
+   0x7c, 0x00, 0x1f, 0xf8, 0x00, 0x3e, 0x3c, 0x00, 0xfc, 0x07, 0x00, 0x00,
+   0x00, 0xe0, 0x3d, 0x00, 0x3c, 0x78, 0x00, 0x0f, 0xf0, 0x00, 0x1e, 0x3c,
+   0x00, 0xbc, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x7d, 0x00, 0x3c, 0x78, 0x00,
+   0x0f, 0xf0, 0x00, 0x1e, 0x3c, 0x00, 0xbe, 0x07, 0x00, 0x00, 0x00, 0xe0,
+   0xf9, 0x00, 0x3c, 0xf8, 0x00, 0x0f, 0xf0, 0x00, 0x1f, 0x3c, 0x00, 0x9f,
+   0x07, 0x00, 0x00, 0x00, 0xe0, 0xf3, 0x00, 0x3c, 0xf0, 0x00, 0x0f, 0xf0,
+   0x00, 0x0f, 0x3c, 0x00, 0xcf, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xf3, 0x01,
+   0x3c, 0xf0, 0x80, 0x0f, 0xf0, 0x01, 0x0f, 0x3c, 0x80, 0xcf, 0x03, 0x00,
+   0x00, 0x00, 0xc0, 0xe3, 0x01, 0x3c, 0xf0, 0x81, 0x07, 0xe0, 0x81, 0x0f,
+   0x3c, 0x80, 0xc7, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xe3, 0x03, 0x3c, 0xe0,
+   0x81, 0x07, 0xe0, 0x81, 0x07, 0x3c, 0xc0, 0xc7, 0x03, 0x00, 0x00, 0x00,
+   0xc0, 0xc3, 0x07, 0x3c, 0xe0, 0x81, 0x07, 0xe0, 0x81, 0x07, 0x3c, 0xe0,
+   0xc3, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x87, 0x07, 0x3c, 0xe0, 0xc3, 0x07,
+   0xe0, 0xc3, 0x07, 0x3c, 0xe0, 0xe1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x87,
+   0x0f, 0x3c, 0xc0, 0xc3, 0x03, 0xc0, 0xc3, 0x03, 0x3c, 0xf0, 0xe1, 0x01,
+   0x00, 0x00, 0x00, 0x80, 0x07, 0x0f, 0x3c, 0xc0, 0xc3, 0x03, 0xc0, 0xc3,
+   0x03, 0x3c, 0xf0, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1f, 0x3c,
+   0xc0, 0xc7, 0x03, 0xc0, 0xe3, 0x03, 0x3c, 0xf8, 0xe0, 0x01, 0x00, 0x00,
+   0x00, 0x80, 0x07, 0x1e, 0x3c, 0x80, 0xc7, 0x03, 0xc0, 0xe3, 0x01, 0x3c,
+   0x78, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x07, 0x3e, 0x3e, 0x80, 0xe7,
+   0x03, 0xc0, 0xe7, 0x01, 0x3c, 0x7c, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80,
+   0x0f, 0x7c, 0x1e, 0x80, 0xef, 0x01, 0x80, 0xf7, 0x01, 0x7c, 0x3e, 0xf0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x78, 0x1e, 0x00, 0xef, 0x01, 0x80,
+   0xf7, 0x00, 0x78, 0x1e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8,
+   0x1e, 0x00, 0xef, 0x01, 0x80, 0xf7, 0x00, 0x78, 0x1f, 0xf0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0f, 0xf0, 0x1e, 0x00, 0xff, 0x01, 0x80, 0xff, 0x00,
+   0x78, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x1f, 0x00,
+   0xfe, 0x01, 0x80, 0x7f, 0x00, 0xf8, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0f, 0xe0, 0x1f, 0x00, 0xfe, 0x00, 0x00, 0x7f, 0x00, 0xf8, 0x07,
+   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0x00, 0xfe, 0xc0,
+   0x03, 0x7f, 0x00, 0xf8, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0xc0, 0x1f, 0x3c, 0xfc, 0xf0, 0x0f, 0x3f, 0x3c, 0xf8, 0x03, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x80, 0x1f, 0xff, 0xfc, 0xff, 0xff, 0x3f,
+   0xff, 0xf8, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x8c, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff,
+   0x7f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0xff, 0xff, 0xe7, 0xff,
+   0x1f, 0xf8, 0xff, 0xe7, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0x81, 0xff, 0x01, 0x80, 0xff, 0x01, 0xff, 0xff, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
+   0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00,
+   0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf9, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x9f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00,
+   0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xfe, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7c, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00,
+   0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/q129s.bm b/bitmaps/q129s.bm
index fa42912..901e1f5 100644
--- a/bitmaps/q129s.bm
+++ b/bitmaps/q129s.bm
@@ -1,5 +1,186 @@
-#define q129s_width -127
-#define q129s_height -127
+#define q129s_width 129
+#define q129s_height 129
 static unsigned char q129s_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x7c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
+   0xfe, 0x7f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x80, 0xff, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xff, 0xff,
+   0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0x07, 0x00, 0xff, 0xff, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xff, 0xff, 0x00, 0xe0,
+   0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f,
+   0x00, 0xff, 0xff, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xfe, 0x7f, 0x00, 0xf0, 0xff, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xfe,
+   0x7f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0x0f, 0x00, 0xfc, 0x3f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf8, 0x1f, 0x00,
+   0xf0, 0xff, 0x0f, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x7f, 0x00, 0xe0, 0xff,
+   0x07, 0x00, 0xf0, 0x0f, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xfe, 0x01, 0x00,
+   0xc0, 0xff, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xe0, 0x07, 0x00, 0xe0, 0xff,
+   0x07, 0x00, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x01, 0xc0, 0xff, 0x03, 0x00,
+   0xe0, 0x07, 0x00, 0xc0, 0xff, 0x03, 0x80, 0xff, 0x07, 0x00, 0xf0, 0xff,
+   0x03, 0x80, 0xff, 0x01, 0x00, 0xe0, 0x07, 0x00, 0x80, 0xff, 0x01, 0xc0,
+   0xff, 0x0f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0xf0, 0x0f,
+   0x00, 0x00, 0xff, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x07, 0x00,
+   0xf8, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0xe0, 0xff, 0x1f,
+   0x00, 0xf8, 0xff, 0x07, 0x00, 0xf8, 0x01, 0x00, 0xf0, 0x0f, 0x00, 0x80,
+   0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf8, 0x01,
+   0x00, 0xf0, 0x0f, 0x00, 0x80, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xf8,
+   0xff, 0x07, 0x00, 0xf8, 0x01, 0x00, 0xf0, 0x0f, 0x00, 0x80, 0x1f, 0x00,
+   0xe0, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf8, 0x03, 0x00, 0xf8,
+   0x1f, 0x00, 0xc0, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x03,
+   0x00, 0xfc, 0x03, 0x00, 0xf8, 0x1f, 0x00, 0xc0, 0x3f, 0x00, 0xc0, 0xff,
+   0x0f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xfc, 0x03, 0x00, 0xf8, 0x1f, 0x00,
+   0xc0, 0x3f, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xfc,
+   0x07, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0x3f, 0x00, 0x80, 0xff, 0x07, 0x00,
+   0xc0, 0xff, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0x3f,
+   0x00, 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0x01, 0x00, 0xfc, 0x07, 0x00,
+   0xfc, 0x3f, 0x00, 0xe0, 0x3f, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0xfc,
+   0x01, 0x00, 0xfc, 0x0f, 0x00, 0xfc, 0x3f, 0x00, 0xf0, 0x3f, 0x00, 0x80,
+   0x3f, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0xfc, 0x0f, 0x00, 0xfc, 0x3f,
+   0x00, 0xf0, 0x3f, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00,
+   0xfc, 0x0f, 0x00, 0xfc, 0x3f, 0x00, 0xf0, 0x3f, 0x00, 0xc0, 0x0f, 0x00,
+   0x00, 0x00, 0xf0, 0x07, 0x00, 0xfc, 0x1f, 0x00, 0xfe, 0x7f, 0x00, 0xf8,
+   0x3f, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0xfc, 0x1f,
+   0x00, 0xfe, 0x7f, 0x00, 0xf8, 0x3f, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00,
+   0xf0, 0x0f, 0x00, 0xfc, 0x1f, 0x00, 0xfe, 0x7f, 0x00, 0xf8, 0x3f, 0x00,
+   0xf0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xfc, 0x3f, 0x00, 0xfe,
+   0x7f, 0x00, 0xfc, 0x3f, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x1f,
+   0x00, 0xfc, 0x3f, 0x00, 0xfe, 0x7f, 0x00, 0xfc, 0x3f, 0x00, 0xf8, 0x0f,
+   0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0xfc, 0x3f, 0x00, 0xff, 0xff, 0x00,
+   0xfc, 0x3f, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0xfc,
+   0x7f, 0x00, 0xff, 0xff, 0x00, 0xfe, 0x3f, 0x00, 0xfc, 0x07, 0x00, 0x00,
+   0x00, 0xe0, 0x7f, 0x00, 0xfc, 0x7f, 0x00, 0xff, 0xff, 0x00, 0xfe, 0x3f,
+   0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0xfc, 0x7f, 0x00,
+   0xff, 0xff, 0x00, 0xfe, 0x3f, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0x00, 0xfc, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x3f, 0x00, 0xff,
+   0x07, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0xfc, 0xff, 0x80, 0xff, 0xff,
+   0x01, 0xff, 0x3f, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01,
+   0xfc, 0xff, 0x80, 0xff, 0xff, 0x01, 0xff, 0x3f, 0x80, 0xff, 0x03, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0x03, 0xfc, 0xff, 0x81, 0xff, 0xff, 0x81, 0xff,
+   0x3f, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0xfc, 0xff,
+   0x81, 0xff, 0xff, 0x81, 0xff, 0x3f, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00,
+   0xc0, 0xff, 0x07, 0xfc, 0xff, 0xc1, 0xff, 0xff, 0x83, 0xff, 0x3f, 0xe0,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0xfc, 0xff, 0xc3, 0xff,
+   0xff, 0xc3, 0xff, 0x3f, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0x0f, 0xfe, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0xff, 0x7f, 0xf0, 0xff, 0x03,
+   0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0xfe, 0xff, 0xc3, 0xff, 0xff, 0xc3,
+   0xff, 0x7f, 0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0xfe,
+   0xff, 0xc7, 0xff, 0xff, 0xe3, 0xff, 0x7f, 0xf8, 0xff, 0x01, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0x7f,
+   0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0xe7,
+   0xff, 0xff, 0xe7, 0xff, 0x7f, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80,
+   0xff, 0x7f, 0xfe, 0xff, 0xef, 0xff, 0xff, 0xf7, 0xff, 0x7f, 0xfe, 0xff,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0xfe, 0xff, 0xef, 0xff, 0xff,
+   0xf7, 0xff, 0x7f, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x80, 0xff, 0xff,
+   0x01, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+   0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x07, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x80, 0xff, 0xff,
+   0x01, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xc7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/r129o.bm b/bitmaps/r129o.bm
index 5ad61a2..b9bcee8 100644
--- a/bitmaps/r129o.bm
+++ b/bitmaps/r129o.bm
@@ -1,5 +1,186 @@
-#define r129o_width -127
-#define r129o_height -127
+#define r129o_width 129
+#define r129o_height 129
 static unsigned char r129o_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03,
+   0x00, 0xff, 0xff, 0x01, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0xff,
+   0xff, 0x03, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x07, 0x80, 0x07, 0xc0, 0x03,
+   0xe0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80,
+   0x07, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0f, 0x80, 0x07, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01,
+   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x07, 0x80,
+   0x07, 0xc0, 0x03, 0xe0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0f, 0x80, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x01, 0xf0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0xff, 0xff, 0x07, 0xc0,
+   0xff, 0xff, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
+   0x80, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x01, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x03, 0x80, 0xff, 0xff,
+   0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/r129s.bm b/bitmaps/r129s.bm
index aa9c857..793b94c 100644
--- a/bitmaps/r129s.bm
+++ b/bitmaps/r129s.bm
@@ -1,5 +1,186 @@
-#define r129s_width -127
-#define r129s_height -127
+#define r129s_width 129
+#define r129s_height 129
 static unsigned char r129s_bits[] = {
-
-};
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03,
+   0x00, 0xff, 0xff, 0x01, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0xff,
+   0xff, 0x03, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x03,
+   0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+   0x07, 0x80, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x03, 0xe0, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x80,
+   0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/bitmaps/unsigned.sh b/bitmaps/unsigned.sh
deleted file mode 100644
index 338ded7..0000000
--- a/bitmaps/unsigned.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#! /bin/csh
-
-foreach file ($*)
-  mv $file ${file}.old$$ && \
-  sed -e 's/static char/static unsigned char/' < $file.old$$ > $file && \
-  rm ${file}.old$$
-end
-
diff --git a/bitmaps/v54o.bm b/bitmaps/v54o.bm
deleted file mode 100644
index 3bee1f1..0000000
--- a/bitmaps/v54o.bm
+++ /dev/null
@@ -1,30 +0,0 @@
-#define v54o_width 54
-#define v54o_height 54
-static unsigned char v54o_bits[] = {
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0x00
-,0x00,0x00,0x00,0x00,0x78,0xe0,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x07,0x00
-,0x00,0x00,0x00,0x03,0x00,0x18,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x00,0x00
-,0x00,0x40,0x00,0x7e,0x40,0x00,0x00,0x00,0x20,0x00,0xdb,0x80,0x00,0x00,0x00
-,0x10,0x80,0xa5,0x81,0x00,0x00,0x00,0x10,0xe0,0x5a,0x01,0x01,0x00,0x00,0x08
-,0x78,0x5a,0xc1,0x06,0x00,0x00,0x08,0x80,0xa5,0xc0,0x1a,0x00,0x00,0xc4,0x00
-,0x7e,0x00,0x61,0x00,0x00,0x04,0x0c,0x00,0xe0,0x80,0x00,0x00,0x04,0x80,0x01
-,0x10,0x00,0x01,0x00,0x02,0x03,0x00,0x08,0x00,0x01,0x00,0x02,0x30,0x00,0xff
-,0x00,0x01,0x00,0xc2,0x00,0x80,0x01,0x1f,0x01,0x00,0x02,0x00,0x60,0x02,0x2e
-,0x01,0x00,0x02,0x00,0x18,0xfc,0xc3,0x00,0x00,0x02,0x00,0x04,0x08,0xc0,0x00
-,0x00,0x02,0x00,0x03,0x04,0x40,0x00,0x00,0x02,0xf0,0x00,0x02,0x00,0x00,0x00
-,0x01,0x0f,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x06,0x00,0x00,0x00,0x01
-,0x00,0x80,0x19,0x00,0x00,0x00,0x01,0x00,0x30,0x20,0x00,0x00,0x00,0x01,0x00
-,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x06,0x80,0x00,0x00,0x00,0x01,0x00,0x00
-,0x38,0x01,0x00,0x00,0x01,0x00,0x00,0x46,0x02,0x00,0x00,0x01,0x00,0x00,0x81
-,0x05,0x00,0x00,0x01,0x00,0x80,0x00,0x0a,0x00,0xc0,0x01,0x00,0x40,0x00,0x1c
-,0x00,0x20,0x01,0x00,0x40,0x00,0x30,0x00,0x10,0x01,0x00,0x20,0x00,0x40,0x00
-,0x10,0x02,0x00,0x40,0x00,0x80,0x00,0x10,0x02,0x00,0x40,0x00,0x00,0x01,0x10
-,0x02,0x00,0x80,0x00,0x00,0x02,0x20,0x04,0x00,0x80,0x00,0x00,0x04,0x20,0x04
-,0x00,0x00,0x01,0x00,0x04,0xc0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00
-};
diff --git a/bitmaps/v54s.bm b/bitmaps/v54s.bm
deleted file mode 100644
index 199ece2..0000000
--- a/bitmaps/v54s.bm
+++ /dev/null
@@ -1,30 +0,0 @@
-#define v54s_width 54
-#define v54s_height 54
-static unsigned char v54s_bits[] = {
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x00
-,0x00,0x00,0x00,0x00,0xfc,0xff,0x07,0x00,0x00,0x00,0x00,0xff,0xff,0x1f,0x00
-,0x00,0x00,0x80,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0x81,0x7f,0x00,0x00
-,0x00,0xe0,0xff,0x3c,0xff,0x00,0x00,0x00,0xf0,0x7f,0x7e,0xfe,0x00,0x00,0x00
-,0xf0,0x1f,0xe7,0xfe,0x01,0x00,0x00,0xf8,0x07,0xe7,0x3e,0x07,0x00,0x00,0xf8
-,0x7f,0x7e,0x3f,0x1d,0x00,0x00,0x3c,0xff,0x81,0xff,0x7e,0x00,0x00,0xfc,0xf3
-,0xff,0x1f,0xff,0x00,0x00,0xfc,0x7f,0xfe,0xef,0xff,0x01,0x00,0xfe,0xfc,0xff
-,0xf7,0xff,0x01,0x00,0xfe,0xcf,0xff,0x00,0xff,0x01,0x00,0x3e,0xff,0x7f,0xfe
-,0xf0,0x01,0x00,0xfe,0xff,0x9f,0xfd,0xef,0x01,0x00,0xfe,0xff,0xe7,0xfb,0xc3
-,0x00,0x00,0xfe,0xff,0xfb,0x0f,0xc0,0x00,0x00,0xfe,0xff,0xfc,0x07,0x40,0x00
-,0x00,0xfe,0x0f,0xff,0x03,0x00,0x00,0x00,0xff,0xf0,0xff,0x03,0x00,0x00,0x00
-,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xff,0xff,0x7f,0x1e,0x00,0x00,0x00,0xff
-,0xff,0xcf,0x3f,0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xff,0xff
-,0xf9,0xff,0x00,0x00,0x00,0xff,0xff,0xff,0xc7,0x01,0x00,0x00,0xff,0xff,0xff
-,0xb9,0x03,0x00,0x00,0xff,0xff,0xff,0x7e,0x06,0x00,0x00,0xff,0xff,0x7f,0xff
-,0x0d,0x00,0xc0,0xfe,0xff,0xbf,0xff,0x13,0x00,0xe0,0xfe,0xff,0xbf,0xff,0x2f
-,0x00,0xf0,0xfe,0xff,0xdf,0xff,0x7f,0x00,0xf0,0xfd,0xff,0xbf,0xff,0xff,0x00
-,0xf0,0xfd,0xff,0xbf,0xff,0xff,0x01,0xf0,0xfd,0xff,0x7f,0xff,0xff,0x03,0xe0
-,0xfb,0xff,0x7f,0xff,0xff,0x07,0xe0,0xfb,0xff,0xff,0xfe,0xff,0x07,0xc0,0xf7
-,0xff,0xff,0xfd,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00
-};
diff --git a/bitmaps/w54o.bm b/bitmaps/w54o.bm
deleted file mode 100644
index 9e98af7..0000000
--- a/bitmaps/w54o.bm
+++ /dev/null
@@ -1,27 +0,0 @@
-#define w54o_width 49
-#define w54o_height 49
-static unsigned char w54o_bits[] = {
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0x00,0x00,0x80,0x1f
-,0xf0,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x07,0x00,0x00,0x00,0x30,0x00,0x00
-,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x20,0x00,0x00,0x00,0x04,0x00,0x00,0x40
-,0x00,0x00,0x00,0xff,0x00,0x00,0x40,0x00,0x00,0x80,0x00,0xff,0x01,0x80,0x00
-,0x00,0x80,0x00,0x00,0x0e,0x00,0x01,0x00,0x40,0x00,0x00,0x70,0x00,0x02,0x00
-,0x40,0x00,0x00,0x80,0x03,0x02,0x00,0x20,0x00,0x00,0x00,0x1c,0x02,0x00,0x20
-,0x00,0x00,0x03,0xe0,0x04,0x00,0x10,0x00,0xc0,0x0f,0x00,0x07,0x00,0x10,0x00
-,0xe0,0x1f,0x00,0x04,0x00,0x08,0x00,0xe0,0x1f,0x00,0x08,0x00,0x08,0x00,0xc0
-,0x0f,0x00,0x10,0x00,0x08,0x00,0xc0,0x0f,0x00,0x10,0x00,0x08,0x00,0x80,0x07
-,0x00,0x10,0x00,0x08,0x00,0x80,0x07,0x00,0x20,0x00,0x08,0x00,0x00,0x03,0x00
-,0x20,0x00,0x08,0x00,0x00,0x03,0x00,0x20,0x00,0xf0,0x00,0x00,0x00,0x00,0x20
-,0x00,0x08,0x3f,0x00,0x00,0x00,0x20,0x00,0x08,0xc0,0x07,0x00,0x00,0x40,0x00
-,0x04,0x00,0x78,0x00,0x00,0x40,0x00,0x04,0x00,0x80,0x07,0x00,0x40,0x00,0x04
-,0x00,0xc0,0x79,0x00,0x40,0x00,0x04,0x00,0x3c,0x80,0x03,0x20,0x00,0x04,0xc0
-,0x03,0x00,0x3c,0x20,0x00,0x08,0x3e,0x00,0x00,0xc0,0x20,0x00,0x88,0x01,0x00
-,0x00,0x00,0x23,0x00,0x50,0x00,0x00,0x00,0x00,0x14,0x00,0x50,0x00,0x00,0x00
-,0x00,0x18,0x00,0x20,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00
-,0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x02
-,0x00,0x00,0x07,0x00,0x00,0x80,0x01,0x00,0x00,0xf8,0x01,0x00,0x7e,0x00,0x00
-,0x00,0x00,0xfe,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-};
diff --git a/bitmaps/w54s.bm b/bitmaps/w54s.bm
deleted file mode 100644
index b8f6fd4..0000000
--- a/bitmaps/w54s.bm
+++ /dev/null
@@ -1,27 +0,0 @@
-#define w54s_width 49
-#define w54s_height 49
-static unsigned char w54s_bits[] = {
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0x00,0x00,0x80,0xff
-,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,0xff,0xff
-,0x1f,0x00,0x00,0x00,0xf8,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0xff,0xff,0x7f
-,0x00,0x00,0x00,0x03,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0x00,0xfe,0xff,0x00
-,0x00,0x80,0xff,0xff,0xf1,0xff,0x01,0x00,0xc0,0xff,0xff,0x8f,0xff,0x03,0x00
-,0xc0,0xff,0xff,0x7f,0xfc,0x03,0x00,0xe0,0xff,0xff,0xff,0xe3,0x03,0x00,0xe0
-,0xff,0xff,0xfc,0x1f,0x07,0x00,0xf0,0xff,0x3f,0xf0,0xff,0x04,0x00,0xf0,0xff
-,0x1f,0xe0,0xff,0x07,0x00,0xf8,0xff,0x1f,0xe0,0xff,0x0f,0x00,0xf8,0xff,0x3f
-,0xf0,0xff,0x1f,0x00,0xf8,0xff,0x3f,0xf0,0xff,0x1f,0x00,0xf8,0xff,0x7f,0xf8
-,0xff,0x1f,0x00,0xf8,0xff,0x7f,0xf8,0xff,0x3f,0x00,0xf8,0xff,0xff,0xfc,0xff
-,0x3f,0x00,0xf8,0xff,0xff,0xfc,0xff,0x3f,0x00,0x00,0xff,0xff,0xff,0xff,0x3f
-,0x00,0xf8,0xc0,0xff,0xff,0xff,0x3f,0x00,0xf8,0x3f,0xf8,0xff,0xff,0x7f,0x00
-,0xfc,0xff,0x87,0xff,0xff,0x7f,0x00,0xfc,0xff,0x7f,0xf8,0xff,0x7f,0x00,0xfc
-,0xff,0x3f,0x86,0xff,0x7f,0x00,0xfc,0xff,0xc3,0x7f,0xfc,0x3f,0x00,0xfc,0x3f
-,0xfc,0xff,0xc3,0x3f,0x00,0xf8,0xc3,0xff,0xff,0x3f,0x3f,0x00,0xf8,0xfc,0xff
-,0xff,0xff,0x3e,0x00,0x70,0xff,0xff,0xff,0xff,0x1d,0x00,0xb0,0xff,0xff,0xff
-,0xff,0x1b,0x00,0xa0,0xff,0xff,0xff,0xff,0x0b,0x00,0xa0,0xff,0xff,0xff,0xff
-,0x0b,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x80,0xff,0xff,0xff,0xff,0x03
-,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0xff,0xff,0x7f,0x00,0x00
-,0x00,0x00,0xfe,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-};
diff --git a/book.c b/book.c
index 2ec8546..ba7a9af 100644
--- a/book.c
+++ b/book.c
@@ -481,7 +481,10 @@ char *ProbeBook(int moveNr, char *book)
     if(appData.debugMode) fprintf(debugFP, "book key = %08x%08x\n", (unsigned int)(key>>32), (unsigned int)key);
 
     offset=find_key(f, key, &entry);
-    if(entry.key != key) return NULL;
+    if(entry.key != key) {
+	  fclose(f);
+	  return NULL;
+    }
     entries[0] = entry;
     count=1;
     fseek(f, 16*(offset+1), SEEK_SET);
@@ -510,5 +513,6 @@ char *ProbeBook(int moveNr, char *book)
     move_to_string(move_s, entries[i].move);
     if(appData.debugMode) fprintf(debugFP, "book move field = %d\n", entries[i].move);
 
+    fclose(f);
     return move_s;
 }
diff --git a/cmail.in b/cmail.in
index a546658..f1b26cb 100644
--- a/cmail.in
+++ b/cmail.in
@@ -1,7 +1,7 @@
 #! @PERLPATH@
 ## (configure will change the top line to the location of perl on your system)
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=#
-## cmail $Revision: 2.1 $: a tool to aid playing chess by email
+## cmail: a tool to aid playing chess by email
 ## Copyright (C) 1993,2009  Free Software Foundation, Inc.
 ## 
 ##  cmail is free software: you can redistribute it and/or modify
@@ -17,8 +17,6 @@
 ##  You should have received a copy of the GNU General Public License
 ##  along with this program. If not, see http://www.gnu.org/licenses/.  *
 ##
-## Modified:  $Date: 2003/10/27 19:21:00 $
-## Revision:  $Revision: 2.1 $
 ## Email:     evan at quadstone.co.uk
 ## Snailmail: Evan Welsh
 ##            Quadstone Ltd
@@ -1608,7 +1606,7 @@ sub main {
 &main () ;
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=#
 __END__
-cmail $Revision: 2.1 $, Copyright (C) 1993 Free Software Foundation, Inc.
+cmail (From XBoard version @PACKAGE_VERSION@), Copyright (C) 1993 Free Software Foundation, Inc.
 cmail comes with ABSOLUTELY NO WARRANTY; for details type `cmail -w'.
 cmail is free software, and you are welcome to redistribute it
 under certain conditions; type `cmail -c' for details.
diff --git a/common.h b/common.h
index 266e77e..72e66ba 100644
--- a/common.h
+++ b/common.h
@@ -600,6 +600,12 @@ typedef struct {
     char *secondOptions;
     char *fenOverride1;
     char *fenOverride2;
+    Boolean keepAlive;  /* [HGM] alive     */
+    Boolean forceIllegal;/*[HGM] illegal   */
+    Boolean noJoin;     /* [HGM] join      */
+    char *wrapContSeq; /* continuation sequence when xboard wraps text */
+    Boolean useInternalWrap; /* use internal wrapping -- noJoin usurps this if set */
+    Boolean pasteSelection; /* paste X selection instead of clipboard */
 } AppData, *AppDataPtr;
 
 /* [AS] PGN tags (for showing in the game list) */
@@ -614,10 +620,11 @@ typedef struct {
 #define GLT_TIME_CONTROL    't'
 #define GLT_VARIANT         'v'
 #define GLT_OUT_OF_BOOK     'a'
+#define GLT_RESULT_COMMENT  'c'     /* [HGM] rescom */
 
 #define GLT_DEFAULT_TAGS    "eprd"  /* Event, players, result, date */
 
-#define GLT_ALL_TAGS        "esdoprwbtva"
+#define GLT_ALL_TAGS        "esdoprwbtvac"
 
 #define PGN_OUT_OF_BOOK     "Annotator"
 
@@ -648,6 +655,11 @@ typedef struct {
     int holdingsWidth; /* number of files left and right of board, 0 or 2   */
 } GameInfo;
 
+// [HGM] chat	
+#define MAX_CHAT 3
+extern int chatCount;
+extern char chatPartner[MAX_CHAT][MSG_SIZ];
+
 
 #endif
 
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000..e6b5d5b
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1536 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2008-01-08'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_MACHINE}" in
+    i?86)
+	test -z "$VENDOR" && VENDOR=pc
+	;;
+    *)
+	test -z "$VENDOR" && VENDOR=unknown
+	;;
+esac
+test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[456])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	case ${UNAME_MACHINE} in
+	    pc98)
+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:[3456]*)
+    	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    EM64T | authenticamd)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	else
+	    echo ${UNAME_MACHINE}-${VENDOR}-linux-gnueabi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-${VENDOR}-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; }
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-${VENDOR}-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-${VENDOR}-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-${VENDOR}-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-${VENDOR}-linux-gnu ;;
+	  PA8*) echo hppa2.0-${VENDOR}-linux-gnu ;;
+	  *)    echo hppa-${VENDOR}-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-${VENDOR}-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-${VENDOR}-linux-gnu
+	exit ;;
+    xtensa*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-${VENDOR}-linux-gnuaout"
+		exit ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-${VENDOR}-linux-gnucoff"
+		exit ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-${VENDOR}-linux-gnuoldld"
+		exit ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^LIBC/{
+		s: ::g
+		p
+	    }'`"
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..4e31bfc
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,200 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* template */
+#undef ATTENTION
+
+/* template */
+#undef DEFINED_SYS_ERRLIST
+
+/* template */
+#undef FIRST_PTY_LETTER
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `ftime' function. */
+#undef HAVE_FTIME
+
+/* Define to 1 if you have the `gethostname' function. */
+#undef HAVE_GETHOSTNAME
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the `grantpt' function. */
+#undef HAVE_GRANTPT
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <lan/socket.h> header file. */
+#undef HAVE_LAN_SOCKET_H
+
+/* Define to 1 if you have the `i' library (-li). */
+#undef HAVE_LIBI
+
+/* Define to 1 if you have the `seq' library (-lseq). */
+#undef HAVE_LIBSEQ
+
+/* template */
+#undef HAVE_LIBXPM
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if you have the `rand48' function. */
+#undef HAVE_RAND48
+
+/* Define to 1 if you have the `random' function. */
+#undef HAVE_RANDOM
+
+/* Define to 1 if you have the `setitimer' function. */
+#undef HAVE_SETITIMER
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <stropts.h> header file. */
+#undef HAVE_STROPTS_H
+
+/* Define to 1 if you have the `sysinfo' function. */
+#undef HAVE_SYSINFO
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/fcntl.h> header file. */
+#undef HAVE_SYS_FCNTL_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/systeminfo.h> header file. */
+#undef HAVE_SYS_SYSTEMINFO_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
+/* Define to 1 if you have the <X11/xpm.h> header file. */
+#undef HAVE_X11_XPM_H
+
+/* Define to 1 if you have the `_getpty' function. */
+#undef HAVE__GETPTY
+
+/* template */
+#undef IBMRTAIX
+
+/* template */
+#undef LAST_PTY_LETTER
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* template */
+#undef PTY_ITERATION
+
+/* template */
+#undef PTY_NAME_SPRINTF
+
+/* template */
+#undef PTY_OPEN
+
+/* template */
+#undef PTY_TTY_NAME_SPRINTF
+
+/* template */
+#undef REMOTE_SHELL
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* template */
+#undef RTU
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* template */
+#undef UNIPLUS
+
+/* template */
+#undef USE_PTYS
+
+/* Define if you want to use Xaw3d */
+#undef USE_XAW3D
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/* template */
+#undef X_LOCALE
+
+/* template */
+#undef X_WCHAR
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+   `char[]'. */
+#undef YYTEXT_POINTER
+
+/* should zippy be enabled */
+#undef ZIPPY
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000..6759825
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1658 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2008-01-16'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore | mep \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| mt \
+	| msp430 \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tile*)
+		basic_machine=tile-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+        score-*)
+		os=-elf
+		;;
+        spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+        c4x-* | tic4x-*)
+        	os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+        mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..bbce2fe
--- /dev/null
+++ b/configure
@@ -0,0 +1,10323 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63 for xboard 4.4.1.
+#
+# Report bugs to <bug-xboard at gnu.org>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes &&	 (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  case $as_dir in
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	   done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+	 # Try only shells that exist, to save several forks.
+	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		{ ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+	       as_have_required=yes
+	       if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+	done
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell bug-autoconf at gnu.org about your system,
+  echo including any error possibly output before this message.
+  echo This can help us improve future autoconf versions.
+  echo Configuration will now proceed without shell functions.
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='xboard'
+PACKAGE_TARNAME='xboard'
+PACKAGE_VERSION='4.4.1'
+PACKAGE_STRING='xboard 4.4.1'
+PACKAGE_BUGREPORT='bug-xboard at gnu.org'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+ZIPPY_FALSE
+ZIPPY_TRUE
+CONF_LDFLAGS
+CONF_CFLAGS
+POST_XMULIB
+PRE_XMULIB
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+XAW_LIBS
+X_EXTRA_LIBS
+X_LIBS
+X_PRE_LIBS
+X_CFLAGS
+XMKMF
+EGREP
+GREP
+PERLPATH
+AWKPATH
+NROFFFLAGS
+NROFF
+MINFO
+RSH
+LEXLIB
+LEX_OUTPUT_ROOT
+LEX
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+with_x
+with_Xaw3d
+enable_xpm
+enable_ptys
+enable_zippy
+enable_sigint
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+XMKMF'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)	ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+   { (exit 1); exit 1; }; } ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { $as_echo "$as_me: error: working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures xboard 4.4.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/xboard]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+X features:
+  --x-includes=DIR    X include files are in DIR
+  --x-libraries=DIR   X library files are in DIR
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of xboard 4.4.1:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-xpm            libXpm will be used if found (default)
+  --enable-ptys           force use of pseudo-ttys with child processes
+  --enable-zippy          support interfacing a chess program to ICS (default)
+  --enable-sigint         sending SIGINT (^C) wakes up GNU Chess (default)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-x                use the X Window System
+  --with-Xaw3d            use Xaw3d instead of Xaw
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  XMKMF       Path to xmkmf, Makefile generator for X Window System
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bug-xboard at gnu.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+xboard configure 4.4.1
+generated by GNU Autoconf 2.63
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by xboard $as_me 4.4.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+am__api_version='1.10'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+done
+IFS=$as_save_IFS
+
+fi
+
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    test -d ./--version && rmdir ./--version
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='xboard'
+ VERSION='4.4.1'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -z "$CFLAGS" ; then
+  CFLAGS=" "
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:$LINENO: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if test "${ac_cv_search_strerror+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' cposix; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_search_strerror=$ac_res
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_strerror+set}" = set; then
+  break
+fi
+done
+if test "${ac_cv_search_strerror+set}" = set; then
+  :
+else
+  ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+for ac_prog in flex lex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LEX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LEX"; then
+  ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LEX="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+  { $as_echo "$as_me:$LINENO: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$LEX" && break
+done
+test -n "$LEX" || LEX=":"
+
+if test "x$LEX" != "x:"; then
+  cat >conftest.l <<_ACEOF
+%%
+a { ECHO; }
+b { REJECT; }
+c { yymore (); }
+d { yyless (1); }
+e { yyless (input () != 0); }
+f { unput (yytext[0]); }
+. { BEGIN INITIAL; }
+%%
+#ifdef YYTEXT_POINTER
+extern char *yytext;
+#endif
+int
+main (void)
+{
+  return ! yylex () + ! yywrap ();
+}
+_ACEOF
+{ (ac_try="$LEX conftest.l"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$LEX conftest.l") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ $as_echo "$as_me:$LINENO: checking lex output file root" >&5
+$as_echo_n "checking lex output file root... " >&6; }
+if test "${ac_cv_prog_lex_root+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+if test -f lex.yy.c; then
+  ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+  ac_cv_prog_lex_root=lexyy
+else
+  { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
+$as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
+$as_echo "$ac_cv_prog_lex_root" >&6; }
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+if test -z "${LEXLIB+set}"; then
+  { $as_echo "$as_me:$LINENO: checking lex library" >&5
+$as_echo_n "checking lex library... " >&6; }
+if test "${ac_cv_lib_lex+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_save_LIBS=$LIBS
+    ac_cv_lib_lex='none needed'
+    for ac_lib in '' -lfl -ll; do
+      LIBS="$ac_lib $ac_save_LIBS"
+      cat >conftest.$ac_ext <<_ACEOF
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_lex=$ac_lib
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+      test "$ac_cv_lib_lex" != 'none needed' && break
+    done
+    LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5
+$as_echo "$ac_cv_lib_lex" >&6; }
+  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
+$as_echo_n "checking whether yytext is a pointer... " >&6; }
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent.  Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+ac_save_LIBS=$LIBS
+LIBS="$LEXLIB $ac_save_LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#define YYTEXT_POINTER 1
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_prog_lex_yytext_pointer=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
+$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define YYTEXT_POINTER 1
+_ACEOF
+
+fi
+rm -f conftest.l $LEX_OUTPUT_ROOT.c
+
+fi
+if test "$LEX" != flex; then
+  LEX="$SHELL $missing_dir/missing flex"
+  LEX_OUTPUT_ROOT=lex.yy
+
+  LEXLIB=''
+
+fi
+
+
+for ac_prog in remsh rsh
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RSH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RSH"; then
+  ac_cv_prog_RSH="$RSH" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RSH="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RSH=$ac_cv_prog_RSH
+if test -n "$RSH"; then
+  { $as_echo "$as_me:$LINENO: result: $RSH" >&5
+$as_echo "$RSH" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$RSH" && break
+done
+test -n "$RSH" || RSH="rsh"
+
+for ac_prog in makeinfo
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_MINFO+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MINFO"; then
+  ac_cv_prog_MINFO="$MINFO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MINFO="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+MINFO=$ac_cv_prog_MINFO
+if test -n "$MINFO"; then
+  { $as_echo "$as_me:$LINENO: result: $MINFO" >&5
+$as_echo "$MINFO" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$MINFO" && break
+done
+test -n "$MINFO" || MINFO="makeinfo_not_found"
+
+if test "$MINFO" == makeinfo_not_found ; then
+   echo Please install \"makeinfo\"
+   exit 1
+fi
+cat >>confdefs.h <<_ACEOF
+#define REMOTE_SHELL "$RSH"
+_ACEOF
+
+# Extract the first word of "nroff", so it can be a program name with args.
+set dummy nroff; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NROFF+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NROFF"; then
+  ac_cv_prog_NROFF="$NROFF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NROFF="nroff -man"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_NROFF" && ac_cv_prog_NROFF="cat"
+fi
+fi
+NROFF=$ac_cv_prog_NROFF
+if test -n "$NROFF"; then
+  { $as_echo "$as_me:$LINENO: result: $NROFF" >&5
+$as_echo "$NROFF" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+for ac_prog in awk mawk gawk nawk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_AWKPATH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $AWKPATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_AWKPATH="$AWKPATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_AWKPATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+AWKPATH=$ac_cv_path_AWKPATH
+if test -n "$AWKPATH"; then
+  { $as_echo "$as_me:$LINENO: result: $AWKPATH" >&5
+$as_echo "$AWKPATH" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWKPATH" && break
+done
+
+for ac_prog in perl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PERLPATH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $PERLPATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERLPATH="$PERLPATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PERLPATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PERLPATH=$ac_cv_path_PERLPATH
+if test -n "$PERLPATH"; then
+  { $as_echo "$as_me:$LINENO: result: $PERLPATH" >&5
+$as_echo "$PERLPATH" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PERLPATH" && break
+done
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if test "${ac_cv_header_time+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+
+int
+main ()
+{
+if ((struct tm *) 0)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_time=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_time=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
+if test $ac_cv_header_time = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TIME_WITH_SYS_TIME 1
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
+$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
+if test "${ac_cv_header_sys_wait_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/wait.h>
+#ifndef WEXITSTATUS
+# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
+#endif
+#ifndef WIFEXITED
+# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+#endif
+
+int
+main ()
+{
+  int s;
+  wait (&s);
+  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_sys_wait_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_sys_wait_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
+$as_echo "$ac_cv_header_sys_wait_h" >&6; }
+if test $ac_cv_header_sys_wait_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYS_WAIT_H 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+  { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if test "${ac_cv_search_opendir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dir; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_search_opendir=$ac_res
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_opendir+set}" = set; then
+  break
+fi
+done
+if test "${ac_cv_search_opendir+set}" = set; then
+  :
+else
+  ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+else
+  { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if test "${ac_cv_search_opendir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' x; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_search_opendir=$ac_res
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_opendir+set}" = set; then
+  break
+fi
+done
+if test "${ac_cv_search_opendir+set}" = set; then
+  :
+else
+  ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5
+$as_echo_n "checking return type of signal handlers... " >&6; }
+if test "${ac_cv_type_signal+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <signal.h>
+
+int
+main ()
+{
+return *(signal (0, 0)) (0) == 1;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_signal=int
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_signal=void
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
+$as_echo "$ac_cv_type_signal" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define RETSIGTYPE $ac_cv_type_signal
+_ACEOF
+
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+for ac_header in stropts.h sys/time.h string.h unistd.h sys/systeminfo.h malloc.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-xboard at gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in fcntl.h sys/fcntl.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-xboard at gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+
+
+for ac_header in sys/socket.h lan/socket.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-xboard at gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+if test "${ac_cv_header_stddef_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for stddef.h" >&5
+$as_echo_n "checking for stddef.h... " >&6; }
+if test "${ac_cv_header_stddef_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stddef_h" >&5
+$as_echo "$ac_cv_header_stddef_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking stddef.h usability" >&5
+$as_echo_n "checking stddef.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <stddef.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking stddef.h presence" >&5
+$as_echo_n "checking stddef.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stddef.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: stddef.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: stddef.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: stddef.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: stddef.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: stddef.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: stddef.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: stddef.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stddef.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: stddef.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-xboard at gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for stddef.h" >&5
+$as_echo_n "checking for stddef.h... " >&6; }
+if test "${ac_cv_header_stddef_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_stddef_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stddef_h" >&5
+$as_echo "$ac_cv_header_stddef_h" >&6; }
+
+fi
+if test "x$ac_cv_header_stddef_h" = x""yes; then
+  :
+else
+  cat >>confdefs.h <<\_ACEOF
+#define X_WCHAR 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+for ac_func in _getpty grantpt setitimer usleep
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+for ac_func in gettimeofday ftime
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+done
+
+
+
+for ac_func in random rand48
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+done
+
+
+
+for ac_func in gethostname sysinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+done
+
+{ $as_echo "$as_me:$LINENO: checking for setlocale" >&5
+$as_echo_n "checking for setlocale... " >&6; }
+if test "${ac_cv_func_setlocale+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define setlocale to an innocuous variant, in case <limits.h> declares setlocale.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define setlocale innocuous_setlocale
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char setlocale (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef setlocale
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char setlocale ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_setlocale || defined __stub___setlocale
+choke me
+#endif
+
+int
+main ()
+{
+return setlocale ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_setlocale=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_setlocale=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_setlocale" >&5
+$as_echo "$ac_cv_func_setlocale" >&6; }
+if test "x$ac_cv_func_setlocale" = x""yes; then
+  :
+else
+
+{ $as_echo "$as_me:$LINENO: checking for setlocale in -li" >&5
+$as_echo_n "checking for setlocale in -li... " >&6; }
+if test "${ac_cv_lib_i_setlocale+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-li  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char setlocale ();
+int
+main ()
+{
+return setlocale ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_i_setlocale=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_i_setlocale=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_i_setlocale" >&5
+$as_echo "$ac_cv_lib_i_setlocale" >&6; }
+if test "x$ac_cv_lib_i_setlocale" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBI 1
+_ACEOF
+
+  LIBS="-li $LIBS"
+
+else
+  cat >>confdefs.h <<\_ACEOF
+#define X_LOCALE 1
+_ACEOF
+
+fi
+
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for getpseudotty in -lseq" >&5
+$as_echo_n "checking for getpseudotty in -lseq... " >&6; }
+if test "${ac_cv_lib_seq_getpseudotty+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lseq  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getpseudotty ();
+int
+main ()
+{
+return getpseudotty ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_seq_getpseudotty=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_seq_getpseudotty=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_seq_getpseudotty" >&5
+$as_echo "$ac_cv_lib_seq_getpseudotty" >&6; }
+if test "x$ac_cv_lib_seq_getpseudotty" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSEQ 1
+_ACEOF
+
+  LIBS="-lseq $LIBS"
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5
+$as_echo "$as_me: error: cannot use X directory names containing '" >&2;}
+   { (exit 1); exit 1; }; };; #(
+    *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+	ac_x_includes='$ac_x_includes'\
+	ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:$LINENO: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+	ac_x_includes='$x_includes'\
+	ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+cat >>confdefs.h <<\_ACEOF
+#define X_DISPLAY_MISSING 1
+_ACEOF
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	  X_LIBS="$X_LIBS -R $x_libraries"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ $as_echo "$as_me:$LINENO: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    ac_c_werror_flag=$ac_xsave_c_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dnet_dnet_ntoa=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh at cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5
+$as_echo_n "checking for gethostbyname... " >&6; }
+if test "${ac_cv_func_gethostbyname+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define gethostbyname innocuous_gethostbyname
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gethostbyname (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef gethostbyname
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_gethostbyname || defined __stub___gethostbyname
+choke me
+#endif
+
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_gethostbyname=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_gethostbyname=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+$as_echo "$ac_cv_func_gethostbyname" >&6; }
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_nsl_gethostbyname=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+	{ $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_bsd_gethostbyname=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder at skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    { $as_echo "$as_me:$LINENO: checking for connect" >&5
+$as_echo_n "checking for connect... " >&6; }
+if test "${ac_cv_func_connect+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define connect innocuous_connect
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char connect (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef connect
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_connect || defined __stub___connect
+choke me
+#endif
+
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_connect=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_connect=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+$as_echo "$ac_cv_func_connect" >&6; }
+
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if test "${ac_cv_lib_socket_connect+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_socket_connect=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_socket_connect=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = x""yes; then
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    { $as_echo "$as_me:$LINENO: checking for remove" >&5
+$as_echo_n "checking for remove... " >&6; }
+if test "${ac_cv_func_remove+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define remove to an innocuous variant, in case <limits.h> declares remove.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define remove innocuous_remove
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char remove (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef remove
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_remove || defined __stub___remove
+choke me
+#endif
+
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_remove=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_remove=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+$as_echo "$ac_cv_func_remove" >&6; }
+
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if test "${ac_cv_lib_posix_remove+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_posix_remove=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_posix_remove=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = x""yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    { $as_echo "$as_me:$LINENO: checking for shmat" >&5
+$as_echo_n "checking for shmat... " >&6; }
+if test "${ac_cv_func_shmat+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shmat innocuous_shmat
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shmat (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shmat
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_shmat || defined __stub___shmat
+choke me
+#endif
+
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_shmat=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_shmat=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+$as_echo "$ac_cv_func_shmat" >&6; }
+
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if test "${ac_cv_lib_ipc_shmat+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_ipc_shmat=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ipc_shmat=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = x""yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+if test -n "$no_x" ; then
+  echo $PACKAGE requires the X Window System header files and libraries!
+  echo They were not found on your system.  See FAQ topic C.2.
+  echo configure failed
+  exit 1
+fi
+
+if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for X11/Intrinsic.h" >&5
+$as_echo_n "checking for X11/Intrinsic.h... " >&6; }
+if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_Intrinsic_h" >&5
+$as_echo "$ac_cv_header_X11_Intrinsic_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking X11/Intrinsic.h usability" >&5
+$as_echo_n "checking X11/Intrinsic.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <X11/Intrinsic.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking X11/Intrinsic.h presence" >&5
+$as_echo_n "checking X11/Intrinsic.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <X11/Intrinsic.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: X11/Intrinsic.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-xboard at gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for X11/Intrinsic.h" >&5
+$as_echo_n "checking for X11/Intrinsic.h... " >&6; }
+if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_X11_Intrinsic_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_Intrinsic_h" >&5
+$as_echo "$ac_cv_header_X11_Intrinsic_h" >&6; }
+
+fi
+if test "x$ac_cv_header_X11_Intrinsic_h" = x""yes; then
+  xt="yes"
+else
+  xt="no"
+fi
+
+
+
+if test "$xt" == "no" ; then
+   echo Xt headers not found
+   exit 1
+fi
+
+
+# Check whether --with-Xaw3d was given.
+if test "${with_Xaw3d+set}" = set; then
+  withval=$with_Xaw3d; with_xaw3d=yes
+else
+  with_xaw3d=no
+fi
+
+
+XAW_LIBS=
+if test "x$with_xaw3d" != xno; then
+  { $as_echo "$as_me:$LINENO: checking for XawTextReplace in -lXaw3d" >&5
+$as_echo_n "checking for XawTextReplace in -lXaw3d... " >&6; }
+if test "${ac_cv_lib_Xaw3d_XawTextReplace+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXaw3d -lXaw $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XawTextReplace ();
+int
+main ()
+{
+return XawTextReplace ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_Xaw3d_XawTextReplace=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_Xaw3d_XawTextReplace=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xaw3d_XawTextReplace" >&5
+$as_echo "$ac_cv_lib_Xaw3d_XawTextReplace" >&6; }
+if test "x$ac_cv_lib_Xaw3d_XawTextReplace" = x""yes; then
+  XAW_LIBS="-lXaw3d"
+
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_XAW3D 1
+_ACEOF
+
+else
+  if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5
+$as_echo_n "checking for X11/Xaw/Dialog.h... " >&6; }
+if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5
+$as_echo "$ac_cv_header_X11_Xaw_Dialog_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h usability" >&5
+$as_echo_n "checking X11/Xaw/Dialog.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <X11/Xaw/Dialog.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h presence" >&5
+$as_echo_n "checking X11/Xaw/Dialog.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <X11/Xaw/Dialog.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-xboard at gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5
+$as_echo_n "checking for X11/Xaw/Dialog.h... " >&6; }
+if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_X11_Xaw_Dialog_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5
+$as_echo "$ac_cv_header_X11_Xaw_Dialog_h" >&6; }
+
+fi
+if test "x$ac_cv_header_X11_Xaw_Dialog_h" = x""yes; then
+  xaw_headers="yes"
+fi
+
+
+		     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: --with-Xaw3d was given, but test for Xaw3d failed
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: --with-Xaw3d was given, but test for Xaw3d failed
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+fi
+
+if test "$with_xaw3d" == "no" ; then
+   XAW_LIBS="-lXaw"
+fi
+
+
+
+if test "$xaw_headers" == "no" ; then
+   echo Xaw headers not found
+   exit 1
+
+fi
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+
+USE_PTYS=0
+case "$host" in
+  *-*-hpux* )
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/pty/tty%c%x", c, i);
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);
+_ACEOF
+
+    if test "$GCC" = yes; then
+      CONF_CFLAGS="-fwritable-strings"
+    else
+
+
+      CONF_CFLAGS="-Aa -D_HPUX_SOURCE"
+    fi
+
+
+    if test -d /opt/hppd/include/X11; then
+      X_CFLAGS="$X_CFLAGS -I/opt/hppd/include"
+      X_LIBS="$X_LIBS -L/opt/hppd/lib"
+    elif test -d /usr/contrib/X11R5/include; then
+      X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include"
+      X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib"
+    elif test -d /usr/contrib/mitX11R5/include; then
+      X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include"
+      X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib"
+    elif test -d /MIT/X11R5/include; then
+      X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include"
+      X_LIBS="$X_LIBS -L/MIT/X11R5/lib"
+    elif test -d /usr/local/include/X11R5; then
+      X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5"
+      X_LIBS="$X_LIBS -L/usr/local/lib/X11R5"
+    fi
+    if test -d /usr/include/X11R5; then
+      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5"
+      X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4"
+    elif test -d /usr/include/X11R4; then
+      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4"
+      X_LIBS="$X_LIBS -L/usr/lib/X11R4"
+    fi
+  ;;
+
+  romp-ibm-aix* )
+    cat >>confdefs.h <<\_ACEOF
+#define IBMRTAIX 1
+_ACEOF
+
+  ;;
+
+  i386-ibm-aix )
+    if test "$GCC" = yes; then
+      CONF_CFLAGS="-fwritable-strings"
+    fi
+  ;;
+
+  *-*-aix3* | *-*-bosx* )
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_ITERATION for (c = 0; !c; c++)
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptc");
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_TTY_NAME_SPRINTF strcpy (pty_name, ttyname (fd));
+_ACEOF
+
+  ;;
+
+  *-*-cxux* )
+    cat >>confdefs.h <<\_ACEOF
+#define FIRST_PTY_LETTER 'A'
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define LAST_PTY_LETTER 'P'
+_ACEOF
+
+  ;;
+
+  *-*-uniplus* )
+    cat >>confdefs.h <<\_ACEOF
+#define UNIPLUS 1
+_ACEOF
+
+  ;;
+
+  *-*-rtu* )
+    cat >>confdefs.h <<\_ACEOF
+#define FIRST_PTY_LETTER 'z'
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyp%x", i);
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/pty%x", i);
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define RTU 1
+_ACEOF
+
+  ;;
+
+  *-*-iris* | *-*-irix3* )
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_ITERATION for (c = 0; !c; c++)
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptc");
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyq%d", minor(stb.st_rdev));
+_ACEOF
+
+  ;;
+
+  *-*-irix* )
+  ;;
+
+  *-*-sunos4* | *-*-solaris1* )
+
+
+    if test "$GCC" = yes; then
+      PRE_XMULIB="-static"
+      POST_XMULIB="-dynamic"
+    else
+      PRE_XMULIB="-Bstatic"
+      POST_XMULIB="-Bdynamic"
+    fi
+  ;;
+
+  *-*-sunos5* | *-*-solaris2* )
+
+
+    X_LIBS="$X_LIBS -lelf"
+  ;;
+
+  *-*-sco* )
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_ITERATION for (i = 0; ; i++)
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/ptyp%d", i);
+_ACEOF
+
+    cat >>confdefs.h <<\_ACEOF
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyp%d", i);
+_ACEOF
+
+  ;;
+
+  *-*-dynix* | *-*-ptx* )
+  ;;
+
+  *-*-esix* )
+  ;;
+
+  *-*-usg5-4* | *-*-sysvr4* )
+  ;;
+
+  *-*-usg* | *-*-sysv* | *-*-aix* )
+  ;;
+
+  vax-*-ultrix )
+    if test "$GCC" = yes; then
+      CONF_CFLAGS="-fwritable-strings"
+    fi
+  ;;
+
+  *-apple-* )
+    X_LIBS="$X_LIBS -lX11 -lXt"
+  ;;
+esac
+
+# Check whether --enable-xpm was given.
+if test "${enable_xpm+set}" = set; then
+  enableval=$enable_xpm; enable_xpm="$enableval"
+else
+  enable_xpm="yes"
+fi
+
+
+if test x"$enable_xpm" != "xno"; then
+  save_cflags="$CFLAGS"
+  CFLAGS="$CFLAGS $X_CFLAGS"
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
+for ac_header in X11/xpm.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-xboard at gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+  CFLAGS="$save_cflags"
+  if test "$ac_cv_header_X11_xpm_h" = "yes"; then
+    save_ldflags="$LDFLAGS"
+    LDFLAGS="$LDFLAGS $X_LIBS"
+    { $as_echo "$as_me:$LINENO: checking for XpmReadFileToPixmap in -lXpm" >&5
+$as_echo_n "checking for XpmReadFileToPixmap in -lXpm... " >&6; }
+if test "${ac_cv_lib_Xpm_XpmReadFileToPixmap+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXpm $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XpmReadFileToPixmap ();
+int
+main ()
+{
+return XpmReadFileToPixmap ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_Xpm_XpmReadFileToPixmap=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_Xpm_XpmReadFileToPixmap=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmReadFileToPixmap" >&5
+$as_echo "$ac_cv_lib_Xpm_XpmReadFileToPixmap" >&6; }
+if test "x$ac_cv_lib_Xpm_XpmReadFileToPixmap" = x""yes; then
+  X_PRE_LIBS="-lXpm $X_PRE_LIBS"; cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBXPM 1
+_ACEOF
+
+fi
+
+    LDFLAGS="$save_ldflags"
+  fi
+fi
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether ptys or pipes should be used" >&5
+$as_echo_n "checking whether ptys or pipes should be used... " >&6; }
+# Check whether --enable-ptys was given.
+if test "${enable_ptys+set}" = set; then
+  enableval=$enable_ptys; if test "$enableval" = yes; then
+  USE_PTYS=1
+  enable_ptys="ptys"
+  { $as_echo "$as_me:$LINENO: result: ptys (user override)" >&5
+$as_echo "ptys (user override)" >&6; }
+fi
+if test "$enableval" = no; then
+  USE_PTYS=0
+  enable_ptys="pipes"
+  { $as_echo "$as_me:$LINENO: result: pipes (user override)" >&5
+$as_echo "pipes (user override)" >&6; }
+fi
+else
+  if test "$USE_PTYS" = 1; then
+  { $as_echo "$as_me:$LINENO: result: ptys" >&5
+$as_echo "ptys" >&6; }
+  enable_ptys="ptys"
+else
+  { $as_echo "$as_me:$LINENO: result: pipes" >&5
+$as_echo "pipes" >&6; }
+  enable_ptys="pipes"
+fi
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define USE_PTYS $USE_PTYS
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define ZIPPY 0
+_ACEOF
+
+# Check whether --enable-zippy was given.
+if test "${enable_zippy+set}" = set; then
+  enableval=$enable_zippy;
+else
+  enable_zippy="yes"
+fi
+
+
+if test x"$enable_zippy" != xno; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ZIPPY 1
+_ACEOF
+
+fi
+ if test x$enable_zippy != xno; then
+  ZIPPY_TRUE=
+  ZIPPY_FALSE='#'
+else
+  ZIPPY_TRUE='#'
+  ZIPPY_FALSE=
+fi
+
+
+
+# Check whether --enable-sigint was given.
+if test "${enable_sigint+set}" = set; then
+  enableval=$enable_sigint; if test "$enableval" = yes; then
+  cat >>confdefs.h <<\_ACEOF
+#define ATTENTION 1
+_ACEOF
+
+fi
+enable_sigint=$enableval
+
+else
+  enable_sigint="yes"
+cat >>confdefs.h <<\_ACEOF
+#define ATTENTION 1
+_ACEOF
+
+fi
+
+
+
+ac_config_files="$ac_config_files Makefile cmail"
+
+ac_config_commands="$ac_config_commands test-stamp-h"
+
+ac_config_commands="$ac_config_commands chmod-cmail"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ZIPPY_TRUE}" && test -z "${ZIPPY_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"ZIPPY\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"ZIPPY\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by xboard $as_me 4.4.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf at gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+xboard config.status 4.4.1
+configured by $0, generated by GNU Autoconf 2.63,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { $as_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "cmail") CONFIG_FILES="$CONFIG_FILES cmail" ;;
+    "test-stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS test-stamp-h" ;;
+    "chmod-cmail") CONFIG_COMMANDS="$CONFIG_COMMANDS chmod-cmail" ;;
+
+  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr='
'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+   { (exit 1); exit 1; }; }
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[	 ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+   { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      ac_file_inputs="$ac_file_inputs '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; } ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+    s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+	|| { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # Grep'ing the whole file is not good either: AIX grep has a line
+  # limit of 2048, but all sed's we know have understand at least 4000.
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+    dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    { as_dir=$dirpart/$fdir
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+    "test-stamp-h":C) test -z "$CONFIG_HEADERS" || date > stamp-h ;;
+    "chmod-cmail":C) chmod 755 cmail ;;
+
+  esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+echo ""
+echo " Configurations summary:"
+echo ""
+echo "        prefix:          $prefix"
+echo ""
+echo "        Xaw3d:           $with_xaw3d"
+echo ""
+echo "        xpm:             $enable_xpm"
+echo "        ptys:            $enable_ptys"
+echo "        zippy:           $enable_zippy"
+echo "        sigint:          $enable_sigint"
diff --git a/configure.ac b/configure.ac
index 5f1497d..a5137b1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,7 +28,7 @@ dnl| to regenerate configure.  Then submit your changes to be folded into
 dnl| the standard version of xboard.
 
 dnl| define second argument as VERSION.PATCHLEVEL. e.g. 4.4.0j
-AC_INIT([xboard],[4.4.0],[bug-xboard at gnu.org])
+AC_INIT([xboard],[4.4.1],[bug-xboard at gnu.org])
 AM_INIT_AUTOMAKE
 
 AC_CONFIG_HEADERS([config.h])
diff --git a/copyright.texi b/copyright.texi
index 71d706e..42ccd8d 100644
--- a/copyright.texi
+++ b/copyright.texi
@@ -1,3 +1,4 @@
+
 @setfilename copyright.info
 
 Copyright @copyright{} 1991 Digital Equipment Corporation, Maynard, Massachusetts.
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..e5f9736
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,589 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2007-03-29.01
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/engine-intf.html b/engine-intf.html
index 8ff98ce..d1d1e84 100644
--- a/engine-intf.html
+++ b/engine-intf.html
@@ -1,36 +1,55 @@
-<html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
 <title>Chess Engine Communication Protocol</title>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<style type="text/css">
+  .header { 
+  border-top:2px solid black;
+  border-bottom:2px solid black;
+  }
+  .version1 { color: red;}
+  .version43 { color: green;}
+  .version44 { color: blue; }
+
+  table tr { text-align: left}
+  tr > td:first-child { font-weight:bold;}
+  dt { font-weight:bold;}
+
+  </style>
+
 </head>
 
 <body>
-<hr noshade size="2">
+<div class="header">
 <h1>Chess Engine Communication Protocol</h1>
 <h2><a href="http://www.tim-mann.org/">Tim Mann</a> &amp; <a href="http://home.hccnet.nl/h.g.muller/winboardF.html">H.G.Muller</a></h2>
 <p>
-Version 2; implemented in xboard/WinBoard 4.2.1 and later. (Sept 3, 2009)<br>
-Changes since version 1 are indicated in <font color=red>red</font>.<br>
-Changes for WinBoard 4.3.xx are indicated in <font color=green>green</font>.<br>
-Changes for WinBoard 4.4.xx are indicated in <font color=blue>blue</font>.
-<hr noshade size="2">
+Version 2; implemented in xboard/WinBoard 4.2.1 and later. (Sept 3, 2009)<br />
+Changes since version 1 are indicated in <span class="version1">red</span>.<br />
+Changes for WinBoard 4.3.xx are indicated in <span class="version43">green</span>.<br />
+Changes for WinBoard 4.4.xx are indicated in <span class="version44">blue</span>.
+</p>
+</div>
 
 <ul>
-<li><a href="#1">1. Introduction</a>
-<li><a href="#2">2. Connection</a>
-<li><a href="#3">3. Debugging</a>
-<li><a href="#4">4. How it got this way</a>
-<li><a href="#5">5. WinBoard requires Win32 engines</a>
-<li><a href="#6">6. Hints on input/output</a>
-<li><a href="#7">7. Signals</a>
-<li><a href="#8">8. Commands from xboard to the engine</a>
-<li><a href="#9">9. Commands from the engine to xboard</a>
-<li><a href="#10">10. Thinking Output</a>
-<li><a href="#11">11. Time control</a>
-<li><a href="#12">12. Analyze Mode</a>
-<li><a href="#13">13. Idioms and backward compatibility features</a>
+<li><a href="#1">1. Introduction</a></li>
+<li><a href="#2">2. Connection</a></li>
+<li><a href="#3">3. Debugging</a></li>
+<li><a href="#4">4. How it got this way</a></li>
+<li><a href="#5">5. WinBoard requires Win32 engines</a></li>
+<li><a href="#6">6. Hints on input/output</a></li>
+<li><a href="#7">7. Signals</a></li>
+<li><a href="#8">8. Commands from xboard to the engine</a></li>
+<li><a href="#9">9. Commands from the engine to xboard</a></li>
+<li><a href="#10">10. Thinking Output</a></li>
+<li><a href="#11">11. Time control</a></li>
+<li><a href="#12">12. Analyze Mode</a></li>
+<li><a href="#13">13. Idioms and backward compatibility features</a></li>
 </ul>
 
-<hr noshade size="2">
+<hr />
 
 <h2><a name="1">1. Introduction</a></h2>
 
@@ -45,11 +64,12 @@ and WinBoard except where they are specifically contrasted.
 <p>
 There are two reasons I can imagine someone wanting to do this: 
 </p>
+
 <ol>
 <li>You have, or are developing, a chess engine but you don't want to
-write your own graphical interface. 
+write your own graphical interface. </li>
 <li>You have, or are developing,a chess engine, and you want to
-interface it to the Internet Chess Server.
+interface it to the Internet Chess Server.</li>
 </ol>
 
 <p>
@@ -58,7 +78,6 @@ In case (2), if you are using xboard, you will need to configure the
 the file <a
 href="http://www.tim-mann.org/xboard/zippy.README">zippy.README</a>
 in the xboard or WinBoard distribution for more information.
-
 </p>
 
 <p>
@@ -76,14 +95,13 @@ can join at <a href="http://groups.yahoo.com/group/chess-engines"
 >http://groups.yahoo.com/group/chess-engines</a>, or you can read the
 list there without joining.  The list is filtered to prevent spam.
 </p>
-<p>
-<font color=green>
+
+<p class="version43">
 Note that the WinBoard 4.3.xx line was developed independently of the
 original GNU project, by H.G.Muller.
 If you have questions about WinBoard 4.3.xx, or want to report bugs in it,
 report them in the appropriate section of the 
 <a href="http://www.open-aurec.com/wbforum/">WinBoard forum</a>.
-</font>
 </p>
 
 <h2><a name="2">2. Connection</a></h2>
@@ -159,17 +177,16 @@ does not support, and I've specified the standard semantics of a few
 features to be slightly different from what GNU Chess 4 does.
 </p>
 
-<p>
-<font color=red>
+<p class="version1">
 This release of the protocol specification is the first to carry a
 version number of its own -- version 2.  Previous releases simply
 carried a last-modified date and were loosely tied to specific 
 releases of xboard and WinBoard.  The version number "1" applies
 generally to all those older versions of the protocol.
-</font>
+</p>
 
-<font color=red>
-<p>Protocol version 2 remains compatible with older engines but has
+<p class="version1">
+Protocol version 2 remains compatible with older engines but has
 several new capabilities.  In particular, it adds the 
 "feature" command, a new mechanism for making backward-compatible
 changes and extensions to the protocol.  Engines that do not support a
@@ -183,8 +200,7 @@ including the "ping" command (recommended for all engines), the
 will probably be added in future versions.
 </p>
 
-<p>
-<font color=green>
+<p class="version43">
 If it is necessary to have a separate name, 
 it would be best to refer to the protocol including the green additions as version 2f.
 I really don't think it is a different protocol from version 2, though.
@@ -194,14 +210,12 @@ The hand-shaking protocol for features as defined in protocol 2 perfectly
 allows addition of an occasional new features without any need for stepping up the protocol version number,
 and I think refraining from the latter would enormously lower the barrier for actual
 implementation of these features in engines.
-<br>
+<br />
 The two really new things are the engine debug comments, and the "nps" command.
 The former merely tries to regulate an extremely common existing pactice 
 of having engines dump debug messages on WinBoard in an unprotected way, 
 as usually you get away with that.
-</font>
-
-</font>
+</p>
 
 <h2><a name="5">5. WinBoard requires Win32 engines</a></h2>
 
@@ -354,11 +368,11 @@ engines that run under xboard and (the unusual case of) engines that
 WinBoard remotely runs on a Unix host using the -firstHost or
 -secondHost feature.  It does not apply to engines that run on
 Windows, because Windows does not have Unix-style signals.
-<font color=red>
+<span class="version1">
 Beginning with version 2, you can now turn off the use of
 either or both
 signals.  See the "feature" command in <a href="#6">section 9</a> below.
-</font>
+</span>
 </p>
 
 <p>First, when an engine is sent the "quit" command, it is also given
@@ -429,27 +443,27 @@ games.  At the end of a game, xboard will send the "force" command
 (see below) to make sure your engine stops thinking about the current
 position.  It will later send the initString again to start a new
 game.  If your engine can't play multiple games, you can disable reuse
-<font color=red>
+<span class="version1">
 either with the "feature" command (beginning in protocol version
 2; see below) or 
-</font>
+</span>
 with xboard's -xreuse (or -xreuse2) command line
 option.  xboard will then ask the process to quit after each game and
 start a new process for the next game.
 </p>
 
 <dl>
-<dt><strong>xboard</strong>
+<dt>xboard</dt>
 <dd>This command will be sent once immediately after your engine
 process is started.  You can use it to put your engine into "xboard
 mode" if that is needed.  If your engine prints a prompt to ask for
 user input, you must turn off the prompt and output a newline when the
 "xboard" command comes in.
-<p>
+</dd>
 
-<dt><font color=red><strong>protover N</strong></font>
-<dd><font color=red>
-Beginning in protocol version 2 (in which N=2), this command will
+<dt class="version1">protover N</dt>
+<dd class="version1">
+<p>Beginning in protocol version 2 (in which N=2), this command will
 be sent immediately after the "xboard" command.  If you receive some
 other command immediately after "xboard" (such as "new"), you can
 assume that protocol version 1 is in use.  The "protover" command is
@@ -457,28 +471,28 @@ the only new command that xboard always sends in version 2.  All other
 new commands to the engine are sent only if the engine first enables
 them with the "feature" command.  Protocol versions will always be
 simple integers so that they can easily be compared.
+</p>
 
 <p>Your engine should reply to the protover command by sending the
 "feature" command (see below) with the list of non-default feature
-settings that you require, if any.
+settings that you require, if any.</p>
 
 <p>Your engine should never refuse to run due to receiving a higher
 protocol version number than it is expecting!  New protocol versions
 will always be compatible with older ones by default; the larger
 version number is simply a hint that additional "feature" command
 options added in later protocol versions may be accepted.
-</font>
-<p>
+</p>
+</dd>
 
-<dt><font color=red><strong>accepted</strong></font>
-<dt><font color=red><strong>rejected</strong></font>
-<dd><font color=red>
+<dt class="version1">accepted</dt>
+<dt class="version1">rejected</dt>
+<dd class="version1">
 These commands may be sent to your engine in reply to the "feature"
 command; see its documentation below.
-</font>
-<p>
+</dd>
 
-<dt><strong>new</strong>
+<dt>new</dt>
 <dd>Reset the board to the standard chess starting position.  Set
 White on move.  Leave force mode and set the engine to play Black.
 Associate the engine's clock with Black and the opponent's clock with
@@ -486,94 +500,79 @@ White.  Reset clocks and time controls to the start of a new game.
 Use wall clock for time measurement.
 Stop clocks.  Do not ponder on this move, even if pondering is on.
 Remove any search depth limit previously set by the sd command.
-<p>
+</dd>
 
-<dt><strong>variant VARNAME</strong>
+<dt>variant VARNAME</dt>
 <dd>If the game is not standard chess, but a variant, this command is
 sent after "new" and before the first move or "edit" command.  Currently
 defined variant names are:
 
 <table>
-<tr align="left"><th>wildcastle<td>Shuffle chess where king can castle from d file
-<tr align="left"><th>nocastle<td>Shuffle chess with no castling at all
-<tr align="left"><th>fischerandom<td>Fischer Random
-<tr align="left"><th>bughouse<td>Bughouse, ICC/FICS rules
-<tr align="left"><th>crazyhouse<td>Crazyhouse, ICC/FICS rules
-<tr align="left"><th>losers<td>Win by losing all pieces or getting mated (ICC)
-<tr align="left"><th>suicide<td>Win by losing all pieces including king,
-or by having fewer pieces when one player has no legal moves (FICS)
-<tr align="left"><th><font color=red>giveaway</font>
-<td><font color=red>Win by losing all pieces including king,
-or by having no legal moves (ICC)</font>
-<tr align="left"><th>twokings<td>Weird ICC wild 9
-<tr align="left"><th>kriegspiel<td>Kriegspiel (engines not supported)
-<tr align="left"><th>atomic<td>Atomic
-<tr align="left"><th>3check<td>Win by giving check 3 times
-<tr align="left"><th><font color=green>xiangqi</font>
-<td><font color=green>Chinese Chess (9x10 board)</font>
-<tr align="left"><th><font color=green>shogi</font>
-<td><font color=green>Japanese Chess (9x9 bord)</font>
-<tr align="left"><th><font color=green>capablanca</font>
-<td><font color=green>Capablanca Chess (10x8 board, with Archbishop and Chancellor)</font>
-<tr align="left"><th><font color=green>gothic</font>
-<td><font color=green>Gothic Chess (10x8 board, same with better opening setup)</font>
-<tr align="left"><th><font color=green>falcon</font>
-<td><font color=green>Falcon Chess (10x8 board, with two Falcon pieces)</font>
-<tr align="left"><th><font color=green>shatranj</font>
-<td><font color=green>ancient Arabic Chess, with Elephants and General in stead of B and Q</font>
-<tr align="left"><th><font color=green>courier</font>
-<td><font color=green>Courier Chess (12x8 board, a medieval precursor of modern Chess</font>
-<tr align="left"><th><font color=green>knightmate</font>
-<td><font color=green>King moves as Knight and vice versa</font>
-<tr align="left"><th><font color=green>berolina</font><td>
-<font color=green>Pawns capture straight ahead, and move diagonally</font>
-<tr align="left"><th><font color=green>janus</font><td>
-<font color=green>Janus Chess (10x8, with two Archbishops)</font>
-<tr align="left"><th><font color=green>caparandom</font>
-<td><font color=green>shuffle variant like FRC (10x8 board)</font>
-<tr align="left"><th><font color=green>cylinder</font>
-<td><font color=green>Pieces wrap around between side edges, like board is a cylinder</font>
-<tr align="left"><th><font color=blue>super</font>
-<td><font color=blue>Superchess: a shuffle variant with 4 fairy pieces on 8x8 board</font>
-<tr align="left"><th><font color=blue>great</font>
-<td><font color=blue>Great Shatranj: sliders are replaced by corresponding short-range pieces on a 10x8 board</font>
-<tr align="left"><th>unknown<td>Unknown variant (not supported)
+<tr><td>wildcastle</td><td>Shuffle chess where king can castle from d file</td></tr>
+<tr><td>nocastle</td><td>Shuffle chess with no castling at all</td></tr>
+<tr><td>fischerandom</td><td>Fischer Random</td></tr>
+<tr><td>bughouse</td><td>Bughouse, ICC/FICS rules</td></tr>
+<tr><td>crazyhouse</td><td>Crazyhouse, ICC/FICS rules</td></tr>
+<tr><td>losers</td><td>Win by losing all pieces or getting mated (ICC)</td></tr>
+<tr><td>suicide</td><td>Win by losing all pieces including king,
+    or by having fewer pieces when one player has no legal moves (FICS)</td></tr>
+<tr class="version1"><td>giveaway</td><td>Win by losing all pieces including king,
+    or by having no legal moves (ICC)</td></tr>
+<tr><td>twokings</td><td>Weird ICC wild 9</td></tr>
+<tr><td>kriegspiel</td><td>Kriegspiel (engines not supported)</td></tr>
+<tr><td>atomic</td><td>Atomic</td></tr>
+<tr><td>3check</td><td>Win by giving check 3 times</td></tr>
+<tr class="version43"><td>xiangqi </td><td>Chinese Chess (9x10 board)</td></tr>
+<tr class="version43"><td>shogi </td><td>Japanese Chess (9x9 bord)</td></tr>
+<tr class="version43"><td>capablanca</td><td>Capablanca Chess (10x8 board, with Archbishop and Chancellor)</td></tr>
+<tr class="version43"><td>gothic  </td><td>Gothic Chess (10x8 board, same with better opening setup)</td></tr>
+<tr class="version43"><td>falcon  </td><td>Falcon Chess (10x8 board, with two Falcon pieces)</td></tr>
+<tr class="version43"><td>shatranj  </td><td>ancient Arabic Chess, with Elephants and General in stead of B and Q</td></tr>
+<tr class="version43"><td>courier  </td><td>Courier Chess (12x8 board, a medieval precursor of modern Chess</td></tr>
+<tr class="version43"><td>knightmate  </td><td>King moves as Knight and vice versa</td></tr>
+<tr class="version43"><td>berolina</td><td>    Pawns capture straight ahead, and move diagonally</td></tr>
+<tr class="version43"><td>janus</td><td>    Janus Chess (10x8, with two Archbishops)</td></tr>
+<tr class="version43"><td>caparandom  </td><td>shuffle variant like FRC (10x8 board)</td></tr>
+<tr class="version43"><td>cylinder  </td><td>Pieces wrap around between side edges, like board is a cylinder</td></tr>
+<tr class="version44"><td>super  </td><td>Superchess: a shuffle variant with 4 fairy pieces on 8x8 board</td></tr>
+<tr class="version44"><td>great  </td><td>Great Shatranj: sliders are replaced by corresponding short-range pieces on a 10x8 board</td></tr>
+<tr><td>unknown</td><td>Unknown variant (not supported)</td></tr>
 </table>
-<p>
 
-<dt><strong>quit</strong>
+</dd>
+
+<dt>quit</dt>
 <dd>The chess engine should immediately exit.  This command is used
 when xboard is itself exiting, and also between games if the -xreuse
 command line option is given (or -xreuse2 for the second engine).
 See also <a href="#7">Signals</a> above.
-<p>
+</dd>
 
-<dt><strong>random</strong>
+<dt>random</dt>
 <dd>This command is specific to GNU Chess 4.  You can either ignore it
 completely (that is, treat it as a no-op) or implement it as GNU Chess
 does.  The command toggles "random" mode (that is, it sets random =
 !random).  In random mode, the engine adds a small random value to its
 evaluation function to vary its play.  The "new" command sets random
 mode off.
-<p>
+</dd>
 
-<dt><strong>force</strong>
+<dt>force</dt>
 <dd>Set the engine to play neither color ("force mode").  Stop clocks.
 The engine should check that moves received in force mode are legal
 and made in the proper turn, but should not think, ponder, or make
 moves of its own.
-<p>
+</dd>
 
-<dt><strong>go</strong>
+<dt>go</dt>
 <dd>Leave force mode and set the engine to play the color that is on
 move.  Associate the engine's clock with the color that is on move,
 the opponent's clock with the color that is not on move.  Start the engine's
 clock.  Start thinking and eventually make a move.
-<p>
+</dd>
 
-<dt><font color=red><strong>playother</strong></font>
-<dd>
-<font color=red>
+<dt class="version1">playother</dt>
+<dd class="version1">
 (This command is new in protocol version 2.  It is not
 sent unless you enable it with the feature command.)
 Leave force mode and set the engine to play the color that is <i>not</i> on
@@ -582,42 +581,43 @@ the engine's clock with the color that is not on move.  Start the opponent's
 clock.  If pondering is enabled, the engine should begin pondering.
 If the engine later receives a move, it should start thinking and eventually
 reply.
-</font>
-<p>
+</dd>
 
-<dt><strong>white</strong>
+<dt>white</dt>
 <dd>
-<font color=red>
+<p><span class="version1">
 (This command is obsolete as of protocol version 2, but is still
 sent in some situations to accommodate older engines unless you disable it 
 with the feature command.)
-</font>
+</span>
 Set White on move.  Set the engine to play Black.  Stop clocks.
-<p>
+</p>
+</dd>
   
-<dt><strong>black</strong>
+<dt>black </dt>
 <dd>
-<font color=red>
+<span class="version1">
 (This command is obsolete as of protocol version 2, but is still
 sent in some situations to accommodate older engines unless you disable it 
 with the feature command.)
-</font>
+</span>
 Set Black on move.  Set the engine to play White.  Stop clocks.
-<p>
+</dd>
 
-<dt><strong>level MPS BASE INC</strong>
+<dt>level MPS BASE INC</dt>
 <dd>Set time controls.  See the <a href="#11">Time Control</a> section below.
-<p>
+</dd>
   
-<dt><strong>st TIME</strong>
+<dt>st TIME</dt>
 <dd>Set time controls.  See the <a href="#11">Time Control</a> section
 below. 
-<p>
+</dd>
 
-<dt><strong>sd DEPTH</strong>
-<dd>The engine should limit its thinking to DEPTH ply.
-<font color=green>The commands "level" or "st" and "sd" can be used together in an orthogonal way.
-If both are issued, the engine should observe both limitations:</font>
+<dt>sd DEPTH</dt>
+<dd>
+<p>The engine should limit its thinking to DEPTH ply.
+<span class="version43">The commands "level" or "st" and "sd" can be used together in an orthogonal way.
+If both are issued, the engine should observe both limitations:</span>
 In the protocol, the "sd" command isn't a time control.  It doesn't
 say that your engine has unlimited time but must search to exactly the
 given depth.  It says that you should pay attention to the time
@@ -625,16 +625,16 @@ control as normal, but cut off the search at the specified depth even
 if you have time to search deeper.  If you don't have time to search
 to the specified depth, given your normal time management algorithm,
 then you will want to stop sooner than the given depth.
-<p>
+</p><p>
 The "new" command should set the search depth back to unlimited.  This
 is already stated in the spec.  The "level" command should not affect
 the search depth.  As it happens, xboard/WinBoard currently always
 sends sd (if needed) right after level, but that isn't part of the
-spec.
-<p>
+spec.</p>
+</dd>
 
-<dt><font color=green><strong>nps NODE_RATE</strong></font>
-<dd><font color=green>The engine should not use wall-clock time to make its timing decisions,
+<dt><span class="version43">nps NODE_RATE</span></dt>
+<dd><span class="version43">The engine should not use wall-clock time to make its timing decisions,
 but an own internal time measure based on the number of nodes it has searched
 (and will report as "thinking output", see <a href="#10">section 10</a>),
 converted to seconds through dividing by the given NODE_RATE.
@@ -645,79 +645,76 @@ rather than wall-clock time.
 This even holds if NODE_RATE is given as 0,
 but in that case it should also use the user CPU time for its timing decisions.
 The effect of an "nps" command should persist until the next "new" command.
-</font>
-<p>
+</span>
+</dd>
 
-<dt><strong>time N</strong>
+<dt>time N</dt>
 <dd>Set a clock that always belongs to the engine.  N is a number in
   centiseconds (units of 1/100 second).  Even if the engine changes to
   playing the opposite color, this clock remains with the engine.
-<p>
+</dd>
 
-<dt><strong>otim N</strong>
+<dt>otim N</dt>
 
-<dd>Set a clock that always belongs to the opponent.  N is a number in
+<dd><p>Set a clock that always belongs to the opponent.  N is a number in
 centiseconds (units of 1/100 second).  Even if the opponent changes to
 playing the opposite color, this clock remains with the opponent.
-<p>
+</p><p>
 If needed for purposes of board display in force mode (where the
 engine is not participating in the game) the time clock should be
 associated with the last color that the engine was set to play, the
 otim clock with the opposite color.
 </p>
 <p>
-<font color=green>This business of "clocks remaining with the engine" is apparently so ambiguous
+<span class="version43">This business of "clocks remaining with the engine" is apparently so ambiguous
 that many engines implement it wrong.
 The clocks in fact always remain with the color.
 Which clock reading is relayed with "time", and which by "otim", is determined by which side the engine plays.
 Note that the way the clocks operate and receive extra time (in accordance with the selected time control)
 is not affected in any way by which moves are made by the engine, which by the opponent, and which were forced.
-</font>
+</span>
 </p>
 <p>
-<font color=red>
+<span class="version1">
 Beginning in protocol version 2, if you can't handle the time and
 otim commands, you can use the "feature" command to disable them; see
 below.  
-</font>
+</span>
 The following techniques from older protocol versions also
 work: You can ignore the time and otim commands (that is, treat them
 as no-ops), or send back "Error (unknown command): time" the first
 time you see "time".
-</p>
+</p></dd>
 
-<dt><strong>MOVE</strong>
-<dd>See below for the syntax of moves.  If the move is illegal, print
+<dt>MOVE</dt>
+<dd>
+<p>See below for the syntax of moves.  If the move is illegal, print
 an error message; see the section "<a href="#9">Commands from the engine to
 xboard</a>".  If the move is legal and in turn, make it.  If not in force
 mode, stop the opponent's clock, start the engine's clock, start
 thinking, and eventually make a move.
-<p>
+</p><p>
 When xboard sends your engine a move, it normally sends coordinate
 algebraic notation.  Examples:
-<p>
+</p>
 <table>
-<tr align="left"><td>Normal moves:<td>e2e4
-<tr align="left"><td>Pawn promotion:<td>e7e8q
-<tr align="left"><td>Castling:<td>e1g1, e1c1, e8g8, e8c8
-<tr align="left"><td>Bughouse/crazyhouse drop:<td>P at h3
-<tr align="left"><td>ICS Wild 0/1 castling:<td>d1f1, d1b1, d8f8, d8b8
-<tr align="left"><td>FischerRandom castling:<td>O-O, O-O-O (oh, not zero)
+<tr><td>Normal moves:</td><td>e2e4</td></tr>
+<tr><td>Pawn promotion:</td><td>e7e8q</td></tr>
+<tr><td>Castling:</td><td>e1g1, e1c1, e8g8, e8c8</td></tr>
+<tr><td>Bughouse/crazyhouse drop:</td><td>P at h3</td></tr>
+<tr><td>ICS Wild 0/1 castling:</td><td>d1f1, d1b1, d8f8, d8b8</td></tr>
+<tr><td>FischerRandom castling:</td><td>O-O, O-O-O (oh, not zero)</td></tr>
 </table>
 
-<p>
-<font color=green>
+<p class="version43">
 Note that on boards with more than 9 ranks, counting of the ranks starts at 0.
-</font>
 </p>
-<p>
-<font color=red>
+<p class="version1">
 Beginning in protocol version 2, you can use the feature command
 to select SAN (standard algebraic notation) instead; for example, e4,
 Nf3, exd5, Bxf7+, Qxf7#, e8=Q, O-O, or P at h3.  Note that the last form,
 P at h3, is a extension to the PGN standard's definition of SAN, which does
 not support bughouse or crazyhouse.
-</font>
 </p>
 
 <p>
@@ -727,38 +724,37 @@ passant availability.  If xboard sends an illegal move, send back an
 error message so that xboard can retract it and inform the user; see
 the section "<a href="#9">Commands from the engine to xboard</a>".
 </p>
-
-<dt><font color=red><strong>usermove MOVE</strong></font>
-<dd><font color=red>
+</dd>
+<dt class="version1">usermove MOVE</dt>
+<dd class="version1">
 By default, moves are sent to the engine without a command name;
 the notation is just sent as a line by itself.
 Beginning in protocol version 2, you can use the feature command
 to cause the command name "usermove" to be sent before the move.
 Example: "usermove e2e4".
-</font>
-</p>
+</dd>
 
-<dt><strong>?</strong>
-<dd>Move now.  If your engine is thinking, it should move immediately;
+<dt>?</dt>
+<dd><p>Move now.  If your engine is thinking, it should move immediately;
   otherwise, the command should be ignored (treated as a no-op).  It
   is permissible for your engine to always ignore the ? command.  The
   only bad consequence is that xboard's Move Now menu command will do
   nothing.
-<p>
+</p><p>
 It is also permissible for your engine to move immediately if it gets
 any command while thinking, as long as it processes the command right
 after moving, but it's preferable if you don't do this.  For example,
 xboard may send post, nopost, easy, hard, force, quit,
-<font color=red>
+<span class="version1">
 or other commands
-</font>
+</span>
 while the engine is on move.
 </p>
+</dd>
 
-<dt><font color=red><strong>ping N</strong></font>
-<dd>
-<font color=red>
-In this command, N is a decimal number.  When you receive the command,
+<dt class="version1">ping N</dt>
+<dd class="version1">
+<p>In this command, N is a decimal number.  When you receive the command,
 reply by sending the string <strong>pong N</strong>, where N is the
 same number you received.  Important: You must not reply to a "ping"
 command until you have finished executing all commands that you
@@ -774,7 +770,7 @@ command.  Similarly, xboard may send a sequence like "force", "new",
 "ping".  You must not send the pong response until after you have
 finished executing the "new" command and are ready for the new game to
 start.
-
+</p>
 <p>
 The ping command is new in protocol version 2 and will not be sent
 unless you enable it with the "feature" command.  Its purpose is to
@@ -784,18 +780,18 @@ implement it.  It is especially important in simple engines that do
 not ponder and do not poll for input while thinking, but it is needed in all
 engines.  
 </p>
-</font>
+</dd>
 
-<dt><strong>draw</strong>
+<dt>draw</dt>
 <dd>The engine's opponent offers the engine a draw.  To accept the
 draw, send "offer draw".  To decline, ignore the offer (that is, send
 nothing).  If you're playing on ICS, it's possible for the draw offer
 to have been withdrawn by the time you accept it, so don't assume the
 game is over because you accept a draw offer.  Continue playing until
 xboard tells you the game is over.  See also "offer draw" below.
-<p>
+</dd>
 
-<dt><strong>result RESULT {COMMENT}</strong>
+<dt>result RESULT {COMMENT}</dt>
 <dd>After the end of each game, xboard will send you a result command.
 You can use this command to trigger learning.  RESULT is either 1-0,
 0-1, 1/2-1/2, or *, indicating whether white won, black won, the game
@@ -826,14 +822,16 @@ front.  You might not always get a "result *" command, however.  In
 particular, you won't get one in local chess engine mode when the user
 stops playing by selecting Reset, Edit Game, Exit or the like.
 </p>
+</dd>
 
-<dt><font color=red><strong>setboard FEN</strong></font>
-<dd><font color=red>
+<dt><span class="version1">setboard FEN</span></dt>
+<dd>
+<p><span class="version1">
 The setboard command is the new way to set up positions, beginning
 in protocol version 2.  It is not used unless it has been selected
 with the feature command.  Here FEN is a position in Forsythe-Edwards
-Notation, as defined in the PGN standard.</font>
-<font color=green>Note that this PGN standard referred to here
+Notation, as defined in the PGN standard.</span>
+<span class="version43">Note that this PGN standard referred to here
 only applies to normal Chess;
 Obviously in variants that cannot be described by a FEN for normal Chess,
 e.g. because the board is not 8x8, other pieces then PNBRQK participate, 
@@ -842,40 +840,41 @@ xboard will use a FEN format that is standard or suitable for that varant.
 In particular, in FRC or CRC, WinBoard will use Shredder-FEN or X-FEN standard,
 i.e. it can use the rook-file indicator letter to represent a castling right 
 (like HAha) whenever it wants, but if it uses KQkq, this will always refer 
-to the outermost rook on the given side.</font>
-<font color=red>
+to the outermost rook on the given side.</span>
+</p>
 
-<p><i>Illegal positions:</i> Note that either setboard or edit can
+<p class="version1">
+<em>Illegal positions:</em> Note that either setboard or edit can
 be used to send an illegal position to the engine.  The user can
 create any position with xboard's Edit Position command (even, say,
 an empty board, or a board with 64 white kings and no black ones).
 If your engine receives a position that it considers illegal, 
 I suggest that you send the response "tellusererror Illegal position",
 and then respond to any attempted move with "Illegal move" until
-the next new, edit, or setboard command.</p>
-</font>
-<p>
+the next new, edit, or setboard command.
+</p>
+</dd>
 
-<dt><strong>edit</strong>
+<dt>edit</dt>
 <dd>
-<font color=red>
+<p><span class="version1">
 The edit command is the old way to set up positions.  For compatibility
 with old engines, it is still used by default, but new engines may prefer
 to use the feature command (see below) to cause xboard to use setboard instead.
-</font>
+</span>
 The edit command puts the chess engine into a special mode, where
-it accepts the following subcommands:
+it accepts the following subcommands:</p>
 <table>
-<tr align="left"><th>c<td>change current piece color, initially white
-<tr align="left"><th>Pa4 (for example)<td>place pawn of current color on a4
-<tr align="left"><th>xa4 (for example)<td>empty the square a4 (not used by xboard)
-<tr align="left"><th>#<td>clear board
-<tr align="left"><th>.<td>leave edit mode
+<tr><td>c</td><td>change current piece color, initially white</td></tr>
+<tr><td>Pa4 (for example)</td><td>place pawn of current color on a4</td></tr>
+<tr><td>xa4 (for example)</td><td>empty the square a4 (not used by xboard)</td></tr>
+<tr><td>#</td><td>clear board</td></tr>
+<tr><td>.</td><td>leave edit mode</td></tr>
 </table>
-<font color=red>
+<p class="version1">
 See the Idioms section below for additional subcommands used in
 ChessBase's implementation of the protocol.
-</font>
+</p>
 
 <p>The edit command does not change the side to move.  To set up a
 black-on-move position, xboard uses the following command sequence:
@@ -902,7 +901,7 @@ capture is assumed to be illegal on the current move regardless of the
 positions of the pawns.  The clock for the 50 move rule starts at
 zero, and for purposes of the draw by repetition rule, no prior
 positions are deemed to have occurred.
-<font color=green>
+<span class="version43">
 In FRC or CRC, any rook and king put on the back rank should be considered to
 have castling rights, even if it later becomes apparent that they cannot be both in the
 initial position, because the position just set up is asymmetric.
@@ -910,66 +909,64 @@ It is upto WinBoard to find work-around in cases where this is not desired,
 similar to the "black kludge" shown above, by setting up an earlier position,
 and then do a move to destroy castling rights or create e.p. rights.
 (Don't bet your life on it...)
-</font>
+</span>
 </p>
+</dd>
 
-<dt><strong>hint</strong>
+<dt>hint</dt>
 <dd>If the user asks for a hint, xboard sends your engine the command
 "hint".  Your engine should respond with "Hint: xxx", where xxx is a
 suggested move.  If there is no move to suggest, you can ignore the
 hint command (that is, treat it as a no-op).
-<p>
+</dd>
 
-<dt><strong>bk</strong>
+<dt>bk</dt>
 <dd>If the user selects "Book" from the xboard menu, xboard will send
 your engine the command "bk".  You can send any text you like as the
 response, as long as each line begins with a blank space or tab (\t)
 character, and you send an empty line at the end.  The text pops up in
 a modal information dialog.
-<p>
+</dd>
 
-<dt><strong>undo</strong>
+<dt>undo</dt>
 <dd>If the user asks to back up one move, xboard will send you the
 "undo" command.  xboard will not send this command without putting you
 in "force" mode first, so you don't have to worry about what should
 happen if the user asks to undo a move your engine made.  (GNU Chess 4
 actually switches to playing the opposite color in this case.)
-<p>
+</dd>
 
-<dt><strong>remove</strong>
+<dt>remove</dt>
 <dd>If the user asks to retract a move, xboard will send you the
 "remove" command.  It sends this command only when the user is on
 move.  Your engine should undo the last two moves (one for each
 player) and continue playing the same color.
-<p>
+</dd>
 
-<dt><strong>hard</strong>
+<dt>hard</dt>
 <dd>Turn on pondering (thinking on the opponent's time, also known as
 "permanent brain").  xboard will not make any assumption about what
 your default is for pondering or whether "new" affects this setting.
-<p>
+</dd>
 
-<dt><strong>easy</strong>
-<dd>Turn off pondering.
-<p>
+<dt>easy</dt>
+<dd>Turn off pondering.</dd>
   
-<dt><strong>post</strong>
+<dt>post</dt>
 <dd>Turn on thinking/pondering output.  
-See <a href="#10">Thinking Output</a> section.
-<p>
+See <a href="#10">Thinking Output</a> section.</dd>
 
-<dt><strong>nopost</strong>
-<dd>Turn off thinking/pondering output.
-<p>
+<dt>nopost</dt>
+<dd>Turn off thinking/pondering output.</dd>
   
-<dt><strong>analyze</strong>
-<dd>Enter analyze mode.  See <a href="#12">Analyze Mode</a> section.
-<p>
+<dt>analyze</dt>
+<dd>Enter analyze mode.  See <a href="#12">Analyze Mode</a> section.</dd>
 
-<dt><strong>name X</strong> <dd>This command informs the engine of its
+<dt>name X </dt>
+<dd>This command informs the engine of its
 opponent's name.  When the engine is playing on a chess server, xboard
 obtains the opponent's name from the server. 
-<font color=red>
+<span class="version1">
 When the engine is
 playing locally against a human user, xboard obtains the user's login
 name from the local operating system.  When the engine is playing
@@ -979,41 +976,40 @@ option to the feature command.  By default, xboard uses the name
 command only when the engine is playing on a chess server.  Beginning
 in protocol version 2, you can change this with the name option to the
 feature command; see below.
-</font>
-<p>
+</span>
+</dd>
 
-<dt><strong>rating</strong>
+<dt>rating</dt>
 <dd>In ICS mode, xboard obtains the ICS opponent's rating from the
 "Creating:" message that appears before each game.  (This message may
 not appear on servers using outdated versions of the FICS code.)  In
 Zippy mode, it sends these ratings on to the chess engine using the
 "rating" command.  The chess engine's own rating comes first, and if
 either opponent is not rated, his rating is given as 0.  
-<font color=red>
+<span class="version1">
 In the future this command may also be used in other modes, if ratings
 are known.
-</font>
+</span>
 Example: <pre>rating 2600 1500</pre>
-<p>
+</dd>
 
-<dt><font color=red><strong>ics HOSTNAME</strong></font>
-<dd><font color=red>
+<dt><span class="version1">ics HOSTNAME</span></dt>
+<dd class="version1">
 If HOSTNAME is "-", the engine is playing against a local
 opponent; otherwise, the engine is playing on an Internet Chess Server
 (ICS) with the given hostname.  This command is new in protocol
 version 2 and is not sent unless the engine has enabled it with
 the "feature" command.  Example: "ics freechess.org"
-</font>
-<p>
+</dd>
 
-<dt><strong>computer</strong>
+<dt>computer</dt>
 <dd>The opponent is also a computer chess engine.  Some engines alter
 their playing style when they receive this command.
-<p>
+</dd>
 
-<dt><font color=red><strong>pause</strong></font>
-<dt><font color=red><strong>resume</strong></font>
-<dd><font color=red>(These commands are new in protocol
+<dt class="version1">pause</dt>
+<dt class="version1">resume</dt>
+<dd class="version1">(These commands are new in protocol
 version 2 and will not be sent unless feature pause=1 is set.  At
 this writing, xboard actually does not use the commands at all, but it
 or other interfaces may use them in the future.)
@@ -1025,11 +1021,10 @@ send to the engine while it is in the paused state is "resume".  The
 paused thinking or pondering (if any) resumes from exactly where it
 left off, and the clock of the player on move resumes running from
 where it stopped.
-</font>
-<p>
+</dd>
 
-<dt><font color=blue><strong>memory N</strong></font>
-<dd><font color=blue>
+<dt class="version44">memory N</dt>
+<dd class="version44">
 This command informs the engine on how much memory it is allowed to use maximally, in MegaBytes.
 On receipt of this command, the engine should adapt the size of its hash tables accordingly.
 This command does only fix the total memory use,
@@ -1040,11 +1035,10 @@ how to divide up the available memory between the various tables it wants to use
 This command will only be sent to engines that have requested it through the memory feature,
 and only at the start of a game,
 as the first of the commands to relay engine option settings just before each "new" command.
-</font>
-<p>
+</dd>
 
-<dt><font color=blue><strong>cores N</strong></font>
-<dd><font color=blue>
+<dt class="version44">cores N</dt>
+<dd class="version44">
 This command informs the engine on how many CPU cores it is allowed to use maximally.
 This could be interpreted as the number of search threads for SMP engines. 
 (Threads that do not consume significant amounts of CPU time, like I/O threads, need not be included in the count.)
@@ -1054,11 +1048,10 @@ but it is allowed to finish a search in progress before procesing the command.
 (Obeying the command should take priority over finishing a ponder search, though.)
 In any case it will be sent at the start of every game
 as the last command to relay engine option settings before the "new" command.
-</font>
-<p>
+</dd>
 
-<dt><font color=blue><strong>egtpath TYPE PATH</strong></font>
-<dd><font color=blue>
+<dt class="version44">egtpath TYPE PATH</dt>
+<dd class="version44">
 This command informs the engine in which directory (given by the PATH argument)
 it can find end-game tables of the specified TYPE.
 The TYPE argument can be any character string which does not contain spaces.
@@ -1074,11 +1067,10 @@ It is upto the developer of the EGT format to specify the syntax of this paramet
 This command will only be sent to engines that have told the GUI they support EGTs of the given TYPE
 through the egt feature.
 It will be sent at the start of each game, before the "new" command.
-</font>
-<p>
+</dd>
 
-<dt><font color=blue><strong>option NAME[=VALUE]</strong></font>
-<dd><font color=blue>
+<dt class="version44">option NAME[=VALUE]</dt>
+<dd class="version44">
 This command changes the setting of the option NAME defined by the engine 
 (through an earlier feature command)
 to the given VALUE.
@@ -1094,7 +1086,7 @@ specified in this feature command,
 i.e. with 'spin' and 'check' options VALUE will be a decimal integer (in the latter case 0 or 1),
 with 'combo' and 'string' options VALUE will be a text string,
 and with 'button' and 'save' options no VALUE will be sent at all.
-</font>
+</dd>
 </dl>
 
 <h3>Bughouse commands:</h3>
@@ -1111,45 +1103,41 @@ be added in the future.
 </p>
 
 <dl>
-<dt><strong>partner &lt;player&gt;</strong>
+<dt>partner &lt;player&gt;</dt>
 <dd>&lt;player&gt; is now your partner for future games.  Example: <pre>partner mann</pre>
-<p>
+</dd>
 
-<dt><strong>partner</strong>
+<dt>partner</dt>
 <dd>Meaning: You no longer have a partner.
-<p>
+</dd>
 
-<dt><strong>ptell &lt;text&gt;</strong>
+<dt>ptell &lt;text&gt;</dt>
 <dd>Your partner told you &lt;text&gt;, either with a ptell or an ordinary tell.  
-<p>
+</dd>
 
-<dt><strong>holding [&lt;white&gt;] [&lt;black&gt;]</strong>
+<dt>holding [&lt;white&gt;] [&lt;black&gt;]</dt>
 <dd>White currently holds &lt;white&gt;; black currently holds &lt;black&gt;.
-  Example: <pre>holding [PPPRQ] []</pre>
+  Example: <pre>holding [PPPRQ] []</pre></dd>
 
-<dt><strong>holding [&lt;white&gt;] [&lt;black&gt;] &lt;color&gt;&lt;piece&gt;</strong>
+<dt>holding [&lt;white&gt;] [&lt;black&gt;] &lt;color&gt;&lt;piece&gt;</dt>
 <dd>White currently holds &lt;white&gt;; black currently holds &lt;black&gt;, after
-  &lt;color&gt; acquired &lt;piece&gt;.   Example: <pre>holding [PPPRQ] [R] BR</pre>
+  &lt;color&gt; acquired &lt;piece&gt;.   Example: <pre>holding [PPPRQ] [R] BR</pre></dd>
 </dl>
 
 <h2><a name="9">9. Commands from the engine to xboard</a></h2>
 
-<p>
-<font color=red>
+<p class="version1">
 In general, an engine should not send any output to xboard that is not
 described in this document.  As the protocol is extended, newer
 versions of xboard may recognize additional strings as commands that
 were previously not assigned a meaning.
-</font>
 </p>
 
 <dl>
-<dt><font color=red>
-<strong>feature FEATURE1=VALUE1 FEATURE2=VALUE2 ...</strong> 
-</font>
 
-<dd><font color=red>
-Beginning with version 2, the protocol includes the "feature"
+<dt class="version1"> feature FEATURE1=VALUE1 FEATURE2=VALUE2 ... </dt>
+<dd class="version1">
+<p>Beginning with version 2, the protocol includes the "feature"
 command, which lets your engine control certain optional protocol
 features.  Feature settings are written as FEATURE=VALUE, where
 FEATURE is a name from the list below and VALUE is the value to be
@@ -1158,7 +1146,7 @@ type of value is listed for each feature.  String values are written
 in double quotes (for example, <tt>feature myname="Miracle Chess
 0.9"</tt>), integers are written in decimal, and boolean values are
 written as 0 for false, 1 for true.  Any number of features can be set
-in one feature command, or multiple feature commands can be given.
+in one feature command, or multiple feature commands can be given.</p>
 
 <p>
 Your engine should send one or more feature commands immediately after
@@ -1212,131 +1200,104 @@ protocol version by rejecting some features that are defined in that
 version; however, you should realize that engine authors are likely to
 code for xboard and may not be prepared to have a feature that they
 depend on be rejected.
-<font color=blue>If the GUI rejects an option feature because of the
+<span class="version44">If the GUI rejects an option feature because of the
 syntax of the value, it should print the value string with the
 "rejected" command, e.g. "rejected option nonsense" in response
-to receiving feature option="nonsense".</font>
+to receiving feature option="nonsense".</span>
 </p>
 
 <p>
 Here are the features that are currently defined.
 </p>
-</font>
 
 <dl>
-<dt><font color=red>
-<strong>ping</strong> (boolean, default 0, recommended 1)
-</font>
-<dd><font color=red>
+<dt class="version1">ping (boolean, default 0, recommended 1)</dt>
+<dd class="version1">
 If ping=1, xboard may use the protocol's new "ping" command;
 if ping=0, xboard will not use the command.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>setboard</strong> (boolean, default 0, recommended 1)
-</font>
-<dd><font color=red>
+<dt class="version1">setboard (boolean, default 0, recommended 1)</dt>
+<dd class="version1">
 If setboard=1, xboard will use the protocol's new "setboard" command
 to set up positions; if setboard=0, it will use the older "edit" command.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>playother</strong> (boolean, default 0, recommended 1)
-</font>
-<dd><font color=red>
+<dt class="version1">playother (boolean, default 0, recommended 1)</dt>
+<dd class="version1">
 If playother=1, xboard will use the protocol's new "playother" command
 when appropriate; if playother=0, it will not use the command.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>san</strong> (boolean, default 0)
-</font>
-<dd><font color=red>
+<dt class="version1">san (boolean, default 0)</dt>
+<dd class="version1">
 If san=1, xboard will send moves to the engine in standard algebraic
 notation (SAN); for example, Nf3.  If san=0, xboard will send moves in
 coordinate notation; for example, g1f3.  See MOVE in 
 <a href="#8">section 8</a> above for more details of both kinds of notation.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>usermove</strong> (boolean, default 0)
-</font>
-<dd><font color=red>
+<dt class="version1">usermove (boolean, default 0)</dt>
+<dd class="version1">
 If usermove=1, xboard will send moves to the engine with the
 command "usermove MOVE"; if usermove=0, xboard will send just the move,
 with no command name.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>time</strong> (boolean, default 1, recommended 1)
-</font>
-<dd><font color=red>
+<dt class="version1">time (boolean, default 1, recommended 1)</dt>
+<dd class="version1">
 If time=1, xboard will send the "time" and "otim" commands to
 update the engine's clocks; if time=0, it will not.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>draw</strong> (boolean, default 1, recommended 1)
-</font>
-<dd><font color=red>
+<dt class="version1">draw (boolean, default 1, recommended 1)</dt>
+<dd class="version1">
 If draw=1, xboard will send the "draw" command if the engine's opponent
 offers a draw; if draw=0, xboard will not inform the engine about
 draw offers.  Note that if draw=1, you may receive a draw offer while you
 are on move; if this will cause you to move immediately, you should set
 draw=0.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>sigint</strong> (boolean, default 1)
-</font>
-<dd><font color=red>
+<dt class="version1">sigint (boolean, default 1)</dt>
+<dd class="version1">
 If sigint=1, xboard may send SIGINT (the interrupt signal) to
 the engine as <a href="#7">section 7</a> above; if sigint=0, it will
 not.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>sigterm</strong> (boolean, default 1)
-</font>
-<dd><font color=red>
+<dt class="version1">sigterm (boolean, default 1)</dt>
+<dd class="version1">
 If sigterm=1, xboard may send SIGTERM (the termination signal) to
 the engine as <a href="#7">section 7</a> above; if sigterm=0, it will
 not.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>reuse</strong> (boolean, default 1, recommended 1) 
-</font>
-<dd><font color=red>
+<dt class="version1">reuse (boolean, default 1, recommended 1) </dt>
+<dd class="version1">
 If reuse=1, xboard may reuse your engine for multiple games.  If
 reuse=0 (or if the user has set the -xreuse option on xboard's command
 line), xboard will kill the engine process after every game and start
 a fresh process for the next game.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>analyze</strong> (boolean, default 1, recommended 1)
-</font>
-<dd><font color=red>
+<dt class="version1">analyze (boolean, default 1, recommended 1)</dt>
+<dd class="version1">
 If analyze=0, xboard will not try to use the "analyze" command; it
 will pop up an error message if the user asks for analysis mode.  If
 analyze=1, xboard will try to use the command if the user asks for
 analysis mode.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>myname</strong> (string, default determined from engine filename)
-</font>
-<dd><font color=red>
+<dt class="version1">myname (string, default determined from engine filename)</dt>
+<dd class="version1">
 This feature lets you set the name that xboard will use for your
 engine in window banners, in the PGN tags of saved game files, and when
 sending the "name" command to another engine.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>variants</strong> (string, see text below)
-</font>
-<dd><font color=red>
+<dt class="version1">variants (string, see text below)</dt>
+<dd><span class="version1">
 This feature indicates which chess variants your engine accepts.
 It should be a comma-separated list of variant names.  See the table
 under the "variant" command in <a href="#8">section 8</a> above.  If
@@ -1347,9 +1308,9 @@ Zippy mode.)  It is recommended that you set this feature to the
 correct value for your engine (just "normal" in most cases) rather
 than leaving the default in place, so that the user will get an
 appropriate error message if he tries to play a variant that your
-engine does not support.</font>
-<br>
-<font color=green>If your engine can play variants on a deviating board size,
+engine does not support.</span>
+<br />
+<span class="version43">If your engine can play variants on a deviating board size,
 like capablanca on an 8x8 board, or capablanca crazyhouse,
 it can list them amongst the variants with a prefix spcifying board size plus
 holdings size, like 8x8+0_capablanca or 10x8+7_capablanca.
@@ -1357,49 +1318,41 @@ If it is capable of playing any variant with an arbitrary board size,
 it should list "boardsize" as one of the variants.
 If there is a maximum to the board size, this can be prefixed,
 e.g. "12x10+0_boardsize".
-</font>
+</span>
+</dd>
 
-<dt><font color=red>
-<strong>colors</strong> (boolean, default 1, recommended 0) 
-</font>
-<dd><font color=red>
+<dt class="version1">colors (boolean, default 1, recommended 0) </dt>
+<dd><span class="version1">
 If colors=1, xboard uses the obsolete "white" and "black"
 commands in a stylized way that works with most older chess engines
 that require the commands.  See the "<a href="#13">Idioms</a>" section
 below for details.  If colors=0, xboard does not use the "white" and
 "black" commands at all.
-</font>
+</span>
+</dd>
 
-<dt><font color=red>
-<strong>ics</strong> (boolean, default 0)
-</font>
-<dd><font color=red>
+<dt class="version1">ics (boolean, default 0)</dt>
+<dd class="version1">
 If ics=1, xboard will use the protocol's new "ics" command
 to inform the engine of whether or not it is playing on a chess server;
 if ics=0, it will not.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>name</strong> (boolean, see text below)
-</font>
-<dd><font color=red>
+<dt class="version1">name (boolean, see text below)</dt>
+<dd class="version1">
 If name=1, xboard will use the protocol's "name" command
 to inform the engine of the opponent's name; if name=0, it will not.
 By default, name=1 if the engine is playing on a chess server; name=0 if not.
-</font>
+</dd>
 
-<dt><font color=red>
-<strong>pause</strong> (boolean, default 0)
-</font>
-<dd><font color=red>
+<dt class="version1">pause (boolean, default 0)</dt>
+<dd class="version1">
 If pause=1, xboard may use the protocol's new "pause" command;
 if pause=0, xboard assumes that the engine does not support this command.
-</font>
+</dd>
 
-<dt><font color=green>
-<strong>nps</strong> (boolean, default ?)
-</font>
-<dd><font color=green>
+<dt class="version43">nps (boolean, default ?)</dt>
+<dd class="version43">
 If nps=1, it means the engine supports the nps command.
 If nps=0, it means the engine does not support it, and WinBoard should refrain from sending it.
 Default is that WinBoard sends it, in an attempt to try out if the engine understand it.
@@ -1407,12 +1360,10 @@ The engine should properly respond with "Error (unkown command): nps" if it does
 (as any protocol version pre-scribes),
 or WinBoard might assume that the engine did understand the command. 
 In that case the use of different time standards that ensues could lead to time forfeits for the engine.
-</font>
+</dd>
 
-<dt><font color=green>
-<strong>debug</strong> (boolean, default 0)
-</font>
-<dd><font color=green>
+<dt class="version43">debug (boolean, default 0)</dt>
+<dd class="version43">
 If debug=1, it means the engine wants to send debug output prefixed by '#',
 which WinBoard should ignore, except for including it in the winboard.debug file.
 As this feature is added to protocol 2 ony late,
@@ -1421,41 +1372,33 @@ it is important that engines check if WinBoard accepts the feature.
 If the feature is rejected,
 engines must refrain from sending the debug output,
 or do so at their own risk.
-</font>
+</dd>
 
-<dt><font color=blue>
-<strong>memory</strong> (boolean, default 0)
-</font>
-<dd><font color=blue>
+<dt class="version44">memory (boolean, default 0)</dt>
+<dd class="version44">
 If memory=1, the size of the total amount of memory available for the memory-consuming tables of the engine 
 (e.g. hash, EGTB cache)
 will be set by the GUI through the "memory" command.
-</font>
+</dd>
 
-<dt><font color=blue>
-<strong>smp</strong> (boolean, default 0)
-</font>
-<dd><font color=blue>
+<dt class="version44">smp (boolean, default 0)</dt>
+<dd class="version44">
 If smp=1, the GUI will send the "cores" command to the engine to inform it how many CPU cores it can use.
 Note that sending smp=1 does not imply the engine can use more than one CPU;
 just that it wants to receive the "cores" command.
-</font>
+</dd>
 
-<dt><font color=blue>
-<strong>egt</strong> (string, see text below)
-</font>
-<dd><font color=blue>
+<dt class="version44">egt (string, see text below)</dt>
+<dd class="version44">
 This feature indicates which end-game table formats the engine supports.
 It should be a comma-separated list of format names.
 See under the "egtpath" command in <a href="#8">section 8</a> above.
 If you do not set this feature, xboard will assume the engine does not support end-game tables,
 and will not send any "egtpath" commands to inform the engine about their whereabouts.
-</font>
+</dd>
 
-<dt><font color=blue>
-<strong>option</strong> (string, see text below)
-</font>
-<dd><font color=blue>
+<dt class="version44">option (string, see text below)</dt>
+<dd><span class="version44">
 This feature is used by the engine to define an option command to appear in a GUI menu,
 so that the user can change the corresponding setting of the engine through the GUI interactively.
 The string describes the option by defining a name, type, current value and (sometimes) the acceptable value range.
@@ -1463,27 +1406,27 @@ Unlike other features, option features are accumulated by the GUI,
 and the GUI must be able to add a new option to the list at any time,
 even after having received feature done=1.
 There are ten different options types, each requiring a slighly different syntax of the defining string:
-<br>
+<br />
 feature option="NAME -button"
-<br>
+<br />
 feature option="NAME -save"
-<br>
+<br />
 feature option="NAME -reset"
-<br>
+<br />
 feature option="NAME -check VALUE"
-<br>
+<br />
 feature option="NAME -string VALUE"
-<br>
+<br />
 feature option="NAME -spin VALUE MIN MAX"
-<br>
+<br />
 feature option="NAME -combo CHOICE1 /// CHOICE2 ..."
-<br>
+<br />
 feature option="NAME -slider VALUE MIN MAX"
-<br>
+<br />
 feature option="NAME -file VALUE"
-<br>
+<br />
 feature option="NAME -path VALUE"
-<br>
+<br />
 NAME is an arbitrary alphanumeric string which can contain spaces; 
 the other words in capitals would be replaced by the current (default) setting of the option,
 (a character string for -string options, a decimal number for -spin and -check options,
@@ -1506,24 +1449,25 @@ by sending a new set of option feature commands to the GUI,
 terminated by feature done=1.
 (The effect of sending an option feature for an option with the same name as was defined before, 
 without first receiving a -reset option command, is undefined.)
-</font>
+</span>
+</dd>
 
-<dt><font color=red>
-<strong>done</strong> (integer, no default)
-</font>
-<dd><font color=red>
+<dt class="version1">done (integer, no default)</dt>
+<dd><span class="version1">
 If you set done=1 during the initial two-second timeout after
 xboard sends you the "xboard" command, the
 timeout will end and xboard will not look for any more feature
 commands before starting normal operation.
 If you set done=0, the initial timeout is increased to one hour;
 in this case, you must set done=1 before xboard will enter normal operation.
-</font>
+</span>
+</dd>
 </dl>
-<p>
+</dd>
+
 
-<dt><strong>Illegal move: MOVE</strong>
-<dt><strong>Illegal move (REASON): MOVE</strong>
+<dt>Illegal move: MOVE</dt>
+<dt>Illegal move (REASON): MOVE</dt>
 <dd>If your engine receives a MOVE command that is recognizably a move
 but is not legal in the current position, your engine must print an
 error message in one of the above formats so that xboard can pass the
@@ -1540,8 +1484,9 @@ Generally, xboard will never send an ambiguous move, so it does not
 matter whether you respond to such a move with an Illegal move message 
 or an Error message.
 </p>
+</dd>
 
-<dt><strong>Error (ERRORTYPE): COMMAND</strong>
+<dt>Error (ERRORTYPE): COMMAND</dt>
 <dd>If your engine receives a command it does not understand or does
 not implement, it should print an error message in the above format so
 that xboard can parse it.  Examples:
@@ -1551,23 +1496,25 @@ that xboard can parse it.  Examples:
   Error (command not legal now): undo
   Error (too many parameters): level 1 2 3 4 5 6 7
 </pre>
+</dd>
 
-<dt><strong>move MOVE</strong>
+<dt>move MOVE</dt>
 <dd>Your engine is making the move MOVE.  Do not echo moves from
 xboard with this command; send only new moves made by the engine.
 
-<font color=red>
+<div class="version1">
 <p>For the actual move text from your chess engine (in place of MOVE
-above), your move should be either
+above), your move should be either</p>
 <ul>
 <li>in coordinate notation (e.g.,
 e2e4, e7e8q) with castling indicated by the King's two-square move (e.g.,
-e1g1), or
+e1g1), or</li>
 <li>in Standard Algebraic Notation (SAN) as defined in the
 Portable Game Notation standard (e.g, e4, Nf3, O-O, cxb5, Nxe4, e8=Q),
 with the extension piece at square (e.g., P at f7) to handle piece placement
-in bughouse and crazyhouse.
+in bughouse and crazyhouse.</li>
 </ul>
+<p>
 xboard itself also accepts some variants of SAN, but for compatibility
 with non-xboard interfaces, it is best not to rely on this behavior.
 </p>
@@ -1584,9 +1531,11 @@ engine to send SAN to the interface only if you have set feature san=1
 (which causes the interface to send SAN to you) and have received
 "accepted san" in reply.
 </p>
-</font>
+</div>
+</dd>
 
-<dt><strong>RESULT {COMMENT}</strong> <dd>When your engine detects
+<dt>RESULT {COMMENT}</dt>
+<dd>When your engine detects
 that the game has ended by rule, your engine must output a line of the
 form "RESULT {comment}" (without the quotes), where RESULT is a PGN
 result code (1-0, 0-1, or 1/2-1/2), and comment is the reason.  Here
@@ -1605,50 +1554,51 @@ Examples:
 <p>
 xboard relays the result to the user, the ICS, the other engine in Two
 Machines mode, and the PGN save file as required.
-<font color=green>Note that "definitey over" above means that sending this command 
+<span class="version43">Note that "definitey over" above means that sending this command 
 will be taken by WinBoard as an unconditional refusal of the engine to play on,
 which might cause you to forfeit if the game was in fact not over.
 This command should thus not be used to offer draws, accept draws,
 or make draw-by-rule claims that are not yet valid in the current position
 (but will be after you move).
-For offering and claiming such draws, "offer draw" should be used.</font>
-<p>
-<font color=blue>
+For offering and claiming such draws, "offer draw" should be used.</span>
+</p>
+
+<p class="version44">
 Note that (in accordance with FIDE rules) only KK, KNK, KBK and KBKB with all bishops on the
 same color can be claimed as draws on the basis of insufficient mating material.
 The end-games KNNK, KBKN, KNKN and KBKB with unlike bishops do have mate positions,
 and cannot be claimed.
 Complex draws based on locked Pawn chains will not be recognized as draws by most interfaces,
 so do not claim in such positions, but just offer a draw or play on.
-</font>
-<p>
-<font color=blue>
+</p>
+
+<p class="version44">
 Note to GUI programmers: RESULT commands that the engine sends immediately after its move
 might be detected by the GUI only after the opponent has moved, because of communication
 and scheduling delays, no matter how fast the engine sent it.
 Any judgement of the validity of RESULT claims based on te "current" board position
 will have to account for this uncertainty.
-</font>
 </p>
+</dd>
 
-<dt><strong>resign</strong>
+<dt>resign</dt>
 <dd>If your engine wants to resign, it can send the command "resign".
 Alternatively, it can use the "RESULT {comment}" command if the string
 "resign" is included in the comment; for example "0-1 {White
 resigns}".  xboard relays the resignation to the user, the ICS, the
 other engine in Two Machines mode, and the PGN save file as required.
-<font color=blue>Note that many interfaces work more smoothly if you resign <em>before</em>
-you move.</font>
-<p>
+<span class="version44">Note that many interfaces work more smoothly if you resign <em>before</em>
+you move.</span>
+</dd>
 
-<dt><strong>offer draw</strong>
+<dt>offer draw</dt>
 <dd>If your engine wants to offer a draw by agreement (as opposed to
 claiming a draw by rule), it can send the command "offer draw".
 xboard relays the offer to the user, the ICS, the other engine in Two
 Machines mode, and the PGN save file as required.  In Machine White,
 Machine Black, or Two Machines mode, the offer is considered valid
 until your engine has made two more moves.
-<font color=green>This command must also be used to accept a draw offer.
+<span class="version43">This command must also be used to accept a draw offer.
 Do not use the 1/2-1/2 command for that, as the offer might be no longer valid,
 in which case a refusal to play on implied by the RESULT command might make you forfeit the game.
 "offer draw" should also be used to claim 50-move and 3-fold-repetition draws
@@ -1657,11 +1607,11 @@ WinBoard will grant draw offers without the opponent having any say in
 it in situations where draws can be claimed.
 Only if the draw cannot be claimed, the offer will be passed to your opponent after you make your next move,
 just before WinBoard relays this move to the opponent.
-</font>
-<p>
+</span>
+</dd>
 
-<dt><font color=red><strong>tellopponent MESSAGE</strong></font>
-<dd><font color=red>
+<dt class="version1">tellopponent MESSAGE</dt>
+<dd class="version1">
 This command lets the engine give a message to its opponent,
 independent of whether the opponent is a user on the local machine or
 a remote ICS user (Zippy mode).  MESSAGE consists of any characters,
@@ -1670,19 +1620,19 @@ playing against a user on the local machine, xboard pops up an
 information dialog containing the message.  When the engine is playing
 against an opponent on the ICS (Zippy mode), xboard sends "say
 MESSAGE\n" to the ICS.
-<p>
+</dd>
 
-<dt><strong>tellothers MESSAGE</strong> 
-<dd>This command lets the engine give a message to people watching the
+<dt class="version1">tellothers MESSAGE </dt>
+<dd class="version1">This command lets the engine give a message to people watching the
 game other than the engine's opponent.  MESSAGE consists of any
 characters, including whitespace, to the end of the line.  When the
 engine is playing against a user on the local machine, this command
 does nothing.  When the engine is playing against an opponent on the
 ICS (Zippy mode), xboard sends "whisper MESSAGE\n" to the ICS.
-<p>
+</dd>
 
-<dt><strong>tellall MESSAGE</strong>
-<dd>This command lets the engine give a message to its opponent and
+<dt class="version1">tellall MESSAGE</dt>
+<dd class="version1">This command lets the engine give a message to its opponent and
 other people watching the game, 
 independent of whether the opponent is a user on the local machine or
 a remote ICS user (Zippy mode).  MESSAGE consists of any characters,
@@ -1691,54 +1641,51 @@ playing against a user on the local machine, xboard pops up an
 information dialog containing the message.  When the engine is playing
 against an opponent on the ICS (Zippy mode), xboard sends "kibitz
 MESSAGE\n" to the ICS.
-</font>
-<p>
+</dd>
 
-<dt><strong>telluser MESSAGE</strong>
+<dt>telluser MESSAGE</dt>
 <dd>xboard pops up an information dialog containing the message.
 MESSAGE consists of any characters, including whitespace, to the end
 of the line.
-<p>
+</dd>
 
-<dt><strong>tellusererror MESSAGE</strong>
+<dt>tellusererror MESSAGE</dt>
 <dd>xboard pops up an error dialog containing the message.
 MESSAGE consists of any characters, including whitespace, to the end
 of the line.
-<p>
+</dd>
 
-<dt><strong>askuser REPTAG MESSAGE</strong>
+<dt>askuser REPTAG MESSAGE</dt>
 <dd>Here REPTAG is a string containing no whitespace, and MESSAGE
 consists of any characters, including whitespace, to the end of the
 line.  xboard pops up a question dialog that says MESSAGE and
 has a typein box.  If the user types in "bar", xboard sends "REPTAG
 bar" to the engine.  The user can cancel the dialog and send nothing.
-<p>
+</dd>
 
-<dt><strong>tellics MESSAGE</strong>
+<dt>tellics MESSAGE</dt>
 <dd>In Zippy mode, xboard sends "MESSAGE\n" to ICS.  MESSAGE consists
 of any characters, including whitespace, to the end of the line.
-<p>
+</dd>
 
-<dt><font color=red><strong>tellicsnoalias MESSAGE</strong></font>
-<dd><font color=red>
+<dt class="version1">tellicsnoalias MESSAGE</dt>
+<dd class="version1">
 In Zippy mode, xboard sends "xMESSAGE\n" to ICS, where "x" is a
 character that prevents the ICS from expanding command aliases, if
 xboard knows of such a character.  (On chessclub.com and chess.net,
 "/" is used; on freechess.org, "$" is used.)  MESSAGE consists of any
 characters, including whitespace, to the end of the line.
-</font>
-<p>
+</dd>
 
-<dt><font color=green><strong># COMMENT</strong></font>
-<dd><font color=green>
+<dt class="version43"># COMMENT</dt>
+<dd class="version43">
 The engine can send any string of printable characters, terminated by a newline,
 for inclusion in the winboard.debug file, provided the line starts with a '#' character.
 If the engine has set feature debug=1,
 it is guaranteed that WinBoard (and any future version of it) will completely ignore
 these lines in any other respect.
-</font>
+</dd>
 </dl>
-<p>
 
 <h2><a name="10">10. Thinking Output</a></h2>
 
@@ -1754,17 +1701,15 @@ output should be in the following format:
 
 <pre>ply score time nodes pv</pre>
 
-Where:
+<p>Where:</p>
 <table>
-<tr align="left"><th>ply<td>Integer giving current search depth.
-<tr align="left"><th>score<td>Integer giving current evaluation in centipawns.
-<tr align="left"><th>time<td>Current search time in centiseconds (ex:
-1028 = 10.28 seconds).
-
-<tr align="left"><th>nodes<td>Nodes searched.
-<tr align="left"><th>pv<td>Freeform text giving current "best" line.
+<tr><td>ply</td><td>Integer giving current search depth.</td></tr>
+<tr><td>score</td><td>Integer giving current evaluation in centipawns.</td></tr>
+<tr><td>time</td><td>Current search time in centiseconds (ex:1028 = 10.28 seconds).</td></tr>
+<tr><td>nodes</td><td>Nodes searched.</td></tr>
+<tr><td>pv</td><td>Freeform text giving current "best" line.
 You can continue the pv onto another line if you start each
-continuation line with at least four space characters.
+continuation line with at least four space characters.</td></tr>
 </table>
 
 <p>
@@ -1777,12 +1722,14 @@ Example:
 Meaning:
 </p>
 
-9 ply, score=1.56, time = 10.84 seconds, nodes=48000, 
-PV = "Nf3 Nc6 Nc3 Nf6"
+<pre>
+9 ply, score=1.56, time = 10.84 seconds, nodes=48000, PV = "Nf3 Nc6 Nc3 Nf6"
+</pre>
 
 <p>
 Longer example from actual Crafty output:
 </p>
+
 <pre>
   4    109      14   1435  1. e4 d5 2. Qf3 dxe4 3. Qxe4 Nc6
   4    116      23   2252  1. Nf3 Nc6 2. e4 e6
@@ -1813,25 +1760,25 @@ units.  Example:
 <pre>
  2.     14    0       38   d1d2  e8e7 
  3+     78    0       65   d1d2  e8e7  d2d3 
- 3&     14    0       89   d1d2  e8e7  d2d3 
- 3&     76    0      191   d1e2  e8e7  e2e3 
+ 3&amp;     14    0       89   d1d2  e8e7  d2d3 
+ 3&amp;     76    0      191   d1e2  e8e7  e2e3 
  3.     76    0      215   d1e2  e8e7  e2e3 
- 4&     15    0      366   d1e2  e8e7  e2e3  e7e6 
+ 4&amp;     15    0      366   d1e2  e8e7  e2e3  e7e6 
  4.     15    0      515   d1e2  e8e7  e2e3  e7e6 
  5+     74    0      702   d1e2  f7f5  e2e3  e8e7  e3f4 
- 5&     71    0     1085   d1e2  e8e7  e2e3  e7e6  e3f4 
+ 5&amp;     71    0     1085   d1e2  e8e7  e2e3  e7e6  e3f4 
  5.     71    0     1669   d1e2  e8e7  e2e3  e7e6  e3f4 
- 6&     48    0     3035   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
+ 6&amp;     48    0     3035   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
  6.     48    0     3720   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
- 7&     48    0     6381   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
+ 7&amp;     48    0     6381   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
  7.     48    0    10056   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
- 8&     66    1    20536   d1e2  e8e7  e2e3  e7e6  e3d4  g7g5  a2a4  f7f5 
+ 8&amp;     66    1    20536   d1e2  e8e7  e2e3  e7e6  e3d4  g7g5  a2a4  f7f5 
  8.     66    1    24387   d1e2  e8e7  e2e3  e7e6  e3d4  g7g5  a2a4  f7f5 
- 9&     62    2    38886   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  a2a4  h5h4 
+ 9&amp;     62    2    38886   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  a2a4  h5h4 
                            d4e4 
  9.     62    4    72578   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  a2a4  h5h4 
                            d4e4 
-10&     34    7   135944   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  c2c4  h5h4 
+10&amp;     34    7   135944   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  c2c4  h5h4 
                            d4e4  f7f5  e4f4 
 10.     34    9   173474   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  c2c4  h5h4 
                            d4e4  f7f5  e4f4 
@@ -1877,8 +1824,7 @@ means there are 30 seconds.  The final 0 means that we are in
 conventional clock mode.
 </p>
 
-<p>
-<font color=green>
+<p class="version43">
 Note that the time parameter in this command is not a pure numeric argument,
 but in general is a character string, in order to pass the number of seconds.
 Engines are encouraged to ignore any unexpected characters at the end of this string,
@@ -1892,7 +1838,6 @@ rather than another 25 minutes for the next 40 moves.
 When the time comes, (i.e. after the 40 moves), 
 it will be informed of the time-control change by receiving a new "level 0 5 0" command,
 but engines with advanced time management might want to plan for this in advance.
-</font>
 </p>
 
 <p>
@@ -1919,7 +1864,7 @@ can go negative and then become positive again because of the
 increment.)
 </p>
 
-<p><font color=blue>
+<p class="version44">
 The number of moves given in the level command (when non-zero) should 
 be taken as the number of moves still to do before the specified time
 will be added to the clock, if the "level" command is received after
@@ -1938,7 +1883,7 @@ and the engine receives "level 20 22 0" just before move 41,
 it should understand that it should do the next 20 moves in 22 minutes
 (pehaps because the secondary session was 20 moves per 15 minutes,
 and it had 7 minutes left on its clock after the first 40 moves).
-</font></p>
+</p>
 
 <p>
 A special rule on some ICS implementations: if you ask for a game with
@@ -1975,11 +1920,11 @@ on one move does not accumulate for use on later moves.
 from files.  However, all of these look the same from the chess
 engine's perspective. Basically, the engine just has to respond to the
 "analyze" command.  
-<font color=red>
+<span class="version1">
 Beginning in protocol version 2,
 if your engine does not support analyze mode, it should use
 the feature command to set analyze=0.  
-</font>
+</span>
 The older method of
 printing the error message "Error (unknown command): analyze" in
 response to the "analyze" command will also work, however.
@@ -1994,19 +1939,18 @@ following commands while in analyze mode:
 </p>
 
 <ul>
-<li>Any legal move, as in force mode
-<li><strong>undo</strong>&nbsp;&nbsp; Back up one move and analyze previous position.
-<li><strong>new</strong>&nbsp;&nbsp; Reset position to start of game but stay in analyze mode.
-<li><font color=red><strong>setboard</strong> if you have set feature setboard=1; otherwise <strong>edit</strong>.  Exiting edit mode returns to analyze mode.
-</font>
-<li><strong>exit</strong>&nbsp;&nbsp; Leave analyze mode.
-<li><strong>.</strong>&nbsp;&nbsp; Send a search status update (optional); see below.
-<li><font color=red>
+<li>Any legal move, as in force mode</li>
+<li><strong>undo</strong>&nbsp;&nbsp; Back up one move and analyze previous position.</li>
+<li><strong>new</strong>&nbsp;&nbsp; Reset position to start of game but stay in analyze mode.</li>
+<li><span class="version1"><strong>setboard</strong> if you have set feature setboard=1; otherwise <strong>edit</strong>.  Exiting edit mode returns to analyze mode.</span></li>
+<li><strong>exit</strong>&nbsp;&nbsp; Leave analyze mode.</li>
+<li><strong>.</strong>&nbsp;&nbsp; Send a search status update (optional); see below.</li>
+<li><span class="version1">
 <strong>bk</strong>&nbsp;&nbsp; Show book moves from this position,
-if any; see above.</font>
-<li><font color=red>
+if any; see above.</span></li>
+<li><span class="version1">
 <strong>hint</strong>&nbsp;&nbsp; Show the predicted move from this
-position, if any; see above.</font>
+position, if any; see above.</span></li>
 </ul>
   
 <p>
@@ -2020,19 +1964,18 @@ The chess engine should respond to ".\n" with a line like this:
 </p>
 
 <pre>
-stat01: time nodes ply mvleft mvtot <font color=red>mvname</font>
+stat01: time nodes ply mvleft mvtot <span class="version1">mvname</span>
 </pre>
 
-Where:
+<p>Where:</p>
 <table>
-<tr align="left"><th>time<td>Elapsed search time in centiseconds (ie: 567 = 5.67 seconds).
-<tr align="left"><th>nodes<td>Nodes searched so far.
-<tr align="left"><th>ply<td>Search depth so far.
-<tr align="left"><th>mvleft<td>Number of moves left to consider at this depth.
-<tr align="left"><th>mvtot<td>Total number of moves to consider.
-<tr align="left"><th><font color=red>mvname</font><td><font color=red>
-Move currently being considered (SAN or coordinate notation).  Optional;
-added in protocol version 2.</font>
+<tr><td>time</td><td>Elapsed search time in centiseconds (ie: 567 = 5.67 seconds).</td></tr>
+<tr><td>nodes</td><td>Nodes searched so far.</td></tr>
+<tr><td>ply</td><td>Search depth so far.</td></tr>
+<tr><td>mvleft</td><td>Number of moves left to consider at this depth.</td></tr>
+<tr><td>mvtot</td><td>Total number of moves to consider.</td></tr>
+<tr class="version1"><td>mvname</td><td>Move currently being considered (SAN or coordinate notation).  Optional;
+added in protocol version 2.</td></tr>
 </table>
 
 <p>
@@ -2082,70 +2025,69 @@ that new engines set the feature colors=0 and/or ignore the commands.
 
 <dl>
 
-<dt><strong>time N</strong>
-<dt><strong>otim N</strong>
-<dt><strong>MOVE</strong>
+<dt>time N</dt>
+<dt>otim N</dt>
+<dt>MOVE</dt>
 <dd>Sent when the opponent makes a move and the engine is already
 playing the opposite color.
-<p>
-
-<dt><strong>white</strong>
-<dt><strong>go</strong>
+</dd>
+<dt>white</dt>
+<dt>go</dt>
 <dd>Sent when the engine is in force mode or playing Black but should
 switch to playing White.  This sequence is sent only when White is
 already on move.  
-<font color=red>
+<span class="version1">
 If you set the feature colors=0, "white" is not sent.
-</font>
-<p>
+</span>
+</dd>
 
-<dt><strong>black</strong>
-<dt><strong>go</strong>
+<dt>black</dt>
+<dt>go</dt>
 <dd>Sent when the engine is in force mode or playing White but should
 switch to playing Black.  This sequence is sent only when Black is
 already on move.  
-<font color=red>
+<span class="version1">
 If you set the feature colors=0, "black" is not sent.
-</font>
-<p>
-
-<dt><strong>white</strong>
-<dt><strong>time N</strong>
-<dt><strong>otim N</strong>
-<dt><strong>black</strong>
-<dt><strong>go</strong>
+</span>
+</dd>
+
+<dt>white</dt>
+<dt>time N</dt>
+<dt>otim N</dt>
+<dt>black</dt>
+<dt>go</dt>
 <dd>Sent when Black is on move, the engine is in force mode or playing
 White, and the engine's clock needs to be updated before it starts
 playing.  
 The initial "white" is a kludge to accommodate GNU Chess
 4's variant interpretation of these commands.  
-<font color=red>
+<span class="version1">
 If you set the feature colors=0, "white" and "black" are not sent.
-</font>
-<p>
-
-<dt><strong>black</strong>
-<dt><strong>time N</strong>
-<dt><strong>otim N</strong>
-<dt><strong>white</strong>
-<dt><strong>go</strong>
+</span>
+</dd>
+
+<dt>black</dt>
+<dt>time N</dt>
+<dt>otim N</dt>
+<dt>white</dt>
+<dt>go</dt>
 <dd>Sent when White is on move, the engine is in force mode or playing
 Black, and the engine's clock needs to be updated before it starts
 playing.  See previous idiom.  
 The initial "black" is a kludge to accommodate GNU Chess
 4's variant interpretation of these commands.  
-<font color=red>
+<span class="version1">
 If you set the feature colors=0, "black" and "white" are not sent.
-</font>
-<p>
+</span>
+</dd>
 
-<dt><strong>hard</strong>
-<dt><strong>easy</strong>
+<dt>hard</dt>
+<dt>easy</dt>
 <dd>Sent in sequence to turn off pondering if xboard is not sure
 whether it is on.  When xboard is sure, it will send "hard" or "easy"
 alone.  xboard does this because "easy" is a toggle in GNU Chess 4 but
 "hard" is an absolute on.
-
+</dd>
 </dl>
 
 <p>
@@ -2157,17 +2099,17 @@ code commands or the resign command instead.
 </p>
 
 <table>
-<tr align="left"><th>Command              <th>Interpreted as
-<tr align="left"><td>White resigns        <td>0-1 {White resigns}
-<tr align="left"><td>Black resigns        <td>1-0 {Black resigns}
-<tr align="left"><td>White                <td>1-0 {White mates}
-<tr align="left"><td>Black                <td>0-1 {Black mates}
-<tr align="left"><td>Draw                 <td>1/2-1/2 {Draw}
-<tr align="left"><td>computer mates       <td>1-0 {White mates} or 0-1 {Black mates}
-<tr align="left"><td>opponent mates       <td>1-0 {White mates} or 0-1 {Black mates}
-<tr align="left"><td>computer resigns     <td>0-1 {White resigns} or 1-0 {Black resigns}
-<tr align="left"><td>game is a draw       <td>1/2-1/2 {Draw}
-<tr align="left"><td>checkmate            <td>1-0 {White mates} or 0-1 {Black mates}
+<tr><th>Command</th>              <th>Interpreted as</th></tr>
+<tr><td>White resigns        </td><td>0-1 {White resigns}</td></tr>
+<tr><td>Black resigns        </td><td>1-0 {Black resigns}</td></tr>
+<tr><td>White                </td><td>1-0 {White mates}</td></tr>
+<tr><td>Black                </td><td>0-1 {Black mates}</td></tr>
+<tr><td>Draw                 </td><td>1/2-1/2 {Draw}</td></tr>
+<tr><td>computer mates       </td><td>1-0 {White mates} or 0-1 {Black mates}</td></tr>
+<tr><td>opponent mates       </td><td>1-0 {White mates} or 0-1 {Black mates}</td></tr>
+<tr><td>computer resigns     </td><td>0-1 {White resigns} or 1-0 {Black resigns}</td></tr>
+<tr><td>game is a draw       </td><td>1/2-1/2 {Draw}</td></tr>
+<tr><td>checkmate            </td><td>1-0 {White mates} or 0-1 {Black mates}</td></tr>
 </table>
 
 <p>
@@ -2183,8 +2125,8 @@ An alternative move syntax is also recognized:
 </p>
 
 <table>
-<tr align="left"><th>Command              <th>Interpreted as
-<tr align="left"><td>NUMBER ... MOVE      <td>move MOVE
+<tr><th>Command              </th><th>Interpreted as</th></tr>
+<tr><td>NUMBER ... MOVE      </td><td>move MOVE</td></tr>
 </table>
 
 <p>
@@ -2220,19 +2162,16 @@ commands "tellall", "tellothers", "tellopponent", "tellics" (if needed),
 "1/2-1/2 {COMMENT}", or "offer draw", as appropriate.
 </p>
 
-<p>
-<font color=red>
+<p class="version1">
 If the engine responds to the "sd DEPTH" command with an error message
 indicating the command is not supported (such as "Illegal move: sd"),
 xboard sets an internal flag and subsequently uses the command
 "depth\nDEPTH" instead, for the benefit of GNU Chess 4.  Note the
 newline in the middle of this command!  New engines should not rely on
 this feature.
-</font>
 </p>
 
-<p>
-<font color=red>
+<p class="version1">
 If the engine responds to the "st TIME" command with an error message
 indicating the command is not supported (such as "Illegal move: st"),
 xboard sets an internal flag and subsequently uses the command "level
@@ -2241,10 +2180,9 @@ not a standard use of the level command, as TIME seconds are not added
 after each player makes 1 move; rather, each move is made in at most
 TIME seconds.  New engines should not implement or rely on this
 feature.
-</font>
 </p>
 
-<font color=red>
+<div class="version1">
 <p>
 In support of the -firstHost/-secondHost features, which allow a chess
 engine to be run on another machine using the rsh protocol, xboard recognizes
@@ -2252,18 +2190,17 @@ error messages that are likely to come from rsh as fatal errors.  The following
 messages are currently recognized:
 </p>
 
-<blockquote>
-unknown host<br>
-No remote directory<br>
-not found<br>
-No such file<br>
-can't alloc<br>
-Permission denied<br>
-</blockquote>
-</font>
+<ul>
+<li>unknown host</li>
+<li>No remote directory</li>
+<li>not found</li>
+<li>No such file</li>
+<li>can't alloc</li>
+<li>Permission denied</li>
+</ul>
+</div>
 
-<p>
-<font color=red>
+<p class="version1">
 ChessBase/Fritz now implements the xboard/winboard protocol and can use
 WinBoard-compatible engines in its GUI.  ChessBase's version of the
 protocol is generally the same as version 1, except that they have
@@ -2275,21 +2212,16 @@ implement these additional commands, and you should also be aware of
 the peculiar way that ChessBase uses the protocol.  See their <a
 href="http://www.chessbase.com/Products/engines/winboard/tech.htm"
 >web page</a> for documentation.
-</font>
 </p>
 
-<p>
-<font color=red>
+<p class="version1">
 ChessMaster 8000 also implements version 1 of the xboard/winboard
 protocol and can use WinBoard-compatible engines.  The original
 release of CM8000 also has one additional restriction: only pure
 coordinate notation (e.g., e2e4) is accepted in the move command.  A
 patch to correct this should be available from The Learning Company
 (makers of CM8000) in February 2001.
-</font>
 </p>
 
-<hr noshade size="2">
-<address>converted to HTML by <a href="http://www.jakob.at/steffen/">Steffen A. Jakob</a></address>
 </body>
 </html>
diff --git a/frontend.h b/frontend.h
index c89673f..ed92687 100644
--- a/frontend.h
+++ b/frontend.h
@@ -84,9 +84,12 @@ void AskQuestion P((String title, String question, String replyPrefix,
 void DisplayIcsInteractionTitle P((String title));
 void DrawPosition P((int fullRedraw, Board board));
 void ResetFrontEnd P((void));
+void NotifyFrontendLogin P((void));
 void CommentPopUp P((String title, String comment));
 void CommentPopDown P((void));
 void EditCommentPopUp P((int index, String title, String text));
+void ErrorPopDown P((void));
+int  EventToSquare P((int x, int limit));
 
 void RingBell P((void));
 void PlayIcsWinSound P((void));
@@ -117,6 +120,13 @@ typedef void (*DelayedEventCallback) P((void));
 void ScheduleDelayedEvent P((DelayedEventCallback cb, long millisec));
 DelayedEventCallback GetDelayedEvent P((void));
 void CancelDelayedEvent P((void));
+// [HGM] mouse: next six used by mouse handler, which was moved to backend
+extern int fromX, fromY, toX, toY;
+typedef enum { Press, Release } ClickType;
+void PromotionPopUp P((void));
+void DragPieceBegin P((int x, int y));
+void DragPieceEnd P((int x, int y));
+void LeftClick P((ClickType c, int x, int y));
 
 int StartChildProcess P((char *cmdLine, char *dir, ProcRef *pr));
 void DestroyChildProcess P((ProcRef pr, int/*boolean*/ signal));
@@ -158,8 +168,8 @@ void TagsPopDown P((void));
 
 void ICSInitScript P((void));
 void StartAnalysisClock P((void));
-void AnalysisPopUp P((char *title, char *label));
-void AnalysisPopDown P((void));
+void EngineOutputPopUp P((void));
+void EgineOutputPopDown P((void));
 
 void SetHighlights P((int fromX, int fromY, int toX, int toY));
 void ClearHighlights P((void));
@@ -173,6 +183,7 @@ void HistorySet P((char movelist[][2*MOVE_LEN], int first, int last, int current
 void FreezeUI P((void));
 void ThawUI P((void));
 extern char *programName;
+extern int commentUp;
 
 typedef struct FrontEndProgramStats_TAG {
     int which;
diff --git a/gamelist.c b/gamelist.c
old mode 100644
new mode 100755
index a0978a0..da123a4
--- a/gamelist.c
+++ b/gamelist.c
@@ -111,6 +111,7 @@ void GameListInitGameInfo(gameInfo)
     gameInfo->blackRating = -1; /* unknown */
     gameInfo->variant = VariantNormal;
     gameInfo->outOfBook = NULL;
+    gameInfo->resultDetails = NULL;
 }
 
 
@@ -155,6 +156,7 @@ int GameListBuild(f)
     ListGame *currentListGame = NULL;
     int error;
     int offset;
+    char lastComment[MSG_SIZ];
 
     GameListFree(&gameList);
     yynewfile(f);
@@ -240,6 +242,19 @@ int GameListBuild(f)
 	      lastStart = MoveNumberOne;
 	    }
 	    break;
+        case WhiteWins: // [HGM] rescom: save last comment as result details
+        case BlackWins:
+        case GameIsDrawn:
+        case GameUnfinished:
+	    if (currentListGame->gameInfo.resultDetails != NULL) {
+		free(currentListGame->gameInfo.resultDetails);
+	    }
+	    if(yy_text[0] == '{') { char *p;
+		strcpy(lastComment, yy_text+1);
+		if(p = strchr(lastComment, '}')) *p = 0;
+		currentListGame->gameInfo.resultDetails = StrSave(lastComment);
+	    }
+	    break;
 	  default:
 	    break;
 	}
@@ -302,7 +317,6 @@ void ClearGameInfo(gameInfo)
     if (gameInfo->outOfBook != NULL) {
         free(gameInfo->outOfBook);
     }
-
     GameListInitGameInfo(gameInfo);
 }
 
@@ -325,7 +339,7 @@ GameListLineOld(number, gameInfo)
     return ret;
 }
 
-#define MAX_FIELD_LEN   64  /* To avoid overflowing the buffer */
+#define MAX_FIELD_LEN   80  /* To avoid overflowing the buffer */
 
 char * GameListLine( int number, GameInfo * gameInfo )
 {
@@ -381,6 +395,9 @@ char * GameListLine( int number, GameInfo * gameInfo )
         case GLT_OUT_OF_BOOK:
             strncpy( buf, gameInfo->outOfBook ? gameInfo->outOfBook : "?", MAX_FIELD_LEN );
             break;
+        case GLT_RESULT_COMMENT:
+            strncpy( buf, gameInfo->resultDetails ? gameInfo->resultDetails : "res?", MAX_FIELD_LEN );
+            break;
         default:
             break;
         }
@@ -410,12 +427,14 @@ char * GameListLineFull( int number, GameInfo * gameInfo )
     char * round = gameInfo->round ? gameInfo->round : "?";
     char * date = gameInfo->date ? gameInfo->date : "?";
     char * oob = gameInfo->outOfBook ? gameInfo->outOfBook : "";
+    char * reason = gameInfo->resultDetails ? gameInfo->resultDetails : "";
     
-    int len = 64 + strlen(event) + strlen(site) + strlen(white) + strlen(black) + strlen(date) + strlen(oob);
+    int len = 64 + strlen(event) + strlen(site) + strlen(white) + strlen(black) + strlen(date) + strlen(oob) + strlen(reason);
 
     char *ret = (char *) malloc(len);
 
-    sprintf(ret, "%d, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\"", number, event, site, round, white, black, PGNResult(gameInfo->result), date, oob );
+    sprintf(ret, "%d, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\"",
+	number, event, site, round, white, black, PGNResult(gameInfo->result), reason, date, oob );
 
     return ret;
 }
diff --git a/mdate-sh b/mdate-sh
new file mode 100755
index 0000000..83d2700
--- /dev/null
+++ b/mdate-sh
@@ -0,0 +1,205 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2007-03-30.02
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007 Free Software
+# Foundation, Inc.
+# written by Ulrich Drepper <drepper at gnu.ai.mit.edu>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification time of FILE.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume `unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+  ls_command="$ls_command -n"
+fi
+
+# A `ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+	 Jan) nummonthtod=1;;
+	 Feb) nummonthtod=2;;
+	 Mar) nummonthtod=3;;
+	 Apr) nummonthtod=4;;
+	 May) nummonthtod=5;;
+	 Jun) nummonthtod=6;;
+	 Jul) nummonthtod=7;;
+	 Aug) nummonthtod=8;;
+	 Sep) nummonthtod=9;;
+	 Oct) nummonthtod=10;;
+	 Nov) nummonthtod=11;;
+	 Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+	 year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/missing b/missing
new file mode 100755
index 0000000..1c8ff70
--- /dev/null
+++ b/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+#   Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f y.tab.h; then
+	echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f lex.yy.c; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+	/^@setfilename/{
+	  s/.* \([^ ]*\) *$/\1/
+	  p
+	  q
+	}' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case $firstarg in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case $firstarg in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/moves.c b/moves.c
index b5b9c2f..2a017c3 100644
--- a/moves.c
+++ b/moves.c
@@ -69,7 +69,7 @@ int BlackPiece P((ChessSquare));
 int SameColor P((ChessSquare, ChessSquare));
 int PosFlags(int index);
 
-extern char initialRights[BOARD_SIZE]; /* [HGM] all rights enabled, set in InitPosition */
+extern signed char initialRights[BOARD_SIZE]; /* [HGM] all rights enabled, set in InitPosition */
 
 
 int WhitePiece(piece)
@@ -680,6 +680,14 @@ void GenPseudoLegal(board, flags, epfile, callback, closure)
                     }
 		  }
 	      break;
+	    case WhiteFalcon: // [HGM] wild: for wildcards, self-capture symbolizes move to anywhere
+	    case BlackFalcon:
+	    case WhiteCobra:
+	    case BlackCobra:
+	    case WhiteLance:
+	    case BlackLance:
+	      callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+	      break;
 
 	  }
       }
@@ -1053,7 +1061,7 @@ ChessMove LegalityTest(board, flags, epfile, castlingRights, rf, ff, rt, ft, pro
     if(piece == WhiteFalcon || piece == BlackFalcon ||
        piece == WhiteCobra  || piece == BlackCobra  ||
        piece == WhiteLance  || piece == BlackLance)
-        return NormalMove;
+        return CheckTest(board, flags, rf, ff, rt, ft, FALSE) ? IllegalMove : NormalMove;
 
     cl.rf = rf;
     cl.ff = ff;
@@ -1195,6 +1203,13 @@ void DisambiguateCallback(board, flags, kind, rf, ff, rt, ft, closure)
      VOIDSTAR closure;
 {
     register DisambiguateClosure *cl = (DisambiguateClosure *) closure;
+    int wildCard = FALSE; ChessSquare piece = board[rf][ff];
+
+    // [HGM] wild: for wild-card pieces rt and rf are dummies
+    if(piece == WhiteFalcon || piece == BlackFalcon ||
+       piece == WhiteCobra  || piece == BlackCobra  ||
+       piece == WhiteLance  || piece == BlackLance)
+        wildCard = TRUE;
 
     if ((cl->pieceIn == EmptySquare || cl->pieceIn == board[rf][ff]
          || PieceToChar(board[rf][ff]) == '~'
@@ -1202,15 +1217,15 @@ void DisambiguateCallback(board, flags, kind, rf, ff, rt, ft, closure)
                                                                       ) &&
 	(cl->rfIn == -1 || cl->rfIn == rf) &&
 	(cl->ffIn == -1 || cl->ffIn == ff) &&
-	(cl->rtIn == -1 || cl->rtIn == rt) &&
-	(cl->ftIn == -1 || cl->ftIn == ft)) {
+	(cl->rtIn == -1 || cl->rtIn == rt || wildCard) &&
+	(cl->ftIn == -1 || cl->ftIn == ft || wildCard)) {
 
 	cl->count++;
         cl->piece = board[rf][ff];
 	cl->rf = rf;
 	cl->ff = ff;
-	cl->rt = rt;
-	cl->ft = ft;
+	cl->rt = wildCard ? cl->rtIn : rt;
+	cl->ft = wildCard ? cl->ftIn : ft;
 	cl->kind = kind;
     }
 }
@@ -1221,6 +1236,7 @@ void Disambiguate(board, flags, epfile, closure)
      DisambiguateClosure *closure;
 {
     int illegal = 0; char c = closure->promoCharIn;
+
     closure->count = 0;
     closure->rf = closure->ff = closure->rt = closure->ft = 0;
     closure->kind = ImpossibleMove;
@@ -1252,24 +1268,10 @@ void Disambiguate(board, flags, epfile, closure)
         /* [HGM] Shogi promotions. '=' means defer */
         if(closure->rfIn != DROP_RANK && closure->kind == NormalMove) {
             ChessSquare piece = closure->piece;
-#if 0
-    if (appData.debugMode) {
-        fprintf(debugFP, "Disambiguate A:   %d(%d,%d)-(%d,%d) = %d (%c)\n",
-                          closure->pieceIn,closure->ffIn,closure->rfIn,closure->ftIn,closure->rtIn,
-                          closure->promoCharIn,closure->promoCharIn);
-    }
-#endif
             if(c != NULLCHAR && c != 'x' && c != '+' && c != '=' &&
                ToUpper(PieceToChar(PROMOTED piece)) != ToUpper(c) ) 
                     closure->kind = IllegalMove;
             else if(flags & F_WHITE_ON_MOVE) {
-#if 0
-    if (appData.debugMode) {
-        fprintf(debugFP, "Disambiguate B:   %d(%d,%d)-(%d,%d) = %d (%c)\n",
-                          closure->pieceIn,closure->ffIn,closure->rfIn,closure->ftIn,closure->rtIn,
-                          closure->promoCharIn,closure->promoCharIn);
-    }
-#endif
                 if( (int) piece < (int) WhiteWazir &&
                      (closure->rf > BOARD_HEIGHT-4 || closure->rt > BOARD_HEIGHT-4) ) {
                     if( (piece == WhitePawn || piece == WhiteQueen) && closure->rt > BOARD_HEIGHT-2 ||
@@ -1303,13 +1305,6 @@ void Disambiguate(board, flags, epfile, closure)
 	    closure->kind = IllegalMove;
 	}
     }
-#if 0
-    if (appData.debugMode) {
-        fprintf(debugFP, "Disambiguate C:   %d(%d,%d)-(%d,%d) = %d (%c)\n",
-                          closure->pieceIn,closure->ffIn,closure->rfIn,closure->ftIn,closure->rtIn,
-                          closure->promoCharIn,closure->promoCharIn);
-    }
-#endif
     /* [HGM] returns 'q' for optional promotion, 'n' for mandatory */
     if(closure->promoCharIn != '=')
         closure->promoChar = ToLower(closure->promoCharIn);
diff --git a/parser.c b/parser.c
new file mode 100644
index 0000000..0fa9076
--- /dev/null
+++ b/parser.c
@@ -0,0 +1,4179 @@
+
+#line 3 "parser.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart(yyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart (FILE *input_file  );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
+void yy_delete_buffer (YY_BUFFER_STATE b  );
+void yy_flush_buffer (YY_BUFFER_STATE b  );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
+
+void *yyalloc (yy_size_t  );
+void *yyrealloc (void *,yy_size_t  );
+void yyfree (void *  );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        yyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        yyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+	yyleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 42
+#define YY_END_OF_BUFFER 43
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_acclist[602] =
+    {   0,
+       43,   41,   42,   41,   42,   41,   42,   40,   41,   42,
+       41,   42,   25,   41,   42,   41,   42,   40,   41,   42,
+       40,   41,   42,16410,   40,   41,   42,16410,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   41,   42,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,16410,   40,   41,   42,
+    16410,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   41,   42,   33,   40,   17,   40,
+        9,   40,   40,   40,16410, 8218,   40,   35,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,    9,   40,
+       40,   40,   40,   36,   40,    3,   40,   40,    4,   40,
+       40,   40,   40,   40,   40,    9,   40,   40,   40,   34,
+       40,   40,    9,   40,   40,   40,16410, 8218,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,    9,
+       40,   40,   40,   40,   40,    3,   40,   40,    4,   40,
+       40,   40,   40,   40,   40,    9,   40,   40,   40,   15,
+
+        9,   40,   23,   40,   23,    8,   40, 8218,   22,   40,
+       22,   24,   40,   40,   40,    6,   40,   40,   40,   40,
+       40,   40,    9,   40,   40,   40,   40,    4,   40,   40,
+        3,    3,   40,    3,   40,   40,    4,    5,   40,    4,
+        4,   40,   40,   40,   40,    9,   40,   40,   34,   39,
+        9,   40,   23,   40,    8,   40,   22,   40,   35,   40,
+       40,   40,    6,   40,   40,   40,   40,   40,   40,    9,
+       40,   40,   40,   40,    4,   40,   40,    3,   40,    3,
+       40,   40,    5,   40,    4,   40,   40,   40,   40,    9,
+       40,   40,   38,   38,   38,   37,   25,   25,    6,   40,
+
+       10,    6,   40,    7,   40,    6,   40,    6,   40,   40,
+       40,   19,   40,   40,   16,   40,   40,   40,   40,   40,
+       36,    3,    3,    2,   40,    5,    4,    5,    5,   40,
+       40,    4,    4,   40,   40,   25,   39,   40,    6,   40,
+        7,   40,   40,   40,   40,   40,   19,   40,   40,   16,
+       40,   40,   40,   40,   40,    2,   40,    5,   40,   40,
+        4,   40,   40,   38,    7,    7,    1,   40,   20,   40,
+       40,   19,   40,   40,   40,   40,   40,   40,   30,   36,
+        2,    2,    2,   40,    5,    5,    5,   40,   39,    1,
+       40,   40,   40,   19,   40,   40,   40,   40,   40,   40,
+
+        2,   40,    5,   40,   27,   38,    1,   23,   23,   22,
+       22,   24,   24,    1,    1,   40,   21,   20,   40,   40,
+       40,   11,   40,   40,   28,   36,   30,    2,    2,   27,
+       34,   39,   39,    1,   40,   40,   40,   40,   11,   40,
+       40,   18,    1,   24,    1,   21,   19,   40,   40,   40,
+       11,   40,   40,   40,   40,   40,   11,   40,   40,   12,
+       40,   40,   40,   40,   12,   40,   40,   14,   40,   40,
+       40,   14,   40,   40,   40,   39,   40,   40,   40,   40,
+       39,   39,   40,   40,   31,   40,   39,   39,   31,   40,
+       13,   31,   32,   32,   35,   39,   39,   31,   39,   34,
+
+       29
+    } ;
+
+static yyconst flex_int16_t yy_accept[689] =
+    {   0,
+        1,    1,    1,    2,    4,    6,    8,   11,   13,   16,
+       18,   21,   25,   29,   31,   34,   37,   40,   43,   46,
+       49,   52,   55,   58,   61,   63,   66,   69,   72,   75,
+       78,   81,   84,   87,   90,   93,   96,   99,  102,  105,
+      108,  111,  114,  116,  118,  121,  124,  128,  132,  134,
+      137,  140,  143,  146,  149,  152,  155,  158,  161,  164,
+      167,  170,  173,  176,  179,  182,  185,  188,  191,  194,
+      197,  200,  203,  206,  209,  212,  215,  217,  217,  218,
+      219,  219,  219,  219,  219,  220,  220,  220,  220,  221,
+      221,  223,  223,  223,  223,  224,  224,  224,  226,  226,
+
+      228,  228,  229,  229,  230,  230,  231,  231,  232,  232,
+      233,  234,  235,  236,  237,  238,  239,  241,  242,  243,
+      244,  244,  244,  244,  244,  245,  246,  248,  248,  249,
+      251,  252,  253,  254,  255,  256,  258,  259,  260,  260,
+      260,  260,  261,  261,  262,  262,  263,  265,  265,  266,
+      268,  268,  270,  270,  271,  272,  272,  273,  274,  275,
+      276,  277,  278,  279,  280,  282,  283,  284,  285,  286,
+      288,  288,  289,  291,  292,  293,  294,  295,  296,  298,
+      299,  300,  300,  300,  300,  300,  300,  300,  300,  300,
+      300,  300,  300,  301,  301,  301,  301,  301,  301,  303,
+
+      305,  306,  308,  309,  309,  309,  309,  311,  312,  313,
+      313,  314,  314,  315,  315,  316,  316,  318,  318,  318,
+      318,  318,  318,  318,  319,  320,  321,  322,  323,  325,
+      326,  327,  328,  328,  328,  328,  328,  330,  330,  331,
+      331,  332,  334,  336,  337,  338,  338,  340,  341,  343,
+      344,  345,  346,  348,  349,  350,  350,  350,  350,  350,
+      351,  353,  355,  357,  359,  359,  360,  360,  361,  362,
+      362,  363,  365,  366,  367,  368,  369,  370,  372,  373,
+      374,  375,  377,  378,  378,  380,  382,  383,  385,  387,
+      388,  389,  390,  392,  393,  393,  393,  394,  395,  395,
+
+      395,  396,  396,  396,  397,  397,  397,  398,  398,  399,
+      399,  400,  400,  400,  400,  401,  401,  401,  401,  401,
+      401,  401,  401,  402,  404,  404,  406,  407,  408,  408,
+      409,  410,  410,  410,  410,  410,  410,  410,  411,  412,
+      414,  414,  415,  417,  418,  419,  420,  421,  421,  421,
+      421,  421,  422,  423,  423,  424,  426,  427,  428,  428,
+      428,  429,  431,  432,  433,  433,  435,  436,  436,  437,
+      437,  437,  437,  437,  438,  438,  439,  439,  439,  441,
+      443,  444,  444,  445,  446,  447,  449,  450,  452,  453,
+      454,  455,  456,  458,  460,  461,  463,  464,  464,  464,
+
+      464,  464,  465,  465,  465,  465,  465,  466,  466,  466,
+      466,  466,  466,  466,  466,  466,  466,  467,  469,  469,
+      469,  469,  469,  469,  470,  471,  472,  472,  474,  474,
+      475,  476,  477,  478,  479,  479,  479,  481,  481,  481,
+      482,  482,  483,  485,  486,  486,  487,  487,  489,  489,
+      489,  489,  489,  489,  489,  489,  490,  490,  490,  492,
+      493,  494,  496,  497,  498,  499,  500,  501,  503,  505,
+      505,  505,  505,  505,  505,  505,  507,  507,  508,  508,
+      509,  509,  510,  510,  511,  511,  512,  512,  513,  513,
+      514,  514,  514,  514,  515,  517,  517,  517,  518,  518,
+
+      518,  519,  520,  520,  520,  520,  520,  520,  521,  522,
+      524,  525,  527,  527,  528,  529,  530,  530,  530,  532,
+      532,  532,  533,  534,  534,  534,  536,  537,  538,  539,
+      541,  542,  542,  543,  543,  543,  543,  543,  544,  544,
+      545,  546,  546,  546,  547,  547,  547,  548,  548,  548,
+      548,  548,  549,  550,  551,  553,  554,  554,  554,  554,
+      554,  554,  555,  556,  557,  559,  560,  560,  560,  560,
+      560,  560,  560,  561,  561,  561,  561,  561,  562,  563,
+      563,  563,  563,  563,  564,  565,  565,  565,  565,  565,
+      566,  566,  566,  566,  567,  568,  570,  570,  570,  570,
+
+      570,  571,  571,  572,  574,  574,  574,  574,  574,  575,
+      576,  576,  576,  576,  576,  577,  578,  579,  579,  579,
+      579,  579,  579,  580,  581,  581,  581,  581,  581,  582,
+      583,  584,  585,  585,  585,  585,  585,  585,  587,  587,
+      587,  587,  587,  588,  589,  591,  591,  591,  592,  592,
+      593,  593,  594,  594,  594,  596,  596,  597,  598,  598,
+      598,  598,  598,  600,  600,  600,  600,  600,  600,  600,
+      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
+      600,  600,  600,  600,  600,  601,  602,  602
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    4,    1,    5,    6,    7,    8,    1,    9,   10,
+       11,   12,   13,    1,   14,   15,   16,   17,   18,   19,
+       20,   20,   20,   20,   20,   20,   20,   21,   22,    1,
+       23,    1,    1,   24,   25,   26,   27,   28,   29,   30,
+       31,   32,   33,   33,   34,   35,   36,   37,   38,   34,
+       34,   39,   40,   33,   41,   33,   42,   43,   33,   33,
+       44,    1,   45,    1,   46,    1,   47,   48,   49,   50,
+
+       51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
+       61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+       71,   68,   72,    1,   73,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst flex_int32_t yy_meta[74] =
+    {   0,
+        1,    2,    3,    2,    1,    1,    1,    1,    4,    5,
+        6,    1,    7,    8,    1,    1,    9,    9,    9,    9,
+       10,    1,   11,    1,   12,   12,   12,   12,   12,   12,
+       12,   12,   13,   12,   13,   13,   12,   12,   12,   13,
+       13,   12,   14,    1,    1,    1,   15,   15,   15,   15,
+       16,   15,   15,   15,   15,   15,   15,   15,   17,   18,
+       18,   18,   18,   18,   17,   17,   17,   17,   17,   19,
+       17,    1,    1
+    } ;
+
+static yyconst flex_int16_t yy_base[767] =
+    {   0,
+        0,   73, 3814, 3815,  122,  131,    0,  142, 3809,  140,
+      151,  171,  162, 3809,  231,  159, 3757, 3746,  119, 3762,
+      143, 3757, 3741,  190,  301,  361,  211,  207,  279,  215,
+      224,  284,  243,  286,  301,  303,  305, 3759,  232, 3754,
+     3738,  264,  351, 3799,  149,  379,  430,  351,  255,  493,
+      212, 3748, 3737,  327, 3753,  157, 3748, 3732,  331,  555,
+      372,  245,  378,  351,  468,  530,  475,  477,  505,  523,
+      508,  576,  578,  385,  579,  610,  615, 3744,  372,    0,
+     3786,  309,  630,  431, 3815, 3782,  675,  575,  405, 3776,
+     3776, 3774,  450,  639, 3774,  472,  165,  640, 3773,    0,
+
+     3786, 3815,    0,  699,    0,  744,    0,  648,  787,  652,
+      656, 3649, 3636, 3591,  693, 3601, 3594,  697, 3584,  664,
+     3585,  856,  352,  929, 3815,  956, 1006,    0, 1031, 1080,
+      660,  717,  721, 3563, 3567, 3551, 3514, 3523,  435, 3504,
+      757, 3572, 3571,  497, 3496,  517,  607,  550,  681, 1130,
+      160,  518,  554, 1193, 1238, 3477,  686,  762,  787,  764,
+      617,  676,  750, 3424,  803,  816,  864,  835, 1262, 1312,
+     3439, 1337, 1387,  874,  888,  895,  700,  823,  865,  762,
+      866,  885, 3360,  583,  610,  626,  652,  676,  944,  949,
+     3394, 3260, 3815,  882, 1190, 3328, 3286, 3281, 3270, 3279,
+
+     3278,    0, 3815, 3277, 3266, 3263, 3262, 3182,  799,  830,
+      900,  958, 1412,  928,  962,  966, 1457, 3130, 3120, 3119,
+     3130, 3108,  382,  970, 1075, 3071,  759, 2895, 2927, 2884,
+     2880, 1108,  572, 1213,  739, 1527, 1591,    0, 1596,    0,
+     2927, 2844, 2843,  974, 1202, 1246, 1645, 2840, 2838,  238,
+     2799, 2797, 2814, 2743, 3815, 1210, 1084, 2630,  211, 2628,
+     1121, 1132,  606, 1253,  697, 2626,  895, 1217, 1688, 2624,
+     1258, 1733, 1467, 1472,  901, 1536, 1252, 1532, 1535, 1538,
+     1549, 1795, 1800, 2623,  810, 2615, 1556, 1849, 1259, 1573,
+     1473, 1474, 1541, 1543, 1583, 2574, 3815,  778,  832,  913,
+
+      985,  989, 1007, 3815, 1593, 2613, 2612, 2549, 2548, 1281,
+     1646, 2568, 2554, 2550, 2550,  585, 2549,  367, 2487,  636,
+     1680, 1125, 3815, 2480, 1679, 2479, 2463, 1854, 1678, 3815,
+     1287, 2407, 2407, 2403, 2401, 2401, 2402, 2404, 2403,  968,
+      510,  598,    0, 2421, 2405, 2406, 2405, 1007, 1161, 1046,
+     1354, 2450, 2443, 1455, 3815, 1694, 1510, 2442, 1161, 1585,
+     1700, 2441, 1209, 3815, 2389,    0, 2389, 1789, 2445, 1577,
+     1711, 2401, 2386, 2443,  403, 1709, 1281,  374, 1131, 1710,
+     1866, 2441, 1741,  819, 1744, 1921, 1746, 1315, 1686, 1789,
+     1748, 1793, 1754, 1852, 1917, 1571, 1919, 1930, 2392, 1127,
+
+     2431, 1221, 1244, 1392, 1421, 1486, 2418, 1620, 2429, 2366,
+     2427, 2361, 2422, 2359, 2413, 1923, 3815, 1994, 2381, 2377,
+     1452, 2377, 2372, 2361, 2421, 1266, 1919, 2420,  688, 2394,
+     2370, 2359, 2358, 2412, 1684, 1660, 3815, 2406, 1891,  933,
+     1388, 1579, 2399, 2398, 1462, 3815, 2346,    0, 2379, 1928,
+     2371, 1645, 2371, 2328, 2321, 1603, 1495, 1269, 2029, 1941,
+     1925, 1943, 1928, 1939, 1932, 1947, 1950, 1954, 1957, 1971,
+     1350, 1515, 2374, 1568, 1573, 3815, 1976, 1756, 2373, 2372,
+     2309, 2308, 2369, 2368, 2305, 2304, 2365, 2357, 2287, 2285,
+     2341, 2337, 1959, 1966, 2344, 2293, 2302, 1746,  760, 2299,
+
+     3815, 2304, 2334, 2293, 2267, 2308, 2285, 2292, 2262, 1655,
+     2274, 3815, 1995, 3815, 2301, 3815, 2294, 2070, 2297, 2243,
+     2232, 2279, 1791, 1814, 1812, 1991, 2032, 2065, 2071, 2072,
+     2073, 1974, 3815, 2230, 2269, 1647, 2089, 2268, 2274, 2271,
+     3815, 2214, 2215, 3815, 2181, 2228, 2221, 2169, 2225, 2188,
+     2161, 2184, 2156, 2164,    0, 2141, 2093, 2197, 2133, 1836,
+     1662, 2074, 2076, 2082, 2095, 2106, 2002, 2130, 2146, 1724,
+     2016, 1985, 2033, 1997,  958, 2003, 1946, 2172, 1919, 1903,
+     1880, 1767, 1842, 2245, 2108, 2004, 1805, 1815, 1814, 3815,
+     1794, 1920, 1960, 2318, 2077,    0, 1788, 1630, 2046,  598,
+
+     2391, 2114, 2097, 2110, 2125, 1592, 1532, 2109, 1524, 1460,
+     1444, 1439, 1810,  758, 2118, 1443, 1374, 2132, 1261, 1257,
+     2094, 2095, 1253, 1188, 1154, 1199, 2130, 1866, 2139, 2166,
+     1117, 1053, 2147, 2087,  995, 2122, 2155,    0, 1027,  895,
+      924, 2152, 2206, 2212,    0, 2154,  839, 3815,  821, 2158,
+      787, 3815,  567,  501, 3815, 2155, 2209, 2232, 2219,  380,
+      362, 1838, 2233, 2220,  288, 2197, 1969, 2005, 2157, 2270,
+     2274, 2292, 2293, 2294, 2296, 2297, 2299, 2300, 2301, 2302,
+     2332, 2345, 2347, 2199,  190, 3815, 3815, 2461, 2480, 2493,
+     2507, 2526, 2545, 2561, 2580, 2599, 2617, 1883, 1994, 1999,
+
+     2635, 2654, 2030, 2673, 2692, 2711, 2730, 2749, 2768, 2787,
+     2806, 2825, 2837, 2856, 2875, 2894, 2913, 2921, 2148, 2931,
+     2947, 2966, 2985, 3004, 3023, 3042, 3061, 3080, 3099, 3118,
+     3137, 3156, 3168, 3187, 3206, 3225, 3244, 3260, 3275, 3291,
+     3310, 3326, 3345, 3364, 3383, 3402, 3421, 3440, 3459, 3478,
+     3497, 3516, 3535, 3554, 3569, 3588, 3607, 3622, 3636, 3655,
+     3674, 3693, 3712, 3731, 3750, 3769
+    } ;
+
+static yyconst flex_int16_t yy_def[767] =
+    {   0,
+      687,  687,  687,  687,  687,  687,  688,  689,  687,  690,
+      688,  687,   12,  691,  688,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,  692,  688,   26,   26,   26,   26,
+       26,   26,   26,   26,   26,   26,   26,  688,  688,  688,
+      688,  688,  693,  687,  694,  694,  687,   47,  691,  694,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,  694,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,  694,  694,  694,  694,  694,  693,  687,  687,  688,
+      695,  696,  695,  687,  687,  687,  687,  687,  688,  687,
+      688,  687,  697,  697,  688,  697,  687,   12,  687,  688,
+
+      691,  687,  698,  688,  699,  688,  700,  106,  687,  106,
+      106,  688,  688,  688,  106,  104,  688,  106,  688,  106,
+      701,  692,  701,  702,  687,  688,  687,  703,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  693,  704,
+      693,  687,  705,  694,  687,  694,  694,  687,  694,  687,
+      687,  694,  706,  694,  154,  700,  155,  155,  155,  694,
+      694,  694,  155,  154,  694,  155,  694,  155,  154,  687,
+      703,  154,  687,  694,  694,  694,  694,  694,  694,  694,
+      694,  693,  687,  707,  708,  708,  709,  710,  707,  707,
+      711,  712,  687,  713,  713,  687,  687,  687,  688,  688,
+
+      687,  688,  687,  687,  687,  687,  688,  687,  687,  687,
+      688,  687,  688,  713,  688,  687,  688,  687,  687,  687,
+      687,  687,  687,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  714,  715,  716,  717,  688,  718,  688,  719,
+      718,  688,  239,  688,  720,  720,  688,  246,  688,  688,
+      688,  688,  688,  688,  687,  693,  687,  721,  687,  722,
+      694,  694,  694,  694,  723,  721,  724,  694,  694,  214,
+      694,  269,  694,  694,  694,  694,  694,  694,  694,  694,
+      694,  694,  269,  719,  694,  283,  694,  282,  694,  694,
+      694,  694,  694,  694,  693,  687,  687,  725,  726,  727,
+
+      728,  725,  729,  687,  730,  731,  731,  732,  732,  687,
+      733,  687,  687,  687,  688,  687,  687,  687,  687,  687,
+      687,  687,  687,  688,  733,  688,  687,  688,  325,  687,
+      688,  687,  687,  687,  687,  687,  687,  688,  688,  688,
+      687,  688,  688,  688,  688,  688,  688,  734,  734,  735,
+      736,  737,  687,  687,  687,  738,  739,  687,  687,  739,
+      739,  688,  688,  687,  687,  688,  688,  693,  687,  687,
+      687,  687,  687,  740,  687,  694,  741,  741,  694,  694,
+      283,  329,  694,  694,  694,  694,  694,  694,  694,  694,
+      694,  694,  742,  694,  694,  694,  694,  693,  687,  727,
+
+      743,  744,  728,  745,  729,  730,  687,  687,  746,  747,
+      748,  749,  750,  751,  687,  687,  687,  688,  687,  687,
+      687,  687,  687,  687,  688,  688,  687,  688,  687,  688,
+      688,  688,  688,  688,  752,  753,  687,  754,  687,  755,
+      755,  755,  688,  687,  687,  687,  687,  688,  687,  693,
+      687,  687,  687,  687,  687,  756,  741,  741,  694,  694,
+      694,  694,  694,  694,  694,  694,  694,  694,  694,  693,
+      687,  744,  757,  728,  745,  687,  730,  758,  746,  746,
+      747,  747,  748,  748,  749,  749,  750,  750,  751,  751,
+      687,  687,  758,  758,  688,  687,  687,  687,  687,  687,
+
+      687,  688,  759,  687,  687,  687,  687,  688,  688,  688,
+      688,  687,  687,  687,  687,  687,  687,  693,  687,  687,
+      687,  756,  756,  741,  741,  694,  694,  694,  694,  694,
+      694,  693,  687,  687,  757,  744,  730,  687,  687,  687,
+      687,  687,  687,  687,  687,  759,  759,  687,  687,  687,
+      687,  688,  688,  688,  688,  688,  693,  687,  687,  741,
+      741,  694,  694,  694,  694,  694,  693,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  760,  688,  687,
+      687,  741,  741,  761,  694,  693,  687,  687,  687,  687,
+      687,  762,  762,  760,  594,  688,  687,  687,  741,  741,
+
+      761,  762,  601,  694,  693,  687,  687,  762,  594,  594,
+      687,  687,  741,  741,  763,  601,  601,  693,  687,  687,
+      762,  762,  594,  594,  687,  687,  741,  741,  763,  763,
+      601,  601,  693,  687,  687,  762,  762,  594,  764,  687,
+      765,  741,  763,  763,  601,  693,  687,  687,  687,  762,
+      764,  687,  687,  765,  687,  741,  763,  763,  693,  687,
+      687,  741,  763,  693,  687,  741,  693,  766,  766,  766,
+      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
+      766,  766,  766,  766,  687,  687,    0,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687
+    } ;
+
+static yyconst flex_int16_t yy_nxt[3889] =
+    {   0,
+        4,    4,    4,    5,    4,    4,    6,    4,    7,    8,
+        4,    9,   10,    7,    4,    4,   11,   12,   13,   13,
+        4,   14,    4,    4,   15,   16,   17,   18,   15,   15,
+       19,   15,   15,   15,   15,   20,   15,   21,   22,   23,
+       15,   24,   15,   25,    4,    4,   26,   27,   28,   29,
+       30,   31,   32,   33,   34,   35,   36,   37,   38,    7,
+       39,    7,    7,   40,   41,    7,    7,    7,   42,    7,
+        7,   43,    4,    4,    4,    4,    5,    4,   44,    6,
+       44,    7,    8,    4,    9,   10,   45,    4,    4,   46,
+       47,   48,   48,    4,   49,    4,    4,   50,   51,   52,
+
+       53,   50,   50,   54,   50,   50,   50,   50,   55,   50,
+       56,   57,   58,   50,   59,   50,   25,    4,    4,   60,
+       61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+       71,   72,   45,   73,   45,   45,   74,   75,   45,   45,
+       45,   76,   45,   45,   77,    4,   78,   79,   79,   79,
+       79,   82,   85,   86,   88,  113,  116,   80,   83,   83,
+       83,   83,  109,  260,   89,   93,   90,   91,   78,  145,
+      164,   92,   93,   93,   94,   80,  208,  687,  114,   80,
+      117,  208,  687,  209,   95,   96,   97,   98,   98,   98,
+       98,   99,  686,  109,  165,  100,  100,  100,  100,  100,
+
+      100,  100,  100,   80,  100,   80,   80,  100,  100,  100,
+       80,   80,  100,   80,  109,  109,  110,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,   80,
+      100,  100,  100,  100,  100,   80,   80,   80,   80,   80,
+       80,   80,  103,  120,  104,  135,  105,  106,  106,  106,
+      106,  107,  365,  131,  103,  130,  130,  102,  153,  130,
+      133,  131,  131,  372,  130,  130,  130,  109,  132,  158,
+      131,  131,  373,  104,  130,  130,  130,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  131,
+      131,  174,  136,  173,  173,  130,  130,  130,  176,  366,
+
+      104,  121,  122,  122,  122,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  123,  121,  121,  138,  187,  188,
+      113,  121,  121,  121,  121,  131,  131,  130,  130,  130,
+      131,  131,  131,  131,  109,  130,  130,  130,  639,  130,
+      130,  130,  112,  114,  121,  125,  121,  131,  131,  131,
+      131,  131,  131,  140,   93,  130,  130,  130,  130,  130,
+      130,  130,  130,  161,  144,  233,  687,  141,  141,  141,
+      141,  145,  121,  121,  126,  109,  102,  127,  127,  127,
+      127,  128,   88,  208,  168,  209,  162,   80,   79,   79,
+       79,   79,  146,   80,   90,  147,  125,  174,  174,  148,
+
+      173,  173,  173,  129,  456,  145,  456,  130,  130,  131,
+      131,  131,  131,  131,  131,  131,  131,  131,  131,  665,
+      173,  199,  200,  142,  174,  174,  173,  173,  173,  175,
+      129,   93,   93,   94,  458,  180,  337,  140,   80,  533,
+      191,  160,  337,  149,   96,   97,  150,  150,  150,  150,
+      151,   93,   93,   93,  152,  152,  152,  152,  152,  152,
+      152,  152,  144,  152,  144,  144,  152,  152,  152,  144,
+      144,  152,  144,   93,   93,   93,  152,  152,  152,  152,
+      152,  152,  152,  152,  152,  152,  152,  152,  144,  152,
+      152,  152,  152,  152,  144,  144,  144,  144,  144,  144,
+
+      144,   80,  192,  655,  103,   80,  154,  142,  105,  155,
+      155,  155,  155,  156,  174,  174,  103,  145,  173,  173,
+      173,  174,  174,  174,  174,   80,   80,  173,  173,  173,
+      173,  173,  173,  261,  262,  154,  429,  145,  145,  157,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  174,  174,  260,  174,  174,  266,  267,  429,  173,
+      173,  173,  154,   80,  173,  173,  161,  201,  169,  174,
+      174,  170,  170,  170,  170,  171,  174,  174,  173,  173,
+      173,  173,  173,  173,   80,  349,   80,   80,  196,  162,
+      197,  178,  185,  297,  409,  198,  145,  172,  145,  145,
+
+      102,  173,  173,  174,  174,  174,  174,  174,  174,  174,
+      174,  174,  174,  109,   80,   80,  125,  140,   80,  187,
+      298,  661,  177,  263,  172,   80,  145,  145,  182,  430,
+      145,  141,  141,  141,  141,  187,  298,  145,  179,  185,
+       93,   93,   93,   93,  167,  411,  189,  189,  189,  189,
+      190,  431,  204,   80,  205,  687,  410,  276,  614,  206,
+      687,  300,  301,  181,  217,  217,  217,  217,  217,  217,
+      217,  217,  217,  217,  217,  217,  247,  247,  247,  247,
+      217,  217,  217,  217,   80,  303,  304,  142,  107,   80,
+      105,  194,  194,  194,  194,  107,  145,  264,  224,  266,
+
+      267,  145,  272,  272,  272,  272,  225,  412,   80,  217,
+      217,  217,  217,  217,  217,  217,  217,  107,  232,  506,
+      145,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  247,  247,  247,  247,  247,  247,  247,
+      247,  507,  276,  351,  107,  211,  211,  211,  211,  211,
+      211,  211,  211,  211,  211,  211,  211,  213,  228,  140,
+      102,  230,  341,  251,  214,  277,  272,  272,  272,  272,
+       80,  252,   80,  141,  141,  141,  141,  256,  272,  272,
+      272,  272,  145,  352,  145,  342,  213,  303,  304,  652,
+      215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
+
+      215,  215,  321,  272,  272,  272,  272,  342,  273,  544,
+      275,   80,  322,  213,  218,  277,  219,  628,   80,  322,
+      355,  220,  221,  145,  501,  222,  279,   80,  223,  142,
+      145,   80,  272,  272,  272,  272,  218,  274,  219,  145,
+      263,  300,  301,  145,  220,  221,  323,  323,  323,  323,
+      222,  272,  272,  272,  272,  223,  121,  122,  122,  122,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,   80,   80,   80,  460,  121,  121,  121,  121,
+      279,  660,   80,  293,  145,  145,  145,  140,  648,  281,
+      288,  288,  288,  288,  145,  214,   80,  102,  295,  121,
+
+      125,  121,  214,   80,  288,  288,  288,  288,  145,   80,
+      280,  288,  288,  288,  288,  145,  324,  324,  324,  324,
+      294,  145,  401,  402,  214,  263,  655,  121,  121,  121,
+      234,  234,  234,  235,  291,  121,  121,  121,  121,  121,
+      121,  687,  441,  121,  121,  292,  653,  377,  687,  121,
+      121,  214,  121,  185,  297,  442,  378,  142,  185,  297,
+      189,  189,  189,  189,  190,  305,  305,  305,  305,  386,
+      687,  427,  121,  125,  325,  325,  325,  325,  326,  326,
+      326,  326,  327,  327,  327,  327,  326,  326,  326,  326,
+      356,  356,  356,  356,  404,  188,  504,  687,  303,  304,
+
+      121,  121,  237,  237,  237,  237,  237,  237,  237,  237,
+      237,  237,  237,  237,   80,  238,  404,  188,  338,  239,
+      349,  504,   80,   80,   80,   80,  240,  428,  241,  652,
+      242,  242,  242,  242,  242,  242,  242,  242,  242,  242,
+      242,  242,  242,  242,  242,  242,  242,  242,  243,  649,
+      351,  125,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,  239,   80,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,  246,
+      352,  326,  326,  326,  326,  369,  247,  247,  247,  247,
+
+      370,  371,  248,  645,  249,  249,  249,  249,  249,  249,
+      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+      249,  249,  249,  339,  326,  326,  326,  326,  415,   80,
+      250,   93,   93,   93,  376,  316,  401,  402,   80,   80,
+       80,  145,  416,  144,   96,  645,  150,  150,  150,  150,
+      145,  145,  145,  330,  152,  152,  152,  152,  152,  152,
+      152,  152,  144,  152,  144,  144,  152,  152,  152,  144,
+      144,  152,  144,  347,  435,  365,  152,  152,  152,  152,
+      152,  152,  152,  152,  152,  152,  152,  152,  144,  152,
+      152,  152,  152,  152,  144,  144,  144,  144,  144,  144,
+
+      144,   80,  640,  214,  639,  125,  311,  311,  311,  311,
+      214,  246,  140,  145,  234,  234,  234,  235,  357,  357,
+      357,  357,  364,  447,  248,   80,  368,  368,  368,  368,
+      473,  474,  214,  379,  379,  379,  379,  145,  638,  268,
+      268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
+      268,  269,  359,  404,  188,  687,  320,  125,  270,  214,
+       80,   80,  687,  687,  687,  687,   80,   80,  687,  364,
+      448,  102,  145,  145,  380,  380,  380,  380,  145,  145,
+      269,  638,  142,  102,  271,  271,  271,  271,  271,  271,
+      271,  271,  271,  271,  271,  271,  687,  407,  407,  407,
+
+      407,  502,  388,  418,  418,  418,  418,  269,  282,  282,
+      282,  282,  282,  282,  282,  282,  282,  282,  282,  282,
+       80,  238,  635,   80,  502,  283,  634,  457,  144,  144,
+      144,  144,  284,  525,  241,  145,  285,  285,  285,  285,
+      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
+      285,  285,  285,  285,  286,  436,  436,  436,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  283,  144,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,   80,  246,  687,  437,  533,
+
+      144,  473,  474,  288,  288,  288,  288,  145,  534,  248,
+      687,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+      289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+      404,  188,  632,  144,  144,  144,  144,  290,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  215,  215,
+      215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
+      328,  440,  440,  440,  440,   80,  447,  329,  631,  330,
+       80,   80,   80,  380,  380,  380,  380,  145,  380,  380,
+      380,  380,  145,  145,  145,  185,  476,  102,  626,  328,
+
+      477,  625,  498,  331,  331,  331,  331,  331,  331,  331,
+      331,  331,  331,  331,  331,  384,  498,  498,  624,  360,
+      385,  384,  385,  446,  473,  474,  328,  121,  234,  234,
+      234,  235,  361,  121,  121,  121,  121,  121,  121,  341,
+       80,  121,  121,   80,   80,  389,   80,  121,  121,   80,
+      121,   80,  145,  524,  397,  145,  145,   80,  145,  623,
+      445,  145,  387,  145,   80,  380,  380,  380,  380,  145,
+      121,  125,  393,  393,  393,  393,  145,  404,  188,   80,
+       88,   80,  473,  474,  387,  140,  620,  365,  441,  390,
+      451,  145,   90,  145,  687,  391,  398,   92,  121,  121,
+
+      246,  687,  185,  297,  523,  375,  523,  687,  392,  406,
+      406,  406,  406,  248,  392,  249,  249,  249,  249,  249,
+      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+      249,  249,  249,  249,  396,  687,  478,  478,  478,  478,
+      619,  250,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  360,  142,  473,  474,  204,  329,
+      205,  436,  436,  436,  102,  206,  329,  361,  330,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  329,  413,
+      612,  687,  329,  322,   80,  363,   80,  435,  687,  329,
+
+      322,  687,   80,  441,  437,  554,  145,   80,  145,  360,
+       80,   80,   80,   80,  452,  329,  442,   80,   80,  555,
+      687,  329,  687,  263,  453,  263,   97,  583,  512,  145,
+      145,   99,  417,  413,  271,  271,  271,  271,  271,  271,
+      271,  271,  271,  271,  271,  271,  381,  687,  329,   80,
+      687,  414,   80,  382,   80,  330,   80,  459,  459,  459,
+      459,  145,   80,  441,  145,  493,  145,  144,  145,  102,
+      144,  144,  144,  144,  145,  381,  442,  463,  494,  383,
+      383,  383,  383,  383,  383,  383,  383,  383,  383,  383,
+      383,  140,  523,  375,  523,  414,  498,   80,  466,  464,
+
+      461,   80,  381,   80,  246,  450,  450,  450,  450,  145,
+      498,  498,  102,  145,  102,  145,  102,  248,  599,  289,
+      289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+      289,  289,  289,  289,  289,  289,  289,  289,  102,  582,
+      102,  465,  611,  467,  102,  290,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  287,  360,  607,
+       80,  142,  446,  590,  560,  606,  561,  627,  102,  642,
+      533,  361,  145,  394,  394,  394,  394,  394,  394,  394,
+      394,  394,  394,  394,  394,  394,  394,  394,  394,  394,
+      394,  394,  513,  513,  513,  666,  600,  210,  210,  395,
+
+      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
+      331,  331,  383,  383,  383,  383,  383,  383,  383,  383,
+      383,  383,  383,  383,  427,   80,  491,   80,  503,   80,
+      140,  447,  140,   80,  598,  514,   80,  145,  492,  145,
+       80,  145,  518,  470,  109,  145,  427,   80,  145,   80,
+      608,   80,  145,  109,  597,   80,  528,  504,   80,  145,
+      527,  145,   80,  145,  516,   80,  505,  145,  687,  596,
+      145,  668,  608,  140,  145,  493,  140,  145,  469,  263,
+      462,  687,  504,  527,  532,  185,  297,  567,  687,  529,
+      608,  530,  537,  537,  537,  537,  513,  513,  513,   80,
+
+      519,  541,  142,  493,  140,  531,  140,  670,  212,  212,
+      592,  145,  608,  216,  216,  586,  494,  605,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,   80,  493,  514,
+       80,  142,  592,  142,  245,  245,  142,  591,  102,  145,
+      573,  494,  145,  526,  526,  526,  526,  526,  526,  526,
+      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
+      526,  526,  140,   80,  142,  588,  142,  255,  177,   80,
+       80,   80,   80,  589,   80,  145,  557,  557,  557,  557,
+       80,  145,  145,  145,  145,  140,  145,  590,  185,  476,
+
+      613,  609,  145,   80,  562,  537,  537,  537,  537,  557,
+      557,  557,  557,  584,   80,  145,   80,  615,   80,  566,
+      375,  616,  564,  610,  608,  608,  145,  140,  145,  636,
+      145,  565,  102,  621,  140,  563,  565,  647,  618,  608,
+      584,  375,  142,  617,  608,  633,  608,  608,  630,  140,
+      650,  648,  608,  637,  102,  622,  140,  102,  604,  670,
+      646,  608,  354,  354,  540,  519,  608,  659,  375,  630,
+      630,  585,  593,  593,  608,  593,  593,  593,  593,  593,
+      641,  593,  593,  593,  593,  608,  593,  593,  608,  587,
+      643,  630,  593,  593,  593,  593,  630,  142,  581,  102,
+
+      580,  670,  595,  656,  142,  650,  579,  608,  375,  662,
+      608,  375,  644,  555,  375,  593,  593,  593,  630,  142,
+      578,  140,  140,  578,  595,  577,  142,  576,  575,  255,
+      574,  547,  664,  667,  375,  375,  630,  663,  547,  630,
+      573,  657,  630,  593,  593,  593,  593,  641,  593,  593,
+      593,  593,  593,  594,  593,  593,  593,  593,  630,  593,
+      593,  630,  630,  630,  630,  602,  593,  593,  593,  572,
+      658,  685,  670,  571,  570,  603,  670,  569,  541,  536,
+      568,  375,  663,  671,  630,  630,  559,  672,  593,  593,
+      593,  142,  142,  558,  670,  670,  670,  603,  670,  670,
+
+      257,  670,  670,  670,  670,  673,  674,  675,  446,  676,
+      677,  516,  678,  679,  680,  681,  593,  593,  593,  593,
+      556,  593,  593,  593,  593,  593,  553,  593,  593,  593,
+      593,  552,  593,  593,  670,  551,  550,  549,  593,  593,
+      593,  593,  255,  548,  547,  682,  255,  670,  595,  670,
+      134,  545,  543,  542,  541,  540,  539,  490,  683,  490,
+      684,  593,  593,  593,  255,  255,  255,  488,  255,  255,
+      595,  255,  255,  255,  255,  488,  486,  486,  484,  484,
+      482,  482,  480,  480,  536,  521,  520,  208,  201,  593,
+      593,  593,  593,  364,  593,  593,  593,  593,  593,  594,
+
+      593,  593,  593,  593,  255,  593,  593,  517,  446,  516,
+      439,  602,  593,  593,  593,  109,  511,  255,  510,  255,
+      509,  603,  508,  427,  109,  501,  500,  499,  497,  496,
+      416,  490,  488,  486,  593,  593,  593,  484,  482,  480,
+      417,  297,  471,  603,  260,  375,  455,  454,   84,  202,
+      449,  446,  364,  355,  439,  434,  433,  432,  202,  426,
+      425,  424,  593,  593,   80,  423,  422,  421,   80,   80,
+      420,  419,   80,   80,   80,   80,   80,   80,   80,   80,
+       81,   81,   81,   81,   81,  330,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   87,
+
+       87,  417,  330,  208,   87,   87,   87,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  144,  208,  202,  201,  144,  144,
+      144,  201,  144,  144,  144,  144,  144,  144,  144,  144,
+      184,  184,  184,  184,  184,  201,  184,  184,  184,  184,
+      184,  184,  184,  184,  184,  184,  184,  184,  184,  186,
+
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  203,  203,
+      309,  309,  307,  307,  399,  355,  260,  260,  203,  259,
+      375,  203,  203,  259,  203,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  236,  236,  236,  236,  236,  236,
+      236,  236,  236,  236,  236,  236,  236,  236,  236,  236,
+      236,  236,  236,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  258,  258,  258,  258,  258,  258,  258,  258,
+
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  265,  265,  265,  265,  265,  265,  265,  265,  265,
+      265,  265,  265,  265,  265,  265,  265,  265,  265,  265,
+      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
+      184,  184,  184,  184,  184,  184,  184,  184,  184,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  299,  299,
+      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
+      299,  299,  299,  299,  299,  299,  299,  302,  302,  302,
+      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
+
+      302,  302,  302,  302,  302,  302,  306,  306,  347,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  308,  308,  367,  308,  308,
+      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
+      308,  308,  308,  308,  310,  339,  310,  338,  364,  246,
+      310,  310,  310,  355,  355,  310,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  350,  350,  350,  350,  350,  350,
+
+      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
+      350,  350,  350,  236,  236,  236,  236,  236,  236,  236,
+      236,  236,  236,  236,  236,  236,  236,  236,  236,  236,
+      236,  236,  353,  353,  353,  358,  238,  346,  345,  358,
+      344,  358,  358,  358,  358,  343,  358,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  374,  374,  374,  374,
+      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
+      374,  374,  374,  374,  374,  265,  265,  265,  265,  265,
+      265,  265,  265,  265,  265,  265,  265,  265,  265,  265,
+
+      265,  265,  265,  265,  101,  101,  101,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  101,  101,  302,  302,  302,  302,  302,  302,  302,
+      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
+      302,  302,  299,  299,  299,  299,  299,  299,  299,  299,
+      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
+      299,  400,  400,  400,  400,  400,  400,  400,  400,  400,
+      400,  400,  400,  400,  400,  400,  400,  400,  400,  400,
+      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
+      403,  403,  403,  403,  403,  403,  403,  403,  403,  405,
+
+      405,  405,  405,  405,  405,  405,  405,  405,  405,  405,
+      405,  405,  405,  405,  405,  405,  405,  405,  184,  184,
+      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
+      184,  184,  184,  184,  184,  184,  184,  306,  306,  340,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  308,  308,  336,  308,
+      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
+      308,  308,  308,  308,  308,  408,  335,  408,  408,  334,
+      333,  408,  408,  408,  332,  320,  408,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+
+      348,  348,  348,  348,  348,  348,  350,  350,  350,  350,
+      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
+      350,  350,  350,  350,  350,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  438,  438,  438,  438,  438,  438,
+      438,  438,  438,  438,  438,  438,  438,  438,  438,  438,
+      438,  438,  438,  443,  443,  320,  319,  443,  443,  318,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  444,
+      317,  316,  316,  315,  314,  444,  444,  444,  444,  313,
+      444,  374,  374,  374,  374,  374,  374,  374,  374,  374,
+
+      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  468,
+      468,  312,  309,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  472,  472,  472,  472,  472,  472,
+      472,  472,  472,  472,  472,  472,  472,  472,  472,  472,
+      472,  472,  472,  475,  475,  475,  475,  475,  475,  475,
+      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
+
+      475,  475,  479,  479,  307,  479,  479,  479,  479,  479,
+      479,  479,  479,  479,  479,  479,  479,  479,  479,  479,
+      479,  481,  481,  296,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      483,  483,  260,  483,  483,  483,  483,  483,  483,  483,
+      483,  483,  483,  483,  483,  483,  483,  483,  483,  485,
+      485,  278,  485,  485,  485,  485,  485,  485,  485,  485,
+      485,  485,  485,  485,  485,  485,  485,  485,  487,  487,
+      260,  487,  487,  487,  487,  487,  487,  487,  487,  487,
+      487,  487,  487,  487,  487,  487,  487,  489,  489,  260,
+
+      489,  489,  489,  489,  489,  489,  489,  489,  489,  489,
+      489,  489,  489,  489,  489,  489,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  438,  438,  438,  438,  438,  438,
+      438,  438,  438,  438,  438,  438,  438,  438,  438,  438,
+      438,  438,  438,  515,  259,  257,  255,  254,  230,  515,
+      515,  515,  515,  515,  515,  515,  515,  515,  522,  522,
+      522,  522,  522,  522,  522,  522,  522,  522,  522,  522,
+
+      522,  522,  522,  522,  522,  522,  522,  535,  535,  535,
+      535,  202,  535,  535,  535,  535,  535,  535,  535,  535,
+      535,  535,  535,  535,  535,  535,  538,  253,  228,  125,
+      231,  202,  538,  538,  538,  538,  546,  546,  229,  546,
+      546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
+      546,  546,  546,  546,  546,  594,  594,  227,  594,  594,
+      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
+      594,  594,  594,  594,  601,  601,  227,  601,  601,  601,
+      601,  601,  601,  601,  601,  601,  601,  601,  601,  601,
+      601,  601,  601,  593,  593,  226,  593,  593,  593,  593,
+
+      593,  593,  593,  593,  593,  593,  593,  593,  593,  593,
+      593,  593,  629,  629,  629,  629,  629,  629,  629,  629,
+      629,  629,  629,  629,  629,  629,  629,  629,  629,  629,
+      629,  651,  651,  651,  651,  651,  651,  651,  651,  651,
+      651,  651,  651,  651,  651,  651,  651,  651,  651,  651,
+      654,  654,  654,  654,  654,  654,  654,  654,  654,  654,
+      654,  654,  654,  654,  654,  654,  654,  654,  654,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  102,  208,
+      207,  201,  202,  201,  193,  185,  183,  167,  166,  163,
+
+      160,  159,  143,  119,  137,  134,  119,  118,  115,  112,
+      111,  102,   84,  687,    3,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687
+    } ;
+
+static yyconst flex_int16_t yy_chk[3889] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    5,    6,    6,    6,
+        6,    8,   10,   10,   11,   19,   21,   45,    8,    8,
+        8,    8,   16,  151,   11,   13,   11,   11,    5,   45,
+       56,   11,   12,   12,   12,   13,  151,   13,   19,   12,
+       21,   97,   13,   97,   12,   12,   12,   12,   12,   12,
+       12,   12,  685,   24,   56,   12,   12,   12,   12,   12,
+
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   27,   51,   16,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   15,   24,   15,   39,   15,   15,   15,   15,
+       15,   15,  250,   28,   15,   28,   28,   49,   49,   27,
+       28,   30,   30,  259,   30,   30,   30,   42,   27,   51,
+       31,   31,  259,   15,   31,   31,   31,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   33,
+       33,   62,   39,   62,   62,   33,   33,   33,   62,  250,
+
+       15,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+       25,   25,   25,   25,   25,   25,   25,   42,   82,   82,
+       32,   25,   25,   25,   25,   29,   29,   29,   29,   29,
+       32,   32,   34,   34,   59,   32,   32,   32,  665,   34,
+       34,   34,   29,   32,   25,   25,   25,   35,   35,   36,
+       36,   37,   37,   43,   48,   35,   35,   35,   36,   36,
+       36,   37,   37,   54,   48,  123,   48,   43,   43,   43,
+       43,   48,   25,   25,   26,   61,  378,   26,   26,   26,
+       26,   26,   46,  318,   59,  318,   54,   46,   79,   79,
+       79,   79,   46,   74,   46,   46,  123,   64,   64,   46,
+
+       64,   64,   64,   26,  375,   74,  375,   26,   26,   26,
+       26,   26,   26,   26,   26,   26,   26,   26,   26,  661,
+       61,   89,   89,   43,   63,   63,   63,   63,   63,   61,
+       26,   47,   47,   47,  378,   74,  223,  139,   47,  660,
+       84,   63,  223,   47,   47,   47,   47,   47,   47,   47,
+       47,   93,   93,   93,   47,   47,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
+       47,   47,   47,   96,   96,   96,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
+
+       47,   50,   84,  654,   50,  144,   50,  139,   50,   50,
+       50,   50,   50,   50,   65,   65,   50,  144,   65,   65,
+       65,   67,   67,   68,   68,  146,  152,   67,   67,   67,
+       68,   68,   68,  146,  146,   50,  341,  146,  152,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   69,   69,  148,   71,   71,  153,  153,  341,   69,
+       69,   69,   50,   60,   71,   71,   66,  148,   60,   70,
+       70,   60,   60,   60,   60,   60,   66,   66,   70,   70,
+       70,   66,   66,   66,   72,  233,   73,   75,   88,   66,
+       88,   73,  184,  184,  316,   88,   72,   60,   73,   75,
+
+      600,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   76,  263,  147,  233,   77,   76,  185,
+      185,  653,   72,  147,   60,  161,  263,  147,   77,  342,
+       76,   77,   77,   77,   77,  186,  186,  161,   73,   83,
+       94,   94,   94,   98,   75,  320,   83,   83,   83,   83,
+       83,  342,   94,   98,   94,   98,  316,  161,  600,   94,
+       98,  187,  187,   76,  108,  108,  108,  108,  110,  110,
+      110,  110,  111,  111,  111,  111,  131,  131,  131,  131,
+      120,  120,  120,  120,  162,  188,  188,   77,   87,  149,
+       87,   87,   87,   87,   87,   87,  162,  149,  110,  265,
+
+      265,  149,  157,  157,  157,  157,  111,  320,  177,  115,
+      115,  115,  115,  118,  118,  118,  118,   87,  120,  429,
+      177,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,  132,  132,  132,  132,  133,  133,  133,
+      133,  429,  162,  235,   87,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  106,  115,  141,
+      614,  118,  227,  132,  106,  177,  163,  163,  163,  163,
+      180,  133,  160,  141,  141,  141,  141,  141,  158,  158,
+      158,  158,  180,  235,  160,  227,  106,  298,  298,  651,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+
+      106,  106,  209,  159,  159,  159,  159,  227,  158,  499,
+      160,  165,  209,  106,  109,  163,  109,  614,  285,  209,
+      285,  109,  109,  165,  499,  109,  180,  384,  109,  141,
+      285,  178,  166,  166,  166,  166,  109,  159,  109,  384,
+      165,  299,  299,  178,  109,  109,  210,  210,  210,  210,
+      109,  168,  168,  168,  168,  109,  122,  122,  122,  122,
+      122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
+      122,  122,  167,  179,  181,  384,  122,  122,  122,  122,
+      166,  649,  174,  178,  167,  179,  181,  182,  647,  168,
+      174,  174,  174,  174,  174,  194,  175,  267,  182,  122,
+
+      122,  122,  194,  176,  175,  175,  175,  175,  175,  275,
+      167,  176,  176,  176,  176,  176,  211,  211,  211,  211,
+      181,  275,  300,  300,  194,  179,  641,  122,  122,  124,
+      124,  124,  124,  124,  175,  124,  124,  124,  124,  124,
+      124,  214,  440,  124,  124,  176,  640,  267,  214,  124,
+      124,  194,  124,  189,  189,  440,  267,  182,  190,  190,
+      189,  189,  189,  189,  189,  190,  190,  190,  190,  275,
+      214,  340,  124,  124,  212,  212,  212,  212,  215,  215,
+      215,  215,  216,  216,  216,  216,  224,  224,  224,  224,
+      244,  244,  244,  244,  301,  301,  575,  214,  302,  302,
+
+      124,  124,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  127,  127,  303,  303,  224,  127,
+      348,  575,  127,  127,  127,  127,  127,  340,  127,  639,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  635,
+      350,  348,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  130,
+      350,  225,  225,  225,  225,  257,  130,  130,  130,  130,
+
+      257,  257,  130,  632,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  225,  232,  232,  232,  232,  322,  261,
+      130,  150,  150,  150,  261,  262,  400,  400,  150,  379,
+      262,  261,  322,  150,  150,  631,  150,  150,  150,  150,
+      150,  379,  262,  379,  150,  150,  150,  150,  150,  150,
+      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
+      150,  150,  150,  232,  349,  359,  150,  150,  150,  150,
+      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
+      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
+
+      150,  154,  626,  195,  625,  349,  195,  195,  195,  195,
+      195,  245,  256,  154,  234,  234,  234,  234,  245,  245,
+      245,  245,  359,  363,  245,  268,  256,  256,  256,  256,
+      402,  402,  195,  268,  268,  268,  268,  268,  624,  154,
+      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
+      154,  155,  245,  403,  403,  246,  264,  234,  155,  195,
+      277,  264,  246,  246,  246,  246,  271,  289,  246,  289,
+      363,  458,  277,  264,  271,  271,  271,  271,  271,  289,
+      155,  623,  256,  377,  155,  155,  155,  155,  155,  155,
+      155,  155,  155,  155,  155,  155,  246,  310,  310,  310,
+
+      310,  426,  277,  331,  331,  331,  331,  155,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      170,  170,  620,  388,  426,  170,  619,  377,  170,  170,
+      170,  170,  170,  458,  170,  388,  170,  170,  170,  170,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  170,  170,  351,  351,  351,  170,  170,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  173,  173,  441,  351,  471,
+
+      173,  404,  404,  173,  173,  173,  173,  173,  471,  173,
+      441,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      405,  405,  617,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      217,  354,  354,  354,  354,  273,  445,  217,  616,  217,
+      274,  291,  292,  273,  273,  273,  273,  273,  274,  274,
+      274,  274,  274,  291,  292,  406,  406,  457,  612,  217,
+
+      406,  611,  421,  217,  217,  217,  217,  217,  217,  217,
+      217,  217,  217,  217,  217,  273,  421,  421,  610,  357,
+      274,  291,  292,  445,  472,  472,  217,  236,  236,  236,
+      236,  236,  357,  236,  236,  236,  236,  236,  236,  276,
+      278,  236,  236,  279,  276,  278,  280,  236,  236,  293,
+      236,  294,  278,  457,  293,  279,  276,  281,  280,  609,
+      357,  293,  276,  294,  287,  281,  281,  281,  281,  281,
+      236,  236,  287,  287,  287,  287,  287,  474,  474,  396,
+      370,  290,  475,  475,  276,  295,  607,  290,  442,  279,
+      370,  396,  370,  290,  360,  280,  295,  370,  236,  236,
+
+      237,  442,  305,  305,  456,  456,  456,  360,  294,  305,
+      305,  305,  305,  237,  281,  237,  237,  237,  237,  237,
+      237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
+      237,  237,  237,  237,  290,  360,  408,  408,  408,  408,
+      606,  237,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  247,  295,  536,  536,  452,  311,
+      452,  436,  436,  436,  561,  452,  311,  247,  311,  247,
+      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
+      247,  247,  247,  247,  247,  247,  247,  247,  311,  321,
+      598,  329,  325,  321,  389,  247,  269,  435,  329,  325,
+
+      321,  325,  356,  356,  436,  510,  389,  356,  269,  361,
+      356,  356,  356,  356,  371,  311,  356,  376,  380,  510,
+      329,  325,  361,  389,  371,  376,  371,  561,  435,  376,
+      380,  371,  380,  570,  269,  269,  269,  269,  269,  269,
+      269,  269,  269,  269,  269,  269,  272,  329,  325,  383,
+      361,  321,  385,  272,  387,  272,  391,  383,  383,  383,
+      383,  383,  393,  393,  385,  478,  387,  393,  391,  582,
+      393,  393,  393,  393,  393,  272,  393,  387,  478,  272,
+      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      272,  368,  523,  523,  523,  570,  498,  390,  391,  387,
+
+      385,  392,  272,  282,  282,  368,  368,  368,  368,  390,
+      498,  498,  613,  392,  525,  282,  524,  282,  582,  282,
+      282,  282,  282,  282,  282,  282,  282,  282,  282,  282,
+      282,  282,  282,  282,  282,  282,  282,  282,  560,  560,
+      662,  390,  597,  392,  583,  282,  283,  283,  283,  283,
+      283,  283,  283,  283,  283,  283,  283,  283,  288,  591,
+      394,  368,  394,  589,  524,  588,  525,  613,  628,  628,
+      587,  288,  394,  288,  288,  288,  288,  288,  288,  288,
+      288,  288,  288,  288,  288,  288,  288,  288,  288,  288,
+      288,  288,  439,  439,  439,  662,  583,  698,  698,  288,
+
+      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
+      328,  328,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  386,  395,  416,  397,  427,  386,
+      450,  395,  398,  461,  581,  439,  463,  395,  416,  397,
+      465,  386,  450,  398,  460,  461,  462,  464,  463,  460,
+      592,  462,  465,  467,  580,  466,  463,  427,  467,  464,
+      461,  460,  468,  462,  468,  469,  427,  466,  493,  579,
+      467,  667,  592,  470,  468,  494,  532,  469,  395,  397,
+      386,  493,  427,  461,  470,  477,  477,  532,  494,  464,
+      593,  465,  477,  477,  477,  477,  513,  513,  513,  526,
+
+      450,  526,  398,  418,  567,  466,  586,  668,  699,  699,
+      577,  526,  593,  700,  700,  567,  418,  586,  418,  418,
+      418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
+      418,  418,  418,  418,  418,  418,  418,  459,  459,  513,
+      527,  667,  576,  470,  703,  703,  532,  574,  599,  459,
+      572,  459,  527,  459,  459,  459,  459,  459,  459,  459,
+      459,  459,  459,  459,  459,  459,  459,  459,  459,  459,
+      459,  459,  518,  528,  567,  571,  586,  668,  527,  529,
+      530,  531,  562,  573,  563,  528,  518,  518,  518,  518,
+      564,  529,  530,  531,  562,  557,  563,  573,  537,  537,
+
+      599,  595,  564,  565,  528,  537,  537,  537,  537,  557,
+      557,  557,  557,  562,  566,  565,  585,  602,  604,  531,
+      615,  603,  530,  595,  621,  622,  566,  605,  585,  621,
+      604,  564,  627,  608,  618,  529,  530,  634,  605,  608,
+      563,  629,  518,  603,  602,  618,  621,  622,  615,  633,
+      636,  634,  636,  622,  642,  608,  646,  656,  585,  669,
+      633,  608,  719,  719,  569,  557,  602,  646,  630,  629,
+      615,  566,  578,  578,  636,  578,  578,  578,  578,  578,
+      627,  578,  578,  578,  578,  637,  578,  578,  650,  568,
+      630,  629,  578,  578,  578,  578,  630,  605,  559,  666,
+
+      558,  684,  578,  642,  618,  637,  556,  637,  643,  656,
+      650,  657,  630,  554,  644,  578,  578,  578,  630,  633,
+      553,  659,  664,  552,  578,  551,  646,  550,  549,  669,
+      548,  547,  659,  664,  658,  663,  643,  657,  546,  657,
+      545,  643,  644,  578,  578,  584,  584,  666,  584,  584,
+      584,  584,  584,  584,  584,  584,  584,  584,  643,  584,
+      584,  657,  658,  663,  644,  584,  584,  584,  584,  543,
+      644,  684,  670,  542,  540,  584,  671,  539,  538,  535,
+      534,  522,  658,  670,  658,  663,  521,  671,  584,  584,
+      584,  659,  664,  520,  672,  673,  674,  584,  675,  676,
+
+      519,  677,  678,  679,  680,  672,  673,  674,  517,  675,
+      676,  515,  677,  678,  679,  680,  584,  584,  594,  594,
+      511,  594,  594,  594,  594,  594,  509,  594,  594,  594,
+      594,  508,  594,  594,  681,  507,  506,  505,  594,  594,
+      594,  594,  670,  504,  503,  681,  671,  682,  594,  683,
+      502,  500,  497,  496,  495,  492,  491,  490,  682,  489,
+      683,  594,  594,  594,  672,  673,  674,  488,  675,  676,
+      594,  677,  678,  679,  680,  487,  486,  485,  484,  483,
+      482,  481,  480,  479,  473,  455,  454,  453,  451,  594,
+      594,  601,  601,  449,  601,  601,  601,  601,  601,  601,
+
+      601,  601,  601,  601,  681,  601,  601,  447,  444,  443,
+      438,  601,  601,  601,  601,  434,  433,  682,  432,  683,
+      431,  601,  430,  428,  425,  424,  423,  422,  420,  419,
+      415,  414,  413,  412,  601,  601,  601,  411,  410,  409,
+      407,  401,  399,  601,  382,  374,  373,  372,  369,  367,
+      365,  362,  358,  353,  352,  347,  346,  345,  344,  339,
+      338,  337,  601,  601,  688,  336,  335,  334,  688,  688,
+      333,  332,  688,  688,  688,  688,  688,  688,  688,  688,
+      689,  689,  689,  689,  689,  327,  689,  689,  689,  689,
+      689,  689,  689,  689,  689,  689,  689,  689,  689,  690,
+
+      690,  326,  324,  319,  690,  690,  690,  691,  691,  691,
+      691,  691,  691,  691,  691,  691,  691,  691,  691,  691,
+      691,  691,  691,  691,  691,  691,  692,  692,  692,  692,
+      692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
+      692,  692,  692,  692,  692,  693,  693,  693,  693,  693,
+      693,  693,  693,  693,  693,  693,  693,  693,  693,  693,
+      693,  693,  693,  693,  694,  317,  315,  314,  694,  694,
+      694,  313,  694,  694,  694,  694,  694,  694,  694,  694,
+      695,  695,  695,  695,  695,  312,  695,  695,  695,  695,
+      695,  695,  695,  695,  695,  695,  695,  695,  695,  696,
+
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  697,  697,
+      309,  308,  307,  306,  296,  286,  284,  270,  697,  266,
+      260,  697,  697,  258,  697,  701,  701,  701,  701,  701,
+      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
+      701,  701,  701,  701,  702,  702,  702,  702,  702,  702,
+      702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+      702,  702,  702,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  705,  705,  705,  705,  705,  705,  705,  705,
+
+      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
+      705,  706,  706,  706,  706,  706,  706,  706,  706,  706,
+      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
+      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
+      707,  707,  707,  707,  707,  707,  707,  707,  707,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  709,  709,
+      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
+      709,  709,  709,  709,  709,  709,  709,  710,  710,  710,
+      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
+
+      710,  710,  710,  710,  710,  710,  711,  711,  254,  711,
+      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
+      711,  711,  711,  711,  711,  712,  712,  253,  712,  712,
+      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
+      712,  712,  712,  712,  713,  252,  713,  251,  249,  248,
+      713,  713,  713,  243,  242,  713,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  715,  715,  715,  715,  715,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      715,  715,  715,  715,  716,  716,  716,  716,  716,  716,
+
+      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
+      716,  716,  716,  717,  717,  717,  717,  717,  717,  717,
+      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
+      717,  717,  718,  718,  718,  720,  241,  231,  230,  720,
+      229,  720,  720,  720,  720,  228,  720,  721,  721,  721,
+      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
+      721,  721,  721,  721,  721,  721,  722,  722,  722,  722,
+      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+      722,  722,  722,  722,  722,  723,  723,  723,  723,  723,
+      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
+
+      723,  723,  723,  723,  724,  724,  724,  724,  724,  724,
+      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
+      724,  724,  724,  725,  725,  725,  725,  725,  725,  725,
+      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
+      725,  725,  726,  726,  726,  726,  726,  726,  726,  726,
+      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
+      726,  727,  727,  727,  727,  727,  727,  727,  727,  727,
+      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
+      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
+      728,  728,  728,  728,  728,  728,  728,  728,  728,  729,
+
+      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
+      729,  729,  729,  729,  729,  729,  729,  729,  730,  730,
+      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
+      730,  730,  730,  730,  730,  730,  730,  731,  731,  226,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  732,  732,  222,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  732,  732,  733,  221,  733,  733,  220,
+      219,  733,  733,  733,  218,  208,  733,  734,  734,  734,
+      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
+
+      734,  734,  734,  734,  734,  734,  735,  735,  735,  735,
+      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
+      735,  735,  735,  735,  735,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  737,  737,  737,  737,  737,  737,
+      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
+      737,  737,  737,  738,  738,  207,  206,  738,  738,  205,
+      738,  738,  738,  738,  738,  738,  738,  738,  738,  739,
+      204,  201,  200,  199,  198,  739,  739,  739,  739,  197,
+      739,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  742,
+      742,  196,  192,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  743,  743,  743,  743,  743,
+      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
+      743,  743,  743,  743,  744,  744,  744,  744,  744,  744,
+      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
+      744,  744,  744,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+
+      745,  745,  746,  746,  191,  746,  746,  746,  746,  746,
+      746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
+      746,  747,  747,  183,  747,  747,  747,  747,  747,  747,
+      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
+      748,  748,  171,  748,  748,  748,  748,  748,  748,  748,
+      748,  748,  748,  748,  748,  748,  748,  748,  748,  749,
+      749,  164,  749,  749,  749,  749,  749,  749,  749,  749,
+      749,  749,  749,  749,  749,  749,  749,  749,  750,  750,
+      156,  750,  750,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  750,  750,  750,  751,  751,  145,
+
+      751,  751,  751,  751,  751,  751,  751,  751,  751,  751,
+      751,  751,  751,  751,  751,  751,  752,  752,  752,  752,
+      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
+      752,  752,  752,  752,  752,  753,  753,  753,  753,  753,
+      753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
+      753,  753,  753,  753,  754,  754,  754,  754,  754,  754,
+      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
+      754,  754,  754,  755,  143,  142,  140,  138,  137,  755,
+      755,  755,  755,  755,  755,  755,  755,  755,  756,  756,
+      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
+
+      756,  756,  756,  756,  756,  756,  756,  757,  757,  757,
+      757,  136,  757,  757,  757,  757,  757,  757,  757,  757,
+      757,  757,  757,  757,  757,  757,  758,  135,  134,  121,
+      119,  117,  758,  758,  758,  758,  759,  759,  116,  759,
+      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
+      759,  759,  759,  759,  759,  760,  760,  114,  760,  760,
+      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
+      760,  760,  760,  760,  761,  761,  113,  761,  761,  761,
+      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
+      761,  761,  761,  762,  762,  112,  762,  762,  762,  762,
+
+      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
+      762,  762,  763,  763,  763,  763,  763,  763,  763,  763,
+      763,  763,  763,  763,  763,  763,  763,  763,  763,  763,
+      763,  764,  764,  764,  764,  764,  764,  764,  764,  764,
+      764,  764,  764,  764,  764,  764,  764,  764,  764,  764,
+      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
+      765,  765,  765,  765,  765,  765,  765,  765,  765,  766,
+      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
+      766,  766,  766,  766,  766,  766,  766,  766,  101,   99,
+       95,   92,   91,   90,   86,   81,   78,   58,   57,   55,
+
+       53,   52,   44,   41,   40,   38,   23,   22,   20,   18,
+       17,   14,    9,    3,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
+      687,  687,  687,  687,  687,  687,  687,  687
+    } ;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
+static char *yy_full_match;
+static int yy_lp;
+static int yy_looking_for_trail_begin = 0;
+static int yy_full_lp;
+static int *yy_full_state;
+#define YY_TRAILING_MASK 0x2000
+#define YY_TRAILING_HEAD_MASK 0x4000
+#define REJECT \
+{ \
+*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
+yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
+(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
+(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
+yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
+++(yy_lp); \
+goto find_rule; \
+}
+
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "parser.l"
+#line 8 "parser.l"
+/*
+ * parser.l -- lex parser of algebraic chess moves for XBoard
+ *
+ * Copyright 1991 by Digital Equipment Corporation, Maynard,
+ * Massachusetts.
+ *
+ * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ *
+ * The following terms apply to Digital Equipment Corporation's copyright
+ * interest in XBoard:
+ * ------------------------------------------------------------------------
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Digital not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * ------------------------------------------------------------------------
+ *
+ * The following terms apply to the enhanced version of XBoard
+ * distributed by the Free Software Foundation:
+ * ------------------------------------------------------------------------
+ *
+ * GNU XBoard is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * GNU XBoard is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see http://www.gnu.org/licenses/.  
+ *
+ *------------------------------------------------------------------------
+ ** See the file ChangeLog for a revision history.  */
+
+/* This parser handles all forms of promotion.
+ * The parser resolves ambiguous moves by searching and check-testing.
+ * It also parses comments of the form [anything] or (anything).
+ *
+ * [HGM] Parser extensively modified for bigger boards, Shogi-like syntax,
+ * and unknow pieces. All pieces are now mandatory upper case, but can be
+ * any letter A-Z. Files must be lower case (as before), but can run upto 'l'.
+ * Ranks can be 0-9. The parser returns 0 for off-board files and ranks.
+ * For an unknown piece (as mover or promotion piece) it returns
+ * IllegalMove, like it does when the piece doesn't match.
+ * Promotions can now also be appended Shogi-style, a bare '=' or '+',
+ * and this is then returned as promotion character. The piece indicator
+ * can be prefixed by a '+' to indicate it is a promoted piece.
+ */
+
+#include "config.h"
+
+#define NO_CONSTRAINT	-1
+#undef YYLMAX
+#define YYLMAX			4096
+#define UNPUT_BUF_SIZE		YYLMAX
+
+#ifdef FLEX_SCANNER
+/* yytext is probably a char*, but could be a char[].  yy_text is set
+   in YY_DECL below, because if yytext is a char*, its value is not
+   constant. */
+char *yy_text;
+#else /*!FLEX_SCANNER*/
+/* yytext is definitely a char[], so yy_text can be set here, statically. */
+char *yy_text = (char *) yytext;
+#endif
+
+#ifdef FLEX_SCANNER
+/* This is flex */
+/* [AP] use prototypes in function declarations */
+#define YY_USE_PROTOS
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+/* end of [AP] fix */
+
+#undef YY_INPUT
+#define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
+#undef YY_DECL
+#define YY_DECL                     \
+    int _yylex YY_PROTO((void));    \
+    int yylex YY_PROTO((void))      \
+    {                               \
+	int result = _yylex();      \
+	yy_text = (char *) yytext;  \
+	return(result);             \
+    }                               \
+    int _yylex YY_PROTO((void))
+#else
+/* This is lex */
+#undef input
+#undef output
+#undef unput
+#endif
+
+/* The includes must be here, below the #undef input */
+
+#include <ctype.h>
+
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#else /* not STDC_HEADERS */
+# if HAVE_STRING_H
+#  include <string.h>
+# else /* not HAVE_STRING_H */
+#  include <strings.h>
+# endif /* not HAVE_STRING_H */
+#endif /* not STDC_HEADERS */
+
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#if defined(_amigados)
+# include <errno.h>
+# if HAVE_FCNTL_H
+#  include <fcntl.h>    /*  isatty() prototype  */
+# endif /*  HAVE_FCNTL_H        */
+#endif  /*  defined(_amigados)  */
+
+#include "common.h"
+#include "backend.h"
+#include "frontend.h"
+#include "parser.h"
+#include "moves.h"
+
+extern int PosFlags P((int));
+
+extern Board	boards[MAX_MOVES];
+int		yyboardindex;
+int             yyskipmoves = FALSE;
+char		currentMoveString[YYLMAX];
+#ifndef FLEX_SCANNER
+char		unputBuffer[UNPUT_BUF_SIZE];
+int		unputCount = 0;
+#endif
+
+#ifdef FLEX_SCANNER
+void my_yy_input P((char *buf, int *result, int max_size));
+#else /*!FLEX_SCANNER*/
+static int input P((void));
+static void output P((int ch));
+static void unput P((int ch));
+int yylook P((void));
+int yyback P((int *, int));
+#endif
+#undef yywrap
+int yywrap P((void));
+extern void CopyBoard P((Board to, Board from));
+
+#line 1802 "parser.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *yyget_in (void );
+
+void yyset_in  (FILE * in_str  );
+
+FILE *yyget_out (void );
+
+void yyset_out  (FILE * out_str  );
+
+int yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+    
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		int n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	if ( yyleng > 0 ) \
+		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
+				(yytext[yyleng - 1] == '\n'); \
+	YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+    
+#line 179 "parser.l"
+
+
+#line 1990 "parser.c"
+
+	if ( !(yy_init) )
+		{
+		(yy_init) = 1;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+        /* Create the reject buffer large enough to save one state per allowed character. */
+        if ( ! (yy_state_buf) )
+            (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE  );
+            if ( ! (yy_state_buf) )
+                YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			yyensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				yy_create_buffer(yyin,YY_BUF_SIZE );
+		}
+
+		yy_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of yytext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = (yy_start);
+		yy_current_state += YY_AT_BOL();
+
+		(yy_state_ptr) = (yy_state_buf);
+		*(yy_state_ptr)++ = yy_current_state;
+
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 688 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			*(yy_state_ptr)++ = yy_current_state;
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 3815 );
+
+yy_find_action:
+		yy_current_state = *--(yy_state_ptr);
+		(yy_lp) = yy_accept[yy_current_state];
+find_rule: /* we branch to this label when backing up */
+		for ( ; ; ) /* until we find what rule we matched */
+			{
+			if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
+				{
+				yy_act = yy_acclist[(yy_lp)];
+				if ( yy_act & YY_TRAILING_HEAD_MASK ||
+				     (yy_looking_for_trail_begin) )
+					{
+					if ( yy_act == (yy_looking_for_trail_begin) )
+						{
+						(yy_looking_for_trail_begin) = 0;
+						yy_act &= ~YY_TRAILING_HEAD_MASK;
+						break;
+						}
+					}
+				else if ( yy_act & YY_TRAILING_MASK )
+					{
+					(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
+					(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
+					}
+				else
+					{
+					(yy_full_match) = yy_cp;
+					(yy_full_state) = (yy_state_ptr);
+					(yy_full_lp) = (yy_lp);
+					break;
+					}
+				++(yy_lp);
+				goto find_rule;
+				}
+			--yy_cp;
+			yy_current_state = *--(yy_state_ptr);
+			(yy_lp) = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+do_action:	/* This label is used only to access EOF actions. */
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+case 1:
+YY_RULE_SETUP
+#line 181 "parser.l"
+{
+    /*
+     * Fully-qualified algebraic move, possibly with promotion
+     */
+    int skip1 = 0, skip2 = 0, skip3 = 0, promoted = 0;
+    ChessSquare piece;
+    ChessMove result;
+    char c;
+    
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if (yytext[0] == '+') skip1 = skip3 = promoted = 1; /* [HGM] Shogi promoted */
+
+    /* remove the / */
+    if (yytext[1+skip1] == '/')  skip1++; 
+    
+    /* remove the [xX:-] */
+    if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
+        (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
+    
+    currentMoveString[0] = yytext[1+skip1];
+    currentMoveString[1] = yytext[2+skip1];
+    currentMoveString[2] = yytext[3+skip1+skip2];
+    currentMoveString[3] = yytext[4+skip1+skip2];
+    currentMoveString[4] = NULLCHAR;
+    
+    if (appData.debugMode) {
+        fprintf(debugFP, "Parser Qa1b2: yyleng=%d\n",
+        yyleng);
+    }
+
+    if (yyleng-skip1-skip2 > 5) { char c;
+        if (yytext[yyleng-1] == ')') {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
+	} else {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
+	}
+	currentMoveString[5] = NULLCHAR;
+        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
+            return IllegalMove; /* [HGM] promotion to invalid piece */
+    }
+
+    if (appData.debugMode) {
+        fprintf(debugFP, "parser: %s\n", currentMoveString);
+    }
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[1] - ONE <  0            ||
+       currentMoveString[0] - AAA >= BOARD_RGHT   ||
+       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[3] - ONE <  0            ||
+       currentMoveString[2] - AAA >= BOARD_RGHT   ||
+       currentMoveString[0] - AAA <  BOARD_LEFT   ||
+       currentMoveString[2] - AAA <  BOARD_LEFT     )
+      return 0;
+
+    piece = boards[yyboardindex]
+      [currentMoveString[1] - ONE][currentMoveString[0] - AAA];
+    if(promoted) piece = (ChessSquare) (DEMOTED piece);
+    c = PieceToChar(piece);
+    if(c == '~') c = PieceToChar((ChessSquare) (DEMOTED piece));
+    if (ToLower(yytext[skip3]) != ToLower(c))
+      return (int) IllegalMove;
+
+    result = LegalityTest(boards[yyboardindex],
+			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
+			  EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+			  currentMoveString[4]);
+
+    if (currentMoveString[4] == NULLCHAR &&
+        (result == WhitePromotionKnight || result == BlackPromotionKnight ||
+         result == WhitePromotionQueen  || result == BlackPromotionQueen)) {
+        currentMoveString[4] = PieceToChar(BlackQueen);
+	currentMoveString[5] = NULLCHAR;
+    }
+
+    return (int) result;
+}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 265 "parser.l"
+{
+    /*
+     * Simple algebraic move, possibly with promotion
+     * [HGM] Engine moves are received in this format, with lower-case promoChar!
+     */
+    int skip = 0;
+    ChessMove result;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove the [xX:-] */
+    if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
+	(yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
+
+    currentMoveString[0] = yytext[0];
+    currentMoveString[1] = yytext[1];
+    currentMoveString[2] = yytext[2+skip];
+    currentMoveString[3] = yytext[3+skip];
+    currentMoveString[4] = NULLCHAR;
+
+    if (yyleng-skip > 4) { char c;
+	if (yytext[yyleng-1] == ')') {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
+	} else {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
+	}
+	currentMoveString[5] = NULLCHAR;
+        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
+            return IllegalMove;
+    }
+
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[1] - ONE <  0            ||
+       currentMoveString[0] - AAA >= BOARD_RGHT   ||
+       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[3] - ONE <  0            ||
+       currentMoveString[2] - AAA >= BOARD_RGHT   ||
+       currentMoveString[0] - AAA <  BOARD_LEFT   ||
+       currentMoveString[2] - AAA <  BOARD_LEFT     )
+      return 0;
+
+    result = LegalityTest(boards[yyboardindex],
+			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
+			  EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+			  currentMoveString[4]);
+
+    if (currentMoveString[4] == NULLCHAR &&
+        (result == WhitePromotionKnight || result == BlackPromotionKnight ||
+         result == WhitePromotionQueen  || result == BlackPromotionQueen)) {
+        if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
+            currentMoveString[4] = PieceToChar(BlackFerz);
+        else if(gameInfo.variant == VariantGreat)
+            currentMoveString[4] = PieceToChar(BlackMan);
+        else
+            currentMoveString[4] = PieceToChar(BlackQueen);
+	currentMoveString[5] = NULLCHAR;
+    }
+
+    return (int) result;
+}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 332 "parser.l"
+{
+    /*
+     * Pawn move, possibly with promotion
+     */
+    DisambiguateClosure cl;
+    int skip = 0; char c;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove the =() */
+    if (yytext[2] == '=' && yytext[3] != NULLCHAR) skip++;
+    if (yytext[2+skip] == '(') skip++;
+
+    cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
+    cl.rfIn = -1;
+    cl.ffIn = yytext[0] - AAA;
+    cl.rtIn = yytext[1] - ONE;
+    cl.ftIn = yytext[0] - AAA;
+    c = cl.promoCharIn = yytext[2+skip];
+
+    /* [HGM] do not allow values beyond board size */
+    if(cl.rtIn >= BOARD_HEIGHT ||
+       cl.rtIn <  0            ||
+       cl.ffIn >= BOARD_RGHT   ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
+      return IllegalMove;
+
+
+    Disambiguate(boards[yyboardindex],
+		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 377 "parser.l"
+{
+    /*
+     * Pawn capture, possibly with promotion, possibly ambiguous
+     */
+    DisambiguateClosure cl;
+    int skip1 = 0, skip2 = 0; char c;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove trailing ep or e.p. (nonstandard PGN) */
+    if (yytext[yyleng-1] == 'p') {
+      yyleng -= 2;
+      yytext[yyleng] = NULLCHAR;
+    } else if (yytext[yyleng-1] == '.') {
+      yyleng -= 4;
+      yytext[yyleng] = NULLCHAR;
+    }
+
+    /* remove the [xX:-] and =() */
+    if ((yytext[1] == 'x') || (yytext[1] == 'X')
+	|| (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
+    if (yytext[2+skip1] == '=' && yytext[3+skip1] != NULLCHAR) skip2++;
+    if (yytext[2+skip1+skip2] == '(') skip2++;
+
+    cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
+    cl.rfIn = -1;
+    cl.ffIn = yytext[0] - AAA;
+    cl.rtIn = -1;
+    cl.ftIn = yytext[1+skip1] - AAA;
+    c = cl.promoCharIn = yytext[2+skip1+skip2];
+
+    /* [HGM] do not allow values beyond board size */
+    if(cl.ffIn >= BOARD_RGHT  ||
+       cl.ffIn <  BOARD_LEFT  ||
+       cl.ftIn >= BOARD_RGHT  ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
+      return IllegalMove;
+
+    Disambiguate(boards[yyboardindex],
+		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 431 "parser.l"
+{
+    /*
+     * unambiguously abbreviated Pawn capture, possibly with promotion
+     */
+    int skip = 0;
+    ChessMove result; char c;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove trailing ep or e.p. (nonstandard PGN) */
+    if (yytext[yyleng-1] == 'p') {
+      yyleng -= 2;
+      yytext[yyleng] = NULLCHAR;
+    } else if (yytext[yyleng-1] == '.') {
+      yyleng -= 4;
+      yytext[yyleng] = NULLCHAR;
+    }
+
+    /* remove the [xX:-] */
+    if ((yytext[1] == 'x') || (yytext[1] == 'X')
+	|| (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
+
+    currentMoveString[0] = yytext[0];
+    currentMoveString[2] = yytext[1+skip];
+    currentMoveString[3] = yytext[2+skip];
+
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[0] - AAA >= BOARD_RGHT   ||
+       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[3] - ONE <  0            ||
+       currentMoveString[2] - AAA >= BOARD_RGHT   ||
+       currentMoveString[0] - AAA <  BOARD_LEFT   ||
+       currentMoveString[2] - AAA <  BOARD_LEFT     )
+      return 0;
+
+    if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */
+         currentMoveString[0] != currentMoveString[2] ) {
+        currentMoveString[1] = yytext[2+skip];
+    } else 
+    if (WhiteOnMove(yyboardindex)) {
+        if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
+	currentMoveString[1] = yytext[2+skip] - 1;
+	if(boards[yyboardindex][currentMoveString[1]-ONE][currentMoveString[0]-AAA] != WhitePawn) 
+		return ImpossibleMove;
+    } else {
+        currentMoveString[1] = currentMoveString[3] + 1;
+        if (currentMoveString[3] == ONE+BOARD_HEIGHT-1) return (int) ImpossibleMove;
+	if(boards[yyboardindex][currentMoveString[1]-ONE][currentMoveString[0]-AAA] != BlackPawn) 
+		return ImpossibleMove;
+    }
+    if (yyleng-skip > 3) {
+	if (yytext[yyleng-1] == ')')
+          c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
+	else
+          c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
+	currentMoveString[5] = NULLCHAR;
+        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
+            return IllegalMove;
+    } else {
+	currentMoveString[4] = NULLCHAR;
+    }
+
+    result = LegalityTest(boards[yyboardindex],
+			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
+			  EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+			  currentMoveString[4]);
+
+    if (currentMoveString[4] == NULLCHAR &&
+        (result == WhitePromotionQueen  || result == BlackPromotionQueen ||
+         result == WhitePromotionKnight || result == BlackPromotionKnight)) {
+        currentMoveString[4] = PieceToChar(BlackQueen);
+	// [HGM] shatranj: take care of variants without Queen
+	if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
+            currentMoveString[4] = PieceToChar(BlackFerz);
+	if(gameInfo.variant == VariantGreat)
+            currentMoveString[4] = PieceToChar(BlackMan);
+	currentMoveString[5] = NULLCHAR;
+    }
+
+    if (result != IllegalMove) return (int) result;
+
+    /* Special case: improperly written en passant capture */
+    if (WhiteOnMove(yyboardindex)) {
+	if (currentMoveString[3] == '5') {
+	    currentMoveString[1] = '5';
+	    currentMoveString[3] = '6';
+	} else {
+	    return (int) IllegalMove;
+	}
+    } else {
+	if (currentMoveString[3] == '4') {
+	    currentMoveString[1] = '4';
+	    currentMoveString[3] = '3';
+	} else {
+	    return (int) IllegalMove;
+	}
+    }
+
+    result = LegalityTest(boards[yyboardindex],
+			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
+			  EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+			  currentMoveString[4]);
+
+    if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
+      return (int) result;
+    else
+      return (int) IllegalMove;
+}
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 550 "parser.l"
+{
+    /*
+     * piece move, possibly ambiguous
+     */
+    DisambiguateClosure cl;
+    int skip = 0, skip2 = 0, promoted = 0;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if(yytext[0] == '+') promoted = skip = skip2 = 1;
+
+    /* remove the [xX:-] */
+    if ((yytext[1+skip] == 'x') || (yytext[1+skip] == 'X')
+        || (yytext[1+skip] == ':') || (yytext[1+skip] == '-')) skip++;
+
+    if (WhiteOnMove(yyboardindex)) {
+        cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
+    } else {
+        cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
+    }
+    if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
+
+    cl.rfIn = -1;
+    cl.ffIn = -1;
+    cl.rtIn = yytext[2+skip] - ONE;
+    cl.ftIn = yytext[1+skip] - AAA;
+    cl.promoCharIn = NULLCHAR;
+
+    if(yyleng-skip > 3) /* [HGM] can have Shogi-style promotion */
+        cl.promoCharIn = yytext[yyleng-1];
+
+    if (appData.debugMode) {
+        fprintf(debugFP, "Parser Qa1: yyleng=%d,  %d(%d,%d)-(%d,%d) = %d (%c)\n",
+        yyleng,
+        cl.pieceIn,cl.ffIn,cl.rfIn,cl.ftIn,cl.rtIn,cl.promoCharIn,cl.promoCharIn?cl.promoCharIn:' ');
+    }
+
+    /* [HGM] but do not allow values beyond board size */
+    if(cl.rtIn >= BOARD_HEIGHT ||
+       cl.rtIn <  0            ||
+       cl.ftIn >= BOARD_RGHT   ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    Disambiguate(boards[yyboardindex],
+		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 607 "parser.l"
+{
+    /*
+     * piece move with rank or file disambiguator
+     */
+    DisambiguateClosure cl;
+    int skip = 0, skip2 = 0; int promoted=0;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if(yytext[0]=='+') promoted = skip = skip2 = 1;
+
+    /* remove the [xX:-] */
+    if ((yytext[2+skip] == 'x') || (yytext[2+skip] == 'X')
+        || (yytext[2+skip] == ':') || (yytext[2+skip] == '-')) skip++;
+
+    if (WhiteOnMove(yyboardindex)) {
+        cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
+    } else {
+        cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
+    }
+    if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
+
+    if (isalpha(yytext[1+skip2])) {
+	cl.rfIn = -1;
+        cl.ffIn = yytext[1+skip2] - AAA;
+       
+        if(cl.ffIn >= BOARD_RGHT ||
+           cl.ffIn <  BOARD_LEFT   ) return 0;
+    } else {
+        cl.rfIn = yytext[1+skip2] - ONE;
+	cl.ffIn = -1;
+        if(cl.rfIn >= BOARD_HEIGHT ||
+           cl.rfIn <  0) return 0;
+    }
+    cl.rtIn = yytext[3+skip] - ONE;
+    cl.ftIn = yytext[2+skip] - AAA;
+    cl.promoCharIn = NULLCHAR;
+
+    if(yyleng-skip > 4) /* [HGM] can have Shogi-style promotion */
+        cl.promoCharIn = yytext[yyleng-1];
+
+    /* [HGM] do not allow values beyond board size */
+    if(cl.rtIn >= BOARD_HEIGHT ||
+       cl.rtIn <  0            ||
+       cl.ftIn >= BOARD_RGHT   ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    Disambiguate(boards[yyboardindex],
+		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 668 "parser.l"
+{
+    int rf, ff, rt, ft;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* [HGM] all squares referenced to board edges in stead of absolute */
+    if (WhiteOnMove(yyboardindex)) {
+        if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
+	    /* ICS wild castling */
+	    rf = 0;
+            ff = (BOARD_WIDTH-1)>>1;
+	    rt = 0;
+            ft = BOARD_RGHT-3;
+	} else {
+	    rf = 0;
+            ff = BOARD_WIDTH>>1;
+	    rt = 0;
+            ft = BOARD_LEFT+2;
+	}
+    } else{ 
+        if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
+	    /* ICS wild castling */
+            rf = BOARD_HEIGHT-1;
+            ff = (BOARD_WIDTH-1)>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_RGHT-3;
+	} else {
+            rf = BOARD_HEIGHT-1;
+            ff = BOARD_WIDTH>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_LEFT+2;
+	}
+    }
+    if(gameInfo.variant == VariantFischeRandom) {
+        if (WhiteOnMove(yyboardindex)) {
+            ff = initialRights[2];
+            ft = initialRights[1];
+        } else {
+            ff = initialRights[5];
+            ft = initialRights[4];
+        }
+        if (appData.debugMode) 
+        {
+          fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
+        };
+        if(ff < 0 || ft < 0) return 0;
+    }
+    sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
+    if (appData.debugMode) {
+        fprintf(debugFP, "long castling %d %d\n", ff, ft);
+    }
+    return (int) LegalityTest(boards[yyboardindex],
+			      PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.!
+			      EP_UNKNOWN,
+                              castlingRights[yyboardindex], /* [HGM] use true castling rights */
+			      rf, ff, rt, ft, NULLCHAR);
+}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 726 "parser.l"
+{
+    int rf, ff, rt, ft;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if (WhiteOnMove(yyboardindex)) {
+        if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
+	    /* ICS wild castling */
+	    rf = 0;
+            ff = (BOARD_WIDTH-1)>>1;
+	    rt = 0;
+            ft = BOARD_LEFT+1;
+	} else {
+	    rf = 0;
+            ff = BOARD_WIDTH>>1;
+	    rt = 0;
+            ft = BOARD_RGHT-2;
+	}
+    } else {
+        if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
+	    /* ICS wild castling */
+            rf = BOARD_HEIGHT-1;
+            ff = (BOARD_WIDTH-1)>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_LEFT+1;
+	} else {
+            rf = BOARD_HEIGHT-1;
+            ff = BOARD_WIDTH>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_RGHT-2;
+	}
+    }
+    if(gameInfo.variant == VariantFischeRandom) {
+        if (WhiteOnMove(yyboardindex)) {
+            ff = initialRights[2];
+            ft = initialRights[0];
+        } else {
+            ff = initialRights[5];
+            ft = initialRights[3];
+        }
+    if (appData.debugMode) {
+        fprintf(debugFP, "Parser FRC short %d %d\n", ff, ft);
+    }
+        if(ff < 0 || ft < 0) return 0;
+    }
+    sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
+    if (appData.debugMode) {
+        fprintf(debugFP, "short castling %d %d\n", ff, ft);
+    }
+
+    return (int) LegalityTest(boards[yyboardindex],
+			      PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.!
+			      EP_UNKNOWN,
+                              castlingRights[yyboardindex], /* [HGM] use true castling rights */
+			      rf, ff, rt, ft, NULLCHAR);
+}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 783 "parser.l"
+{
+    /* Bughouse piece drop.  No legality checking for now. */
+    currentMoveString[1] = '@';
+    currentMoveString[2] = yytext[2];
+    currentMoveString[3] = yytext[3];
+    currentMoveString[4] = NULLCHAR;
+
+    if (appData.debugMode) {
+        fprintf(debugFP, "Drop: %s\n", currentMoveString);
+    }
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[2] - AAA >= BOARD_WIDTH     )
+      return 0;
+
+    if (WhiteOnMove(yyboardindex)) {
+	currentMoveString[0] = ToUpper(yytext[0]);
+	return (int) WhiteDrop;
+    } else {
+	currentMoveString[0] = ToLower(yytext[0]);
+	return (int) BlackDrop;
+    }
+}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 807 "parser.l"
+{
+    if (WhiteOnMove(yyboardindex))
+      return (int) BlackWins;
+    else
+      return (int) WhiteWins;
+}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 814 "parser.l"
+{
+    return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
+}
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 818 "parser.l"
+{
+    return (int) GameUnfinished;
+}
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 822 "parser.l"
+{
+    return (int) GameIsDrawn;
+}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 826 "parser.l"
+{
+    return (int) GameIsDrawn;
+}
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 830 "parser.l"
+{
+    if (WhiteOnMove(yyboardindex))
+      return (int) BlackWins;
+    else
+      return (int) WhiteWins;
+}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 837 "parser.l"
+{
+    if (WhiteOnMove(yyboardindex))
+      return (int) BlackWins;
+    else
+      return (int) WhiteWins;
+}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 844 "parser.l"
+{
+    return (int) GameIsDrawn;
+}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 848 "parser.l"
+{
+    return (int) GameIsDrawn;
+}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 852 "parser.l"
+{ 
+    return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
+}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 856 "parser.l"
+{ 
+    return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
+}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 860 "parser.l"
+{ 
+    return (int) WhiteWins;
+}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 864 "parser.l"
+{ 
+    return (int) BlackWins;
+}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 868 "parser.l"
+{
+    return (int) GameIsDrawn;
+}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 872 "parser.l"
+{
+    return (int) GameUnfinished;
+}
+	YY_BREAK
+case 26:
+/* rule 26 can match eol */
+YY_RULE_SETUP
+#line 876 "parser.l"
+{
+    /* move numbers */
+    if ((yyleng == 1) && (yytext[0] == '1'))
+      return (int) MoveNumberOne;
+}
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 882 "parser.l"
+{
+    /* elapsed time indication, e.g. (0:12) or {10:21.071} */ 
+    return (int) ElapsedTime;
+}
+	YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+#line 887 "parser.l"
+{
+    /* position diagram enclosed in [-- --] */
+    return (int) PositionDiagram;
+}
+	YY_BREAK
+case 29:
+/* rule 29 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+#line 892 "parser.l"
+{
+    /* position diagram enclosed in {-- --} */
+    return (int) PositionDiagram;
+}
+	YY_BREAK
+case 30:
+/* rule 30 can match eol */
+YY_RULE_SETUP
+#line 897 "parser.l"
+{
+    return (int) PGNTag;
+}    
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 901 "parser.l"
+{
+    return (int) GNUChessGame;
+}
+	YY_BREAK
+case 32:
+/* rule 32 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+#line 905 "parser.l"
+{
+    return (int) XBoardGame;
+}
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 909 "parser.l"
+{				/* numeric annotation glyph */
+    return (int) NAG;
+}
+	YY_BREAK
+case 34:
+/* rule 34 can match eol */
+YY_RULE_SETUP
+#line 913 "parser.l"
+{        			/* anything in {} */
+    return (int) Comment; 
+}
+	YY_BREAK
+case 35:
+*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+#line 917 "parser.l"
+{                                          /* ; to end of line */
+    return (int) Comment;
+}
+	YY_BREAK
+case 36:
+/* rule 36 can match eol */
+YY_RULE_SETUP
+#line 921 "parser.l"
+{        			/* anything in [] */
+    return (int) Comment; 
+}
+	YY_BREAK
+case 37:
+/* rule 37 can match eol */
+YY_RULE_SETUP
+#line 925 "parser.l"
+{ /* very nested () */
+    return (int) Comment; 
+}
+	YY_BREAK
+case 38:
+/* rule 38 can match eol */
+YY_RULE_SETUP
+#line 929 "parser.l"
+{ 				/* >=2 chars in () */
+    return (int) Comment; 
+}       
+	YY_BREAK
+case 39:
+/* rule 39 can match eol */
+YY_RULE_SETUP
+#line 933 "parser.l"
+{
+        /* Skip mail headers */
+}
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 937 "parser.l"
+{
+        /* Skip random words */
+}
+	YY_BREAK
+case 41:
+/* rule 41 can match eol */
+YY_RULE_SETUP
+#line 941 "parser.l"
+{
+        /* Skip everything else */
+}
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 945 "parser.l"
+ECHO;
+	YY_BREAK
+#line 3014 "parser.c"
+			case YY_STATE_EOF(INITIAL):
+				yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = (yy_c_buf_p);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( yywrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), (size_t) num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart(yyin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+    
+	yy_current_state = (yy_start);
+	yy_current_state += YY_AT_BOL();
+
+	(yy_state_ptr) = (yy_state_buf);
+	*(yy_state_ptr)++ = yy_current_state;
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 688 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		*(yy_state_ptr)++ = yy_current_state;
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+	register int yy_is_jam;
+    
+	register YY_CHAR yy_c = 1;
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 688 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 687);
+	if ( ! yy_is_jam )
+		*(yy_state_ptr)++ = yy_current_state;
+
+	return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+	register char *yy_cp;
+    
+    yy_cp = (yy_c_buf_p);
+
+	/* undo effects of setting up yytext */
+	*yy_cp = (yy_hold_char);
+
+	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = (yy_n_chars) + 2;
+		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+		register char *source =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+	(yytext_ptr) = yy_bp;
+	(yy_hold_char) = *yy_cp;
+	(yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			int offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart(yyin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve yytext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
+
+	return c;
+}
+#endif	/* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void yyrestart  (FILE * input_file )
+{
+    
+	if ( ! YY_CURRENT_BUFFER ){
+        yyensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            yy_create_buffer(yyin,YY_BUF_SIZE );
+	}
+
+	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+    
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		yypop_buffer_state();
+	 *		yypush_buffer_state(new_buffer);
+     */
+	yyensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	yy_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void yy_load_buffer_state  (void)
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
+{
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * 
+ */
+    void yy_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yyfree((void *) b->yy_ch_buf  );
+
+	yyfree((void *) b  );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+	int oerrno = errno;
+    
+	yy_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+    
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+    void yy_flush_buffer (YY_BUFFER_STATE  b )
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		yy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+    	if (new_buffer == NULL)
+		return;
+
+	yyensure_buffer_stack();
+
+	/* This block is copied from yy_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from yy_switch_to_buffer. */
+	yy_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+void yypop_buffer_state (void)
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	yy_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		yy_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+	int num_to_alloc;
+    
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+								  
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer(b  );
+
+	return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+    
+	return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) yyalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		yytext[yyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = yytext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		yyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ * 
+ */
+int yyget_lineno  (void)
+{
+        
+    return yylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *yyget_in  (void)
+{
+        return yyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *yyget_out  (void)
+{
+        return yyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+int yyget_leng  (void)
+{
+        return yyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *yyget_text  (void)
+{
+        return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void yyset_lineno (int  line_number )
+{
+    
+    yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE *  in_str )
+{
+        yyin = in_str ;
+}
+
+void yyset_out (FILE *  out_str )
+{
+        yyout = out_str ;
+}
+
+int yyget_debug  (void)
+{
+        return yy_flex_debug;
+}
+
+void yyset_debug (int  bdebug )
+{
+        yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from yylex_destroy(), so don't allocate here.
+     */
+
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+    (yy_state_buf) = 0;
+    (yy_state_ptr) = 0;
+    (yy_full_match) = 0;
+    (yy_lp) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    yyin = stdin;
+    yyout = stdout;
+#else
+    yyin = (FILE *) 0;
+    yyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * yylex_init()
+     */
+    return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		yy_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		yypop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	yyfree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    yyfree ( (yy_state_buf) );
+    (yy_state_buf)  = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * yylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *yyalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *yyrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void yyfree (void * ptr )
+{
+	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 945 "parser.l"
+
+
+
+
+static char *StringToLex;
+
+#ifndef FLEX_SCANNER
+static FILE *lexFP;
+
+static int input()
+{
+    int ret;
+    
+    if (StringToLex != NULL) {
+	ret = *StringToLex;
+	if (ret == NULLCHAR)
+	  ret = EOF;
+	else
+	  StringToLex++;
+    } else if (unputCount > 0) {
+	ret = unputBuffer[--unputCount];
+    } else {
+	ret = fgetc(lexFP);
+    }    
+
+    if (ret == EOF) 
+      return 0;
+    else
+      return ret;
+}
+
+/*
+ * Return offset of next pattern within current file
+ */
+int yyoffset()
+{
+    int offset = ftell(lexFP) - unputCount;
+
+    if (offset < 0) {
+	offset = 0;
+    }
+    return(offset);
+}
+ 
+static void output(ch)
+     int ch;
+{
+    if(appData.debugMode) fprintf(debugFP, "PARSER BUG: unmatched character '%c' (0%o)\n",
+	    ch, ch);
+}
+
+static void unput(ch)
+     int ch;
+{
+    if (ch == 0) return;
+    if (StringToLex != NULL) {
+	StringToLex--;
+    } else {
+	if (unputCount >= UNPUT_BUF_SIZE)
+	  if(appData.debugMode) fprintf(debugFP, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
+		  ch, ch);
+	unputBuffer[unputCount++] = ch;
+    }
+}
+
+/* Get ready to lex from a new file.  Kludge below sticks
+   an artificial newline at the front of the file, which the
+   above grammar ignores, but which makes ^ at start of pattern
+   match at the real start of the file.
+*/
+void yynewfile(f)
+     FILE *f;
+{
+    lexFP = f;
+    StringToLex = NULL;
+    unputCount = 0;
+    unput('\n'); /* kludge */
+}
+
+/* Get ready to lex from a string.  ^ at start of pattern WON'T
+   match at the start of the string!
+*/
+void yynewstr(s)
+     char *s;
+{
+    lexFP = NULL;
+    StringToLex = s;
+    unputCount = 0;
+}
+#endif /*!FLEX_SCANNER*/
+
+#ifdef FLEX_SCANNER
+void my_yy_input(buf, result, max_size)
+     char *buf;
+     int *result;
+     int max_size;
+{
+    int count;
+
+    if (StringToLex != NULL) {
+	count = 0;
+	while (*StringToLex != NULLCHAR) {
+	    *buf++ = *StringToLex++;
+	    count++;
+	}
+	*result = count;
+	return;
+    } else {
+	count = fread(buf, 1, max_size, yyin);
+	if (count == 0) {
+	    *result = YY_NULL;
+	} else {
+	    *result = count;
+	}
+	return;
+    }    
+}
+
+static YY_BUFFER_STATE my_file_buffer = NULL;
+
+/*
+    Return offset of next pattern in the current file.
+*/
+int yyoffset()
+{
+    int pos = yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf;
+
+    return(ftell(YY_CURRENT_BUFFER->yy_input_file) -
+         yy_n_chars + pos);
+}
+
+
+void yynewstr(s)
+     char *s;
+{
+    if (my_file_buffer != NULL)
+      yy_delete_buffer(my_file_buffer);
+    StringToLex = s;
+    my_file_buffer = yy_create_buffer(stdin,YY_BUF_SIZE);
+    yy_switch_to_buffer(my_file_buffer);
+}
+
+void yynewfile(f)
+     FILE *f;
+{
+    if (my_file_buffer != NULL)
+      yy_delete_buffer(my_file_buffer);
+    StringToLex = NULL;
+    my_file_buffer = yy_create_buffer(f,YY_BUF_SIZE);
+    yy_switch_to_buffer(my_file_buffer);
+}
+#endif /*FLEX_SCANNER*/
+
+int yywrap()
+{
+    return TRUE;
+}
+
+/* Parse a move from the given string s */
+/* ^ at start of pattern WON'T work here unless using flex */
+ChessMove yylexstr(boardIndex, s)
+     int boardIndex;
+     char *s;
+{
+    ChessMove ret;
+    char *oldStringToLex;
+#ifdef FLEX_SCANNER
+    YY_BUFFER_STATE buffer, oldBuffer;
+#endif
+    
+    yyboardindex = boardIndex;
+    oldStringToLex = StringToLex;
+    StringToLex = s;
+#ifdef FLEX_SCANNER
+    buffer = yy_create_buffer(stdin,YY_BUF_SIZE);
+    oldBuffer = YY_CURRENT_BUFFER;
+    yy_switch_to_buffer(buffer);
+#endif /*FLEX_SCANNER*/
+
+    ret = (ChessMove) yylex();
+
+#ifdef FLEX_SCANNER
+    if (oldBuffer != NULL) 
+      yy_switch_to_buffer(oldBuffer);
+    yy_delete_buffer(buffer);
+#endif /*FLEX_SCANNER*/
+    StringToLex = oldStringToLex;
+
+    return ret;
+}
+
diff --git a/parser.h b/parser.h
index c7b87e2..78e8de6 100644
--- a/parser.h
+++ b/parser.h
@@ -62,5 +62,5 @@ extern int yyskipmoves;  /* If TRUE, all moves are reported as AmbiguousMove
 extern char *yy_text;  /* Needed because yytext can be either a char[]
 			  or a (non-constant) char* */
 extern int yyoffset P((void));
-extern char initialRights[BOARD_SIZE];
-extern char castlingRights[MAX_MOVES][BOARD_SIZE];
+extern signed char initialRights[BOARD_SIZE];
+extern signed char castlingRights[MAX_MOVES][BOARD_SIZE];
diff --git a/parser.l b/parser.l
index 82957eb..d96b95a 100755
--- a/parser.l
+++ b/parser.l
@@ -706,7 +706,10 @@ extern void CopyBoard P((Board to, Board from));
             ff = initialRights[5];
             ft = initialRights[4];
         }
-        fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
+        if (appData.debugMode) 
+        {
+          fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
+        };
         if(ff < 0 || ft < 0) return 0;
     }
     sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
@@ -846,11 +849,11 @@ extern void CopyBoard P((Board to, Board from));
     return (int) GameIsDrawn;
 }
 
-(([Ww](hite)?)|([Bb](lack)?))" "([Mm]ate(s|ed)?)|([Ww][io]n(s)?.*)  {
+(([Ww](hite)?)|([Bb](lack)?))" "(([Mm]ates)|([Ww][io]n(s)?)) { 
     return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
 }
 
-(([Ww](hite)?)|([Bb](lack)?))" "([Mm]ate(s|ed)?)|([Ll]os[tes]+.*)  {
+(([Ww](hite)?)|([Bb](lack)?))" "(([Mm]ated)|([Ll]os[tes]+)) { 
     return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
 }
 
@@ -919,7 +922,7 @@ extern void CopyBoard P((Board to, Board from));
     return (int) Comment; 
 }
 
-\([^()]*(\([^()]*\)[^()]*)+[^()]*\)  { 	  	/* nested () */
+\([^()]*(\([^()]*(\([^()]*(\([^()]*\)[^()]*)*\)[^()]*)*\)[^()]*)+[^()]*\)  { /* very nested () */
     return (int) Comment; 
 }
 
@@ -985,7 +988,7 @@ int yyoffset()
 static void output(ch)
      int ch;
 {
-    fprintf(stderr, "PARSER BUG: unmatched character '%c' (0%o)\n",
+    if(appData.debugMode) fprintf(debugFP, "PARSER BUG: unmatched character '%c' (0%o)\n",
 	    ch, ch);
 }
 
@@ -997,7 +1000,7 @@ static void unput(ch)
 	StringToLex--;
     } else {
 	if (unputCount >= UNPUT_BUF_SIZE)
-	  fprintf(stderr, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
+	  if(appData.debugMode) fprintf(debugFP, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
 		  ch, ch);
 	unputBuffer[unputCount++] = ch;
     }
diff --git a/pgntags.c b/pgntags.c
index 0d4b26f..7e66de1 100644
--- a/pgntags.c
+++ b/pgntags.c
@@ -107,6 +107,10 @@ int ParsePGNTag(tag, gameInfo)
 	else
 	    gameInfo->result = GameUnfinished;
 	success = TRUE;
+    } else if (StrCaseCmp(name, "TimeControl") == 0) {
+//	int tc, mps, inc = -1;
+//	if(sscanf(value, "%d/%d", &mps, &tc) == 2 || )
+	success = StrSavePtr(value, &gameInfo->timeControl) != NULL;
     } else if (StrCaseCmp(name, "FEN") == 0) {
 	success = StrSavePtr(value, &gameInfo->fen) != NULL;
     } else if (StrCaseCmp(name, "SetUp") == 0) {
diff --git a/pixmaps/add33.xpm b/pixmaps/add33.xpm
index 6463900..cb87cbf 100644
--- a/pixmaps/add33.xpm
+++ b/pixmaps/add33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -15,22 +16,22 @@ static char *add33[] = {
 "............         ............",
 "..........             ..........",
 "........                 ........",
-"......          .          ......",
-"....            .            ....",
-"...             .             ...",
-"...           .....           ...",
-"....            .            ....",
-"......          .          ......",
+"......          X          ......",
+"....            X            ....",
+"...             X             ...",
+"...           XXXXX           ...",
+"....            X            ....",
+"......          X          ......",
 "........                 ........",
 ".........               .........",
 "..........             ..........",
-"........... ......... ...........",
+"........... XXXXXXXXX ...........",
 "...........           ...........",
-"..........  .........  ..........",
-".......... .         . ..........",
+"..........  XXXXXXXXX  ..........",
+".......... X         X ..........",
 "..........             ..........",
 "...........           ...........",
-".............. ... ..............",
+".............. XXX ..............",
 "....                         ....",
 "...                           ...",
 "...             .             ...",
diff --git a/pixmaps/add37.xpm b/pixmaps/add37.xpm
index db60d50..b442baf 100644
--- a/pixmaps/add37.xpm
+++ b/pixmaps/add37.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 ".....................................",
@@ -18,23 +19,23 @@ static char *add37[] = {
 ".....                           .....",
 "....                             ....",
 "...                               ...",
-"...               .               ...",
-"...               .               ...",
-"....           .......           ....",
-"....              .              ....",
-".....             .             .....",
-".......           .           .......",
+"...               X               ...",
+"...               X               ...",
+"....           XXXXXXX           ....",
+"....              X              ....",
+".....             X             .....",
+".......           X           .......",
 ".........                   .........",
 "...........               ...........",
 "............             ............",
-"............ ........... ............",
+"............ XXXXXXXXXXX ............",
 "............             ............",
 "............             ............",
-"............ ........... ............",
+"............ XXXXXXXXXXX ............",
 "...........               ...........",
 "...........               ...........",
 ".............           .............",
-"................ ... ................",
+"................ XXX ................",
 "........  ....         ....  ........",
 "....                             ....",
 "...               .               ...",
diff --git a/pixmaps/add40.xpm b/pixmaps/add40.xpm
index 61d58bc..e6c9767 100644
--- a/pixmaps/add40.xpm
+++ b/pixmaps/add40.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "........................................",
@@ -17,21 +18,21 @@ static char *add40[] = {
 ".............               ............",
 "...........                   ..........",
 ".........                       ........",
-".......             .             ......",
-"......              .              .....",
-".....               .               ....",
-".....            .......            ....",
-"......              .              .....",
-".......             .             ......",
-"........            .            .......",
+".......             X             ......",
+"......              X              .....",
+".....               X               ....",
+".....            XXXXXXX            ....",
+"......              X              .....",
+".......             X             ......",
+"........            X            .......",
 "..........                     .........",
 "...........                   ..........",
 "............                 ...........",
-".............   .........   ............",
-".............. .         . .............",
+".............   XXXXXXXXX   ............",
+".............. X         X .............",
 "..............             .............",
 ".............               ............",
-"............. ............. ............",
+"............. XXXXXXXXXXXXX ............",
 "............                 ...........",
 "............                 ...........",
 "...............           ..............",
diff --git a/pixmaps/add45.xpm b/pixmaps/add45.xpm
index 90d9e6a..d893055 100644
--- a/pixmaps/add45.xpm
+++ b/pixmaps/add45.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
@@ -20,28 +21,28 @@ static char *add45[] = {
 ".............                   .............",
 "...........                       ...........",
 ".........                           .........",
-".......               .               .......",
-".....                 .                 .....",
-"....                  .                  ....",
-"....              .........              ....",
-"....                  .                  ....",
-".....                 .                 .....",
-".....                 .                 .....",
-"......                .                ......",
+".......               X               .......",
+".....                 X                 .....",
+"....                  X                  ....",
+"....              XXXXXXXXX              ....",
+"....                  X                  ....",
+".....                 X                 .....",
+".....                 X                 .....",
+"......                X                ......",
 "........                             ........",
 "..........                         ..........",
 "............                     ............",
 "..............                 ..............",
-".............. ............... ..............",
+".............. XXXXXXXXXXXXXXX ..............",
 "...............               ...............",
 "...............               ...............",
 "..............                 ..............",
-"..............  .............  ..............",
-".............. .             . ..............",
+"..............  XXXXXXXXXXXXX  ..............",
+".............. X             X ..............",
 ".............                   .............",
 ".............                   .............",
 "................             ................",
-".................... ... ....................",
+".................... XXX ....................",
 "..................         ..................",
 ".......                               .......",
 "....                  .                  ....",
diff --git a/pixmaps/add49.xpm b/pixmaps/add49.xpm
index 75dd13d..3c7deb7 100644
--- a/pixmaps/add49.xpm
+++ b/pixmaps/add49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -21,29 +22,29 @@ static char *add49[] = {
 "..............                     ..............",
 "............                         ............",
 "..........                             ..........",
-"........                .                ........",
-"......                  .                  ......",
-".....                   .                   .....",
-"....                    .                    ....",
-".....               .........               .....",
-"......                  .                  ......",
-".......                 .                 .......",
-".........               .               .........",
-"...........             .             ...........",
+"........                X                ........",
+"......                  X                  ......",
+".....                   X                   .....",
+"....                    X                    ....",
+".....               XXXXXXXXX               .....",
+"......                  X                  ......",
+".......                 X                 .......",
+".........               X               .........",
+"...........             X             ...........",
 "............                         ............",
 ".............                       .............",
 "..............                     ..............",
 "...............                   ...............",
-"................   ...........   ................",
-"................ ..           .. ................",
+"................   XXXXXXXXXXX   ................",
+"................ XX           XX ................",
 "................                 ................",
 "................                 ................",
 "................                 ................",
-"...............  ...............  ...............",
+"...............  XXXXXXXXXXXXXXX  ...............",
 "...............                   ...............",
 "..............                     ..............",
 "..............                     ..............",
-"..................     ...     ..................",
+"..................     XXX     ..................",
 "......................     ......................",
 "....................         ....................",
 "........                                 ........",
diff --git a/pixmaps/add54.xpm b/pixmaps/add54.xpm
index e097455..f60f8cd 100644
--- a/pixmaps/add54.xpm
+++ b/pixmaps/add54.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "......................................................",
@@ -22,32 +23,32 @@ static char *add54[] = {
 "..............                          ..............",
 "...........                                ...........",
 ".........                                    .........",
-"........                  ..                  ........",
-".......                   ..                   .......",
-"......                    ..                    ......",
-".....                     ..                     .....",
-".....                 ..........                 .....",
-".....                 ..........                 .....",
-"......                    ..                    ......",
-"......                    ..                    ......",
-".......                   ..                   .......",
-".........                 ..                 .........",
+"........                  XX                  ........",
+".......                   XX                   .......",
+"......                    XX                    ......",
+".....                     XX                     .....",
+".....                 XXXXXXXXXX                 .....",
+".....                 XXXXXXXXXX                 .....",
+"......                    XX                    ......",
+"......                    XX                    ......",
+".......                   XX                   .......",
+".........                 XX                 .........",
 "...........                                ...........",
 ".............                            .............",
 "...............                        ...............",
-"................     ............     ................",
-".................   ..............   .................",
-"..................  .            .  ..................",
+"................     XXXXXXXXXXXX     ................",
+".................   XXXXXXXXXXXXXX   .................",
+"..................  X            X  ..................",
 "..................                  ..................",
 ".................                    .................",
-".................   ..............   .................",
-"................  .................   ................",
-"................  ..              ..  ................",
+".................   XXXXXXXXXXXXXX   .................",
+"................  XXXXXXXXXXXXXXXXX   ................",
+"................  XX              XX  ................",
 "................                      ................",
 "...............                        ...............",
 "................                      ................",
-"....................    ......    ....................",
-"......................  ......  ......................",
+"....................    XXXXXX    ....................",
+"......................  XXXXXX  ......................",
 ".......                                        .......",
 ".....                                            .....",
 "...                                                ...",
diff --git a/pixmaps/add58.xpm b/pixmaps/add58.xpm
index 1594b34..c550672 100644
--- a/pixmaps/add58.xpm
+++ b/pixmaps/add58.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "..........................................................",
@@ -23,33 +24,33 @@ static char *add58[] = {
 "...............                            ...............",
 ".............                                .............",
 "...........                                    ...........",
-".........                   ..                   .........",
-".......                     ..                     .......",
-"......                      ..                      ......",
-".....                       ..                       .....",
-".....                   ..........                   .....",
-".....                   ..........                   .....",
-"......                      ..                      ......",
-".......                     ..                     .......",
-"........                    ..                    ........",
-"..........                  ..                  ..........",
-"............                ..                ............",
+".........                   XX                   .........",
+".......                     XX                     .......",
+"......                      XX                      ......",
+".....                       XX                       .....",
+".....                   XXXXXXXXXX                   .....",
+".....                   XXXXXXXXXX                   .....",
+"......                      XX                      ......",
+".......                     XX                     .......",
+"........                    XX                    ........",
+"..........                  XX                  ..........",
+"............                XX                ............",
 "..............                              ..............",
 "................                          ................",
 ".................                        .................",
 "..................                      ..................",
-"...................  ................  ...................",
-"...................  ................  ...................",
+"...................  XXXXXXXXXXXXXXXX  ...................",
+"...................  XXXXXXXXXXXXXXXX  ...................",
 "...................                    ...................",
 "..................                      ..................",
 "..................                      ..................",
-"..................  ..................  ..................",
-".................   ..................   .................",
+"..................  XXXXXXXXXXXXXXXXXX  ..................",
+".................   XXXXXXXXXXXXXXXXXX   .................",
 ".................                        .................",
 ".................                        .................",
 ".................                        .................",
 "......................              ......................",
-"..........................  ..  ..........................",
+"..........................  XX  ..........................",
 "........................          ........................",
 "........                                          ........",
 "......                                              ......",
diff --git a/pixmaps/add64.xpm b/pixmaps/add64.xpm
index cfa345e..5969a1c 100644
--- a/pixmaps/add64.xpm
+++ b/pixmaps/add64.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
@@ -26,36 +27,36 @@ static char *add64[] = {
 ".................                              .................",
 "..............                                    ..............",
 "............                                        ............",
-"..........                     ..                     ..........",
-"........                       ..                       ........",
-".......                        ..                        .......",
-"......                         ..                         ......",
-"......                    ............                    ......",
-"......                    ............                    ......",
-"......                         ..                         ......",
-".......                        ..                        .......",
-".........                      ..                      .........",
-"..........                     ..                     ..........",
+"..........                     XX                     ..........",
+"........                       XX                       ........",
+".......                        XX                        .......",
+"......                         XX                         ......",
+"......                    XXXXXXXXXXXX                    ......",
+"......                    XXXXXXXXXXXX                    ......",
+"......                         XX                         ......",
+".......                        XX                        .......",
+".........                      XX                      .........",
+"..........                     XX                     ..........",
 "............                                        ............",
 "..............                                     .............",
 "...............                                  ...............",
 ".................                              .................",
 "...................                          ...................",
-"....................     ..............     ....................",
-".....................  ................... .....................",
-".....................  ..              ... .....................",
+"....................     XXXXXXXXXXXXXX     ....................",
+".....................  XXXXXXXXXXXXXXXXXXX .....................",
+".....................  XX              XXX .....................",
 ".....................                      .....................",
 ".....................                      .....................",
 "....................                        ....................",
-"....................   ..................   ....................",
-"....................  ....................  ....................",
-"...................  ..                  ..  ...................",
+"....................   XXXXXXXXXXXXXXXXXX   ....................",
+"....................  XXXXXXXXXXXXXXXXXXXX  ....................",
+"...................  XX                  XX  ...................",
 "...................                          ...................",
 "...................                          ...................",
 "....................                        ....................",
 ".........................              .........................",
-"............................  ....  ............................",
-"..........................    ....    ..........................",
+"............................  XXXX  ............................",
+"..........................    XXXX    ..........................",
 ".........                                              .........",
 ".......                                                  .......",
 ".....                                                      .....",
diff --git a/pixmaps/add72.xpm b/pixmaps/add72.xpm
index 13749d6..cf64de2 100644
--- a/pixmaps/add72.xpm
+++ b/pixmaps/add72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *add72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -28,35 +29,35 @@ static char *add72[] = {
 "..............                                            ..............",
 ".............                                              .............",
 "...........                                                  ...........",
-".........                          ..                          .........",
-"........                           ..                           ........",
-"......                             ..                             ......",
-"......                             ..                             ......",
-".....                              ..                              .....",
-".....                              ..                              .....",
-".....                        ..............                        .....",
-".......                      ..............                       ......",
-".......                            ..                            .......",
-".........                          ..                          .........",
-"............                       ..                        ...........",
-"..............                     ..                      .............",
-"...............                    ..                    ...............",
+".........                          XX                          .........",
+"........                           XX                           ........",
+"......                             XX                             ......",
+"......                             XX                             ......",
+".....                              XX                              .....",
+".....                              XX                              .....",
+".....                        XXXXXXXXXXXXXX                        .....",
+".......                      XXXXXXXXXXXXXX                       ......",
+".......                            XX                            .......",
+".........                          XX                          .........",
+"............                       XX                        ...........",
+"..............                     XX                      .............",
+"...............                    XX                    ...............",
 "................                                        ................",
 ".................                                      .................",
 "..................                                    ..................",
 "...................                                  ...................",
 "....................                                ....................",
 ".....................                              .....................",
-"......................      ................      ......................",
-".......................   .....................  .......................",
-"........................  ..                ... ........................",
+"......................      XXXXXXXXXXXXXXXX      ......................",
+".......................   XXXXXXXXXXXXXXXXXXXXX  .......................",
+"........................  XX                XXX ........................",
 ".......................                          .......................",
 ".......................                          .......................",
 ".......................                          .......................",
 "......................                            ......................",
-"......................     ..................     ......................",
-".....................  ..........................  .....................",
-".....................  ....                  ....  .....................",
+"......................     XXXXXXXXXXXXXXXXXX     ......................",
+".....................  XXXXXXXXXXXXXXXXXXXXXXXXXX  .....................",
+".....................  XXXX                  XXXX  .....................",
 ".....................                              .....................",
 "....................                                ....................",
 "....................                                ....................",
diff --git a/pixmaps/adl33.xpm b/pixmaps/adl33.xpm
index fe06352..11224b6 100644
--- a/pixmaps/adl33.xpm
+++ b/pixmaps/adl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -15,22 +16,22 @@ static char *adl33[] = {
 "............         ............",
 "..........             ..........",
 "........                 ........",
-"......          .          ......",
-"....            .            ....",
-"...             .             ...",
-"...           .....           ...",
-"....            .            ....",
-"......          .          ......",
+"......          X          ......",
+"....            X            ....",
+"...             X             ...",
+"...           XXXXX           ...",
+"....            X            ....",
+"......          X          ......",
 "........                 ........",
 ".........               .........",
 "..........             ..........",
-"........... ......... ...........",
+"........... XXXXXXXXX ...........",
 "...........           ...........",
-"..........  .........  ..........",
-".......... .         . ..........",
+"..........  XXXXXXXXX  ..........",
+".......... X         X ..........",
 "..........             ..........",
 "...........           ...........",
-".............. ... ..............",
+".............. XXX ..............",
 "....                         ....",
 "...                           ...",
 "...             .             ...",
diff --git a/pixmaps/adl37.xpm b/pixmaps/adl37.xpm
index c4d85b3..967f054 100644
--- a/pixmaps/adl37.xpm
+++ b/pixmaps/adl37.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 ".....................................",
@@ -18,23 +19,23 @@ static char *adl37[] = {
 ".....                           .....",
 "....                             ....",
 "...                               ...",
-"...               .               ...",
-"...               .               ...",
-"....           .......           ....",
-"....              .              ....",
-".....             .             .....",
-".......           .           .......",
+"...               X               ...",
+"...               X               ...",
+"....           XXXXXXX           ....",
+"....              X              ....",
+".....             X             .....",
+".......           X           .......",
 ".........                   .........",
 "...........               ...........",
 "............             ............",
-"............ ........... ............",
+"............ XXXXXXXXXXX ............",
 "............             ............",
 "............             ............",
-"............ ........... ............",
+"............ XXXXXXXXXXX ............",
 "...........               ...........",
 "...........               ...........",
 ".............           .............",
-"................ ... ................",
+"................ XXX ................",
 "........  ....         ....  ........",
 "....                             ....",
 "...               .               ...",
diff --git a/pixmaps/adl40.xpm b/pixmaps/adl40.xpm
index 0485369..9146444 100644
--- a/pixmaps/adl40.xpm
+++ b/pixmaps/adl40.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "........................................",
@@ -17,21 +18,21 @@ static char *adl40[] = {
 ".............               ............",
 "...........                   ..........",
 ".........                       ........",
-".......             .             ......",
-"......              .              .....",
-".....               .               ....",
-".....            .......            ....",
-"......              .              .....",
-".......             .             ......",
-"........            .            .......",
+".......             X             ......",
+"......              X              .....",
+".....               X               ....",
+".....            XXXXXXX            ....",
+"......              X              .....",
+".......             X             ......",
+"........            X            .......",
 "..........                     .........",
 "...........                   ..........",
 "............                 ...........",
-".............   .........   ............",
-".............. .         . .............",
+".............   XXXXXXXXX   ............",
+".............. X         X .............",
 "..............             .............",
 ".............               ............",
-"............. ............. ............",
+"............. XXXXXXXXXXXXX ............",
 "............                 ...........",
 "............                 ...........",
 "...............           ..............",
diff --git a/pixmaps/adl45.xpm b/pixmaps/adl45.xpm
index 898b725..cfb2de6 100644
--- a/pixmaps/adl45.xpm
+++ b/pixmaps/adl45.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
@@ -20,28 +21,28 @@ static char *adl45[] = {
 ".............                   .............",
 "...........                       ...........",
 ".........                           .........",
-".......               .               .......",
-".....                 .                 .....",
-"....                  .                  ....",
-"....              .........              ....",
-"....                  .                  ....",
-".....                 .                 .....",
-".....                 .                 .....",
-"......                .                ......",
+".......               X               .......",
+".....                 X                 .....",
+"....                  X                  ....",
+"....              XXXXXXXXX              ....",
+"....                  X                  ....",
+".....                 X                 .....",
+".....                 X                 .....",
+"......                X                ......",
 "........                             ........",
 "..........                         ..........",
 "............                     ............",
 "..............                 ..............",
-".............. ............... ..............",
+".............. XXXXXXXXXXXXXXX ..............",
 "...............               ...............",
 "...............               ...............",
 "..............                 ..............",
-"..............  .............  ..............",
-".............. .             . ..............",
+"..............  XXXXXXXXXXXXX  ..............",
+".............. X             X ..............",
 ".............                   .............",
 ".............                   .............",
 "................             ................",
-".................... ... ....................",
+".................... XXX ....................",
 "..................         ..................",
 ".......                               .......",
 "....                  .                  ....",
diff --git a/pixmaps/adl49.xpm b/pixmaps/adl49.xpm
index c40f67d..586cbf4 100644
--- a/pixmaps/adl49.xpm
+++ b/pixmaps/adl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -21,29 +22,29 @@ static char *adl49[] = {
 "..............                     ..............",
 "............                         ............",
 "..........                             ..........",
-"........                .                ........",
-"......                  .                  ......",
-".....                   .                   .....",
-"....                    .                    ....",
-".....               .........               .....",
-"......                  .                  ......",
-".......                 .                 .......",
-".........               .               .........",
-"...........             .             ...........",
+"........                X                ........",
+"......                  X                  ......",
+".....                   X                   .....",
+"....                    X                    ....",
+".....               XXXXXXXXX               .....",
+"......                  X                  ......",
+".......                 X                 .......",
+".........               X               .........",
+"...........             X             ...........",
 "............                         ............",
 ".............                       .............",
 "..............                     ..............",
 "...............                   ...............",
-"................   ...........   ................",
-"................ ..           .. ................",
+"................   XXXXXXXXXXX   ................",
+"................ XX           XX ................",
 "................                 ................",
 "................                 ................",
 "................                 ................",
-"...............  ...............  ...............",
+"...............  XXXXXXXXXXXXXXX  ...............",
 "...............                   ...............",
 "..............                     ..............",
 "..............                     ..............",
-"..................     ...     ..................",
+"..................     XXX     ..................",
 "......................     ......................",
 "....................         ....................",
 "........                                 ........",
diff --git a/pixmaps/adl54.xpm b/pixmaps/adl54.xpm
index 8a0d3da..48dc635 100644
--- a/pixmaps/adl54.xpm
+++ b/pixmaps/adl54.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "......................................................",
@@ -22,32 +23,32 @@ static char *adl54[] = {
 "..............                          ..............",
 "...........                                ...........",
 ".........                                    .........",
-"........                  ..                  ........",
-".......                   ..                   .......",
-"......                    ..                    ......",
-".....                     ..                     .....",
-".....                 ..........                 .....",
-".....                 ..........                 .....",
-"......                    ..                    ......",
-"......                    ..                    ......",
-".......                   ..                   .......",
-".........                 ..                 .........",
+"........                  XX                  ........",
+".......                   XX                   .......",
+"......                    XX                    ......",
+".....                     XX                     .....",
+".....                 XXXXXXXXXX                 .....",
+".....                 XXXXXXXXXX                 .....",
+"......                    XX                    ......",
+"......                    XX                    ......",
+".......                   XX                   .......",
+".........                 XX                 .........",
 "...........                                ...........",
 ".............                            .............",
 "...............                        ...............",
-"................     ............     ................",
-".................   ..............   .................",
-"..................  .            .  ..................",
+"................     XXXXXXXXXXXX     ................",
+".................   XXXXXXXXXXXXXX   .................",
+"..................  X            X  ..................",
 "..................                  ..................",
 ".................                    .................",
-".................   ..............   .................",
-"................  .................   ................",
-"................  ..              ..  ................",
+".................   XXXXXXXXXXXXXX   .................",
+"................  XXXXXXXXXXXXXXXXX   ................",
+"................  XX              XX  ................",
 "................                      ................",
 "...............                        ...............",
 "................                      ................",
-"....................    ......    ....................",
-"......................  ......  ......................",
+"....................    XXXXXX    ....................",
+"......................  XXXXXX  ......................",
 ".......                                        .......",
 ".....                                            .....",
 "...                                                ...",
diff --git a/pixmaps/adl58.xpm b/pixmaps/adl58.xpm
index 83c92d7..ad870be 100644
--- a/pixmaps/adl58.xpm
+++ b/pixmaps/adl58.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "..........................................................",
@@ -23,33 +24,33 @@ static char *adl58[] = {
 "...............                            ...............",
 ".............                                .............",
 "...........                                    ...........",
-".........                   ..                   .........",
-".......                     ..                     .......",
-"......                      ..                      ......",
-".....                       ..                       .....",
-".....                   ..........                   .....",
-".....                   ..........                   .....",
-"......                      ..                      ......",
-".......                     ..                     .......",
-"........                    ..                    ........",
-"..........                  ..                  ..........",
-"............                ..                ............",
+".........                   XX                   .........",
+".......                     XX                     .......",
+"......                      XX                      ......",
+".....                       XX                       .....",
+".....                   XXXXXXXXXX                   .....",
+".....                   XXXXXXXXXX                   .....",
+"......                      XX                      ......",
+".......                     XX                     .......",
+"........                    XX                    ........",
+"..........                  XX                  ..........",
+"............                XX                ............",
 "..............                              ..............",
 "................                          ................",
 ".................                        .................",
 "..................                      ..................",
-"...................  ................  ...................",
-"...................  ................  ...................",
+"...................  XXXXXXXXXXXXXXXX  ...................",
+"...................  XXXXXXXXXXXXXXXX  ...................",
 "...................                    ...................",
 "..................                      ..................",
 "..................                      ..................",
-"..................  ..................  ..................",
-".................   ..................   .................",
+"..................  XXXXXXXXXXXXXXXXXX  ..................",
+".................   XXXXXXXXXXXXXXXXXX   .................",
 ".................                        .................",
 ".................                        .................",
 ".................                        .................",
 "......................              ......................",
-"..........................  ..  ..........................",
+"..........................  XX  ..........................",
 "........................          ........................",
 "........                                          ........",
 "......                                              ......",
diff --git a/pixmaps/adl64.xpm b/pixmaps/adl64.xpm
index 2724965..87d889f 100644
--- a/pixmaps/adl64.xpm
+++ b/pixmaps/adl64.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
@@ -26,36 +27,36 @@ static char *adl64[] = {
 ".................                              .................",
 "..............                                    ..............",
 "............                                        ............",
-"..........                     ..                     ..........",
-"........                       ..                       ........",
-".......                        ..                        .......",
-"......                         ..                         ......",
-"......                    ............                    ......",
-"......                    ............                    ......",
-"......                         ..                         ......",
-".......                        ..                        .......",
-".........                      ..                      .........",
-"..........                     ..                     ..........",
+"..........                     XX                     ..........",
+"........                       XX                       ........",
+".......                        XX                        .......",
+"......                         XX                         ......",
+"......                    XXXXXXXXXXXX                    ......",
+"......                    XXXXXXXXXXXX                    ......",
+"......                         XX                         ......",
+".......                        XX                        .......",
+".........                      XX                      .........",
+"..........                     XX                     ..........",
 "............                                        ............",
 "..............                                     .............",
 "...............                                  ...............",
 ".................                              .................",
 "...................                          ...................",
-"....................     ..............     ....................",
-".....................  ................... .....................",
-".....................  ..              ... .....................",
+"....................     XXXXXXXXXXXXXX     ....................",
+".....................  XXXXXXXXXXXXXXXXXXX .....................",
+".....................  XX              XXX .....................",
 ".....................                      .....................",
 ".....................                      .....................",
 "....................                        ....................",
-"....................   ..................   ....................",
-"....................  ....................  ....................",
-"...................  ..                  ..  ...................",
+"....................   XXXXXXXXXXXXXXXXXX   ....................",
+"....................  XXXXXXXXXXXXXXXXXXXX  ....................",
+"...................  XX                  XX  ...................",
 "...................                          ...................",
 "...................                          ...................",
 "....................                        ....................",
 ".........................              .........................",
-"............................  ....  ............................",
-"..........................    ....    ..........................",
+"............................  XXXX  ............................",
+"..........................    XXXX    ..........................",
 ".........                                              .........",
 ".......                                                  .......",
 ".....                                                      .....",
diff --git a/pixmaps/adl72.xpm b/pixmaps/adl72.xpm
index ec46e92..9ed64c3 100644
--- a/pixmaps/adl72.xpm
+++ b/pixmaps/adl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *adl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -28,35 +29,35 @@ static char *adl72[] = {
 "..............                                            ..............",
 ".............                                              .............",
 "...........                                                  ...........",
-".........                          ..                          .........",
-"........                           ..                           ........",
-"......                             ..                             ......",
-"......                             ..                             ......",
-".....                              ..                              .....",
-".....                              ..                              .....",
-".....                        ..............                        .....",
-".......                      ..............                       ......",
-".......                            ..                            .......",
-".........                          ..                          .........",
-"............                       ..                        ...........",
-"..............                     ..                      .............",
-"...............                    ..                    ...............",
+".........                          XX                          .........",
+"........                           XX                           ........",
+"......                             XX                             ......",
+"......                             XX                             ......",
+".....                              XX                              .....",
+".....                              XX                              .....",
+".....                        XXXXXXXXXXXXXX                        .....",
+".......                      XXXXXXXXXXXXXX                       ......",
+".......                            XX                            .......",
+".........                          XX                          .........",
+"............                       XX                        ...........",
+"..............                     XX                      .............",
+"...............                    XX                    ...............",
 "................                                        ................",
 ".................                                      .................",
 "..................                                    ..................",
 "...................                                  ...................",
 "....................                                ....................",
 ".....................                              .....................",
-"......................      ................      ......................",
-".......................   .....................  .......................",
-"........................  ..                ... ........................",
+"......................      XXXXXXXXXXXXXXXX      ......................",
+".......................   XXXXXXXXXXXXXXXXXXXXX  .......................",
+"........................  XX                XXX ........................",
 ".......................                          .......................",
 ".......................                          .......................",
 ".......................                          .......................",
 "......................                            ......................",
-"......................     ..................     ......................",
-".....................  ..........................  .....................",
-".....................  ....                  ....  .....................",
+"......................     XXXXXXXXXXXXXXXXXX     ......................",
+".....................  XXXXXXXXXXXXXXXXXXXXXXXXXX  .....................",
+".....................  XXXX                  XXXX  .....................",
 ".....................                              .....................",
 "....................                                ....................",
 "....................                                ....................",
diff --git a/pixmaps/asdd33.xpm b/pixmaps/asdd33.xpm
index 0dd075a..ff7cf20 100644
--- a/pixmaps/asdd33.xpm
+++ b/pixmaps/asdd33.xpm
@@ -1,37 +1,38 @@
 /* XPM */
 static char *asdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
 ".................................",
 "...      ...............      ...",
 "...       .............       ...",
-"...        ...........     .  ...",
-"...   .     .........     .   ...",
-"...    .     .......     .    ...",
-"...     .     .....     .     ...",
-"....     .     ...     .     ....",
-".....     .     .     .     .....",
-"......     .     .   .     ......",
-".......     .     .       .......",
-"........     .     .     ........",
-".........     .     .   .........",
-"..........     .     . ..........",
-"...........     .     ...........",
-".......... .     .     ..........",
-"...   ...   .     .     ...   ...",
-"..     .     .     .     .     ..",
-"..      .   . .     .   .      ..",
-"...      . .   .       .      ...",
-"....      .     .     .      ....",
-"......     .   ...   .     ......",
-"..... .     . ..... .     . .....",
-"....   .     .......     .   ....",
-"...     .     .....     .     ...",
+"...        ...........     X  ...",
+"...   X     .........     X   ...",
+"...    X     .......     X    ...",
+"...     X     .....     X     ...",
+"....     X     ...     X     ....",
+".....     X     .     X     .....",
+"......     X     X   X     ......",
+".......     X     X       .......",
+"........     X     X     ........",
+".........     X     X   .........",
+"..........     X     X ..........",
+"...........     X     ...........",
+".......... X     X     ..........",
+"...   ...   X     X     ...   ...",
+"..     .     X     X     .     ..",
+"..      X   X X     X   X      ..",
+"...      X X   X       X      ...",
+"....      X     .     X      ....",
+"......     X   ...   X     ......",
+"..... X     X ..... X     X .....",
+"....   X     .......     X   ....",
+"...     X     .....     X     ...",
 "..       .     ...     .       ..",
 ".       ..     ...     ..       .",
 ".      ....    ...    ....      .",
diff --git a/pixmaps/asdd45.xpm b/pixmaps/asdd45.xpm
deleted file mode 100644
index a7052b5..0000000
--- a/pixmaps/asdd45.xpm
+++ /dev/null
@@ -1,53 +0,0 @@
-/* XPM */
-static char *asdd45[] = {
-/* columns rows colors chars-per-pixel */
-"45 45 2 1",
-"  c black s dark_piece",
-". c green s dark_square",
-/* pixels */
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-"......        .................        ......",
-"......         ...............         ......",
-"......          .............          ......",
-"......           ...........           ......",
-"......    .       .........       .    ......",
-"......     .       .......       .     ......",
-"......      .       .....       .      ......",
-"......       .       ...       .       ......",
-".......       .       .       .       .......",
-"........       .       .     .       ........",
-".........       .       .   .       .........",
-"..........       .       . .       ..........",
-"...........       .       .       ...........",
-"............       .       .     ............",
-".............       .       .   .............",
-"..............       .       . ..............",
-"...............       .       ...............",
-".............. .       .       ..............",
-".............   .       .       .............",
-".....  .....     .       .       .....  .....",
-"....    ...       .       .       ...    ....",
-"...      .       . .       .       .      ...",
-"...       .     .   .       .     .       ...",
-"....       .   .     .       .   .       ....",
-".....       .         .         .       .....",
-".......      .       ...       .      .......",
-"........      .     .....     .      ........",
-"....... .      .   .......   .      . .......",
-"......   .      . ......... .      .   ......",
-".....     .      ...........      .     .....",
-"....       .      .........      .       ....",
-"...         .      .......      .         ...",
-"..         ...      .....      ...         ..",
-"..        ....      .....      ....        ..",
-"..       ......    .......    ......       ..",
-"...     ........  .........  ........     ...",
-"....   ...............................   ....",
-".............................................",
-".............................................",
-"............................................."
-};
diff --git a/pixmaps/asdd49.xpm b/pixmaps/asdd49.xpm
index 153cba9..1232ae6 100644
--- a/pixmaps/asdd49.xpm
+++ b/pixmaps/asdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *asdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -14,35 +15,35 @@ static char *asdd49[] = {
 ".......         .................         .......",
 ".......          ...............          .......",
 ".......           .............           .......",
-".......            ...........       .    .......",
-".......     .       .........       .     .......",
-".......      .       .......       .      .......",
-".......       .       .....       .       .......",
-"........       .       ...       .       ........",
-".........       .       .       .       .........",
-"..........       .       .     .       ..........",
-"...........       .       .   .       ...........",
-"............       .       . .       ............",
-".............       .       .       .............",
-"..............       .       .     ..............",
-"...............       .       .   ...............",
-"................       .       . ................",
-".................       .       .................",
-"................ .       .       ................",
-"...............   .       .       ...............",
-"..............     .       .       .....  .......",
-"......  .....       .       .       ...    ......",
-".....    ...       . .       .       .      .....",
-"....      .       .   .       .     .       .....",
-"....       .     .     .       .   .       ......",
-".....       .   .       .         .       .......",
-"......       .         ...       .      .........",
-"........      .       .....     .      ..........",
-".........      .     .......   .      . .........",
-"........ .      .   ......... .      .   ........",
-".......   .      . ...........      .     .......",
-"......     .      ...........      .       ......",
-".....       .      .........      .         .....",
+".......            ...........       X    .......",
+".......     X       .........       X     .......",
+".......      X       .......       X      .......",
+".......       X       .....       X       .......",
+"........       X       ...       X       ........",
+".........       X       .       X       .........",
+"..........       X       X     X       ..........",
+"...........       X       X   X       ...........",
+"............       X       X X       ............",
+".............       X       X       .............",
+"..............       X       X     ..............",
+"...............       X       X   ...............",
+"................       X       X ................",
+".................       X       .................",
+"................ X       X       ................",
+"...............   X       X       ...............",
+"..............     X       X       .....  .......",
+"......  .....       X       X       ...    ......",
+".....    ...       X X       X       .      .....",
+"....      .       X   X       X     X       .....",
+"....       X     X     X       X   X       ......",
+".....       X   X       .         X       .......",
+"......       X         ...       X      .........",
+"........      X       .....     X      ..........",
+".........      X     .......   X      X .........",
+"........ X      X   ......... X      X   ........",
+".......   X      X ...........      X     .......",
+"......     X      ...........      X       ......",
+".....       X      .........      .         .....",
 "....         .      .......      ...         ....",
 "...         ...      ......      ....        ....",
 "...        ....      .......    ......       ....",
diff --git a/pixmaps/asdd72.xpm b/pixmaps/asdd72.xpm
index 313020b..6283f88 100644
--- a/pixmaps/asdd72.xpm
+++ b/pixmaps/asdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *asdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -18,51 +19,51 @@ static char *asdd72[] = {
 "........                ........................               .........",
 "........                 ......................                .........",
 "........                  ....................                 .........",
-"........      .            ..................                  .........",
-"........      ..            ................            .      .........",
-"........       ..            ..............            ..      .........",
-"........        ..            ............            ..       .........",
-"........         ..            ..........            ..        .........",
-"........          ..            ........            ..         .........",
-"........           ..            ......            ..          .........",
-"........            ..            ....            ..           .........",
-".........            ..            ..            ..            .........",
-"..........            ..                        ..            ..........",
-"...........            ..            ..        ..            ...........",
-"............            ..            ..      ..            ............",
-".............            ..            ..    ..            .............",
-"..............            ..            ..  ..            ..............",
-"...............            ..            ..              ...............",
-"................            ..            ..            ................",
-".................            ..            ..          .................",
-"..................            ..            ..        ..................",
-"...................            ..            ..      ...................",
-"....................            ..            ..    ....................",
-".....................            ..            ..  .....................",
-"......................            ..              ......................",
-".......................            ..            .......................",
-"......................              ..            ......................",
-"........   ..........  ..            ..            ..........   ........",
-".......     ........    ..            ..            ........     .......",
-"......       ......      ..            ..            ......       ......",
-".....         ....        ..            ..            ....         .....",
-"....           ..          ..            ..            ..           ....",
-"....            ..          ..            ..          ..            ....",
-"....             ..          ..            ..        ..             ....",
-"....              ..      .   ..            ..      ..              ....",
-".....              ..    ..    ..            ..    ..              .....",
-"......              ..   .      ..            .   ..              ......",
-".......              ..          .               ..              .......",
+"........      X            ..................                  .........",
+"........      XX            ................            X      .........",
+"........       XX            ..............            XX      .........",
+"........        XX            ............            XX       .........",
+"........         XX            ..........            XX        .........",
+"........          XX            ........            XX         .........",
+"........           XX            ......            XX          .........",
+"........            XX            ....            XX           .........",
+".........            XX            ..            XX            .........",
+"..........            XX                        XX            ..........",
+"...........            XX            XX        XX            ...........",
+"............            XX            XX      XX            ............",
+".............            XX            XX    XX            .............",
+"..............            XX            XX  XX            ..............",
+"...............            XX            XX              ...............",
+"................            XX            XX            ................",
+".................            XX            XX          .................",
+"..................            XX            XX        ..................",
+"...................            XX            XX      ...................",
+"....................            XX            XX    ....................",
+".....................            XX            XX  .....................",
+"......................            XX              ......................",
+".......................            XX            .......................",
+"......................              XX            ......................",
+"........   ..........  XX            XX            ..........   ........",
+".......     ........    XX            XX            ........     .......",
+"......       ......      XX            XX            ......       ......",
+".....         ....        XX            XX            ....         .....",
+"....           ..          XX            XX            ..           ....",
+"....            ..          XX            XX          ..            ....",
+"....             ..          XX            XX        ..             ....",
+"....              ..      X   XX            XX      ..              ....",
+".....              ..    XX    XX            XX    ..              .....",
+"......              ..   X      XX            X   ..              ......",
+".......              ..          X               ..              .......",
 "........              ..                        ..              ........",
 ".........              ..          ..          ..              .........",
 "............            ..        ....        ..            ............",
 ".............            ..      ......      ..            .............",
-"............ .            ..    ........    ..            . ............",
-"...........   .            ..  ..........  ..            .   ...........",
-"..........     .            ................            .     ..........",
-".........       .            ..............            .       .........",
-"........         .            ............            .         ........",
-".......           .            ..........            .           .......",
+"............ X            ..    ........    ..            X ............",
+"...........   X            ..  ..........  ..            X   ...........",
+"..........     X            ................            X     ..........",
+".........       X            ..............            X       .........",
+"........         X            ............            X         ........",
+".......           X            ..........            X           .......",
 "......             .            ........            .             ......",
 ".....              ..            ......            ..              .....",
 "....              ....            ....            ....              ....",
diff --git a/pixmaps/asdl33.xpm b/pixmaps/asdl33.xpm
index 898af2b..5db3bbf 100644
--- a/pixmaps/asdl33.xpm
+++ b/pixmaps/asdl33.xpm
@@ -1,37 +1,38 @@
 /* XPM */
 static char *asdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
 ".................................",
 "...      ...............      ...",
 "...       .............       ...",
-"...        ...........     .  ...",
-"...   .     .........     .   ...",
-"...    .     .......     .    ...",
-"...     .     .....     .     ...",
-"....     .     ...     .     ....",
-".....     .     .     .     .....",
-"......     .     .   .     ......",
-".......     .     .       .......",
-"........     .     .     ........",
-".........     .     .   .........",
-"..........     .     . ..........",
-"...........     .     ...........",
-".......... .     .     ..........",
-"...   ...   .     .     ...   ...",
-"..     .     .     .     .     ..",
-"..      .   . .     .   .      ..",
-"...      . .   .       .      ...",
-"....      .     .     .      ....",
-"......     .   ...   .     ......",
-"..... .     . ..... .     . .....",
-"....   .     .......     .   ....",
-"...     .     .....     .     ...",
+"...        ...........     X  ...",
+"...   X     .........     X   ...",
+"...    X     .......     X    ...",
+"...     X     .....     X     ...",
+"....     X     ...     X     ....",
+".....     X     .     X     .....",
+"......     X     X   X     ......",
+".......     X     X       .......",
+"........     X     X     ........",
+".........     X     X   .........",
+"..........     X     X ..........",
+"...........     X     ...........",
+".......... X     X     ..........",
+"...   ...   X     X     ...   ...",
+"..     .     X     X     .     ..",
+"..      X   X X     X   X      ..",
+"...      X X   X       X      ...",
+"....      X     .     X      ....",
+"......     X   ...   X     ......",
+"..... X     X ..... X     X .....",
+"....   X     .......     X   ....",
+"...     X     .....     X     ...",
 "..       .     ...     .       ..",
 ".       ..     ...     ..       .",
 ".      ....    ...    ....      .",
diff --git a/pixmaps/asdl45.xpm b/pixmaps/asdl45.xpm
deleted file mode 100644
index fc81752..0000000
--- a/pixmaps/asdl45.xpm
+++ /dev/null
@@ -1,53 +0,0 @@
-/* XPM */
-static char *asdl45[] = {
-/* columns rows colors chars-per-pixel */
-"45 45 2 1",
-"  c black s dark_piece",
-". c gray s light_square",
-/* pixels */
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-"......        .................        ......",
-"......         ...............         ......",
-"......          .............          ......",
-"......           ...........           ......",
-"......    .       .........       .    ......",
-"......     .       .......       .     ......",
-"......      .       .....       .      ......",
-"......       .       ...       .       ......",
-".......       .       .       .       .......",
-"........       .       .     .       ........",
-".........       .       .   .       .........",
-"..........       .       . .       ..........",
-"...........       .       .       ...........",
-"............       .       .     ............",
-".............       .       .   .............",
-"..............       .       . ..............",
-"...............       .       ...............",
-".............. .       .       ..............",
-".............   .       .       .............",
-".....  .....     .       .       .....  .....",
-"....    ...       .       .       ...    ....",
-"...      .       . .       .       .      ...",
-"...       .     .   .       .     .       ...",
-"....       .   .     .       .   .       ....",
-".....       .         .         .       .....",
-".......      .       ...       .      .......",
-"........      .     .....     .      ........",
-"....... .      .   .......   .      . .......",
-"......   .      . ......... .      .   ......",
-".....     .      ...........      .     .....",
-"....       .      .........      .       ....",
-"...         .      .......      .         ...",
-"..         ...      .....      ...         ..",
-"..        ....      .....      ....        ..",
-"..       ......    .......    ......       ..",
-"...     ........  .........  ........     ...",
-"....   ...............................   ....",
-".............................................",
-".............................................",
-"............................................."
-};
diff --git a/pixmaps/asdl49.xpm b/pixmaps/asdl49.xpm
index a61f0bb..27dbad5 100644
--- a/pixmaps/asdl49.xpm
+++ b/pixmaps/asdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *asdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -14,35 +15,35 @@ static char *asdl49[] = {
 ".......         .................         .......",
 ".......          ...............          .......",
 ".......           .............           .......",
-".......            ...........       .    .......",
-".......     .       .........       .     .......",
-".......      .       .......       .      .......",
-".......       .       .....       .       .......",
-"........       .       ...       .       ........",
-".........       .       .       .       .........",
-"..........       .       .     .       ..........",
-"...........       .       .   .       ...........",
-"............       .       . .       ............",
-".............       .       .       .............",
-"..............       .       .     ..............",
-"...............       .       .   ...............",
-"................       .       . ................",
-".................       .       .................",
-"................ .       .       ................",
-"...............   .       .       ...............",
-"..............     .       .       .....  .......",
-"......  .....       .       .       ...    ......",
-".....    ...       . .       .       .      .....",
-"....      .       .   .       .     .       .....",
-"....       .     .     .       .   .       ......",
-".....       .   .       .         .       .......",
-"......       .         ...       .      .........",
-"........      .       .....     .      ..........",
-".........      .     .......   .      . .........",
-"........ .      .   ......... .      .   ........",
-".......   .      . ...........      .     .......",
-"......     .      ...........      .       ......",
-".....       .      .........      .         .....",
+".......            ...........       X    .......",
+".......     X       .........       X     .......",
+".......      X       .......       X      .......",
+".......       X       .....       X       .......",
+"........       X       ...       X       ........",
+".........       X       .       X       .........",
+"..........       X       X     X       ..........",
+"...........       X       X   X       ...........",
+"............       X       X X       ............",
+".............       X       X       .............",
+"..............       X       X     ..............",
+"...............       X       X   ...............",
+"................       X       X ................",
+".................       X       .................",
+"................ X       X       ................",
+"...............   X       X       ...............",
+"..............     X       X       .....  .......",
+"......  .....       X       X       ...    ......",
+".....    ...       X X       X       .      .....",
+"....      .       X   X       X     X       .....",
+"....       X     X     X       X   X       ......",
+".....       X   X       .         X       .......",
+"......       X         ...       X      .........",
+"........      X       .....     X      ..........",
+".........      X     .......   X      X .........",
+"........ X      X   ......... X      X   ........",
+".......   X      X ...........      X     .......",
+"......     X      ...........      X       ......",
+".....       X      .........      .         .....",
 "....         .      .......      ...         ....",
 "...         ...      ......      ....        ....",
 "...        ....      .......    ......       ....",
diff --git a/pixmaps/asdl72.xpm b/pixmaps/asdl72.xpm
index 7f987f2..656c0d9 100644
--- a/pixmaps/asdl72.xpm
+++ b/pixmaps/asdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *asdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -18,51 +19,51 @@ static char *asdl72[] = {
 "........                ........................               .........",
 "........                 ......................                .........",
 "........                  ....................                 .........",
-"........      .            ..................                  .........",
-"........      ..            ................            .      .........",
-"........       ..            ..............            ..      .........",
-"........        ..            ............            ..       .........",
-"........         ..            ..........            ..        .........",
-"........          ..            ........            ..         .........",
-"........           ..            ......            ..          .........",
-"........            ..            ....            ..           .........",
-".........            ..            ..            ..            .........",
-"..........            ..                        ..            ..........",
-"...........            ..            ..        ..            ...........",
-"............            ..            ..      ..            ............",
-".............            ..            ..    ..            .............",
-"..............            ..            ..  ..            ..............",
-"...............            ..            ..              ...............",
-"................            ..            ..            ................",
-".................            ..            ..          .................",
-"..................            ..            ..        ..................",
-"...................            ..            ..      ...................",
-"....................            ..            ..    ....................",
-".....................            ..            ..  .....................",
-"......................            ..              ......................",
-".......................            ..            .......................",
-"......................              ..            ......................",
-"........   ..........  ..            ..            ..........   ........",
-".......     ........    ..            ..            ........     .......",
-"......       ......      ..            ..            ......       ......",
-".....         ....        ..            ..            ....         .....",
-"....           ..          ..            ..            ..           ....",
-"....            ..          ..            ..          ..            ....",
-"....             ..          ..            ..        ..             ....",
-"....              ..      .   ..            ..      ..              ....",
-".....              ..    ..    ..            ..    ..              .....",
-"......              ..   .      ..            .   ..              ......",
-".......              ..          .               ..              .......",
+"........      X            ..................                  .........",
+"........      XX            ................            X      .........",
+"........       XX            ..............            XX      .........",
+"........        XX            ............            XX       .........",
+"........         XX            ..........            XX        .........",
+"........          XX            ........            XX         .........",
+"........           XX            ......            XX          .........",
+"........            XX            ....            XX           .........",
+".........            XX            ..            XX            .........",
+"..........            XX                        XX            ..........",
+"...........            XX            XX        XX            ...........",
+"............            XX            XX      XX            ............",
+".............            XX            XX    XX            .............",
+"..............            XX            XX  XX            ..............",
+"...............            XX            XX              ...............",
+"................            XX            XX            ................",
+".................            XX            XX          .................",
+"..................            XX            XX        ..................",
+"...................            XX            XX      ...................",
+"....................            XX            XX    ....................",
+".....................            XX            XX  .....................",
+"......................            XX              ......................",
+".......................            XX            .......................",
+"......................              XX            ......................",
+"........   ..........  XX            XX            ..........   ........",
+".......     ........    XX            XX            ........     .......",
+"......       ......      XX            XX            ......       ......",
+".....         ....        XX            XX            ....         .....",
+"....           ..          XX            XX            ..           ....",
+"....            ..          XX            XX          ..            ....",
+"....             ..          XX            XX        ..             ....",
+"....              ..      X   XX            XX      ..              ....",
+".....              ..    XX    XX            XX    ..              .....",
+"......              ..   X      XX            X   ..              ......",
+".......              ..          X               ..              .......",
 "........              ..                        ..              ........",
 ".........              ..          ..          ..              .........",
 "............            ..        ....        ..            ............",
 ".............            ..      ......      ..            .............",
-"............ .            ..    ........    ..            . ............",
-"...........   .            ..  ..........  ..            .   ...........",
-"..........     .            ................            .     ..........",
-".........       .            ..............            .       .........",
-"........         .            ............            .         ........",
-".......           .            ..........            .           .......",
+"............ X            ..    ........    ..            X ............",
+"...........   X            ..  ..........  ..            X   ...........",
+"..........     X            ................            X     ..........",
+".........       X            ..............            X       .........",
+"........         X            ............            X         ........",
+".......           X            ..........            X           .......",
 "......             .            ........            .             ......",
 ".....              ..            ......            ..              .....",
 "....              ....            ....            ....              ....",
diff --git a/pixmaps/asld45.xpm b/pixmaps/asld45.xpm
deleted file mode 100644
index 3b019cb..0000000
--- a/pixmaps/asld45.xpm
+++ /dev/null
@@ -1,54 +0,0 @@
-/* XPM */
-static char *asld45[] = {
-/* columns rows colors chars-per-pixel */
-"45 45 3 1",
-"  c black s dark_piece",
-". c green s dark_square",
-"X c white s light_piece",
-/* pixels */
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-"......        .................        ......",
-"...... XXXXXXX ............... XXXXXXX ......",
-"...... XXXXXXXX ............. XXXXXXXX ......",
-"...... XXXXXXXXX ........... XXXXXXXXX ......",
-"...... XXXXXXXXXX ......... XXXXXX XXX ......",
-"...... XXXX XXXXXX ....... XXXXXX XXXX ......",
-"...... XXXXX XXXXXX ..... XXXXXX XXXXX ......",
-"...... XXXXXX XXXXXX ... XXXXXX XXXXXX ......",
-"....... XXXXXX XXXXXX . XXXXXX XXXXXX .......",
-"........ XXXXXX XXXXXX XXXXXX XXXXXX ........",
-"......... XXXXXX XXXXXX XXXX XXXXXX .........",
-".......... XXXXXX XXXXXX XX XXXXXX ..........",
-"........... XXXXXX XXXXXX XXXXXXX ...........",
-"............ XXXXXX XXXXXX XXXXX ............",
-"............. XXXXXX XXXXXX XXX .............",
-".............. XXXXXX XXXXXX X ..............",
-"............... XXXXXX XXXXXX ...............",
-".............. X XXXXXX XXXXXX ..............",
-"............. XXX XXXXXX XXXXXX .............",
-".....  ..... XXXXX XXXXXX XXXXXX .....  .....",
-".... XX ... XXXXXXX XXXXXX XXXXXX ... XX ....",
-"... XXXX . XXXXXX XX XXXXXX XXXXXX . XXXX ...",
-"... XXXXX XXXXXX XXXX XXXXXX XXXXXX XXXXX ...",
-".... XXXXX XXXX XXXXXX XXXXXX XXXX XXXXX ....",
-".....  XXXX XX XXXXXX . XXXXXX XX XXXX  .....",
-"....... XXXX XXXXXXX ... XXXXXXX XXXX .......",
-"........ XXXX XXXXX ..... XXXXX XXXX ........",
-"....... X XXXX XXX ....... XXX XXXX X .......",
-"...... XXX XXXX X ......... X XXXX XXX ......",
-"..... XXXXX XXXX ........... XXXX XXXXX .....",
-".... XXXXXXX XXXX ......... XXXX XXXXXXX ....",
-"... XXXXXXX . XXXX ....... XXXX . XXXXXXX ...",
-".. XXXXXXX ... XXXX ..... XXXX ... XXXXXXX ..",
-".. XXXXXX .... XXXX ..... XXXX .... XXXXXX ..",
-".. XXXXX ...... XX ....... XX ...... XXXXX ..",
-"... XXX ........  .........  ........ XXX ...",
-"....   ...............................   ....",
-".............................................",
-".............................................",
-"............................................."
-};
diff --git a/pixmaps/asll45.xpm b/pixmaps/asll45.xpm
deleted file mode 100644
index 85201b4..0000000
--- a/pixmaps/asll45.xpm
+++ /dev/null
@@ -1,54 +0,0 @@
-/* XPM */
-static char *asll45[] = {
-/* columns rows colors chars-per-pixel */
-"45 45 3 1",
-"  c black s dark_piece",
-". c gray s light_square",
-"X c white s light_piece",
-/* pixels */
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-".............................................",
-"......        .................        ......",
-"...... XXXXXXX ............... XXXXXXX ......",
-"...... XXXXXXXX ............. XXXXXXXX ......",
-"...... XXXXXXXXX ........... XXXXXXXXX ......",
-"...... XXXXXXXXXX ......... XXXXXX XXX ......",
-"...... XXXX XXXXXX ....... XXXXXX XXXX ......",
-"...... XXXXX XXXXXX ..... XXXXXX XXXXX ......",
-"...... XXXXXX XXXXXX ... XXXXXX XXXXXX ......",
-"....... XXXXXX XXXXXX . XXXXXX XXXXXX .......",
-"........ XXXXXX XXXXXX XXXXXX XXXXXX ........",
-"......... XXXXXX XXXXXX XXXX XXXXXX .........",
-".......... XXXXXX XXXXXX XX XXXXXX ..........",
-"........... XXXXXX XXXXXX XXXXXXX ...........",
-"............ XXXXXX XXXXXX XXXXX ............",
-"............. XXXXXX XXXXXX XXX .............",
-".............. XXXXXX XXXXXX X ..............",
-"............... XXXXXX XXXXXX ...............",
-".............. X XXXXXX XXXXXX ..............",
-"............. XXX XXXXXX XXXXXX .............",
-".....  ..... XXXXX XXXXXX XXXXXX .....  .....",
-".... XX ... XXXXXXX XXXXXX XXXXXX ... XX ....",
-"... XXXX . XXXXXX XX XXXXXX XXXXXX . XXXX ...",
-"... XXXXX XXXXXX XXXX XXXXXX XXXXXX XXXXX ...",
-".... XXXXX XXXX XXXXXX XXXXXX XXXX XXXXX ....",
-".....  XXXX XX XXXXXX . XXXXXX XX XXXX  .....",
-"....... XXXX XXXXXXX ... XXXXXXX XXXX .......",
-"........ XXXX XXXXX ..... XXXXX XXXX ........",
-"....... X XXXX XXX ....... XXX XXXX X .......",
-"...... XXX XXXX X ......... X XXXX XXX ......",
-"..... XXXXX XXXX ........... XXXX XXXXX .....",
-".... XXXXXXX XXXX ......... XXXX XXXXXXX ....",
-"... XXXXXXX . XXXX ....... XXXX . XXXXXXX ...",
-".. XXXXXXX ... XXXX ..... XXXX ... XXXXXXX ..",
-".. XXXXXX .... XXXX ..... XXXX .... XXXXXX ..",
-".. XXXXX ...... XX ....... XX ...... XXXXX ..",
-"... XXX ........  .........  ........ XXX ...",
-"....   ...............................   ....",
-".............................................",
-".............................................",
-"............................................."
-};
diff --git a/pixmaps/cdd33.xpm b/pixmaps/cdd33.xpm
index 3847077..739d1ce 100644
--- a/pixmaps/cdd33.xpm
+++ b/pixmaps/cdd33.xpm
@@ -1,40 +1,41 @@
 /* XPM */
 static char *cdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
 "...............  ................",
-".............. .. ...............",
-".............. .. ...............",
+".............. XX ...............",
+".............. XX ...............",
 "...............  ................",
 "..............    ...............",
 ".............      ..............",
 "....  ......        ......  .....",
-"... ..                    .. ....",
-"... ..        ....        .. ....",
-"....        ..    ..        .....",
-"......      .      .      .......",
-"......     .        .     .......",
-".......    .        .    ........",
-".......   .          .   ........",
-"........  .          .  .........",
-".......   .          .   ........",
-".......    .        .    ........",
-"......     .        .     .......",
-"......      .      .      .......",
-"....        ..    ..        .....",
-"... ..        ....        .. ....",
-"... ..                    .. ....",
+"... XX                    XX ....",
+"... XX        XXXX        XX ....",
+"....        XX    XX        .....",
+"......      X      X      .......",
+"......     X        X     .......",
+".......    X        X    ........",
+".......   X          X   ........",
+"........  X          X  .........",
+".......   X          X   ........",
+".......    X        X    ........",
+"......     X        X     .......",
+"......      X      X      .......",
+"....        XX    XX        .....",
+"... XX        XXXX        XX ....",
+"... XX                    XX ....",
 "....  ......        ......  .....",
 ".............      ..............",
 "..............    ...............",
 "...............  ................",
-".............. .. ...............",
-".............. .. ...............",
+".............. XX ...............",
+".............. XX ...............",
 "...............  ................",
 ".................................",
 "................................."
diff --git a/pixmaps/cdd37.xpm b/pixmaps/cdd37.xpm
index 61297c7..7231d54 100644
--- a/pixmaps/cdd37.xpm
+++ b/pixmaps/cdd37.xpm
@@ -1,45 +1,46 @@
 /* XPM */
 static char *cdd37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 ".................   .................",
-"................ ... ................",
-"................ ... ................",
-"................ ... ................",
+"................ XXX ................",
+"................ XXX ................",
+"................ XXX ................",
 ".................   .................",
 "................     ................",
 "...............       ...............",
 "...   .........       .........   ...",
-".. ... .......         ....... ... ..",
-".. ...                         ... ..",
-".. ...          .....          ... ..",
-"...           ..     ..           ...",
-"......       .         .       ......",
-".......     .           .     .......",
-".......     .           .     .......",
-"........   .             .   ........",
-"........   .             .   ........",
-".........  .             .  .........",
-"........   .             .   ........",
-"........   .             .   ........",
-".......     .           .     .......",
-".......     .           .     .......",
-"......       .         .       ......",
-"...           ..     ..           ...",
-".. ...          .....          ... ..",
-".. ...                         ... ..",
-".. ... .......         ....... ... ..",
+".. XXX .......         ....... XXX ..",
+".. XXX                         XXX ..",
+".. XXX          XXXXX          XXX ..",
+"...           XX     XX           ...",
+"......       X         X       ......",
+".......     X           X     .......",
+".......     X           X     .......",
+"........   X             X   ........",
+"........   X             X   ........",
+".........  X             X  .........",
+"........   X             X   ........",
+"........   X             X   ........",
+".......     X           X     .......",
+".......     X           X     .......",
+"......       X         X       ......",
+"...           XX     XX           ...",
+".. XXX          XXXXX          XXX ..",
+".. XXX                         XXX ..",
+".. XXX .......         ....... XXX ..",
 "...   .........       .........   ...",
 "...............       ...............",
 "................     ................",
 ".................   .................",
-"................ ... ................",
-"................ ... ................",
-"................ ... ................",
+"................ XXX ................",
+"................ XXX ................",
+"................ XXX ................",
 ".................   .................",
 "....................................."
 };
diff --git a/pixmaps/cdd40.xpm b/pixmaps/cdd40.xpm
index 1728fc0..670124e 100644
--- a/pixmaps/cdd40.xpm
+++ b/pixmaps/cdd40.xpm
@@ -1,47 +1,48 @@
 /* XPM */
 static char *cdd40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "...................   ..................",
-".................. ... .................",
-".................. ... .................",
-".................. ... .................",
+".................. XXX .................",
+".................. XXX .................",
+".................. XXX .................",
 "...................   ..................",
 "...................   ..................",
 "..................     .................",
 "..................     .................",
 ".....   .........       ........   .....",
-".... ...                        ... ....",
-".... ...                        ... ....",
-".... ...         ......         ... ....",
-".....           .      .           .....",
-"........       .        .        .......",
-".........     .          .      ........",
-".........    .            .     ........",
-"..........   .            .    .........",
-"...........  .            .   ..........",
-"...........  .            .  ...........",
-"..........   .            .  ...........",
-".........    .            .   ..........",
-"........      .          .     .........",
-"........       .        .      .........",
-".......         .      .        ........",
-".....            ......            .....",
-".... ...                        ... ....",
-".... ...                        ... ....",
-".... ... ........        ...... ... ....",
+".... XXX                        XXX ....",
+".... XXX                        XXX ....",
+".... XXX         XXXXXX         XXX ....",
+".....           X      X           .....",
+"........       X        X        .......",
+".........     X          X      ........",
+".........    X            X     ........",
+"..........   X            X    .........",
+"...........  X            X   ..........",
+"...........  X            X  ...........",
+"..........   X            X  ...........",
+".........    X            X   ..........",
+"........      X          X     .........",
+"........       X        X      .........",
+".......         X      X        ........",
+".....            XXXXXX            .....",
+".... XXX                        XXX ....",
+".... XXX                        XXX ....",
+".... XXX ........        ...... XXX ....",
 ".....   .........       ........   .....",
 "..................     .................",
 "..................     .................",
 "...................   ..................",
 "...................   ..................",
-".................. ... .................",
-".................. ... .................",
-".................. ... .................",
+".................. XXX .................",
+".................. XXX .................",
+".................. XXX .................",
 "...................   ..................",
 "........................................",
 "........................................"
diff --git a/pixmaps/cdd45.xpm b/pixmaps/cdd45.xpm
index 19399d5..2cf0bc1 100644
--- a/pixmaps/cdd45.xpm
+++ b/pixmaps/cdd45.xpm
@@ -1,52 +1,53 @@
 /* XPM */
 static char *cdd45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
 ".....................   .....................",
-".................... ... ....................",
-".................... ... ....................",
-".................... ... ....................",
+".................... XXX ....................",
+".................... XXX ....................",
+".................... XXX ....................",
 ".....................   .....................",
 "....................     ....................",
 "...................       ...................",
 "...................       ...................",
 "..................         ..................",
 "....   ...........         ...........   ....",
-"... ... .........           ......... ... ...",
-"... ...                               ... ...",
-"... ...             .....             ... ...",
-"....              ..     ..              ....",
-".......          .         .          .......",
-"........        .           .        ........",
-"........       .             .       ........",
-".........      .             .      .........",
-".........     .               .     .........",
-"..........    .               .    ..........",
-"...........   .               .   ...........",
-"..........    .               .    ..........",
-".........     .               .     .........",
-".........      .             .      .........",
-"........       .             .       ........",
-"........        .           .        ........",
-".......          .         .          .......",
-"....              ..     ..              ....",
-"... ...             .....             ... ...",
-"... ...                               ... ...",
-"... ... .........           ......... ... ...",
+"... XXX .........           ......... XXX ...",
+"... XXX                               XXX ...",
+"... XXX             XXXXX             XXX ...",
+"....              XX     XX              ....",
+".......          X         X          .......",
+"........        X           X        ........",
+"........       X             X       ........",
+".........      X             X      .........",
+".........     X               X     .........",
+"..........    X               X    ..........",
+"...........   X               X   ...........",
+"..........    X               X    ..........",
+".........     X               X     .........",
+".........      X             X      .........",
+"........       X             X       ........",
+"........        X           X        ........",
+".......          X         X          .......",
+"....              XX     XX              ....",
+"... XXX             XXXXX             XXX ...",
+"... XXX                               XXX ...",
+"... XXX .........           ......... XXX ...",
 "....   ...........         ...........   ....",
 "..................         ..................",
 "...................       ...................",
 "...................       ...................",
 "....................     ....................",
 ".....................   .....................",
-".................... ... ....................",
-".................... ... ....................",
-".................... ... ....................",
+".................... XXX ....................",
+".................... XXX ....................",
+".................... XXX ....................",
 ".....................   .....................",
 ".............................................",
 "............................................."
diff --git a/pixmaps/cdd49.xpm b/pixmaps/cdd49.xpm
index f988e1c..ea1ead2 100644
--- a/pixmaps/cdd49.xpm
+++ b/pixmaps/cdd49.xpm
@@ -1,16 +1,17 @@
 /* XPM */
 static char *cdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
 ".......................   .......................",
-"...................... ... ......................",
-"...................... ... ......................",
-"...................... ... ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
 ".......................   .......................",
 "......................     ......................",
 ".....................       .....................",
@@ -18,38 +19,38 @@ static char *cdd49[] = {
 "....................         ....................",
 "....................         ....................",
 "......   ..........           .........   .......",
-"..... ...                              ... ......",
-"..... ...                              ... ......",
-"..... ...             ....             ... ......",
-"......             ...    ...             .......",
-".........         .          .         ..........",
-"..........       .            .       ...........",
-"..........      .              .      ...........",
-"...........     .              .     ............",
-"...........     .              .    .............",
-"............   .                .   .............",
-"............   .                .  ..............",
-".............  .                .  ..............",
-".............  .                .   .............",
-"............    .              .    .............",
-"............    .              .     ............",
-"...........     .              .      ...........",
-"..........       .            .       ...........",
-"..........        .          .         ..........",
-".........          ...    ...          ..........",
-"......                ....                .......",
-"..... ...                              ... ......",
-"..... ...                              ... ......",
-"..... ... .........           ........ ... ......",
+"..... XXX                              XXX ......",
+"..... XXX                              XXX ......",
+"..... XXX             XXXX             XXX ......",
+"......             XXX    XXX             .......",
+".........         X          X         ..........",
+"..........       X            X       ...........",
+"..........      X              X      ...........",
+"...........     X              X     ............",
+"...........     X              X    .............",
+"............   X                X   .............",
+"............   X                X  ..............",
+".............  X                X  ..............",
+".............  X                X   .............",
+"............    X              X    .............",
+"............    X              X     ............",
+"...........     X              X      ...........",
+"..........       X            X       ...........",
+"..........        X          X         ..........",
+".........          XXX    XXX          ..........",
+"......                XXXX                .......",
+"..... XXX                              XXX ......",
+"..... XXX                              XXX ......",
+"..... XXX .........           ........ XXX ......",
 "......   ...........         ..........   .......",
 "....................         ....................",
 ".....................       .....................",
 ".....................       .....................",
 "......................     ......................",
 ".......................   .......................",
-"...................... ... ......................",
-"...................... ... ......................",
-"...................... ... ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
 ".......................   .......................",
 ".................................................",
 ".................................................",
diff --git a/pixmaps/cdd54.xpm b/pixmaps/cdd54.xpm
index 815bcef..3150a4c 100644
--- a/pixmaps/cdd54.xpm
+++ b/pixmaps/cdd54.xpm
@@ -1,17 +1,18 @@
 /* XPM */
 static char *cdd54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "..........................  ..........................",
 "........................      ........................",
-".......................   ..   .......................",
-".......................  ....  .......................",
-".......................  ....  .......................",
-".......................   ..   .......................",
+".......................   XX   .......................",
+".......................  XXXX  .......................",
+".......................  XXXX  .......................",
+".......................   XX   .......................",
 "........................      ........................",
 ".......................        .......................",
 "......................         .......................",
@@ -19,42 +20,42 @@ static char *cdd54[] = {
 ".....................           ......................",
 "......  .............            .............  ......",
 "....      ..........             ...........      ....",
-"...   ..   .........              .........   ..   ...",
-"...  ....                                    ....  ...",
-"...  ....               ......               ....  ...",
-"...   ..              ..........              ..   ...",
-"....                .....    .....                ....",
-"......             ...          ...          .  ......",
-".........         ...            ...        ..........",
-".........         ..              ..        ..........",
-"..........       ..                ..      ...........",
-"..........       ..                ..      ...........",
-"...........     ...                ..     ............",
-"...........     ..                  ..    ............",
-"............    ..                  ..   .............",
-".............   ..                  ..    ............",
-"............    ..                  ..    ............",
-"............    ...                ..      ...........",
-"...........      ..                ..       ..........",
-"...........      ..                ..       ..........",
-"..........        ..              ..         .........",
-"..........        ...            ...         .........",
-"......  .          ...          ...             ......",
-"....                .....    .....                ....",
-"...   ..              ..........              ..   ...",
-"...  ....                ....                ....  ...",
-"...  ....                                    ....  ...",
-"...   ..   .........              .........   ..   ...",
+"...   XX   .........              .........   XX   ...",
+"...  XXXX                                    XXXX  ...",
+"...  XXXX               XXXXXX               XXXX  ...",
+"...   XX              XXXXXXXXXX              XX   ...",
+"....                XXXXX    XXXXX                ....",
+"......             XXX          XXX          .  ......",
+".........         XXX            XXX        ..........",
+".........         XX              XX        ..........",
+"..........       XX                XX      ...........",
+"..........       XX                XX      ...........",
+"...........     XXX                XX     ............",
+"...........     XX                  XX    ............",
+"............    XX                  XX   .............",
+".............   XX                  XX    ............",
+"............    XX                  XX    ............",
+"............    XXX                XX      ...........",
+"...........      XX                XX       ..........",
+"...........      XX                XX       ..........",
+"..........        XX              XX         .........",
+"..........        XXX            XXX         .........",
+"......  .          XXX          XXX             ......",
+"....                XXXXX    XXXXX                ....",
+"...   XX              XXXXXXXXXX              XX   ...",
+"...  XXXX                XXXX                XXXX  ...",
+"...  XXXX                                    XXXX  ...",
+"...   XX   .........              .........   XX   ...",
 "....      ..........              ..........      ....",
 "......  .............            .............  ......",
 ".....................           ......................",
 "......................          ......................",
 "......................         .......................",
 ".......................       ........................",
-".......................   ..   .......................",
-".......................  ....  .......................",
-".......................  ....  .......................",
-".......................   ..   .......................",
+".......................   XX   .......................",
+".......................  XXXX  .......................",
+".......................  XXXX  .......................",
+".......................   XX   .......................",
 "........................      ........................",
 "..........................  ..........................",
 "......................................................",
diff --git a/pixmaps/cdd58.xpm b/pixmaps/cdd58.xpm
index f0c3e3a..90d0f1a 100644
--- a/pixmaps/cdd58.xpm
+++ b/pixmaps/cdd58.xpm
@@ -1,16 +1,17 @@
 /* XPM */
 static char *cdd58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "..........................     ...........................",
 ".........................       ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
 ".........................       ..........................",
 "..........................     ...........................",
 ".........................       ..........................",
@@ -20,35 +21,35 @@ static char *cdd58[] = {
 ".......................           ........................",
 "....     .............             .............     .....",
 "...       ............             ............       ....",
-"...  ...                                         ...  ....",
-"...  ...                                         ...  ....",
-"...  ...                  .....                  ...  ....",
-"...                    ...........                    ....",
-"....                 .....     .....                 .....",
-"........            ...           ...            .........",
-".........          ...             ...          ..........",
-".........         ...               ...         ..........",
-"..........        ..                 ..        ...........",
-"..........       ..                   ..       ...........",
-"...........      ..                   ..      ............",
-"............     ..                   ..     .............",
-"............    ..                     ..    .............",
-".............   ..                     ..   ..............",
-".............   ..                     ..   ..............",
-".............   ..                     ..   ..............",
-"............    ..                     ..    .............",
-"...........      ..                   ..      ............",
-"...........      ..                   ..      ............",
-"..........       ..                   ..       ...........",
-"..........        ..                 ..        ...........",
-".........         ...               ...         ..........",
-".........          ...             ...          ..........",
-"........            ...           ...            .........",
-"....                 .....     .....                 .....",
-"...                    ...........                    ....",
-"...  ...                  .....                  ...  ....",
-"...  ...                                         ...  ....",
-"...  ...                                         ...  ....",
+"...  XXX                                         XXX  ....",
+"...  XXX                                         XXX  ....",
+"...  XXX                  XXXXX                  XXX  ....",
+"...                    XXXXXXXXXXX                    ....",
+"....                 XXXXX     XXXXX                 .....",
+"........            XXX           XXX            .........",
+".........          XXX             XXX          ..........",
+".........         XXX               XXX         ..........",
+"..........        XX                 XX        ...........",
+"..........       XX                   XX       ...........",
+"...........      XX                   XX      ............",
+"............     XX                   XX     .............",
+"............    XX                     XX    .............",
+".............   XX                     XX   ..............",
+".............   XX                     XX   ..............",
+".............   XX                     XX   ..............",
+"............    XX                     XX    .............",
+"...........      XX                   XX      ............",
+"...........      XX                   XX      ............",
+"..........       XX                   XX       ...........",
+"..........        XX                 XX        ...........",
+".........         XXX               XXX         ..........",
+".........          XXX             XXX          ..........",
+"........            XXX           XXX            .........",
+"....                 XXXXX     XXXXX                 .....",
+"...                    XXXXXXXXXXX                    ....",
+"...  XXX                  XXXXX                  XXX  ....",
+"...  XXX                                         XXX  ....",
+"...  XXX                                         XXX  ....",
 "...       ............             ............       ....",
 "....     ..............           ..............     .....",
 ".......................           ........................",
@@ -57,9 +58,9 @@ static char *cdd58[] = {
 ".........................       ..........................",
 "..........................     ...........................",
 ".........................       ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
 ".........................       ..........................",
 "..........................     ...........................",
 ".........................................................."
diff --git a/pixmaps/cdd64.xpm b/pixmaps/cdd64.xpm
index a372823..3cec98b 100644
--- a/pixmaps/cdd64.xpm
+++ b/pixmaps/cdd64.xpm
@@ -1,19 +1,20 @@
 /* XPM */
 static char *cdd64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
 "................................................................",
 "...............................  ...............................",
 ".............................      .............................",
-"............................   ..   ............................",
-"............................  ....  ............................",
-"............................  ....  ............................",
-"............................   ..   ............................",
+"............................   XX   ............................",
+"............................  XXXX  ............................",
+"............................  XXXX  ............................",
+"............................   XX   ............................",
 ".............................      .............................",
 "..............................    ..............................",
 ".............................      .............................",
@@ -22,37 +23,37 @@ static char *cdd64[] = {
 "...........................          ...........................",
 ".......  ..................          ..................  .......",
 ".....      ...............            ...............      .....",
-"....   ..   .............              .............   ..   ....",
-"....  ....                                            ....  ....",
-"....  ....                                            ....  ....",
-"....   ..                     ....                     ..   ....",
-".....                     ............                     .....",
-"......                   .....    .....                   ......",
-".........              ....          ....              .........",
-"..........            ...              ...            ..........",
-"..........            ..                ..            ..........",
-"...........          ..                  ..          ...........",
-"............        ...                  ...        ............",
-"............        ..                    ..        ............",
-".............       ..                    ..       .............",
-".............       .                      .       .............",
-"..............     ..                      ..     ..............",
-"...............    ..                      ..    ...............",
-"...............    ..                      ..    ...............",
-"...............    ..                      ..    ...............",
-"..............      .                      .      ..............",
-"..............      ..                    ..      ..............",
-".............       ..                    ..       .............",
-"............        ...                  ...        ............",
-"............         ..                  ..         ............",
-"...........           ..                ..           ...........",
-"...........           ...              ...           ...........",
-".......  .             ....          ....             .  .......",
-".....                    .....    .....                    .....",
-"....   ..                 ............                 ..   ....",
-"....  ....                    ....                    ....  ....",
-"....  ....                                            ....  ....",
-"....   ..   ............                ............   ..   ....",
+"....   XX   .............              .............   XX   ....",
+"....  XXXX                                            XXXX  ....",
+"....  XXXX                                            XXXX  ....",
+"....   XX                     XXXX                     XX   ....",
+".....                     XXXXXXXXXXXX                     .....",
+"......                   XXXXX    XXXXX                   ......",
+".........              XXXX          XXXX              .........",
+"..........            XXX              XXX            ..........",
+"..........            XX                XX            ..........",
+"...........          XX                  XX          ...........",
+"............        XXX                  XXX        ............",
+"............        XX                    XX        ............",
+".............       XX                    XX       .............",
+".............       X                      X       .............",
+"..............     XX                      XX     ..............",
+"...............    XX                      XX    ...............",
+"...............    XX                      XX    ...............",
+"...............    XX                      XX    ...............",
+"..............      X                      X      ..............",
+"..............      XX                    XX      ..............",
+".............       XX                    XX       .............",
+"............        XXX                  XXX        ............",
+"............         XX                  XX         ............",
+"...........           XX                XX           ...........",
+"...........           XXX              XXX           ...........",
+".......  .             XXXX          XXXX             .  .......",
+".....                    XXXXX    XXXXX                    .....",
+"....   XX                 XXXXXXXXXXXX                 XX   ....",
+"....  XXXX                    XXXX                    XXXX  ....",
+"....  XXXX                                            XXXX  ....",
+"....   XX   ............                ............   XX   ....",
 ".....      ..............              ..............      .....",
 "......    ...............              ...............    ......",
 "..........................            ..........................",
@@ -60,10 +61,10 @@ static char *cdd64[] = {
 "...........................          ...........................",
 "............................        ............................",
 ".............................      .............................",
-"............................   ..   ............................",
-"............................  ....  ............................",
-"............................  ....  ............................",
-"............................   ..   ............................",
+"............................   XX   ............................",
+"............................  XXXX  ............................",
+"............................  XXXX  ............................",
+"............................   XX   ............................",
 ".............................      .............................",
 "..............................    ..............................",
 "................................................................",
diff --git a/pixmaps/cdd72.xpm b/pixmaps/cdd72.xpm
index 7dd3f36..86d69c0 100644
--- a/pixmaps/cdd72.xpm
+++ b/pixmaps/cdd72.xpm
@@ -1,20 +1,21 @@
 /* XPM */
 static char *cdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
 "........................................................................",
 "..................................     .................................",
 ".................................       ................................",
-"................................   ...   ...............................",
-"................................  .....  ...............................",
-"................................  .....  ...............................",
-"................................  .....  ...............................",
-"................................   ...   ...............................",
+"................................   XXX   ...............................",
+"................................  XXXXX  ...............................",
+"................................  XXXXX  ...............................",
+"................................  XXXXX  ...............................",
+"................................   XXX   ...............................",
 ".................................       ................................",
 "..................................      ................................",
 ".................................       ................................",
@@ -23,40 +24,40 @@ static char *cdd72[] = {
 "...............................           ..............................",
 ".........     ................            ..............................",
 "........       ...............             ...............     .........",
-".......   ...   .............              ..............       ........",
-".......  .....  ............                ............   ...   .......",
-".......  .....                                            .....  .......",
-".......  .....                                            .....  .......",
-".......   ...                                             .....  .......",
-"........                                                   ...   .......",
-".........                        .......                        ........",
-"..............                 ...........                     .........",
-"..............                ....     ....               ..............",
-"...............              ...         ...              ..............",
-"...............             ...           ...            ...............",
-"................           ...             ...           ...............",
-"................           ...              ...         ................",
-".................         ...                ..         ................",
-".................         ..                 ...       .................",
-"..................       ...                  ..       .................",
-"..................       ..                   ..      ..................",
-"...................      ..                   ..      ..................",
-"...................      ..                   ..     ...................",
-"..................       ..                   ..      ..................",
-"..................       ...                 ...      ..................",
-".................         ..                 ..        .................",
-".................         ..                 ..        .................",
-"................           ..               ..          ................",
-"...............            ...             ...          ................",
-"...............             ...           ...            ...............",
-"..............               ...         ...             ...............",
-".........                     ....     ...                   ...........",
-"........                       ...........                    ..........",
-".......   ...                    .......                 ...   .........",
-".......  .....                                          .....  .........",
-".......  .....                                          .....  .........",
-".......  .....                                          .....  .........",
-".......   ...   ...........                 ..........   ...   .........",
+".......   XXX   .............              ..............       ........",
+".......  XXXXX  ............                ............   XXX   .......",
+".......  XXXXX                                            XXXXX  .......",
+".......  XXXXX                                            XXXXX  .......",
+".......   XXX                                             XXXXX  .......",
+"........                                                   XXX   .......",
+".........                        XXXXXXX                        ........",
+"..............                 XXXXXXXXXXX                     .........",
+"..............                XXXX     XXXX               ..............",
+"...............              XXX         XXX              ..............",
+"...............             XXX           XXX            ...............",
+"................           XXX             XXX           ...............",
+"................           XXX              XXX         ................",
+".................         XXX                XX         ................",
+".................         XX                 XXX       .................",
+"..................       XXX                  XX       .................",
+"..................       XX                   XX      ..................",
+"...................      XX                   XX      ..................",
+"...................      XX                   XX     ...................",
+"..................       XX                   XX      ..................",
+"..................       XXX                 XXX      ..................",
+".................         XX                 XX        .................",
+".................         XX                 XX        .................",
+"................           XX               XX          ................",
+"...............            XXX             XXX          ................",
+"...............             XXX           XXX            ...............",
+"..............               XXX         XXX             ...............",
+".........                     XXXX     XXX                   ...........",
+"........                       XXXXXXXXXXX                    ..........",
+".......   XXX                    XXXXXXX                 XXX   .........",
+".......  XXXXX                                          XXXXX  .........",
+".......  XXXXX                                          XXXXX  .........",
+".......  XXXXX                                          XXXXX  .........",
+".......   XXX   ...........                 ..........   XXX   .........",
 "........       .............                ...........       ..........",
 ".........     ..............               .............     ...........",
 ".............................              .............................",
@@ -67,11 +68,11 @@ static char *cdd72[] = {
 "...............................         ................................",
 "................................       .................................",
 "................................       .................................",
-"...............................   ...   ................................",
-"...............................  .....  ................................",
-"...............................  .....  ................................",
-"...............................  .....  ................................",
-"...............................   ...   ................................",
+"...............................   XXX   ................................",
+"...............................  XXXXX  ................................",
+"...............................  XXXXX  ................................",
+"...............................  XXXXX  ................................",
+"...............................   XXX   ................................",
 "................................       .................................",
 ".................................     ..................................",
 "........................................................................",
diff --git a/pixmaps/cdl33.xpm b/pixmaps/cdl33.xpm
index 46af57e..1fe2c6c 100644
--- a/pixmaps/cdl33.xpm
+++ b/pixmaps/cdl33.xpm
@@ -1,40 +1,41 @@
 /* XPM */
 static char *cdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
 "...............  ................",
-".............. .. ...............",
-".............. .. ...............",
+".............. XX ...............",
+".............. XX ...............",
 "...............  ................",
 "..............    ...............",
 ".............      ..............",
 "....  ......        ......  .....",
-"... ..                    .. ....",
-"... ..        ....        .. ....",
-"....        ..    ..        .....",
-"......      .      .      .......",
-"......     .        .     .......",
-".......    .        .    ........",
-".......   .          .   ........",
-"........  .          .  .........",
-".......   .          .   ........",
-".......    .        .    ........",
-"......     .        .     .......",
-"......      .      .      .......",
-"....        ..    ..        .....",
-"... ..        ....        .. ....",
-"... ..                    .. ....",
+"... XX                    XX ....",
+"... XX        XXXX        XX ....",
+"....        XX    XX        .....",
+"......      X      X      .......",
+"......     X        X     .......",
+".......    X        X    ........",
+".......   X          X   ........",
+"........  X          X  .........",
+".......   X          X   ........",
+".......    X        X    ........",
+"......     X        X     .......",
+"......      X      X      .......",
+"....        XX    XX        .....",
+"... XX        XXXX        XX ....",
+"... XX                    XX ....",
 "....  ......        ......  .....",
 ".............      ..............",
 "..............    ...............",
 "...............  ................",
-".............. .. ...............",
-".............. .. ...............",
+".............. XX ...............",
+".............. XX ...............",
 "...............  ................",
 ".................................",
 "................................."
diff --git a/pixmaps/cdl37.xpm b/pixmaps/cdl37.xpm
index be292b4..2ff1cc4 100644
--- a/pixmaps/cdl37.xpm
+++ b/pixmaps/cdl37.xpm
@@ -1,45 +1,46 @@
 /* XPM */
 static char *cdl37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 ".................   .................",
-"................ ... ................",
-"................ ... ................",
-"................ ... ................",
+"................ XXX ................",
+"................ XXX ................",
+"................ XXX ................",
 ".................   .................",
 "................     ................",
 "...............       ...............",
 "...   .........       .........   ...",
-".. ... .......         ....... ... ..",
-".. ...                         ... ..",
-".. ...          .....          ... ..",
-"...           ..     ..           ...",
-"......       .         .       ......",
-".......     .           .     .......",
-".......     .           .     .......",
-"........   .             .   ........",
-"........   .             .   ........",
-".........  .             .  .........",
-"........   .             .   ........",
-"........   .             .   ........",
-".......     .           .     .......",
-".......     .           .     .......",
-"......       .         .       ......",
-"...           ..     ..           ...",
-".. ...          .....          ... ..",
-".. ...                         ... ..",
-".. ... .......         ....... ... ..",
+".. XXX .......         ....... XXX ..",
+".. XXX                         XXX ..",
+".. XXX          XXXXX          XXX ..",
+"...           XX     XX           ...",
+"......       X         X       ......",
+".......     X           X     .......",
+".......     X           X     .......",
+"........   X             X   ........",
+"........   X             X   ........",
+".........  X             X  .........",
+"........   X             X   ........",
+"........   X             X   ........",
+".......     X           X     .......",
+".......     X           X     .......",
+"......       X         X       ......",
+"...           XX     XX           ...",
+".. XXX          XXXXX          XXX ..",
+".. XXX                         XXX ..",
+".. XXX .......         ....... XXX ..",
 "...   .........       .........   ...",
 "...............       ...............",
 "................     ................",
 ".................   .................",
-"................ ... ................",
-"................ ... ................",
-"................ ... ................",
+"................ XXX ................",
+"................ XXX ................",
+"................ XXX ................",
 ".................   .................",
 "....................................."
 };
diff --git a/pixmaps/cdl40.xpm b/pixmaps/cdl40.xpm
index da28ae9..43581b3 100644
--- a/pixmaps/cdl40.xpm
+++ b/pixmaps/cdl40.xpm
@@ -1,47 +1,48 @@
 /* XPM */
 static char *cdl40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "...................   ..................",
-".................. ... .................",
-".................. ... .................",
-".................. ... .................",
+".................. XXX .................",
+".................. XXX .................",
+".................. XXX .................",
 "...................   ..................",
 "...................   ..................",
 "..................     .................",
 "..................     .................",
 ".....   .........       ........   .....",
-".... ...                        ... ....",
-".... ...                        ... ....",
-".... ...         ......         ... ....",
-".....           .      .           .....",
-"........       .        .        .......",
-".........     .          .      ........",
-".........    .            .     ........",
-"..........   .            .    .........",
-"...........  .            .   ..........",
-"...........  .            .  ...........",
-"..........   .            .  ...........",
-".........    .            .   ..........",
-"........      .          .     .........",
-"........       .        .      .........",
-".......         .      .        ........",
-".....            ......            .....",
-".... ...                        ... ....",
-".... ...                        ... ....",
-".... ... ........        ...... ... ....",
+".... XXX                        XXX ....",
+".... XXX                        XXX ....",
+".... XXX         XXXXXX         XXX ....",
+".....           X      X           .....",
+"........       X        X        .......",
+".........     X          X      ........",
+".........    X            X     ........",
+"..........   X            X    .........",
+"...........  X            X   ..........",
+"...........  X            X  ...........",
+"..........   X            X  ...........",
+".........    X            X   ..........",
+"........      X          X     .........",
+"........       X        X      .........",
+".......         X      X        ........",
+".....            XXXXXX            .....",
+".... XXX                        XXX ....",
+".... XXX                        XXX ....",
+".... XXX ........        ...... XXX ....",
 ".....   .........       ........   .....",
 "..................     .................",
 "..................     .................",
 "...................   ..................",
 "...................   ..................",
-".................. ... .................",
-".................. ... .................",
-".................. ... .................",
+".................. XXX .................",
+".................. XXX .................",
+".................. XXX .................",
 "...................   ..................",
 "........................................",
 "........................................"
diff --git a/pixmaps/cdl45.xpm b/pixmaps/cdl45.xpm
index 97cff7b..3e7478d 100644
--- a/pixmaps/cdl45.xpm
+++ b/pixmaps/cdl45.xpm
@@ -1,52 +1,53 @@
 /* XPM */
 static char *cdl45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
 ".....................   .....................",
-".................... ... ....................",
-".................... ... ....................",
-".................... ... ....................",
+".................... XXX ....................",
+".................... XXX ....................",
+".................... XXX ....................",
 ".....................   .....................",
 "....................     ....................",
 "...................       ...................",
 "...................       ...................",
 "..................         ..................",
 "....   ...........         ...........   ....",
-"... ... .........           ......... ... ...",
-"... ...                               ... ...",
-"... ...             .....             ... ...",
-"....              ..     ..              ....",
-".......          .         .          .......",
-"........        .           .        ........",
-"........       .             .       ........",
-".........      .             .      .........",
-".........     .               .     .........",
-"..........    .               .    ..........",
-"...........   .               .   ...........",
-"..........    .               .    ..........",
-".........     .               .     .........",
-".........      .             .      .........",
-"........       .             .       ........",
-"........        .           .        ........",
-".......          .         .          .......",
-"....              ..     ..              ....",
-"... ...             .....             ... ...",
-"... ...                               ... ...",
-"... ... .........           ......... ... ...",
+"... XXX .........           ......... XXX ...",
+"... XXX                               XXX ...",
+"... XXX             XXXXX             XXX ...",
+"....              XX     XX              ....",
+".......          X         X          .......",
+"........        X           X        ........",
+"........       X             X       ........",
+".........      X             X      .........",
+".........     X               X     .........",
+"..........    X               X    ..........",
+"...........   X               X   ...........",
+"..........    X               X    ..........",
+".........     X               X     .........",
+".........      X             X      .........",
+"........       X             X       ........",
+"........        X           X        ........",
+".......          X         X          .......",
+"....              XX     XX              ....",
+"... XXX             XXXXX             XXX ...",
+"... XXX                               XXX ...",
+"... XXX .........           ......... XXX ...",
 "....   ...........         ...........   ....",
 "..................         ..................",
 "...................       ...................",
 "...................       ...................",
 "....................     ....................",
 ".....................   .....................",
-".................... ... ....................",
-".................... ... ....................",
-".................... ... ....................",
+".................... XXX ....................",
+".................... XXX ....................",
+".................... XXX ....................",
 ".....................   .....................",
 ".............................................",
 "............................................."
diff --git a/pixmaps/cdl49.xpm b/pixmaps/cdl49.xpm
index 81efd4d..42697ce 100644
--- a/pixmaps/cdl49.xpm
+++ b/pixmaps/cdl49.xpm
@@ -1,16 +1,17 @@
 /* XPM */
 static char *cdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
 ".......................   .......................",
-"...................... ... ......................",
-"...................... ... ......................",
-"...................... ... ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
 ".......................   .......................",
 "......................     ......................",
 ".....................       .....................",
@@ -18,38 +19,38 @@ static char *cdl49[] = {
 "....................         ....................",
 "....................         ....................",
 "......   ..........           .........   .......",
-"..... ...                              ... ......",
-"..... ...                              ... ......",
-"..... ...             ....             ... ......",
-"......             ...    ...             .......",
-".........         .          .         ..........",
-"..........       .            .       ...........",
-"..........      .              .      ...........",
-"...........     .              .     ............",
-"...........     .              .    .............",
-"............   .                .   .............",
-"............   .                .  ..............",
-".............  .                .  ..............",
-".............  .                .   .............",
-"............    .              .    .............",
-"............    .              .     ............",
-"...........     .              .      ...........",
-"..........       .            .       ...........",
-"..........        .          .         ..........",
-".........          ...    ...          ..........",
-"......                ....                .......",
-"..... ...                              ... ......",
-"..... ...                              ... ......",
-"..... ... .........           ........ ... ......",
+"..... XXX                              XXX ......",
+"..... XXX                              XXX ......",
+"..... XXX             XXXX             XXX ......",
+"......             XXX    XXX             .......",
+".........         X          X         ..........",
+"..........       X            X       ...........",
+"..........      X              X      ...........",
+"...........     X              X     ............",
+"...........     X              X    .............",
+"............   X                X   .............",
+"............   X                X  ..............",
+".............  X                X  ..............",
+".............  X                X   .............",
+"............    X              X    .............",
+"............    X              X     ............",
+"...........     X              X      ...........",
+"..........       X            X       ...........",
+"..........        X          X         ..........",
+".........          XXX    XXX          ..........",
+"......                XXXX                .......",
+"..... XXX                              XXX ......",
+"..... XXX                              XXX ......",
+"..... XXX .........           ........ XXX ......",
 "......   ...........         ..........   .......",
 "....................         ....................",
 ".....................       .....................",
 ".....................       .....................",
 "......................     ......................",
 ".......................   .......................",
-"...................... ... ......................",
-"...................... ... ......................",
-"...................... ... ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
+"...................... XXX ......................",
 ".......................   .......................",
 ".................................................",
 ".................................................",
diff --git a/pixmaps/cdl54.xpm b/pixmaps/cdl54.xpm
index 9b8d859..f6c4c77 100644
--- a/pixmaps/cdl54.xpm
+++ b/pixmaps/cdl54.xpm
@@ -1,17 +1,18 @@
 /* XPM */
 static char *cdl54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "..........................  ..........................",
 "........................      ........................",
-".......................   ..   .......................",
-".......................  ....  .......................",
-".......................  ....  .......................",
-".......................   ..   .......................",
+".......................   XX   .......................",
+".......................  XXXX  .......................",
+".......................  XXXX  .......................",
+".......................   XX   .......................",
 "........................      ........................",
 ".......................        .......................",
 "......................         .......................",
@@ -19,42 +20,42 @@ static char *cdl54[] = {
 ".....................           ......................",
 "......  .............            .............  ......",
 "....      ..........             ...........      ....",
-"...   ..   .........              .........   ..   ...",
-"...  ....                                    ....  ...",
-"...  ....               ......               ....  ...",
-"...   ..              ..........              ..   ...",
-"....                .....    .....                ....",
-"......             ...          ...          .  ......",
-".........         ...            ...        ..........",
-".........         ..              ..        ..........",
-"..........       ..                ..      ...........",
-"..........       ..                ..      ...........",
-"...........     ...                ..     ............",
-"...........     ..                  ..    ............",
-"............    ..                  ..   .............",
-".............   ..                  ..    ............",
-"............    ..                  ..    ............",
-"............    ...                ..      ...........",
-"...........      ..                ..       ..........",
-"...........      ..                ..       ..........",
-"..........        ..              ..         .........",
-"..........        ...            ...         .........",
-"......  .          ...          ...             ......",
-"....                .....    .....                ....",
-"...   ..              ..........              ..   ...",
-"...  ....                ....                ....  ...",
-"...  ....                                    ....  ...",
-"...   ..   .........              .........   ..   ...",
+"...   XX   .........              .........   XX   ...",
+"...  XXXX                                    XXXX  ...",
+"...  XXXX               XXXXXX               XXXX  ...",
+"...   XX              XXXXXXXXXX              XX   ...",
+"....                XXXXX    XXXXX                ....",
+"......             XXX          XXX          .  ......",
+".........         XXX            XXX        ..........",
+".........         XX              XX        ..........",
+"..........       XX                XX      ...........",
+"..........       XX                XX      ...........",
+"...........     XXX                XX     ............",
+"...........     XX                  XX    ............",
+"............    XX                  XX   .............",
+".............   XX                  XX    ............",
+"............    XX                  XX    ............",
+"............    XXX                XX      ...........",
+"...........      XX                XX       ..........",
+"...........      XX                XX       ..........",
+"..........        XX              XX         .........",
+"..........        XXX            XXX         .........",
+"......  .          XXX          XXX             ......",
+"....                XXXXX    XXXXX                ....",
+"...   XX              XXXXXXXXXX              XX   ...",
+"...  XXXX                XXXX                XXXX  ...",
+"...  XXXX                                    XXXX  ...",
+"...   XX   .........              .........   XX   ...",
 "....      ..........              ..........      ....",
 "......  .............            .............  ......",
 ".....................           ......................",
 "......................          ......................",
 "......................         .......................",
 ".......................       ........................",
-".......................   ..   .......................",
-".......................  ....  .......................",
-".......................  ....  .......................",
-".......................   ..   .......................",
+".......................   XX   .......................",
+".......................  XXXX  .......................",
+".......................  XXXX  .......................",
+".......................   XX   .......................",
 "........................      ........................",
 "..........................  ..........................",
 "......................................................",
diff --git a/pixmaps/cdl58.xpm b/pixmaps/cdl58.xpm
index 8842800..cd549b3 100644
--- a/pixmaps/cdl58.xpm
+++ b/pixmaps/cdl58.xpm
@@ -1,16 +1,17 @@
 /* XPM */
 static char *cdl58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "..........................     ...........................",
 ".........................       ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
 ".........................       ..........................",
 "..........................     ...........................",
 ".........................       ..........................",
@@ -20,35 +21,35 @@ static char *cdl58[] = {
 ".......................           ........................",
 "....     .............             .............     .....",
 "...       ............             ............       ....",
-"...  ...                                         ...  ....",
-"...  ...                                         ...  ....",
-"...  ...                  .....                  ...  ....",
-"...                    ...........                    ....",
-"....                 .....     .....                 .....",
-"........            ...           ...            .........",
-".........          ...             ...          ..........",
-".........         ...               ...         ..........",
-"..........        ..                 ..        ...........",
-"..........       ..                   ..       ...........",
-"...........      ..                   ..      ............",
-"............     ..                   ..     .............",
-"............    ..                     ..    .............",
-".............   ..                     ..   ..............",
-".............   ..                     ..   ..............",
-".............   ..                     ..   ..............",
-"............    ..                     ..    .............",
-"...........      ..                   ..      ............",
-"...........      ..                   ..      ............",
-"..........       ..                   ..       ...........",
-"..........        ..                 ..        ...........",
-".........         ...               ...         ..........",
-".........          ...             ...          ..........",
-"........            ...           ...            .........",
-"....                 .....     .....                 .....",
-"...                    ...........                    ....",
-"...  ...                  .....                  ...  ....",
-"...  ...                                         ...  ....",
-"...  ...                                         ...  ....",
+"...  XXX                                         XXX  ....",
+"...  XXX                                         XXX  ....",
+"...  XXX                  XXXXX                  XXX  ....",
+"...                    XXXXXXXXXXX                    ....",
+"....                 XXXXX     XXXXX                 .....",
+"........            XXX           XXX            .........",
+".........          XXX             XXX          ..........",
+".........         XXX               XXX         ..........",
+"..........        XX                 XX        ...........",
+"..........       XX                   XX       ...........",
+"...........      XX                   XX      ............",
+"............     XX                   XX     .............",
+"............    XX                     XX    .............",
+".............   XX                     XX   ..............",
+".............   XX                     XX   ..............",
+".............   XX                     XX   ..............",
+"............    XX                     XX    .............",
+"...........      XX                   XX      ............",
+"...........      XX                   XX      ............",
+"..........       XX                   XX       ...........",
+"..........        XX                 XX        ...........",
+".........         XXX               XXX         ..........",
+".........          XXX             XXX          ..........",
+"........            XXX           XXX            .........",
+"....                 XXXXX     XXXXX                 .....",
+"...                    XXXXXXXXXXX                    ....",
+"...  XXX                  XXXXX                  XXX  ....",
+"...  XXX                                         XXX  ....",
+"...  XXX                                         XXX  ....",
 "...       ............             ............       ....",
 "....     ..............           ..............     .....",
 ".......................           ........................",
@@ -57,9 +58,9 @@ static char *cdl58[] = {
 ".........................       ..........................",
 "..........................     ...........................",
 ".........................       ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
-".........................  ...  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
+".........................  XXX  ..........................",
 ".........................       ..........................",
 "..........................     ...........................",
 ".........................................................."
diff --git a/pixmaps/cdl64.xpm b/pixmaps/cdl64.xpm
index f07a4a8..8052013 100644
--- a/pixmaps/cdl64.xpm
+++ b/pixmaps/cdl64.xpm
@@ -1,19 +1,20 @@
 /* XPM */
 static char *cdl64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
 "................................................................",
 "...............................  ...............................",
 ".............................      .............................",
-"............................   ..   ............................",
-"............................  ....  ............................",
-"............................  ....  ............................",
-"............................   ..   ............................",
+"............................   XX   ............................",
+"............................  XXXX  ............................",
+"............................  XXXX  ............................",
+"............................   XX   ............................",
 ".............................      .............................",
 "..............................    ..............................",
 ".............................      .............................",
@@ -22,37 +23,37 @@ static char *cdl64[] = {
 "...........................          ...........................",
 ".......  ..................          ..................  .......",
 ".....      ...............            ...............      .....",
-"....   ..   .............              .............   ..   ....",
-"....  ....                                            ....  ....",
-"....  ....                                            ....  ....",
-"....   ..                     ....                     ..   ....",
-".....                     ............                     .....",
-"......                   .....    .....                   ......",
-".........              ....          ....              .........",
-"..........            ...              ...            ..........",
-"..........            ..                ..            ..........",
-"...........          ..                  ..          ...........",
-"............        ...                  ...        ............",
-"............        ..                    ..        ............",
-".............       ..                    ..       .............",
-".............       .                      .       .............",
-"..............     ..                      ..     ..............",
-"...............    ..                      ..    ...............",
-"...............    ..                      ..    ...............",
-"...............    ..                      ..    ...............",
-"..............      .                      .      ..............",
-"..............      ..                    ..      ..............",
-".............       ..                    ..       .............",
-"............        ...                  ...        ............",
-"............         ..                  ..         ............",
-"...........           ..                ..           ...........",
-"...........           ...              ...           ...........",
-".......  .             ....          ....             .  .......",
-".....                    .....    .....                    .....",
-"....   ..                 ............                 ..   ....",
-"....  ....                    ....                    ....  ....",
-"....  ....                                            ....  ....",
-"....   ..   ............                ............   ..   ....",
+"....   XX   .............              .............   XX   ....",
+"....  XXXX                                            XXXX  ....",
+"....  XXXX                                            XXXX  ....",
+"....   XX                     XXXX                     XX   ....",
+".....                     XXXXXXXXXXXX                     .....",
+"......                   XXXXX    XXXXX                   ......",
+".........              XXXX          XXXX              .........",
+"..........            XXX              XXX            ..........",
+"..........            XX                XX            ..........",
+"...........          XX                  XX          ...........",
+"............        XXX                  XXX        ............",
+"............        XX                    XX        ............",
+".............       XX                    XX       .............",
+".............       X                      X       .............",
+"..............     XX                      XX     ..............",
+"...............    XX                      XX    ...............",
+"...............    XX                      XX    ...............",
+"...............    XX                      XX    ...............",
+"..............      X                      X      ..............",
+"..............      XX                    XX      ..............",
+".............       XX                    XX       .............",
+"............        XXX                  XXX        ............",
+"............         XX                  XX         ............",
+"...........           XX                XX           ...........",
+"...........           XXX              XXX           ...........",
+".......  .             XXXX          XXXX             .  .......",
+".....                    XXXXX    XXXXX                    .....",
+"....   XX                 XXXXXXXXXXXX                 XX   ....",
+"....  XXXX                    XXXX                    XXXX  ....",
+"....  XXXX                                            XXXX  ....",
+"....   XX   ............                ............   XX   ....",
 ".....      ..............              ..............      .....",
 "......    ...............              ...............    ......",
 "..........................            ..........................",
@@ -60,10 +61,10 @@ static char *cdl64[] = {
 "...........................          ...........................",
 "............................        ............................",
 ".............................      .............................",
-"............................   ..   ............................",
-"............................  ....  ............................",
-"............................  ....  ............................",
-"............................   ..   ............................",
+"............................   XX   ............................",
+"............................  XXXX  ............................",
+"............................  XXXX  ............................",
+"............................   XX   ............................",
 ".............................      .............................",
 "..............................    ..............................",
 "................................................................",
diff --git a/pixmaps/cdl72.xpm b/pixmaps/cdl72.xpm
index 7dab174..f74b1d0 100644
--- a/pixmaps/cdl72.xpm
+++ b/pixmaps/cdl72.xpm
@@ -1,20 +1,21 @@
 /* XPM */
 static char *cdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
 "........................................................................",
 "..................................     .................................",
 ".................................       ................................",
-"................................   ...   ...............................",
-"................................  .....  ...............................",
-"................................  .....  ...............................",
-"................................  .....  ...............................",
-"................................   ...   ...............................",
+"................................   XXX   ...............................",
+"................................  XXXXX  ...............................",
+"................................  XXXXX  ...............................",
+"................................  XXXXX  ...............................",
+"................................   XXX   ...............................",
 ".................................       ................................",
 "..................................      ................................",
 ".................................       ................................",
@@ -23,40 +24,40 @@ static char *cdl72[] = {
 "...............................           ..............................",
 ".........     ................            ..............................",
 "........       ...............             ...............     .........",
-".......   ...   .............              ..............       ........",
-".......  .....  ............                ............   ...   .......",
-".......  .....                                            .....  .......",
-".......  .....                                            .....  .......",
-".......   ...                                             .....  .......",
-"........                                                   ...   .......",
-".........                        .......                        ........",
-"..............                 ...........                     .........",
-"..............                ....     ....               ..............",
-"...............              ...         ...              ..............",
-"...............             ...           ...            ...............",
-"................           ...             ...           ...............",
-"................           ...              ...         ................",
-".................         ...                ..         ................",
-".................         ..                 ...       .................",
-"..................       ...                  ..       .................",
-"..................       ..                   ..      ..................",
-"...................      ..                   ..      ..................",
-"...................      ..                   ..     ...................",
-"..................       ..                   ..      ..................",
-"..................       ...                 ...      ..................",
-".................         ..                 ..        .................",
-".................         ..                 ..        .................",
-"................           ..               ..          ................",
-"...............            ...             ...          ................",
-"...............             ...           ...            ...............",
-"..............               ...         ...             ...............",
-".........                     ....     ...                   ...........",
-"........                       ...........                    ..........",
-".......   ...                    .......                 ...   .........",
-".......  .....                                          .....  .........",
-".......  .....                                          .....  .........",
-".......  .....                                          .....  .........",
-".......   ...   ...........                 ..........   ...   .........",
+".......   XXX   .............              ..............       ........",
+".......  XXXXX  ............                ............   XXX   .......",
+".......  XXXXX                                            XXXXX  .......",
+".......  XXXXX                                            XXXXX  .......",
+".......   XXX                                             XXXXX  .......",
+"........                                                   XXX   .......",
+".........                        XXXXXXX                        ........",
+"..............                 XXXXXXXXXXX                     .........",
+"..............                XXXX     XXXX               ..............",
+"...............              XXX         XXX              ..............",
+"...............             XXX           XXX            ...............",
+"................           XXX             XXX           ...............",
+"................           XXX              XXX         ................",
+".................         XXX                XX         ................",
+".................         XX                 XXX       .................",
+"..................       XXX                  XX       .................",
+"..................       XX                   XX      ..................",
+"...................      XX                   XX      ..................",
+"...................      XX                   XX     ...................",
+"..................       XX                   XX      ..................",
+"..................       XXX                 XXX      ..................",
+".................         XX                 XX        .................",
+".................         XX                 XX        .................",
+"................           XX               XX          ................",
+"...............            XXX             XXX          ................",
+"...............             XXX           XXX            ...............",
+"..............               XXX         XXX             ...............",
+".........                     XXXX     XXX                   ...........",
+"........                       XXXXXXXXXXX                    ..........",
+".......   XXX                    XXXXXXX                 XXX   .........",
+".......  XXXXX                                          XXXXX  .........",
+".......  XXXXX                                          XXXXX  .........",
+".......  XXXXX                                          XXXXX  .........",
+".......   XXX   ...........                 ..........   XXX   .........",
 "........       .............                ...........       ..........",
 ".........     ..............               .............     ...........",
 ".............................              .............................",
@@ -67,11 +68,11 @@ static char *cdl72[] = {
 "...............................         ................................",
 "................................       .................................",
 "................................       .................................",
-"...............................   ...   ................................",
-"...............................  .....  ................................",
-"...............................  .....  ................................",
-"...............................  .....  ................................",
-"...............................   ...   ................................",
+"...............................   XXX   ................................",
+"...............................  XXXXX  ................................",
+"...............................  XXXXX  ................................",
+"...............................  XXXXX  ................................",
+"...............................   XXX   ................................",
 "................................       .................................",
 ".................................     ..................................",
 "........................................................................",
diff --git a/pixmaps/convert.c b/pixmaps/convert.c
index dcdcd47..2a82f91 100644
--- a/pixmaps/convert.c
+++ b/pixmaps/convert.c
@@ -54,6 +54,19 @@ void Paint(char dest[130][130], char src[130][130], int size, char c)
 	for(i=0; i<size; i++) for(j=0; j<size; j++) if(!src[i][j]) dest[i][j] = c;
 }
 
+FloodFill(char a[130][130], int size, int x, int y)
+{
+	char old = 'X', new = '.';
+	if(a[x][y] != old) return; else {
+		a[x][y] = new;
+		if(x > 0) FloodFill(a, size, x-1, y);
+		if(y > 0) FloodFill(a, size, x, y-1);
+		if(x < size-1) FloodFill(a, size, x+1, y);
+		if(y < size-1) FloodFill(a, size, x, y+1);
+	}
+	
+}
+
 void Save(FILE *f, char *name, char data[130][130], int size, char *col, int depth)
 {	// write out data in source format for d x d pixmap with specified square color
 	int i, j;
@@ -79,9 +92,11 @@ char data[130][130], oData[130][130], sData[130][130], wData[130][130];
 
 main(int argc, char **argv)
 {
-	int i, j, k, d, cnt, p, s, t; char c, h, w, *name, buf[80];
+	int i, j, k, d, cnt, p, s, t; char c, h, w, name[80], buf[80], transparent;
 	FILE *f;
 
+    transparent = argc > 1 && !strcmp(argv[1], "-t");
+
     for(s=0; s<18; s++) for(p=0; pieceList[p] != NULL; p++) {
 
 	// Load the 3 kinds of Windows monochrome bitmaps (outline, solid, white fill)
@@ -107,19 +122,26 @@ main(int argc, char **argv)
 	printf("%s loaded\n", buf);
 	// construct pixmaps as character arrays
 	d = sizeList[s];
-	for(i=0; i<d; i++) { for(j=0; j<d; j++) data[i][j] = '.'; data[i][d] = 0; } // fill square
+	for(i=0; i<d; i++) { for(j=0; j<d; j++) data[i][j] = transparent? '.' : 'X'; data[i][d] = 0; } // fill square
 
 	Paint(data, sData, d, ' '); // overay with solid piece bitmap
 
+	if(!transparent) { // background was painted same color as piece details; flood-fill it from corners
+	    FloodFill(data, d, 0, 0);
+	    FloodFill(data, d, 0, d-1);
+	    FloodFill(data, d, d-1, 0);
+	    FloodFill(data, d, d-1, d-1);
+	}
+
 	sprintf(buf, "%s%s%d.xpm", pieceList[p], "dd", d);
 	sprintf(name, "%s%s%d", pieceList[p], "dd", d);
 	f = fopen(buf, "w");
-	Save(f, name, data, d, "c green s dark_square", 2);
+	Save(f, name, data, d, "c green s dark_square", 3);
 
 	sprintf(buf, "%s%s%d.xpm", pieceList[p], "dl", d);
 	sprintf(name, "%s%s%d", pieceList[p], "dl", d);
 	f = fopen(buf, "w");
-	Save(f, name, data, d, "c gray s light_square", 2); // silly duplication; pixmap is te same, but other color
+	Save(f, name, data, d, "c gray s light_square", 3); // silly duplication; pixmap is te same, but other color
 
 	// now the light piece
 	for(i=0; i<d; i++) { for(j=0; j<d; j++) data[i][j] = '.'; data[i][d] = 0; } // fill square
diff --git a/pixmaps/cvdd33.xpm b/pixmaps/cvdd33.xpm
index 09b6e5e..094e35d 100644
--- a/pixmaps/cvdd33.xpm
+++ b/pixmaps/cvdd33.xpm
@@ -1,37 +1,38 @@
 /* XPM */
 static char *cvdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
 "................... ... .........",
 "..................   .  .........",
 "...............         .........",
-".............  ...   ..  ........",
-"...........  ..       .. ........",
-"........... ..        . . .......",
-".......... ..          .. .......",
-".........  .               ......",
-".........  .     .         ......",
-"......... ..                .....",
-"........  .                 .....",
-"........  .       ..      .. ....",
-"........ ..       ....     . ....",
-"........ ..        ....      ....",
-".......  .          ....    .....",
-".......  .           ...  .......",
-"....... ..            ...........",
-"....... ..            ...........",
-"....... ..             ..........",
+".............  XXX   XX  ........",
+"...........  XX       XX ........",
+"........... XX        X X .......",
+".......... XX          XX .......",
+".........  X               ......",
+".........  X     X         ......",
+"......... XX                .....",
+"........  X                 .....",
+"........  X       ..      XX ....",
+"........ XX       ....     X ....",
+"........ XX        ....      ....",
+".......  X          ....    .....",
+".......  X           ...  .......",
+"....... XX            ...........",
+"....... XX            ...........",
+"....... XX             ..........",
 ".......                ..........",
 ".......                ..........",
-"........ ............. ..........",
+"........ XXXXXXXXXXXXX ..........",
 ".......                 .........",
 "......                   ........",
-".....  .................  .......",
+".....  XXXXXXXXXXXXXXXXX  .......",
 ".....                     .......",
 ".....                     .......",
 ".....     ...     ...     .......",
diff --git a/pixmaps/cvdd37.xpm b/pixmaps/cvdd37.xpm
index b0d453c..8f13c79 100644
--- a/pixmaps/cvdd37.xpm
+++ b/pixmaps/cvdd37.xpm
@@ -1,28 +1,29 @@
 /* XPM */
 static char *cvdd37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 "..................... .... ..........",
 "....................   ..  ..........",
 "....................   .   ..........",
 "................           ..........",
-"...............  ...   ..  ..........",
-"..............  .           .........",
-".............  .        ..  .........",
-"............  .           .  ........",
-"............ ..           .  ........",
+"...............  XXX   XX  ..........",
+"..............  X           .........",
+".............  X        XX  .........",
+"............  .           X  ........",
+"............ ..           X  ........",
 "...........  .                .......",
-"........... ..     .          .......",
+"........... ..     X          .......",
 "........... .                  ......",
 ".......... ..                  ......",
 ".......... ..       ..          .....",
-".......... .        ....     .. .....",
-"............         ....     . .....",
-"......... ..          ....  .   .....",
+".......... .        ....     XX .....",
+"............         ....     X .....",
+"......... ..          ....  X   .....",
 "......... ..          .....    ......",
 "......... ..           ..............",
 "......... ..            .............",
@@ -30,7 +31,7 @@ static char *cvdd37[] = {
 "......... ..              ...........",
 "......... .               ...........",
 ".........                 ...........",
-".......... .............. ...........",
+".......... XXXXXXXXXXXXXX ...........",
 ".........                  ..........",
 "........                    .........",
 ".....................................",
diff --git a/pixmaps/cvdd40.xpm b/pixmaps/cvdd40.xpm
index d1dec06..bfd8658 100644
--- a/pixmaps/cvdd40.xpm
+++ b/pixmaps/cvdd40.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdd40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "........................................",
@@ -11,32 +12,32 @@ static char *cvdd40[] = {
 ".....................   ..  ............",
 ".....................   .   ............",
 "..................          ............",
-"................  ...   ..  ............",
-"............... ..           ...........",
-".............  ..        ..  ...........",
-"............  ..           .  ..........",
-"............ ..            .  ..........",
-"...........  .                 .........",
-"........... ..      .          .........",
-"........... .                   ........",
-".......... ..                   ........",
-".......... ..        ..          .......",
-".......... .         ....     .. .......",
-".......... .          ....     . .......",
-"......... ..           ....  .   .......",
-"......... ..            ....    ........",
-"......... ..             ...............",
-"......... ..              ..............",
-"......... ..               .............",
-"......... ..               .............",
-"......... ..                ............",
-"......... ..                ............",
-"......... ..                ............",
+"................  XXX   XX  ............",
+"............... XX           ...........",
+".............  XX        XX  ...........",
+"............  XX           X  ..........",
+"............ XX            X  ..........",
+"...........  X                 .........",
+"........... XX      X          .........",
+"........... X                   ........",
+".......... XX                   ........",
+".......... XX        ..          .......",
+".......... X         ....     XX .......",
+".......... X          ....     X .......",
+"......... XX           ....  X   .......",
+"......... XX            ....    ........",
+"......... XX             ...............",
+"......... XX              ..............",
+"......... XX               .............",
+"......... XX               .............",
+"......... XX                ............",
+"......... XX                ............",
+"......... XX                ............",
 ".........                  .............",
-"..........  ..............  ............",
+"..........  XXXXXXXXXXXXXX  ............",
 ".........                    ...........",
 "........                      ..........",
-"....... ...................... .........",
+"....... XXXXXXXXXXXXXXXXXXXXXX .........",
 "......                          ........",
 "......                          ........",
 "......                          ........",
diff --git a/pixmaps/cvdd45.xpm b/pixmaps/cvdd45.xpm
index 90eebf7..11f9175 100644
--- a/pixmaps/cvdd45.xpm
+++ b/pixmaps/cvdd45.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdd45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
@@ -11,23 +12,23 @@ static char *cvdd45[] = {
 ".........................  ...   ............",
 "........................    .    ............",
 ".....................            ............",
-"...................  ...    ..   ............",
-".................  ..         .   ...........",
-"................  .               ...........",
-"...............  .            .    ..........",
-"..............  .             ..   ..........",
-".............. ..              ..  ..........",
+"...................  XXX    XX   ............",
+".................  XX         X   ...........",
+"................  X               ...........",
+"...............  X            X    ..........",
+"..............  .             XX   ..........",
+".............. ..              XX  ..........",
 ".............  .                    .........",
 "............. ..                    .........",
 "............  .                     .........",
-"............ ..        .             ........",
+"............ ..        X             ........",
 "............ .                       ........",
 "..............          .             .......",
 "........... ..          ..             ......",
-"........... ..          ....        .. ......",
-"........... .            .....       . ......",
+"........... ..          ....        XX ......",
+"........... .            .....       X ......",
 ".............            ......        ......",
-".............             ......  .    ......",
+".............             ......  X    ......",
 ".......... ..              .....      .......",
 ".......... ..              ...... ...........",
 ".......... ..               .................",
@@ -37,11 +38,11 @@ static char *cvdd45[] = {
 ".......... ..                  ..............",
 ".......... .                   ..............",
 "..........                     ..............",
-".......... ................... ..............",
+".......... XXXXXXXXXXXXXXXXXXX ..............",
 ".........                       .............",
 "........                         ............",
 ".......                           ...........",
-"......  .........................  ..........",
+"......  XXXXXXXXXXXXXXXXXXXXXXXXX  ..........",
 "......                             ..........",
 "......                             ..........",
 "......                             ..........",
diff --git a/pixmaps/cvdd49.xpm b/pixmaps/cvdd49.xpm
index ac7fbe1..47bc2c0 100644
--- a/pixmaps/cvdd49.xpm
+++ b/pixmaps/cvdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 "...........................  ...... .............",
@@ -11,24 +12,24 @@ static char *cvdd49[] = {
 "..........................    ..    .............",
 "..........................    .     .............",
 ".....................              ..............",
-"...................   ...     ...   .............",
-"..................  ..               ............",
-".................  .                 ............",
-"................  .             ..    ...........",
-"...............  .               ..   ...........",
-"............... ..                ..  ...........",
-".............. ..                  .  ...........",
+"...................   XXX     XXX   .............",
+"..................  XX               ............",
+".................  X                 ............",
+"................  X             XX    ...........",
+"...............  .               XX   ...........",
+"............... ..                XX  ...........",
+".............. ..                  X  ...........",
 ".............. ..                      ..........",
 "............. ..                       ..........",
 "............. ..                        .........",
-"............  .          .               ........",
+"............  .          X               ........",
 "............ ..                          ........",
 "............ ..           .               .......",
 "............ .            ..              .......",
-"........... ..            ....         ..  ......",
-"........... ..             .....       ..  ......",
-"........... ..             ......       .  ......",
-"........... .               ......   .     ......",
+"........... ..            ....         XX  ......",
+"........... ..             .....       XX  ......",
+"........... ..             ......       X  ......",
+"........... .               ......   X     ......",
 "........... .               .......       .......",
 ".............                .......     ........",
 ".......... ..                 ....... ...........",
@@ -41,11 +42,11 @@ static char *cvdd49[] = {
 "........... ..................... ...............",
 "...........                       ...............",
 "...........                       ...............",
-"........... ..................... ...............",
+"........... XXXXXXXXXXXXXXXXXXXXX ...............",
 "..........                         ..............",
 ".........                           .............",
 "........                             ............",
-"....... ............................. ...........",
+"....... XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...........",
 ".......                               ...........",
 ".......                               ...........",
 ".......                               ...........",
diff --git a/pixmaps/cvdd54.xpm b/pixmaps/cvdd54.xpm
index b5ff5b2..37fb1b3 100644
--- a/pixmaps/cvdd54.xpm
+++ b/pixmaps/cvdd54.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdd54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "......................................................",
@@ -12,43 +13,43 @@ static char *cvdd54[] = {
 ".............................    ..    ...............",
 ".............................    .     ...............",
 "........................              ................",
-"......................   ...     ...   ...............",
-"....................   ....             ..............",
-"...................  ...                ..............",
-"..................  ...            ..    .............",
-".................  ...              ..   .............",
-".................  ..                ..  .............",
-"................  ...                 .  .............",
-"................  ..                      ............",
-"................ ...                      ............",
-"...............  ..        ..              ...........",
-"...............  ..         .               ..........",
-"............... ..                          ..........",
-"..............  ..           .               .........",
-"..............  ..           ..              .........",
-".............. ..            ....         ..  ........",
-".............  ..             .....       ..  ........",
-".............  ..             ......       .  ........",
-".............  ..              ......   .     ........",
-".............  ..              .......  ..   .........",
-".............  .                .......     ..........",
-"............. ..                 ....... .............",
-"............  ..                  ....................",
-"............  ..                   ...................",
-"............  ..                   ...................",
-"............  ..                    ..................",
-"............  ..                    ..................",
-"............  ..                     .................",
-"............  ..                     .................",
+"......................   XXX     XXX   ...............",
+"....................   XXXX             ..............",
+"...................  XXX                ..............",
+"..................  XXX            XX    .............",
+".................  XXX              XX   .............",
+".................  XX                XX  .............",
+"................  XXX                 X  .............",
+"................  XX                      ............",
+"................ XXX                      ............",
+"...............  XX        XX              ...........",
+"...............  XX         X               ..........",
+"............... XX                          ..........",
+"..............  XX           .               .........",
+"..............  XX           ..              .........",
+".............. XX            ....         XX  ........",
+".............  XX             .....       XX  ........",
+".............  XX             ......       X  ........",
+".............  XX              ......   X     ........",
+".............  XX              .......  XX   .........",
+".............  X                .......     ..........",
+"............. XX                 ....... .............",
+"............  XX                  ....................",
+"............  XX                   ...................",
+"............  XX                   ...................",
+"............  XX                    ..................",
+"............  XX                    ..................",
+"............  XX                     .................",
+"............  XX                     .................",
 "............                         .................",
 "............                         .................",
-".............  ....................  .................",
-"............   ....................   ................",
+".............  XXXXXXXXXXXXXXXXXXXX  .................",
+"............   XXXXXXXXXXXXXXXXXXXX   ................",
 "...........                            ...............",
 "..........                              ..............",
 ".........                                .............",
-"........   ............................   ............",
-"........   ............................   ............",
+"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXX   ............",
+"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXX   ............",
 "........                                  ............",
 "........                                  ............",
 "........                                  ............",
diff --git a/pixmaps/cvdd58.xpm b/pixmaps/cvdd58.xpm
index 7ef841e..0ddcd76 100644
--- a/pixmaps/cvdd58.xpm
+++ b/pixmaps/cvdd58.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdd58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "................................. ........ ...............",
@@ -11,48 +12,48 @@ static char *cvdd58[] = {
 "...............................    ....    ...............",
 "...............................     ..     ...............",
 "...........................                ...............",
-"........................    ...     ...   ................",
-".......................  .....      ....   ...............",
-"......................  ...                 ..............",
-".....................  ..                    .............",
-"....................  .                      .............",
-"...................  .                 .      ............",
-"..................  ..                 ...    ............",
-".................. ..                   ..    ............",
-"................. ...                    ..   ............",
-"................  ..                           ...........",
-"................ ...                           ...........",
-"...............  ..         .                  ...........",
-"............... ...         ..                  ..........",
-"............... ..           .                  ..........",
-"..............  ..                               .........",
-".............. ..                                 ........",
-".............. ..             .                   ........",
-".............  ..             ..                   .......",
-".............  ..             ....                 .......",
-"............. ..               .....           ..   ......",
-"............  ..               .......         ..   ......",
-"............  ..                .......             ......",
-"............  ..                 .......            ......",
-"............  ..                 ........    ..     ......",
-"............  ..                  ........    ..   .......",
-"............  ..                   ........       ........",
-"...........  ...                    .......  .............",
-"...........  ..                      .....................",
-"...........  ..                       ....................",
-"...........  ..                        ...................",
-"...........  ..                        ...................",
-"...........  ..                        ...................",
-"...........  ..                         ..................",
+"........................    XXX     XXX   ................",
+".......................  XXXXX      XXXX   ...............",
+"......................  XXX                 ..............",
+".....................  XX                    .............",
+"....................  X                      .............",
+"...................  X                 X      ............",
+"..................  XX                 XXX    ............",
+".................. XX                   XX    ............",
+"................. XXX                    XX   ............",
+"................  XX                           ...........",
+"................ XXX                           ...........",
+"...............  XX         X                  ...........",
+"............... XXX         XX                  ..........",
+"............... XX           X                  ..........",
+"..............  XX                               .........",
+".............. XX                                 ........",
+".............. XX             .                   ........",
+".............  XX             ..                   .......",
+".............  XX             ....                 .......",
+"............. XX               .....           XX   ......",
+"............  XX               .......         XX   ......",
+"............  XX                .......             ......",
+"............  XX                 .......            ......",
+"............  XX                 ........    XX     ......",
+"............  XX                  ........    XX   .......",
+"............  XX                   ........       ........",
+"...........  XXX                    .......  .............",
+"...........  XX                      .....................",
+"...........  XX                       ....................",
+"...........  XX                        ...................",
+"...........  XX                        ...................",
+"...........  XX                        ...................",
+"...........  XX                         ..................",
 "...........                             ..................",
 "...........                             ..................",
-"...........    ........................  .................",
-"............   ........................  .................",
+"...........    XXXXXXXXXXXXXXXXXXXXXXXX  .................",
+"............   XXXXXXXXXXXXXXXXXXXXXXXX  .................",
 "...........                               ................",
 ".........                                  ...............",
 "........                                    ..............",
-".......   ................................   .............",
-".......   ................................   .............",
+".......   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
+".......   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
 ".......                                      .............",
 ".......                                      .............",
 ".......                                      .............",
diff --git a/pixmaps/cvdd64.xpm b/pixmaps/cvdd64.xpm
index 49591c3..ed0736b 100644
--- a/pixmaps/cvdd64.xpm
+++ b/pixmaps/cvdd64.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdd64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
@@ -13,49 +14,49 @@ static char *cvdd64[] = {
 ".................................    ....    ...................",
 ".................................     ..     ...................",
 ".............................                ...................",
-"..........................    ...     ...   ....................",
-".........................  .....      ....   ...................",
-"........................  ...                 ..................",
-".......................  ..                    .................",
-"......................  .                      .................",
-".....................  .                 .      ................",
-"....................  ..                 ...    ................",
-".................... ..                   ..    ................",
-"................... ...                    ..   ................",
-"..................  ..                           ...............",
-".................. ...                           ...............",
-".................  ..         .                  ...............",
-"................. ...         ..                  ..............",
-"................. ..           .                  ..............",
-"................  ..                               .............",
-"................ ..                                 ............",
-"................ ..             .                   ............",
-"...............  ..             ..                   ...........",
-"...............  ..             ....                 ...........",
-"...............  .              ......           ..   ..........",
-"............... ..               .......         ..   ..........",
-"..............  ..               ........             ..........",
-"..............  ..                ........            ..........",
-"..............  ..                 ........    ..     ..........",
-"..............  ..                 .........    ..   ...........",
-"..............  ..                  .........       ............",
-"..............  ..                   ........  .................",
-".............  ...                    ..........................",
-".............  ..                      .........................",
-".............  ..                       ........................",
-".............  ..                        .......................",
-".............  ..                        .......................",
-".............  ..                        .......................",
-".............  ..                         ......................",
+"..........................    XXX     XXX   ....................",
+".........................  XXXXX      XXXX   ...................",
+"........................  XXX                 ..................",
+".......................  XX                    .................",
+"......................  X                      .................",
+".....................  X                 X      ................",
+"....................  XX                 XXX    ................",
+".................... XX                   XX    ................",
+"................... XXX                    XX   ................",
+"..................  XX                           ...............",
+".................. XXX                           ...............",
+".................  XX         X                  ...............",
+"................. XXX         XX                  ..............",
+"................. XX           X                  ..............",
+"................  XX                               .............",
+"................ XX                                 ............",
+"................ XX             .                   ............",
+"...............  XX             ..                   ...........",
+"...............  XX             ....                 ...........",
+"...............  X              ......           XX   ..........",
+"............... XX               .......         XX   ..........",
+"..............  XX               ........             ..........",
+"..............  XX                ........            ..........",
+"..............  XX                 ........    XX     ..........",
+"..............  XX                 .........    XX   ...........",
+"..............  XX                  .........       ............",
+"..............  XX                   ........  .................",
+".............  XXX                    ..........................",
+".............  XX                      .........................",
+".............  XX                       ........................",
+".............  XX                        .......................",
+".............  XX                        .......................",
+".............  XX                        .......................",
+".............  XX                         ......................",
 ".............                             ......................",
 "..............                            ......................",
-"..............   ......................   ......................",
-".............   ........................   .....................",
+"..............   XXXXXXXXXXXXXXXXXXXXXX   ......................",
+".............   XXXXXXXXXXXXXXXXXXXXXXXX   .....................",
 "............                                ....................",
 "..........                                    ..................",
 ".........                                      .................",
-"........   ..................................   ................",
-"........  ....................................  ................",
+"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ................",
+"........  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ................",
 "........                                        ................",
 "........                                        ................",
 "........                                        ................",
diff --git a/pixmaps/cvdd72.xpm b/pixmaps/cvdd72.xpm
index 0c9150a..d9339ee 100644
--- a/pixmaps/cvdd72.xpm
+++ b/pixmaps/cvdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -15,53 +16,53 @@ static char *cvdd72[] = {
 "......................................      ..      ....................",
 "..................................                  ....................",
 "...............................                     ....................",
-".............................      ....     ..      ....................",
-"...........................      .....      .....    ...................",
-"..........................     .....          ...     ..................",
-".........................     ....                     .................",
-"........................    ....                       .................",
-".......................    ....                ....     ................",
-"......................    ....                  ....    ................",
-"......................   ....                   ....    ................",
-".....................    ...                     ...    ................",
-".....................   ....                       .     ...............",
-"....................   ....                              ...............",
-"....................   ....                              ...............",
-"...................   ....          .                     ..............",
-"...................   ....          .                     ..............",
-"...................  ....           ..                     .............",
-"..................   ....            .                      ............",
-"..................   ....                                    ...........",
-"..................  ....                                     ...........",
-".................   ....              .                       ..........",
-".................   ....              ...                     ..........",
-".................  ....               .....              ..    .........",
-".................  ....                .....             ...   .........",
-"................   ....                .......           ...   .........",
-"................   ....                 .......           ..   .........",
-"................  .....                 ........     ..        .........",
-"................  ....                   ........     .        .........",
-"................  ....                    ........    ..       .........",
-"................  ....                     ........           ..........",
-"................  ....                      .......         ............",
-"...............   ....                       .......   .................",
-"...............   ....                        ..........................",
-"...............   ....                         .........................",
-"...............   ....                         .........................",
-"...............   ....                          ........................",
-"...............  .....                           .......................",
-"...............  .....                           .......................",
-"...............  ....                             ......................",
-"...............  ....                             ......................",
+".............................      XXXX     XX      ....................",
+"...........................      XXXXX      XXXXX    ...................",
+"..........................     XXXXX          XXX     ..................",
+".........................     XXXX                     .................",
+"........................    XXXX                       .................",
+".......................    XXXX                XXXX     ................",
+"......................    XXXX                  XXXX    ................",
+"......................   XXXX                   XXXX    ................",
+".....................    XXX                     XXX    ................",
+".....................   XXXX                       X     ...............",
+"....................   XXXX                              ...............",
+"....................   XXXX                              ...............",
+"...................   XXXX          X                     ..............",
+"...................   XXXX          X                     ..............",
+"...................  XXXX           XX                     .............",
+"..................   XXXX            X                      ............",
+"..................   XXXX                                    ...........",
+"..................  XXXX                                     ...........",
+".................   XXXX              .                       ..........",
+".................   XXXX              ...                     ..........",
+".................  XXXX               .....              XX    .........",
+".................  XXXX                .....             XXX   .........",
+"................   XXXX                .......           XXX   .........",
+"................   XXXX                 .......           XX   .........",
+"................  XXXXX                 ........     XX        .........",
+"................  XXXX                   ........     X        .........",
+"................  XXXX                    ........    XX       .........",
+"................  XXXX                     ........           ..........",
+"................  XXXX                      .......         ............",
+"...............   XXXX                       .......   .................",
+"...............   XXXX                        ..........................",
+"...............   XXXX                         .........................",
+"...............   XXXX                         .........................",
+"...............   XXXX                          ........................",
+"...............  XXXXX                           .......................",
+"...............  XXXXX                           .......................",
+"...............  XXXX                             ......................",
+"...............  XXXX                             ......................",
 "...............                                   ......................",
 "...............                                   ......................",
-"...............  ..............................   ......................",
-"..............   ..............................   ......................",
+"...............  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ......................",
+"..............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ......................",
 ".............                                      .....................",
 "...........                                          ...................",
 "..........                                            ..................",
-".........   ........................................   .................",
-".........   ........................................   .................",
+".........   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .................",
+".........   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .................",
 ".........                                              .................",
 ".........                                              .................",
 ".........                                              .................",
diff --git a/pixmaps/cvdl33.xpm b/pixmaps/cvdl33.xpm
index f7d3786..0d1a7fa 100644
--- a/pixmaps/cvdl33.xpm
+++ b/pixmaps/cvdl33.xpm
@@ -1,37 +1,38 @@
 /* XPM */
 static char *cvdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
 "................... ... .........",
 "..................   .  .........",
 "...............         .........",
-".............  ...   ..  ........",
-"...........  ..       .. ........",
-"........... ..        . . .......",
-".......... ..          .. .......",
-".........  .               ......",
-".........  .     .         ......",
-"......... ..                .....",
-"........  .                 .....",
-"........  .       ..      .. ....",
-"........ ..       ....     . ....",
-"........ ..        ....      ....",
-".......  .          ....    .....",
-".......  .           ...  .......",
-"....... ..            ...........",
-"....... ..            ...........",
-"....... ..             ..........",
+".............  XXX   XX  ........",
+"...........  XX       XX ........",
+"........... XX        X X .......",
+".......... XX          XX .......",
+".........  X               ......",
+".........  X     X         ......",
+"......... XX                .....",
+"........  X                 .....",
+"........  X       ..      XX ....",
+"........ XX       ....     X ....",
+"........ XX        ....      ....",
+".......  X          ....    .....",
+".......  X           ...  .......",
+"....... XX            ...........",
+"....... XX            ...........",
+"....... XX             ..........",
 ".......                ..........",
 ".......                ..........",
-"........ ............. ..........",
+"........ XXXXXXXXXXXXX ..........",
 ".......                 .........",
 "......                   ........",
-".....  .................  .......",
+".....  XXXXXXXXXXXXXXXXX  .......",
 ".....                     .......",
 ".....                     .......",
 ".....     ...     ...     .......",
diff --git a/pixmaps/cvdl37.xpm b/pixmaps/cvdl37.xpm
index cbaea28..841c801 100644
--- a/pixmaps/cvdl37.xpm
+++ b/pixmaps/cvdl37.xpm
@@ -1,28 +1,29 @@
 /* XPM */
 static char *cvdl37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 "..................... .... ..........",
 "....................   ..  ..........",
 "....................   .   ..........",
 "................           ..........",
-"...............  ...   ..  ..........",
-"..............  .           .........",
-".............  .        ..  .........",
-"............  .           .  ........",
-"............ ..           .  ........",
+"...............  XXX   XX  ..........",
+"..............  X           .........",
+".............  X        XX  .........",
+"............  .           X  ........",
+"............ ..           X  ........",
 "...........  .                .......",
-"........... ..     .          .......",
+"........... ..     X          .......",
 "........... .                  ......",
 ".......... ..                  ......",
 ".......... ..       ..          .....",
-".......... .        ....     .. .....",
-"............         ....     . .....",
-"......... ..          ....  .   .....",
+".......... .        ....     XX .....",
+"............         ....     X .....",
+"......... ..          ....  X   .....",
 "......... ..          .....    ......",
 "......... ..           ..............",
 "......... ..            .............",
@@ -30,7 +31,7 @@ static char *cvdl37[] = {
 "......... ..              ...........",
 "......... .               ...........",
 ".........                 ...........",
-".......... .............. ...........",
+".......... XXXXXXXXXXXXXX ...........",
 ".........                  ..........",
 "........                    .........",
 ".....................................",
diff --git a/pixmaps/cvdl40.xpm b/pixmaps/cvdl40.xpm
index 58aadb1..2cdc541 100644
--- a/pixmaps/cvdl40.xpm
+++ b/pixmaps/cvdl40.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdl40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "........................................",
@@ -11,32 +12,32 @@ static char *cvdl40[] = {
 ".....................   ..  ............",
 ".....................   .   ............",
 "..................          ............",
-"................  ...   ..  ............",
-"............... ..           ...........",
-".............  ..        ..  ...........",
-"............  ..           .  ..........",
-"............ ..            .  ..........",
-"...........  .                 .........",
-"........... ..      .          .........",
-"........... .                   ........",
-".......... ..                   ........",
-".......... ..        ..          .......",
-".......... .         ....     .. .......",
-".......... .          ....     . .......",
-"......... ..           ....  .   .......",
-"......... ..            ....    ........",
-"......... ..             ...............",
-"......... ..              ..............",
-"......... ..               .............",
-"......... ..               .............",
-"......... ..                ............",
-"......... ..                ............",
-"......... ..                ............",
+"................  XXX   XX  ............",
+"............... XX           ...........",
+".............  XX        XX  ...........",
+"............  XX           X  ..........",
+"............ XX            X  ..........",
+"...........  X                 .........",
+"........... XX      X          .........",
+"........... X                   ........",
+".......... XX                   ........",
+".......... XX        ..          .......",
+".......... X         ....     XX .......",
+".......... X          ....     X .......",
+"......... XX           ....  X   .......",
+"......... XX            ....    ........",
+"......... XX             ...............",
+"......... XX              ..............",
+"......... XX               .............",
+"......... XX               .............",
+"......... XX                ............",
+"......... XX                ............",
+"......... XX                ............",
 ".........                  .............",
-"..........  ..............  ............",
+"..........  XXXXXXXXXXXXXX  ............",
 ".........                    ...........",
 "........                      ..........",
-"....... ...................... .........",
+"....... XXXXXXXXXXXXXXXXXXXXXX .........",
 "......                          ........",
 "......                          ........",
 "......                          ........",
diff --git a/pixmaps/cvdl45.xpm b/pixmaps/cvdl45.xpm
index 9cdfc12..63a169f 100644
--- a/pixmaps/cvdl45.xpm
+++ b/pixmaps/cvdl45.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdl45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
@@ -11,23 +12,23 @@ static char *cvdl45[] = {
 ".........................  ...   ............",
 "........................    .    ............",
 ".....................            ............",
-"...................  ...    ..   ............",
-".................  ..         .   ...........",
-"................  .               ...........",
-"...............  .            .    ..........",
-"..............  .             ..   ..........",
-".............. ..              ..  ..........",
+"...................  XXX    XX   ............",
+".................  XX         X   ...........",
+"................  X               ...........",
+"...............  X            X    ..........",
+"..............  .             XX   ..........",
+".............. ..              XX  ..........",
 ".............  .                    .........",
 "............. ..                    .........",
 "............  .                     .........",
-"............ ..        .             ........",
+"............ ..        X             ........",
 "............ .                       ........",
 "..............          .             .......",
 "........... ..          ..             ......",
-"........... ..          ....        .. ......",
-"........... .            .....       . ......",
+"........... ..          ....        XX ......",
+"........... .            .....       X ......",
 ".............            ......        ......",
-".............             ......  .    ......",
+".............             ......  X    ......",
 ".......... ..              .....      .......",
 ".......... ..              ...... ...........",
 ".......... ..               .................",
@@ -37,11 +38,11 @@ static char *cvdl45[] = {
 ".......... ..                  ..............",
 ".......... .                   ..............",
 "..........                     ..............",
-".......... ................... ..............",
+".......... XXXXXXXXXXXXXXXXXXX ..............",
 ".........                       .............",
 "........                         ............",
 ".......                           ...........",
-"......  .........................  ..........",
+"......  XXXXXXXXXXXXXXXXXXXXXXXXX  ..........",
 "......                             ..........",
 "......                             ..........",
 "......                             ..........",
diff --git a/pixmaps/cvdl49.xpm b/pixmaps/cvdl49.xpm
index c978373..0b17004 100644
--- a/pixmaps/cvdl49.xpm
+++ b/pixmaps/cvdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 "...........................  ...... .............",
@@ -11,24 +12,24 @@ static char *cvdl49[] = {
 "..........................    ..    .............",
 "..........................    .     .............",
 ".....................              ..............",
-"...................   ...     ...   .............",
-"..................  ..               ............",
-".................  .                 ............",
-"................  .             ..    ...........",
-"...............  .               ..   ...........",
-"............... ..                ..  ...........",
-".............. ..                  .  ...........",
+"...................   XXX     XXX   .............",
+"..................  XX               ............",
+".................  X                 ............",
+"................  X             XX    ...........",
+"...............  .               XX   ...........",
+"............... ..                XX  ...........",
+".............. ..                  X  ...........",
 ".............. ..                      ..........",
 "............. ..                       ..........",
 "............. ..                        .........",
-"............  .          .               ........",
+"............  .          X               ........",
 "............ ..                          ........",
 "............ ..           .               .......",
 "............ .            ..              .......",
-"........... ..            ....         ..  ......",
-"........... ..             .....       ..  ......",
-"........... ..             ......       .  ......",
-"........... .               ......   .     ......",
+"........... ..            ....         XX  ......",
+"........... ..             .....       XX  ......",
+"........... ..             ......       X  ......",
+"........... .               ......   X     ......",
 "........... .               .......       .......",
 ".............                .......     ........",
 ".......... ..                 ....... ...........",
@@ -41,11 +42,11 @@ static char *cvdl49[] = {
 "........... ..................... ...............",
 "...........                       ...............",
 "...........                       ...............",
-"........... ..................... ...............",
+"........... XXXXXXXXXXXXXXXXXXXXX ...............",
 "..........                         ..............",
 ".........                           .............",
 "........                             ............",
-"....... ............................. ...........",
+"....... XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...........",
 ".......                               ...........",
 ".......                               ...........",
 ".......                               ...........",
diff --git a/pixmaps/cvdl54.xpm b/pixmaps/cvdl54.xpm
index 3a14562..822878e 100644
--- a/pixmaps/cvdl54.xpm
+++ b/pixmaps/cvdl54.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdl54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "......................................................",
@@ -12,43 +13,43 @@ static char *cvdl54[] = {
 ".............................    ..    ...............",
 ".............................    .     ...............",
 "........................              ................",
-"......................   ...     ...   ...............",
-"....................   ....             ..............",
-"...................  ...                ..............",
-"..................  ...            ..    .............",
-".................  ...              ..   .............",
-".................  ..                ..  .............",
-"................  ...                 .  .............",
-"................  ..                      ............",
-"................ ...                      ............",
-"...............  ..        ..              ...........",
-"...............  ..         .               ..........",
-"............... ..                          ..........",
-"..............  ..           .               .........",
-"..............  ..           ..              .........",
-".............. ..            ....         ..  ........",
-".............  ..             .....       ..  ........",
-".............  ..             ......       .  ........",
-".............  ..              ......   .     ........",
-".............  ..              .......  ..   .........",
-".............  .                .......     ..........",
-"............. ..                 ....... .............",
-"............  ..                  ....................",
-"............  ..                   ...................",
-"............  ..                   ...................",
-"............  ..                    ..................",
-"............  ..                    ..................",
-"............  ..                     .................",
-"............  ..                     .................",
+"......................   XXX     XXX   ...............",
+"....................   XXXX             ..............",
+"...................  XXX                ..............",
+"..................  XXX            XX    .............",
+".................  XXX              XX   .............",
+".................  XX                XX  .............",
+"................  XXX                 X  .............",
+"................  XX                      ............",
+"................ XXX                      ............",
+"...............  XX        XX              ...........",
+"...............  XX         X               ..........",
+"............... XX                          ..........",
+"..............  XX           .               .........",
+"..............  XX           ..              .........",
+".............. XX            ....         XX  ........",
+".............  XX             .....       XX  ........",
+".............  XX             ......       X  ........",
+".............  XX              ......   X     ........",
+".............  XX              .......  XX   .........",
+".............  X                .......     ..........",
+"............. XX                 ....... .............",
+"............  XX                  ....................",
+"............  XX                   ...................",
+"............  XX                   ...................",
+"............  XX                    ..................",
+"............  XX                    ..................",
+"............  XX                     .................",
+"............  XX                     .................",
 "............                         .................",
 "............                         .................",
-".............  ....................  .................",
-"............   ....................   ................",
+".............  XXXXXXXXXXXXXXXXXXXX  .................",
+"............   XXXXXXXXXXXXXXXXXXXX   ................",
 "...........                            ...............",
 "..........                              ..............",
 ".........                                .............",
-"........   ............................   ............",
-"........   ............................   ............",
+"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXX   ............",
+"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXX   ............",
 "........                                  ............",
 "........                                  ............",
 "........                                  ............",
diff --git a/pixmaps/cvdl58.xpm b/pixmaps/cvdl58.xpm
index 96ab5b5..c422585 100644
--- a/pixmaps/cvdl58.xpm
+++ b/pixmaps/cvdl58.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdl58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "................................. ........ ...............",
@@ -11,48 +12,48 @@ static char *cvdl58[] = {
 "...............................    ....    ...............",
 "...............................     ..     ...............",
 "...........................                ...............",
-"........................    ...     ...   ................",
-".......................  .....      ....   ...............",
-"......................  ...                 ..............",
-".....................  ..                    .............",
-"....................  .                      .............",
-"...................  .                 .      ............",
-"..................  ..                 ...    ............",
-".................. ..                   ..    ............",
-"................. ...                    ..   ............",
-"................  ..                           ...........",
-"................ ...                           ...........",
-"...............  ..         .                  ...........",
-"............... ...         ..                  ..........",
-"............... ..           .                  ..........",
-"..............  ..                               .........",
-".............. ..                                 ........",
-".............. ..             .                   ........",
-".............  ..             ..                   .......",
-".............  ..             ....                 .......",
-"............. ..               .....           ..   ......",
-"............  ..               .......         ..   ......",
-"............  ..                .......             ......",
-"............  ..                 .......            ......",
-"............  ..                 ........    ..     ......",
-"............  ..                  ........    ..   .......",
-"............  ..                   ........       ........",
-"...........  ...                    .......  .............",
-"...........  ..                      .....................",
-"...........  ..                       ....................",
-"...........  ..                        ...................",
-"...........  ..                        ...................",
-"...........  ..                        ...................",
-"...........  ..                         ..................",
+"........................    XXX     XXX   ................",
+".......................  XXXXX      XXXX   ...............",
+"......................  XXX                 ..............",
+".....................  XX                    .............",
+"....................  X                      .............",
+"...................  X                 X      ............",
+"..................  XX                 XXX    ............",
+".................. XX                   XX    ............",
+"................. XXX                    XX   ............",
+"................  XX                           ...........",
+"................ XXX                           ...........",
+"...............  XX         X                  ...........",
+"............... XXX         XX                  ..........",
+"............... XX           X                  ..........",
+"..............  XX                               .........",
+".............. XX                                 ........",
+".............. XX             .                   ........",
+".............  XX             ..                   .......",
+".............  XX             ....                 .......",
+"............. XX               .....           XX   ......",
+"............  XX               .......         XX   ......",
+"............  XX                .......             ......",
+"............  XX                 .......            ......",
+"............  XX                 ........    XX     ......",
+"............  XX                  ........    XX   .......",
+"............  XX                   ........       ........",
+"...........  XXX                    .......  .............",
+"...........  XX                      .....................",
+"...........  XX                       ....................",
+"...........  XX                        ...................",
+"...........  XX                        ...................",
+"...........  XX                        ...................",
+"...........  XX                         ..................",
 "...........                             ..................",
 "...........                             ..................",
-"...........    ........................  .................",
-"............   ........................  .................",
+"...........    XXXXXXXXXXXXXXXXXXXXXXXX  .................",
+"............   XXXXXXXXXXXXXXXXXXXXXXXX  .................",
 "...........                               ................",
 ".........                                  ...............",
 "........                                    ..............",
-".......   ................................   .............",
-".......   ................................   .............",
+".......   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
+".......   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
 ".......                                      .............",
 ".......                                      .............",
 ".......                                      .............",
diff --git a/pixmaps/cvdl64.xpm b/pixmaps/cvdl64.xpm
index 7d2c712..9592cce 100644
--- a/pixmaps/cvdl64.xpm
+++ b/pixmaps/cvdl64.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdl64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
@@ -13,49 +14,49 @@ static char *cvdl64[] = {
 ".................................    ....    ...................",
 ".................................     ..     ...................",
 ".............................                ...................",
-"..........................    ...     ...   ....................",
-".........................  .....      ....   ...................",
-"........................  ...                 ..................",
-".......................  ..                    .................",
-"......................  .                      .................",
-".....................  .                 .      ................",
-"....................  ..                 ...    ................",
-".................... ..                   ..    ................",
-"................... ...                    ..   ................",
-"..................  ..                           ...............",
-".................. ...                           ...............",
-".................  ..         .                  ...............",
-"................. ...         ..                  ..............",
-"................. ..           .                  ..............",
-"................  ..                               .............",
-"................ ..                                 ............",
-"................ ..             .                   ............",
-"...............  ..             ..                   ...........",
-"...............  ..             ....                 ...........",
-"...............  .              ......           ..   ..........",
-"............... ..               .......         ..   ..........",
-"..............  ..               ........             ..........",
-"..............  ..                ........            ..........",
-"..............  ..                 ........    ..     ..........",
-"..............  ..                 .........    ..   ...........",
-"..............  ..                  .........       ............",
-"..............  ..                   ........  .................",
-".............  ...                    ..........................",
-".............  ..                      .........................",
-".............  ..                       ........................",
-".............  ..                        .......................",
-".............  ..                        .......................",
-".............  ..                        .......................",
-".............  ..                         ......................",
+"..........................    XXX     XXX   ....................",
+".........................  XXXXX      XXXX   ...................",
+"........................  XXX                 ..................",
+".......................  XX                    .................",
+"......................  X                      .................",
+".....................  X                 X      ................",
+"....................  XX                 XXX    ................",
+".................... XX                   XX    ................",
+"................... XXX                    XX   ................",
+"..................  XX                           ...............",
+".................. XXX                           ...............",
+".................  XX         X                  ...............",
+"................. XXX         XX                  ..............",
+"................. XX           X                  ..............",
+"................  XX                               .............",
+"................ XX                                 ............",
+"................ XX             .                   ............",
+"...............  XX             ..                   ...........",
+"...............  XX             ....                 ...........",
+"...............  X              ......           XX   ..........",
+"............... XX               .......         XX   ..........",
+"..............  XX               ........             ..........",
+"..............  XX                ........            ..........",
+"..............  XX                 ........    XX     ..........",
+"..............  XX                 .........    XX   ...........",
+"..............  XX                  .........       ............",
+"..............  XX                   ........  .................",
+".............  XXX                    ..........................",
+".............  XX                      .........................",
+".............  XX                       ........................",
+".............  XX                        .......................",
+".............  XX                        .......................",
+".............  XX                        .......................",
+".............  XX                         ......................",
 ".............                             ......................",
 "..............                            ......................",
-"..............   ......................   ......................",
-".............   ........................   .....................",
+"..............   XXXXXXXXXXXXXXXXXXXXXX   ......................",
+".............   XXXXXXXXXXXXXXXXXXXXXXXX   .....................",
 "............                                ....................",
 "..........                                    ..................",
 ".........                                      .................",
-"........   ..................................   ................",
-"........  ....................................  ................",
+"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ................",
+"........  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ................",
 "........                                        ................",
 "........                                        ................",
 "........                                        ................",
diff --git a/pixmaps/cvdl72.xpm b/pixmaps/cvdl72.xpm
index 984d063..a74c665 100644
--- a/pixmaps/cvdl72.xpm
+++ b/pixmaps/cvdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *cvdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -15,53 +16,53 @@ static char *cvdl72[] = {
 "......................................      ..      ....................",
 "..................................                  ....................",
 "...............................                     ....................",
-".............................      ....     ..      ....................",
-"...........................      .....      .....    ...................",
-"..........................     .....          ...     ..................",
-".........................     ....                     .................",
-"........................    ....                       .................",
-".......................    ....                ....     ................",
-"......................    ....                  ....    ................",
-"......................   ....                   ....    ................",
-".....................    ...                     ...    ................",
-".....................   ....                       .     ...............",
-"....................   ....                              ...............",
-"....................   ....                              ...............",
-"...................   ....          .                     ..............",
-"...................   ....          .                     ..............",
-"...................  ....           ..                     .............",
-"..................   ....            .                      ............",
-"..................   ....                                    ...........",
-"..................  ....                                     ...........",
-".................   ....              .                       ..........",
-".................   ....              ...                     ..........",
-".................  ....               .....              ..    .........",
-".................  ....                .....             ...   .........",
-"................   ....                .......           ...   .........",
-"................   ....                 .......           ..   .........",
-"................  .....                 ........     ..        .........",
-"................  ....                   ........     .        .........",
-"................  ....                    ........    ..       .........",
-"................  ....                     ........           ..........",
-"................  ....                      .......         ............",
-"...............   ....                       .......   .................",
-"...............   ....                        ..........................",
-"...............   ....                         .........................",
-"...............   ....                         .........................",
-"...............   ....                          ........................",
-"...............  .....                           .......................",
-"...............  .....                           .......................",
-"...............  ....                             ......................",
-"...............  ....                             ......................",
+".............................      XXXX     XX      ....................",
+"...........................      XXXXX      XXXXX    ...................",
+"..........................     XXXXX          XXX     ..................",
+".........................     XXXX                     .................",
+"........................    XXXX                       .................",
+".......................    XXXX                XXXX     ................",
+"......................    XXXX                  XXXX    ................",
+"......................   XXXX                   XXXX    ................",
+".....................    XXX                     XXX    ................",
+".....................   XXXX                       X     ...............",
+"....................   XXXX                              ...............",
+"....................   XXXX                              ...............",
+"...................   XXXX          X                     ..............",
+"...................   XXXX          X                     ..............",
+"...................  XXXX           XX                     .............",
+"..................   XXXX            X                      ............",
+"..................   XXXX                                    ...........",
+"..................  XXXX                                     ...........",
+".................   XXXX              .                       ..........",
+".................   XXXX              ...                     ..........",
+".................  XXXX               .....              XX    .........",
+".................  XXXX                .....             XXX   .........",
+"................   XXXX                .......           XXX   .........",
+"................   XXXX                 .......           XX   .........",
+"................  XXXXX                 ........     XX        .........",
+"................  XXXX                   ........     X        .........",
+"................  XXXX                    ........    XX       .........",
+"................  XXXX                     ........           ..........",
+"................  XXXX                      .......         ............",
+"...............   XXXX                       .......   .................",
+"...............   XXXX                        ..........................",
+"...............   XXXX                         .........................",
+"...............   XXXX                         .........................",
+"...............   XXXX                          ........................",
+"...............  XXXXX                           .......................",
+"...............  XXXXX                           .......................",
+"...............  XXXX                             ......................",
+"...............  XXXX                             ......................",
 "...............                                   ......................",
 "...............                                   ......................",
-"...............  ..............................   ......................",
-"..............   ..............................   ......................",
+"...............  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ......................",
+"..............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ......................",
 ".............                                      .....................",
 "...........                                          ...................",
 "..........                                            ..................",
-".........   ........................................   .................",
-".........   ........................................   .................",
+".........   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .................",
+".........   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .................",
 ".........                                              .................",
 ".........                                              .................",
 ".........                                              .................",
diff --git a/pixmaps/dkdd33.xpm b/pixmaps/dkdd33.xpm
index d78eb79..dc67d69 100644
--- a/pixmaps/dkdd33.xpm
+++ b/pixmaps/dkdd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *dkdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 "................ ................",
@@ -12,26 +13,26 @@ static char *dkdd33[] = {
 ".............       .............",
 "............         ............",
 "...........           ...........",
-".......... . ....... . ..........",
-"......     . .     . .     ......",
-"......     ...     ...     ......",
+".......... X XXXXXXX X ..........",
+"......     X X     X X     ......",
+"......     XXX     XXX     ......",
 "......                     ......",
 "......                     ......",
-"......  .................  ......",
+"......  XXXXXXXXXXXXXXXXX  ......",
 ".......                   .......",
-"........  .............  ........",
+"........  XXXXXXXXXXXXX  ........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
-"......... ............. .........",
+"......... XXXXXXXXXXXXX .........",
 "........                 ........",
-"....... ................. .......",
+"....... XXXXXXXXXXXXXXXXX .......",
 ".......                   .......",
 ".......                   .......",
-".....   .................   .....",
+".....   XXXXXXXXXXXXXXXXX   .....",
 ".....                       .....",
 ".....                       .....",
 ".................................",
diff --git a/pixmaps/dkdd49.xpm b/pixmaps/dkdd49.xpm
index 0a467fb..6a5df6c 100644
--- a/pixmaps/dkdd49.xpm
+++ b/pixmaps/dkdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *dkdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -14,18 +15,18 @@ static char *dkdd49[] = {
 ".................               .................",
 "...............                   ...............",
 "..............                     ..............",
-".........      ..   .........   ..      .........",
-".........       .   .       .   .       .........",
-".........       .   .       .   .       .........",
-".........       .   .       .   .       .........",
-".........       .....       .....       .........",
+".........      XX   XXXXXXXXX   XX      .........",
+".........       X   X       X   X       .........",
+".........       X   X       X   X       .........",
+".........       X   X       X   X       .........",
+".........       XXXXX       XXXXX       .........",
 ".........                               .........",
 ".........                               .........",
-".........  ...........................  .........",
+".........  XXXXXXXXXXXXXXXXXXXXXXXXXXX  .........",
 "..........                             ..........",
 "...........                           ...........",
 "............                         ............",
-"............. ..................... .............",
+"............. XXXXXXXXXXXXXXXXXXXXX .............",
 ".............                       .............",
 ".............                       .............",
 ".............                       .............",
@@ -36,16 +37,16 @@ static char *dkdd49[] = {
 ".............                       .............",
 ".............                       .............",
 ".............                       .............",
-"............. ..................... .............",
+"............. XXXXXXXXXXXXXXXXXXXXX .............",
 "............                         ............",
 "............                          ...........",
 "...........                           ...........",
-"..........  .........................  ..........",
+"..........  XXXXXXXXXXXXXXXXXXXXXXXXX  ..........",
 "..........                             ..........",
 "..........                             ..........",
 "..........                             ..........",
 "..........                             ..........",
-".......    ...........................    .......",
+".......    XXXXXXXXXXXXXXXXXXXXXXXXXXX    .......",
 ".......                                   .......",
 ".......                                   .......",
 ".......                                   .......",
diff --git a/pixmaps/dkdd72.xpm b/pixmaps/dkdd72.xpm
index d6edb72..eab91da 100644
--- a/pixmaps/dkdd72.xpm
+++ b/pixmaps/dkdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *dkdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -17,24 +18,24 @@ static char *dkdd72[] = {
 "........................                        ........................",
 "......................                            ......................",
 "....................                                ....................",
-"...................   ....   ..............   ....   ...................",
-".............        .....   ..............   .....        .............",
-".............           ..   ..          ..   ..           .............",
-".............           ..   ..          ..   ..           .............",
-".............           ..   ..          ..   ..           .............",
-".............           .......          .......           .............",
-".............           .......          .......           .............",
+"...................   XXXX   XXXXXXXXXXXXXX   XXXX   ...................",
+".............        XXXXX   XXXXXXXXXXXXXX   XXXXX        .............",
+".............           XX   XX          XX   XX           .............",
+".............           XX   XX          XX   XX           .............",
+".............           XX   XX          XX   XX           .............",
+".............           XXXXXXX          XXXXXXX           .............",
+".............           XXXXXXX          XXXXXXX           .............",
 ".............                                              .............",
 ".............                                              .............",
 ".............                                              .............",
 ".............                                              .............",
-".............   ........................................   .............",
-".............   ........................................   .............",
+".............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
+".............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
 "..............                                            ..............",
 "...............                                          ...............",
 ".................                                      .................",
-"..................   ..............................   ..................",
-"...................  ..............................  ...................",
+"..................   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..................",
+"...................  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ...................",
 "...................                                  ...................",
 "...................                                  ...................",
 "...................                                  ...................",
@@ -52,20 +53,20 @@ static char *dkdd72[] = {
 "...................                                  ...................",
 "...................                                  ...................",
 "...................                                  ...................",
-"...................  ..............................  ...................",
-"..................   ..............................   ..................",
+"...................  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ...................",
+"..................   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..................",
 ".................                                      .................",
 "................                                        ................",
 "...............                                          ...............",
-"..............   ......................................   ..............",
-"..............   ......................................   ..............",
+"..............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..............",
+"..............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..............",
 "..............                                            ..............",
 "..............                                            ..............",
 "..............                                            ..............",
 "..............                                            ..............",
 "..............                                            ..............",
-".........       ........................................       .........",
-".........       ........................................       .........",
+".........       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       .........",
+".........       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       .........",
 ".........                                                      .........",
 ".........                                                      .........",
 ".........                                                      .........",
diff --git a/pixmaps/dkdl33.xpm b/pixmaps/dkdl33.xpm
index f3ea94f..efc5e5c 100644
--- a/pixmaps/dkdl33.xpm
+++ b/pixmaps/dkdl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *dkdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 "................ ................",
@@ -12,26 +13,26 @@ static char *dkdl33[] = {
 ".............       .............",
 "............         ............",
 "...........           ...........",
-".......... . ....... . ..........",
-"......     . .     . .     ......",
-"......     ...     ...     ......",
+".......... X XXXXXXX X ..........",
+"......     X X     X X     ......",
+"......     XXX     XXX     ......",
 "......                     ......",
 "......                     ......",
-"......  .................  ......",
+"......  XXXXXXXXXXXXXXXXX  ......",
 ".......                   .......",
-"........  .............  ........",
+"........  XXXXXXXXXXXXX  ........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
 ".........               .........",
-"......... ............. .........",
+"......... XXXXXXXXXXXXX .........",
 "........                 ........",
-"....... ................. .......",
+"....... XXXXXXXXXXXXXXXXX .......",
 ".......                   .......",
 ".......                   .......",
-".....   .................   .....",
+".....   XXXXXXXXXXXXXXXXX   .....",
 ".....                       .....",
 ".....                       .....",
 ".................................",
diff --git a/pixmaps/dkdl49.xpm b/pixmaps/dkdl49.xpm
index 68b8c45..ca446e6 100644
--- a/pixmaps/dkdl49.xpm
+++ b/pixmaps/dkdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *dkdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -14,18 +15,18 @@ static char *dkdl49[] = {
 ".................               .................",
 "...............                   ...............",
 "..............                     ..............",
-".........      ..   .........   ..      .........",
-".........       .   .       .   .       .........",
-".........       .   .       .   .       .........",
-".........       .   .       .   .       .........",
-".........       .....       .....       .........",
+".........      XX   XXXXXXXXX   XX      .........",
+".........       X   X       X   X       .........",
+".........       X   X       X   X       .........",
+".........       X   X       X   X       .........",
+".........       XXXXX       XXXXX       .........",
 ".........                               .........",
 ".........                               .........",
-".........  ...........................  .........",
+".........  XXXXXXXXXXXXXXXXXXXXXXXXXXX  .........",
 "..........                             ..........",
 "...........                           ...........",
 "............                         ............",
-"............. ..................... .............",
+"............. XXXXXXXXXXXXXXXXXXXXX .............",
 ".............                       .............",
 ".............                       .............",
 ".............                       .............",
@@ -36,16 +37,16 @@ static char *dkdl49[] = {
 ".............                       .............",
 ".............                       .............",
 ".............                       .............",
-"............. ..................... .............",
+"............. XXXXXXXXXXXXXXXXXXXXX .............",
 "............                         ............",
 "............                          ...........",
 "...........                           ...........",
-"..........  .........................  ..........",
+"..........  XXXXXXXXXXXXXXXXXXXXXXXXX  ..........",
 "..........                             ..........",
 "..........                             ..........",
 "..........                             ..........",
 "..........                             ..........",
-".......    ...........................    .......",
+".......    XXXXXXXXXXXXXXXXXXXXXXXXXXX    .......",
 ".......                                   .......",
 ".......                                   .......",
 ".......                                   .......",
diff --git a/pixmaps/dkdl72.xpm b/pixmaps/dkdl72.xpm
index e381da4..e687740 100644
--- a/pixmaps/dkdl72.xpm
+++ b/pixmaps/dkdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *dkdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -17,24 +18,24 @@ static char *dkdl72[] = {
 "........................                        ........................",
 "......................                            ......................",
 "....................                                ....................",
-"...................   ....   ..............   ....   ...................",
-".............        .....   ..............   .....        .............",
-".............           ..   ..          ..   ..           .............",
-".............           ..   ..          ..   ..           .............",
-".............           ..   ..          ..   ..           .............",
-".............           .......          .......           .............",
-".............           .......          .......           .............",
+"...................   XXXX   XXXXXXXXXXXXXX   XXXX   ...................",
+".............        XXXXX   XXXXXXXXXXXXXX   XXXXX        .............",
+".............           XX   XX          XX   XX           .............",
+".............           XX   XX          XX   XX           .............",
+".............           XX   XX          XX   XX           .............",
+".............           XXXXXXX          XXXXXXX           .............",
+".............           XXXXXXX          XXXXXXX           .............",
 ".............                                              .............",
 ".............                                              .............",
 ".............                                              .............",
 ".............                                              .............",
-".............   ........................................   .............",
-".............   ........................................   .............",
+".............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
+".............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .............",
 "..............                                            ..............",
 "...............                                          ...............",
 ".................                                      .................",
-"..................   ..............................   ..................",
-"...................  ..............................  ...................",
+"..................   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..................",
+"...................  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ...................",
 "...................                                  ...................",
 "...................                                  ...................",
 "...................                                  ...................",
@@ -52,20 +53,20 @@ static char *dkdl72[] = {
 "...................                                  ...................",
 "...................                                  ...................",
 "...................                                  ...................",
-"...................  ..............................  ...................",
-"..................   ..............................   ..................",
+"...................  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ...................",
+"..................   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..................",
 ".................                                      .................",
 "................                                        ................",
 "...............                                          ...............",
-"..............   ......................................   ..............",
-"..............   ......................................   ..............",
+"..............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..............",
+"..............   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ..............",
 "..............                                            ..............",
 "..............                                            ..............",
 "..............                                            ..............",
 "..............                                            ..............",
 "..............                                            ..............",
-".........       ........................................       .........",
-".........       ........................................       .........",
+".........       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       .........",
+".........       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       .........",
 ".........                                                      .........",
 ".........                                                      .........",
 ".........                                                      .........",
diff --git a/pixmaps/edd33.xpm b/pixmaps/edd33.xpm
index f2acddf..ceb88c4 100644
--- a/pixmaps/edd33.xpm
+++ b/pixmaps/edd33.xpm
@@ -1,39 +1,40 @@
 /* XPM */
 static char *edd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 "................      ...........",
 ".............            ........",
-"............ .             ......",
-"...........  .              .....",
-"..........  .                 ...",
-"..........  .            ...   ..",
-"..........  .           .       .",
-"..........  .                   .",
-"..........  .                   .",
-"..........  .                   .",
+"............ X             ......",
+"...........  X              .....",
+"..........  X                 ...",
+"..........  X            XXX   ..",
+"..........  X           X       .",
+"..........  X                   .",
+"..........  X                   .",
+"..........  X                   .",
 "..........                      .",
 "..........                     ..",
-".........      ..       .      ..",
-"......... ..            .      ..",
-"..    ...               .      ..",
-"..    ... ..                  ...",
+".........      XX       X      ..",
+"......... XX            X      ..",
+"..    ...               X      ..",
+"..    ... XX                  ...",
 "..   ....               .     ...",
-".   ..... .. .         ...    ...",
-".   .....    .  .   .......   ...",
-".   .... .     .   ........   ...",
-".   .... .   ..  ..........   ...",
-".   ... ..   .. ............  ...",
-".   .  ..   ..  ............ ....",
-".    ... . ..   .................",
-".     .   ..    .................",
-"       ....     .................",
-"..  ....       ..................",
-".       ..     ..................",
+".   ..... XX X         ...    ...",
+".   .....    X  X   .......   ...",
+".   .... X     X   ........   ...",
+".   .... X   XX  ..........   ...",
+".   ... XX   XX ............  ...",
+".   .  XX   XX  ............ ....",
+".    XXX X XX   .................",
+".     X   XX    .................",
+"       XXXX     .................",
+"..  XXXX       ..................",
+".       XX     ..................",
 "....           ..................",
 ".....         ...................",
 "......       ....................",
diff --git a/pixmaps/edd49.xpm b/pixmaps/edd49.xpm
index 10bc839..b782e97 100644
--- a/pixmaps/edd49.xpm
+++ b/pixmaps/edd49.xpm
@@ -1,52 +1,53 @@
 /* XPM */
 static char *edd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
 "..........................        ...............",
 "....................                  ...........",
-"..................   ..                  ........",
-".................   .                     .......",
-"................   .                      .......",
-"................  .                      .    ...",
-"................  .                   ...     ...",
-"................  .                 ..        ...",
-"................  .                 .          ..",
-"................  .                            ..",
-"................  .                            ..",
-"................  .                            ..",
-"................  .                            ..",
+"..................   XX                  ........",
+".................   X                     .......",
+"................   X                      .......",
+"................  X                      X    ...",
+"................  X                   XXX     ...",
+"................  X                 XX        ...",
+"................  X                 X          ..",
+"................  X                            ..",
+"................  X                            ..",
+"................  X                            ..",
+"................  X                            ..",
 "................                               ..",
 "................                               ..",
 "................                               ..",
 "...............                               ...",
-"...............        ..                     ...",
-"..............         ..                     ...",
-".............. ...                            ...",
+"...............        XX                     ...",
+"..............         XX                     ...",
+".............. XXX                            ...",
 ".....   ......                                ...",
 "....     .....                       .       ....",
-"....     ..... ...                   ..      ....",
+"....     ..... XXX                   ..      ....",
 "....    ......                      ...      ....",
 "....    ......                    .....      ....",
-"...    ........ ..  .            .......     ....",
-"...    .......     .           .........     ....",
-"...    ...... .    .  .      ...........     ....",
-"...    ...... .     ..    ...............    ....",
-"...    ..... ..    .     ................    ....",
-"...    ..... ..    ..   ..................   ....",
-"...    .... .. .  ..   ...................   ....",
-"...    ... .. .. ...   ....................  ....",
-"...     . .. ... ..    ..........................",
-"....     .. ... ..     ..........................",
-"....     . ... ..      ..........................",
-"... .     ..  ..       ..........................",
-".         . ... .      ..........................",
-"......   . ..  ..      ..........................",
-"...... ..... ...       ..........................",
+"...    ........ XX  X            .......     ....",
+"...    .......     X           .........     ....",
+"...    ...... X    X  X      ...........     ....",
+"...    ...... X     XX    ...............    ....",
+"...    ..... XX    X     ................    ....",
+"...    ..... XX    XX   ..................   ....",
+"...    .... XX X  XX   ...................   ....",
+"...    ... XX XX XXX   ....................  ....",
+"...     . XX XXX XX    ..........................",
+"....     XX XXX XX     ..........................",
+"....     X XXX XX      ..........................",
+"... X     XX  XX       ..........................",
+".         X XXX X      ..........................",
+"......   X XX  XX      ..........................",
+"...... XXXXX XXX       ..........................",
 ".......               ...........................",
 "........             ............................",
 ".........           .............................",
diff --git a/pixmaps/edd72.xpm b/pixmaps/edd72.xpm
index 51e42cb..9395b9e 100644
--- a/pixmaps/edd72.xpm
+++ b/pixmaps/edd72.xpm
@@ -1,73 +1,74 @@
 /* XPM */
 static char *edd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
 "......................................            ......................",
 "..............................                       ...................",
 "...........................                             ................",
-"..........................    ..                          ..............",
-".........................    ..                              ...........",
-"........................    ...                               ..........",
-".......................    ...                                 .........",
-"......................     ..                                      .....",
-"......................    ...                              .....    ....",
-"......................    ..                              ......     ...",
-"......................    ..                           .....         ...",
-"......................    ..                         .....           ...",
-"......................    ..                         ...             ...",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
+"..........................    XX                          ..............",
+".........................    XX                              ...........",
+"........................    XXX                               ..........",
+".......................    XXX                                 .........",
+"......................     XX                                      .....",
+"......................    XXX                              XXXXX    ....",
+"......................    XX                              XXXXXX     ...",
+"......................    XX                           XXXXX         ...",
+"......................    XX                         XXXXX           ...",
+"......................    XX                         XXX             ...",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
 "......................                                                ..",
 "......................                                                ..",
 "......................                                                ..",
 "......................                                                ..",
 ".....................                                                 ..",
-"....................             ...                                 ...",
-"....................             ...                                 ...",
-"....................             ...                   ..            ...",
-"....................                                   ...           ...",
-"....................  ....                              ..           ...",
-"....................  ....                              ..          ....",
-".....   ............                                    .           ....",
+"....................             XXX                                 ...",
+"....................             XXX                                 ...",
+"....................             XXX                   XX            ...",
+"....................                                   XXX           ...",
+"....................  XXXX                              XX           ...",
+"....................  XXXX                              XX          ....",
+".....   ............                                    X           ....",
 ".....     ..........                                                ....",
-"....       .........  ....                              .           ....",
-"....        ........  ....                             ..           ....",
+"....       .........  XXXX                              .           ....",
+"....        ........  XXXX                             ..           ....",
 "....       .........                                  ...           ....",
 "...       ..........                                 .....          ....",
-"...      ...........  ...                          .......         .....",
-"...      ...........  ...                        .........         .....",
+"...      ...........  XXX                          .......         .....",
+"...      ...........  XXX                        .........         .....",
 "...      ............                           ...........        .....",
-"...      ...........        ..                .............        .....",
-"..       ..........        ..              ................        .....",
-"..       .........  .     ..             ...................       .....",
-"..       ......... ..      ...   ..     ....................       .....",
-"..       ........  ..        .. ..    ......................       .....",
-"..       ........ ....     .  ...   .........................      .....",
-"..       .......  ...      ..  .   ...........................     .....",
-"..       ......  ...  .   ....     ............................    .....",
-"..       .....  ...  ..   ...     ..............................   .....",
-"..       ....  ...  ...  ...      ............................... ......",
-"..        ..  ...  ...  ...       ......................................",
-"..        .  ...  ...  ...       .......................................",
-"...         ...  ...  ...        .......................................",
-"...        ...  ...  ...         .......................................",
-"...        ..  ...  ...          .......................................",
-"...           ...  ...           .......................................",
-"....          ..  ...            .......................................",
-"...              ...  .          .......................................",
-".              ...   ..          .......................................",
-"......     .....   ...           .......................................",
-".......  ...                    ........................................",
+"...      ...........        XX                .............        .....",
+"..       ..........        XX              ................        .....",
+"..       .........  X     XX             ...................       .....",
+"..       ......... XX      XXX   XX     ....................       .....",
+"..       ........  XX        XX XX    ......................       .....",
+"..       ........ XXXX     X  XXX   .........................      .....",
+"..       .......  XXX      XX  X   ...........................     .....",
+"..       ......  XXX  X   XXXX     ............................    .....",
+"..       .....  XXX  XX   XXX     ..............................   .....",
+"..       ....  XXX  XXX  XXX      ............................... ......",
+"..        ..  XXX  XXX  XXX       ......................................",
+"..        .  XXX  XXX  XXX       .......................................",
+"...         XXX  XXX  XXX        .......................................",
+"...        XXX  XXX  XXX         .......................................",
+"...        XX  XXX  XXX          .......................................",
+"...           XXX  XXX           .......................................",
+"....          XX  XXX            .......................................",
+"...              XXX  X          .......................................",
+".              XXX   XX          .......................................",
+"......     XXXXX   XXX           .......................................",
+".......  XXX                    ........................................",
 ".....                           ........................................",
 ".........                      .........................................",
 "..........                     .........................................",
diff --git a/pixmaps/edl33.xpm b/pixmaps/edl33.xpm
index 01f8a7d..2398f0a 100644
--- a/pixmaps/edl33.xpm
+++ b/pixmaps/edl33.xpm
@@ -1,39 +1,40 @@
 /* XPM */
 static char *edl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 "................      ...........",
 ".............            ........",
-"............ .             ......",
-"...........  .              .....",
-"..........  .                 ...",
-"..........  .            ...   ..",
-"..........  .           .       .",
-"..........  .                   .",
-"..........  .                   .",
-"..........  .                   .",
+"............ X             ......",
+"...........  X              .....",
+"..........  X                 ...",
+"..........  X            XXX   ..",
+"..........  X           X       .",
+"..........  X                   .",
+"..........  X                   .",
+"..........  X                   .",
 "..........                      .",
 "..........                     ..",
-".........      ..       .      ..",
-"......... ..            .      ..",
-"..    ...               .      ..",
-"..    ... ..                  ...",
+".........      XX       X      ..",
+"......... XX            X      ..",
+"..    ...               X      ..",
+"..    ... XX                  ...",
 "..   ....               .     ...",
-".   ..... .. .         ...    ...",
-".   .....    .  .   .......   ...",
-".   .... .     .   ........   ...",
-".   .... .   ..  ..........   ...",
-".   ... ..   .. ............  ...",
-".   .  ..   ..  ............ ....",
-".    ... . ..   .................",
-".     .   ..    .................",
-"       ....     .................",
-"..  ....       ..................",
-".       ..     ..................",
+".   ..... XX X         ...    ...",
+".   .....    X  X   .......   ...",
+".   .... X     X   ........   ...",
+".   .... X   XX  ..........   ...",
+".   ... XX   XX ............  ...",
+".   .  XX   XX  ............ ....",
+".    XXX X XX   .................",
+".     X   XX    .................",
+"       XXXX     .................",
+"..  XXXX       ..................",
+".       XX     ..................",
 "....           ..................",
 ".....         ...................",
 "......       ....................",
diff --git a/pixmaps/edl49.xpm b/pixmaps/edl49.xpm
index 69fc2bf..9bd94ab 100644
--- a/pixmaps/edl49.xpm
+++ b/pixmaps/edl49.xpm
@@ -1,52 +1,53 @@
 /* XPM */
 static char *edl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
 "..........................        ...............",
 "....................                  ...........",
-"..................   ..                  ........",
-".................   .                     .......",
-"................   .                      .......",
-"................  .                      .    ...",
-"................  .                   ...     ...",
-"................  .                 ..        ...",
-"................  .                 .          ..",
-"................  .                            ..",
-"................  .                            ..",
-"................  .                            ..",
-"................  .                            ..",
+"..................   XX                  ........",
+".................   X                     .......",
+"................   X                      .......",
+"................  X                      X    ...",
+"................  X                   XXX     ...",
+"................  X                 XX        ...",
+"................  X                 X          ..",
+"................  X                            ..",
+"................  X                            ..",
+"................  X                            ..",
+"................  X                            ..",
 "................                               ..",
 "................                               ..",
 "................                               ..",
 "...............                               ...",
-"...............        ..                     ...",
-"..............         ..                     ...",
-".............. ...                            ...",
+"...............        XX                     ...",
+"..............         XX                     ...",
+".............. XXX                            ...",
 ".....   ......                                ...",
 "....     .....                       .       ....",
-"....     ..... ...                   ..      ....",
+"....     ..... XXX                   ..      ....",
 "....    ......                      ...      ....",
 "....    ......                    .....      ....",
-"...    ........ ..  .            .......     ....",
-"...    .......     .           .........     ....",
-"...    ...... .    .  .      ...........     ....",
-"...    ...... .     ..    ...............    ....",
-"...    ..... ..    .     ................    ....",
-"...    ..... ..    ..   ..................   ....",
-"...    .... .. .  ..   ...................   ....",
-"...    ... .. .. ...   ....................  ....",
-"...     . .. ... ..    ..........................",
-"....     .. ... ..     ..........................",
-"....     . ... ..      ..........................",
-"... .     ..  ..       ..........................",
-".         . ... .      ..........................",
-"......   . ..  ..      ..........................",
-"...... ..... ...       ..........................",
+"...    ........ XX  X            .......     ....",
+"...    .......     X           .........     ....",
+"...    ...... X    X  X      ...........     ....",
+"...    ...... X     XX    ...............    ....",
+"...    ..... XX    X     ................    ....",
+"...    ..... XX    XX   ..................   ....",
+"...    .... XX X  XX   ...................   ....",
+"...    ... XX XX XXX   ....................  ....",
+"...     . XX XXX XX    ..........................",
+"....     XX XXX XX     ..........................",
+"....     X XXX XX      ..........................",
+"... X     XX  XX       ..........................",
+".         X XXX X      ..........................",
+"......   X XX  XX      ..........................",
+"...... XXXXX XXX       ..........................",
 ".......               ...........................",
 "........             ............................",
 ".........           .............................",
diff --git a/pixmaps/edl72.xpm b/pixmaps/edl72.xpm
index a8572bd..36a26bd 100644
--- a/pixmaps/edl72.xpm
+++ b/pixmaps/edl72.xpm
@@ -1,73 +1,74 @@
 /* XPM */
 static char *edl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
 "......................................            ......................",
 "..............................                       ...................",
 "...........................                             ................",
-"..........................    ..                          ..............",
-".........................    ..                              ...........",
-"........................    ...                               ..........",
-".......................    ...                                 .........",
-"......................     ..                                      .....",
-"......................    ...                              .....    ....",
-"......................    ..                              ......     ...",
-"......................    ..                           .....         ...",
-"......................    ..                         .....           ...",
-"......................    ..                         ...             ...",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
-"......................    ..                                          ..",
+"..........................    XX                          ..............",
+".........................    XX                              ...........",
+"........................    XXX                               ..........",
+".......................    XXX                                 .........",
+"......................     XX                                      .....",
+"......................    XXX                              XXXXX    ....",
+"......................    XX                              XXXXXX     ...",
+"......................    XX                           XXXXX         ...",
+"......................    XX                         XXXXX           ...",
+"......................    XX                         XXX             ...",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
+"......................    XX                                          ..",
 "......................                                                ..",
 "......................                                                ..",
 "......................                                                ..",
 "......................                                                ..",
 ".....................                                                 ..",
-"....................             ...                                 ...",
-"....................             ...                                 ...",
-"....................             ...                   ..            ...",
-"....................                                   ...           ...",
-"....................  ....                              ..           ...",
-"....................  ....                              ..          ....",
-".....   ............                                    .           ....",
+"....................             XXX                                 ...",
+"....................             XXX                                 ...",
+"....................             XXX                   XX            ...",
+"....................                                   XXX           ...",
+"....................  XXXX                              XX           ...",
+"....................  XXXX                              XX          ....",
+".....   ............                                    X           ....",
 ".....     ..........                                                ....",
-"....       .........  ....                              .           ....",
-"....        ........  ....                             ..           ....",
+"....       .........  XXXX                              .           ....",
+"....        ........  XXXX                             ..           ....",
 "....       .........                                  ...           ....",
 "...       ..........                                 .....          ....",
-"...      ...........  ...                          .......         .....",
-"...      ...........  ...                        .........         .....",
+"...      ...........  XXX                          .......         .....",
+"...      ...........  XXX                        .........         .....",
 "...      ............                           ...........        .....",
-"...      ...........        ..                .............        .....",
-"..       ..........        ..              ................        .....",
-"..       .........  .     ..             ...................       .....",
-"..       ......... ..      ...   ..     ....................       .....",
-"..       ........  ..        .. ..    ......................       .....",
-"..       ........ ....     .  ...   .........................      .....",
-"..       .......  ...      ..  .   ...........................     .....",
-"..       ......  ...  .   ....     ............................    .....",
-"..       .....  ...  ..   ...     ..............................   .....",
-"..       ....  ...  ...  ...      ............................... ......",
-"..        ..  ...  ...  ...       ......................................",
-"..        .  ...  ...  ...       .......................................",
-"...         ...  ...  ...        .......................................",
-"...        ...  ...  ...         .......................................",
-"...        ..  ...  ...          .......................................",
-"...           ...  ...           .......................................",
-"....          ..  ...            .......................................",
-"...              ...  .          .......................................",
-".              ...   ..          .......................................",
-"......     .....   ...           .......................................",
-".......  ...                    ........................................",
+"...      ...........        XX                .............        .....",
+"..       ..........        XX              ................        .....",
+"..       .........  X     XX             ...................       .....",
+"..       ......... XX      XXX   XX     ....................       .....",
+"..       ........  XX        XX XX    ......................       .....",
+"..       ........ XXXX     X  XXX   .........................      .....",
+"..       .......  XXX      XX  X   ...........................     .....",
+"..       ......  XXX  X   XXXX     ............................    .....",
+"..       .....  XXX  XX   XXX     ..............................   .....",
+"..       ....  XXX  XXX  XXX      ............................... ......",
+"..        ..  XXX  XXX  XXX       ......................................",
+"..        .  XXX  XXX  XXX       .......................................",
+"...         XXX  XXX  XXX        .......................................",
+"...        XXX  XXX  XXX         .......................................",
+"...        XX  XXX  XXX          .......................................",
+"...           XXX  XXX           .......................................",
+"....          XX  XXX            .......................................",
+"...              XXX  X          .......................................",
+".              XXX   XX          .......................................",
+"......     XXXXX   XXX           .......................................",
+".......  XXX                    ........................................",
 ".....                           ........................................",
 ".........                      .........................................",
 "..........                     .........................................",
diff --git a/pixmaps/fdd33.xpm b/pixmaps/fdd33.xpm
index 439175b..9e353d4 100644
--- a/pixmaps/fdd33.xpm
+++ b/pixmaps/fdd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *fdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -13,23 +14,23 @@ static char *fdd33[] = {
 ".............       .............",
 ".............       .............",
 "..............     ..............",
-".............. ... ..............",
-".............  .    .............",
-"............   .     ............",
-"...........   .       ...........",
-"..........    .        ..........",
-"........     .           ........",
-"......    .............    ......",
-"....  ....             ....  ....",
-"... ..                     .. ...",
-".. .       ..........        . ..",
-".      ...            ...      ..",
-"..   .                    .   ...",
+".............. XXX ..............",
+".............  X    .............",
+"............   X     ............",
+"...........   X       ...........",
+"..........    X        ..........",
+"........     X           ........",
+"......    XXXXXXXXXXXXX    ......",
+"....  XXXX             XXXX  ....",
+"... XX                     XX ...",
+".. X       XXXXXXXXXX        X ..",
+".      XXX            XXX      ..",
+"..   X                    X   ...",
 "..                           ....",
-"...       .............      ....",
-"...   ....             ....   ...",
-"..  ..                    ... ...",
-".. .                         . ..",
+"...       XXXXXXXXXXXXX      ....",
+"...   XXXX             XXXX   ...",
+"..  XX                    XXX ...",
+".. X                         X ..",
 "..                             ..",
 "..                             ..",
 "...                           ...",
diff --git a/pixmaps/fdd49.xpm b/pixmaps/fdd49.xpm
index f6a4c66..c6dbfa4 100644
--- a/pixmaps/fdd49.xpm
+++ b/pixmaps/fdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *fdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -20,31 +21,31 @@ static char *fdd49[] = {
 "....................          ...................",
 ".....................        ....................",
 ".....................        ....................",
-"...................... .... .....................",
-"......................  .   .....................",
-".....................  .     ....................",
-"....................   .      ...................",
-"...................   .        ..................",
-".................     .         .................",
-"................     .           ................",
-"..............      .              ..............",
-".............      .                .............",
-"...........       .                   ...........",
-"..........      .................      ..........",
-"........  ......                 ......  ........",
-".......  .                             .  .......",
+"...................... XXXX .....................",
+"......................  X   .....................",
+".....................  X     ....................",
+"....................   X      ...................",
+"...................   X        ..................",
+".................     X         .................",
+"................     X           ................",
+"..............      X              ..............",
+".............      X                .............",
+"...........       X                   ...........",
+"..........      XXXXXXXXXXXXXXXXX      ..........",
+"........  XXXXXX                 XXXXXX  ........",
+".......  X                             X  .......",
 "......                                     ......",
 ".....                                       .....",
 ".....                                       .....",
-"......            .............            ......",
-"......       ....               ...        ......",
-".......   ..                        ..    .......",
+"......            XXXXXXXXXXXXX            ......",
+"......       XXXX               XXX        ......",
+".......   XX                        XX    .......",
 ".......                                   .......",
 ".......                                   .......",
-"......          .................          ......",
-"......    ......                 ......    ......",
-"...... ...                             ... ......",
-"..... .                                   . .....",
+"......          XXXXXXXXXXXXXXXXX          ......",
+"......    XXXXXX                 XXXXXX    ......",
+"...... XXX                             XXX ......",
+"..... X                                   X .....",
 ".....                                       .....",
 "......                                     ......",
 ".......                                   .......",
diff --git a/pixmaps/fdd72.xpm b/pixmaps/fdd72.xpm
index 0309ac2..6f780af 100644
--- a/pixmaps/fdd72.xpm
+++ b/pixmaps/fdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *fdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -33,8 +34,8 @@ static char *fdd72[] = {
 "...............................           ..............................",
 "...............................           ..............................",
 "................................         ...............................",
-"................................. ....  ................................",
-"................................. .... .................................",
+"................................. XXXX  ................................",
+"................................. XXXX .................................",
 "................................        ................................",
 "...............................          ...............................",
 "..............................            ..............................",
@@ -45,26 +46,26 @@ static char *fdd72[] = {
 ".......................                           ......................",
 ".....................                              .....................",
 "...................                                  ...................",
-"..................        ....................        ..................",
-"................    ................................    ................",
-"..............    ........                    ........    ..............",
-".............    ...                                ...     ............",
+"..................        XXXXXXXXXXXXXXXXXXXX        ..................",
+"................    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    ................",
+"..............    XXXXXXXX                    XXXXXXXX    ..............",
+".............    XXX                                XXX     ............",
 "...........                                                  ...........",
 "..........                                                    ..........",
 ".........                                                      .........",
-".........                   .................                  .........",
-".........                ..........................           ..........",
-"..........         .........                 ..........       ..........",
-"..........     ..........                          ......    ...........",
-"...........    .....                                  ...    ...........",
+".........                   XXXXXXXXXXXXXXXXX                  .........",
+".........                XXXXXXXXXXXXXXXXXXXXXXXXXX           ..........",
+"..........         XXXXXXXXX                 XXXXXXXXXX       ..........",
+"..........     XXXXXXXXXX                          XXXXXX    ...........",
+"...........    XXXXX                                  XXX    ...........",
 "...........                                                 ............",
 "............                                                ............",
-"...........               ....................               ...........",
-"...........         ................................         ...........",
-"..........      ..........                    ..........      ..........",
-"..........   .........                             .........  ..........",
-".........   .....                                      .....   .........",
-".........  ...                                            ...  .........",
+"...........               XXXXXXXXXXXXXXXXXXXX               ...........",
+"...........         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX         ...........",
+"..........      XXXXXXXXXX                    XXXXXXXXXX      ..........",
+"..........   XXXXXXXXX                             XXXXXXXXX  ..........",
+".........   XXXXX                                      XXXXX   .........",
+".........  XXX                                            XXX  .........",
 ".........                                                      .........",
 ".........                                                      .........",
 "..........                                                    ..........",
diff --git a/pixmaps/fdl33.xpm b/pixmaps/fdl33.xpm
index 95f0dd2..591575e 100644
--- a/pixmaps/fdl33.xpm
+++ b/pixmaps/fdl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *fdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -13,23 +14,23 @@ static char *fdl33[] = {
 ".............       .............",
 ".............       .............",
 "..............     ..............",
-".............. ... ..............",
-".............  .    .............",
-"............   .     ............",
-"...........   .       ...........",
-"..........    .        ..........",
-"........     .           ........",
-"......    .............    ......",
-"....  ....             ....  ....",
-"... ..                     .. ...",
-".. .       ..........        . ..",
-".      ...            ...      ..",
-"..   .                    .   ...",
+".............. XXX ..............",
+".............  X    .............",
+"............   X     ............",
+"...........   X       ...........",
+"..........    X        ..........",
+"........     X           ........",
+"......    XXXXXXXXXXXXX    ......",
+"....  XXXX             XXXX  ....",
+"... XX                     XX ...",
+".. X       XXXXXXXXXX        X ..",
+".      XXX            XXX      ..",
+"..   X                    X   ...",
 "..                           ....",
-"...       .............      ....",
-"...   ....             ....   ...",
-"..  ..                    ... ...",
-".. .                         . ..",
+"...       XXXXXXXXXXXXX      ....",
+"...   XXXX             XXXX   ...",
+"..  XX                    XXX ...",
+".. X                         X ..",
 "..                             ..",
 "..                             ..",
 "...                           ...",
diff --git a/pixmaps/fdl49.xpm b/pixmaps/fdl49.xpm
index d2995b9..b99972a 100644
--- a/pixmaps/fdl49.xpm
+++ b/pixmaps/fdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *fdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -20,31 +21,31 @@ static char *fdl49[] = {
 "....................          ...................",
 ".....................        ....................",
 ".....................        ....................",
-"...................... .... .....................",
-"......................  .   .....................",
-".....................  .     ....................",
-"....................   .      ...................",
-"...................   .        ..................",
-".................     .         .................",
-"................     .           ................",
-"..............      .              ..............",
-".............      .                .............",
-"...........       .                   ...........",
-"..........      .................      ..........",
-"........  ......                 ......  ........",
-".......  .                             .  .......",
+"...................... XXXX .....................",
+"......................  X   .....................",
+".....................  X     ....................",
+"....................   X      ...................",
+"...................   X        ..................",
+".................     X         .................",
+"................     X           ................",
+"..............      X              ..............",
+".............      X                .............",
+"...........       X                   ...........",
+"..........      XXXXXXXXXXXXXXXXX      ..........",
+"........  XXXXXX                 XXXXXX  ........",
+".......  X                             X  .......",
 "......                                     ......",
 ".....                                       .....",
 ".....                                       .....",
-"......            .............            ......",
-"......       ....               ...        ......",
-".......   ..                        ..    .......",
+"......            XXXXXXXXXXXXX            ......",
+"......       XXXX               XXX        ......",
+".......   XX                        XX    .......",
 ".......                                   .......",
 ".......                                   .......",
-"......          .................          ......",
-"......    ......                 ......    ......",
-"...... ...                             ... ......",
-"..... .                                   . .....",
+"......          XXXXXXXXXXXXXXXXX          ......",
+"......    XXXXXX                 XXXXXX    ......",
+"...... XXX                             XXX ......",
+"..... X                                   X .....",
 ".....                                       .....",
 "......                                     ......",
 ".......                                   .......",
diff --git a/pixmaps/fdl72.xpm b/pixmaps/fdl72.xpm
index 4b62989..875c6ed 100644
--- a/pixmaps/fdl72.xpm
+++ b/pixmaps/fdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *fdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -33,8 +34,8 @@ static char *fdl72[] = {
 "...............................           ..............................",
 "...............................           ..............................",
 "................................         ...............................",
-"................................. ....  ................................",
-"................................. .... .................................",
+"................................. XXXX  ................................",
+"................................. XXXX .................................",
 "................................        ................................",
 "...............................          ...............................",
 "..............................            ..............................",
@@ -45,26 +46,26 @@ static char *fdl72[] = {
 ".......................                           ......................",
 ".....................                              .....................",
 "...................                                  ...................",
-"..................        ....................        ..................",
-"................    ................................    ................",
-"..............    ........                    ........    ..............",
-".............    ...                                ...     ............",
+"..................        XXXXXXXXXXXXXXXXXXXX        ..................",
+"................    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    ................",
+"..............    XXXXXXXX                    XXXXXXXX    ..............",
+".............    XXX                                XXX     ............",
 "...........                                                  ...........",
 "..........                                                    ..........",
 ".........                                                      .........",
-".........                   .................                  .........",
-".........                ..........................           ..........",
-"..........         .........                 ..........       ..........",
-"..........     ..........                          ......    ...........",
-"...........    .....                                  ...    ...........",
+".........                   XXXXXXXXXXXXXXXXX                  .........",
+".........                XXXXXXXXXXXXXXXXXXXXXXXXXX           ..........",
+"..........         XXXXXXXXX                 XXXXXXXXXX       ..........",
+"..........     XXXXXXXXXX                          XXXXXX    ...........",
+"...........    XXXXX                                  XXX    ...........",
 "...........                                                 ............",
 "............                                                ............",
-"...........               ....................               ...........",
-"...........         ................................         ...........",
-"..........      ..........                    ..........      ..........",
-"..........   .........                             .........  ..........",
-".........   .....                                      .....   .........",
-".........  ...                                            ...  .........",
+"...........               XXXXXXXXXXXXXXXXXXXX               ...........",
+"...........         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX         ...........",
+"..........      XXXXXXXXXX                    XXXXXXXXXX      ..........",
+"..........   XXXXXXXXX                             XXXXXXXXX  ..........",
+".........   XXXXX                                      XXXXX   .........",
+".........  XXX                                            XXX  .........",
 ".........                                                      .........",
 ".........                                                      .........",
 "..........                                                    ..........",
diff --git a/pixmaps/gdd33.xpm b/pixmaps/gdd33.xpm
index 228f71c..90f058d 100644
--- a/pixmaps/gdd33.xpm
+++ b/pixmaps/gdd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *gdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -26,11 +27,11 @@ static char *gdd33[] = {
 "........                 ........",
 "........                 ........",
 "........                 ........",
-".........    .......    .........",
-".........  ..       ..  .........",
+".........    XXXXXXX    .........",
+".........  XX       XX  .........",
 "..........             ..........",
-"..........   .......   ..........",
-"........... ..     .. ...........",
+"..........   XXXXXXX   ..........",
+"........... XX     XX ...........",
 "..........             ..........",
 "..........             ..........",
 ".........               .........",
diff --git a/pixmaps/gdd49.xpm b/pixmaps/gdd49.xpm
index ed736d9..733e002 100644
--- a/pixmaps/gdd49.xpm
+++ b/pixmaps/gdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *gdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -37,13 +38,13 @@ static char *gdd49[] = {
 "............                         ............",
 ".............                       .............",
 "..............                     ..............",
-"..............       .......       ..............",
-"............... ......     ...... ...............",
+"..............       XXXXXXX       ..............",
+"............... XXXXXX     XXXXXX ...............",
 "...............                   ...............",
 "................                 ................",
 "................                 ................",
-"................   ...........   ................",
-"................ ...         ... ................",
+"................   XXXXXXXXXXX   ................",
+"................ XXX         XXX ................",
 "...............                   ...............",
 "...............                   ...............",
 "..............                     ..............",
diff --git a/pixmaps/gdd72.xpm b/pixmaps/gdd72.xpm
index 04fb609..285453b 100644
--- a/pixmaps/gdd72.xpm
+++ b/pixmaps/gdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *gdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".....  .................................................................",
 "........................................................................",
@@ -52,21 +53,21 @@ static char *gdd72[] = {
 "...............                                         ................",
 "................                                       .................",
 ".................                                     ..................",
-"..................            ...........            ...................",
-"...................    .........................    ....................",
-"....................  ..........       ..........  .....................",
-"....................   .                       .   .....................",
+"..................            XXXXXXXXXXX            ...................",
+"...................    XXXXXXXXXXXXXXXXXXXXXXXXX    ....................",
+"....................  XXXXXXXXXX       XXXXXXXXXX  .....................",
+"....................   X                       X   .....................",
 ".....................                             ......................",
 ".....................                             ......................",
 ".....................                             ......................",
-".....................         ...........         ......................",
-".....................   .......................   ......................",
-"......................  ........       ........  .......................",
+".....................         XXXXXXXXXXX         ......................",
+".....................   XXXXXXXXXXXXXXXXXXXXXXX   ......................",
+"......................  XXXXXXXX       XXXXXXXX  .......................",
 ".....................                             ......................",
 ".....................                             ......................",
 "....................                               .....................",
 "...................                                 ....................",
-"................... ..                              ....................",
+"................... XX                              ....................",
 "..................                                   ...................",
 "..................                                   ...................",
 "..................                                   ...................",
diff --git a/pixmaps/gdl33.xpm b/pixmaps/gdl33.xpm
index 93ab308..ffedcbc 100644
--- a/pixmaps/gdl33.xpm
+++ b/pixmaps/gdl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *gdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -26,11 +27,11 @@ static char *gdl33[] = {
 "........                 ........",
 "........                 ........",
 "........                 ........",
-".........    .......    .........",
-".........  ..       ..  .........",
+".........    XXXXXXX    .........",
+".........  XX       XX  .........",
 "..........             ..........",
-"..........   .......   ..........",
-"........... ..     .. ...........",
+"..........   XXXXXXX   ..........",
+"........... XX     XX ...........",
 "..........             ..........",
 "..........             ..........",
 ".........               .........",
diff --git a/pixmaps/gdl49.xpm b/pixmaps/gdl49.xpm
index cde3423..91d9234 100644
--- a/pixmaps/gdl49.xpm
+++ b/pixmaps/gdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *gdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -37,13 +38,13 @@ static char *gdl49[] = {
 "............                         ............",
 ".............                       .............",
 "..............                     ..............",
-"..............       .......       ..............",
-"............... ......     ...... ...............",
+"..............       XXXXXXX       ..............",
+"............... XXXXXX     XXXXXX ...............",
 "...............                   ...............",
 "................                 ................",
 "................                 ................",
-"................   ...........   ................",
-"................ ...         ... ................",
+"................   XXXXXXXXXXX   ................",
+"................ XXX         XXX ................",
 "...............                   ...............",
 "...............                   ...............",
 "..............                     ..............",
diff --git a/pixmaps/gdl72.xpm b/pixmaps/gdl72.xpm
index b2defd5..3bc956a 100644
--- a/pixmaps/gdl72.xpm
+++ b/pixmaps/gdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *gdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".....  .................................................................",
 "........................................................................",
@@ -52,21 +53,21 @@ static char *gdl72[] = {
 "...............                                         ................",
 "................                                       .................",
 ".................                                     ..................",
-"..................            ...........            ...................",
-"...................    .........................    ....................",
-"....................  ..........       ..........  .....................",
-"....................   .                       .   .....................",
+"..................            XXXXXXXXXXX            ...................",
+"...................    XXXXXXXXXXXXXXXXXXXXXXXXX    ....................",
+"....................  XXXXXXXXXX       XXXXXXXXXX  .....................",
+"....................   X                       X   .....................",
 ".....................                             ......................",
 ".....................                             ......................",
 ".....................                             ......................",
-".....................         ...........         ......................",
-".....................   .......................   ......................",
-"......................  ........       ........  .......................",
+".....................         XXXXXXXXXXX         ......................",
+".....................   XXXXXXXXXXXXXXXXXXXXXXX   ......................",
+"......................  XXXXXXXX       XXXXXXXX  .......................",
 ".....................                             ......................",
 ".....................                             ......................",
 "....................                               .....................",
 "...................                                 ....................",
-"................... ..                              ....................",
+"................... XX                              ....................",
 "..................                                   ...................",
 "..................                                   ...................",
 "..................                                   ...................",
diff --git a/pixmaps/hdd33.xpm b/pixmaps/hdd33.xpm
index 6ede8bb..cebaef4 100644
--- a/pixmaps/hdd33.xpm
+++ b/pixmaps/hdd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *hdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -12,28 +13,28 @@ static char *hdd33[] = {
 ".........  ...  .................",
 ".........   ..   ................",
 ".........          ..............",
-".........   ..   ..  ............",
-".......... .       ..  ..........",
-"........  .          .  .........",
-"........ ....         .  ........",
-"....... .  ...         .  .......",
-"....... .  ....        .. .......",
-"...... .......          .  ......",
-"......  .....           .. ......",
-".....    ...     .       .  .....",
-".....     .              .. .....",
-"....                     .. .....",
-"....           ..         .  ....",
-"...  .       ....         .. ....",
-"...  .      ....          .. ....",
-"...        .....          .. ....",
-"...       .....            . ....",
-"....     .....             .  ...",
-".............              .. ...",
-"............               .. ...",
-"...........                .. ...",
-"...........                .. ...",
-"..........                 .. ...",
+".........   XX   XX  ............",
+".......... X       XX  ..........",
+"........  X          X  .........",
+"........ XXXX         X  ........",
+"....... X  XXX         X  .......",
+"....... X  XXXX        XX .......",
+"...... XXXXXXX          X  ......",
+"......  XXXXX           XX ......",
+".....    XXX     X       X  .....",
+".....     X              XX .....",
+"....                     XX .....",
+"....           ..         X  ....",
+"...  X       ....         XX ....",
+"...  X      ....          XX ....",
+"...        .....          XX ....",
+"...       .....            X ....",
+"....     .....             X  ...",
+".............              XX ...",
+"............               XX ...",
+"...........                XX ...",
+"...........                XX ...",
+"..........                 XX ...",
 "..........                    ...",
 "..........                    ...",
 ".................................",
diff --git a/pixmaps/hdd49.xpm b/pixmaps/hdd49.xpm
index f7c28d7..4c46eac 100644
--- a/pixmaps/hdd49.xpm
+++ b/pixmaps/hdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *hdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -13,30 +14,30 @@ static char *hdd49[] = {
 "............   .....   ..........................",
 "............    ....    .........................",
 "............     ..     .........................",
-"............       .   .    .....................",
-".............   .. .   . ...  ...................",
-"............   .            ... .................",
-"........... ..                ... ...............",
-".......... ....                 .. ..............",
-".......... ......                 . .............",
-"......... ..... ..                 . ............",
-"......... ...  ....                 . ...........",
-"......... ... ......                .............",
-"......... .. ......                  . ..........",
-"........  ........                   .. .........",
-"........   ......                     . .........",
-"........     ...                      .. ........",
-".......       .           .            . ........",
-".......                   .            ..........",
+"............       X   X    .....................",
+".............   XX X   X XXX  ...................",
+"............   X            ... .................",
+"........... XX                ... ...............",
+".......... XXXX                 .. ..............",
+".......... XXXXXX                 X .............",
+"......... XXXXX XX                 X ............",
+"......... XXX  XXXX                 . ...........",
+"......... XXX XXXXXX                .............",
+"......... XX XXXXXX                  . ..........",
+"........  XXXXXXXX                   .. .........",
+"........   XXXXXX                     . .........",
+"........     XXX                      .. ........",
+".......       X           X            . ........",
+".......                   X            ..........",
 "......                                 .. .......",
 ".....                   .               . .......",
 ".....                  ...              .........",
 "....                  ....              .. ......",
 "....                ......               . ......",
-"...   ..           .......               . ......",
-"...   .          .......                 ........",
+"...   XX           .......               . ......",
+"...   X          .......                 ........",
 "...             ........                 .. .....",
-"...       .    ........                  .. .....",
+"...       X    ........                  .. .....",
 "...      .    ........                   .. .....",
 "....     .   ........                     . .....",
 ".....    .  ........                      . .....",
diff --git a/pixmaps/hdd72.xpm b/pixmaps/hdd72.xpm
index 2ea8755..9f37818 100644
--- a/pixmaps/hdd72.xpm
+++ b/pixmaps/hdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *hdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -16,40 +17,40 @@ static char *hdd72[] = {
 "..................      .....      .....................................",
 "..................       ...        ....................................",
 "..................        ..        ....................................",
-"..................          .      ..     ..............................",
-"..................       .. .      ..        ...........................",
-"..................      .....       .....      .........................",
-"..................     ...          ........     .......................",
-".................     ...                .....    ......................",
-"................   .. .                     ....    ....................",
-"...............   ....                        ...    ...................",
-"..............   ......                        ....   ..................",
-"..............  .........                       ....   .................",
-".............  .......  ..                       ....   ................",
-".............  .....   ....                       ....   ...............",
-".............  ....    .....                       ....  ...............",
-".............  ...     ......                       ...   ..............",
-".............  ...    .......                       ....   .............",
-"............   ... .........                         ....  .............",
-"............    ...........                          ....   ............",
-"............     .........                            ....  ............",
-"...........       .......                             ....   ...........",
-"...........        .....                               ....  ...........",
-"..........          ...                .               ....  ...........",
-"..........           .                ..                ....  ..........",
-".........                            ..                 ....  ..........",
-"........                             ..                 ....  ..........",
-"........                             .                   ....  .........",
-".......                             ..                   ....  .........",
+"..................          X      ..     ..............................",
+"..................       XX X      ..        ...........................",
+"..................      XXXXX       .....      .........................",
+"..................     XXX          ........     .......................",
+".................     XXX                .....    ......................",
+"................   XX X                     ....    ....................",
+"...............   XXXX                        ...    ...................",
+"..............   XXXXXX                        ....   ..................",
+"..............  XXXXXXXXX                       ....   .................",
+".............  XXXXXXX  XX                       ....   ................",
+".............  XXXXX   XXXX                       ....   ...............",
+".............  XXXX    XXXXX                       ....  ...............",
+".............  XXX     XXXXXX                       ...   ..............",
+".............  XXX    XXXXXXX                       ....   .............",
+"............   XXX XXXXXXXXX                         ....  .............",
+"............    XXXXXXXXXXX                          ....   ............",
+"............     XXXXXXXXX                            ....  ............",
+"...........       XXXXXXX                             ....   ...........",
+"...........        XXXXX                               ....  ...........",
+"..........          XXX                X               ....  ...........",
+"..........           X                XX                ....  ..........",
+".........                            XX                 ....  ..........",
+"........                             XX                 ....  ..........",
+"........                             X                   ....  .........",
+".......                             XX                   ....  .........",
 "......                                                   ....  .........",
 "......                             .                      ....  ........",
 ".....                            ...                      ....  ........",
 ".....                          .....                      ....  ........",
-".....    ..                  .......                      ....   .......",
-"....    ....               ........                        ....  .......",
-"....    ....             ..........                        ....  .......",
-"....    ...             ..........                         ....  .......",
-"....    ...            ...........                         ....  .......",
+".....    XX                  .......                      ....   .......",
+"....    XXXX               ........                        ....  .......",
+"....    XXXX             ..........                        ....  .......",
+"....    XXX             ..........                         ....  .......",
+"....    XXX            ...........                         ....  .......",
 "....          ..      ...........                          ....  .......",
 "....          ..     ...........                            ....  ......",
 "....         ...    ............                            ....  ......",
diff --git a/pixmaps/hdl33.xpm b/pixmaps/hdl33.xpm
index d2fd8ee..c5b7a92 100644
--- a/pixmaps/hdl33.xpm
+++ b/pixmaps/hdl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *hdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -12,28 +13,28 @@ static char *hdl33[] = {
 ".........  ...  .................",
 ".........   ..   ................",
 ".........          ..............",
-".........   ..   ..  ............",
-".......... .       ..  ..........",
-"........  .          .  .........",
-"........ ....         .  ........",
-"....... .  ...         .  .......",
-"....... .  ....        .. .......",
-"...... .......          .  ......",
-"......  .....           .. ......",
-".....    ...     .       .  .....",
-".....     .              .. .....",
-"....                     .. .....",
-"....           ..         .  ....",
-"...  .       ....         .. ....",
-"...  .      ....          .. ....",
-"...        .....          .. ....",
-"...       .....            . ....",
-"....     .....             .  ...",
-".............              .. ...",
-"............               .. ...",
-"...........                .. ...",
-"...........                .. ...",
-"..........                 .. ...",
+".........   XX   XX  ............",
+".......... X       XX  ..........",
+"........  X          X  .........",
+"........ XXXX         X  ........",
+"....... X  XXX         X  .......",
+"....... X  XXXX        XX .......",
+"...... XXXXXXX          X  ......",
+"......  XXXXX           XX ......",
+".....    XXX     X       X  .....",
+".....     X              XX .....",
+"....                     XX .....",
+"....           ..         X  ....",
+"...  X       ....         XX ....",
+"...  X      ....          XX ....",
+"...        .....          XX ....",
+"...       .....            X ....",
+"....     .....             X  ...",
+".............              XX ...",
+"............               XX ...",
+"...........                XX ...",
+"...........                XX ...",
+"..........                 XX ...",
 "..........                    ...",
 "..........                    ...",
 ".................................",
diff --git a/pixmaps/hdl49.xpm b/pixmaps/hdl49.xpm
index 8db19b4..9b4baf2 100644
--- a/pixmaps/hdl49.xpm
+++ b/pixmaps/hdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *hdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -13,30 +14,30 @@ static char *hdl49[] = {
 "............   .....   ..........................",
 "............    ....    .........................",
 "............     ..     .........................",
-"............       .   .    .....................",
-".............   .. .   . ...  ...................",
-"............   .            ... .................",
-"........... ..                ... ...............",
-".......... ....                 .. ..............",
-".......... ......                 . .............",
-"......... ..... ..                 . ............",
-"......... ...  ....                 . ...........",
-"......... ... ......                .............",
-"......... .. ......                  . ..........",
-"........  ........                   .. .........",
-"........   ......                     . .........",
-"........     ...                      .. ........",
-".......       .           .            . ........",
-".......                   .            ..........",
+"............       X   X    .....................",
+".............   XX X   X XXX  ...................",
+"............   X            ... .................",
+"........... XX                ... ...............",
+".......... XXXX                 .. ..............",
+".......... XXXXXX                 X .............",
+"......... XXXXX XX                 X ............",
+"......... XXX  XXXX                 . ...........",
+"......... XXX XXXXXX                .............",
+"......... XX XXXXXX                  . ..........",
+"........  XXXXXXXX                   .. .........",
+"........   XXXXXX                     . .........",
+"........     XXX                      .. ........",
+".......       X           X            . ........",
+".......                   X            ..........",
 "......                                 .. .......",
 ".....                   .               . .......",
 ".....                  ...              .........",
 "....                  ....              .. ......",
 "....                ......               . ......",
-"...   ..           .......               . ......",
-"...   .          .......                 ........",
+"...   XX           .......               . ......",
+"...   X          .......                 ........",
 "...             ........                 .. .....",
-"...       .    ........                  .. .....",
+"...       X    ........                  .. .....",
 "...      .    ........                   .. .....",
 "....     .   ........                     . .....",
 ".....    .  ........                      . .....",
diff --git a/pixmaps/hdl72.xpm b/pixmaps/hdl72.xpm
index 7cd572e..9cadf96 100644
--- a/pixmaps/hdl72.xpm
+++ b/pixmaps/hdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *hdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -16,40 +17,40 @@ static char *hdl72[] = {
 "..................      .....      .....................................",
 "..................       ...        ....................................",
 "..................        ..        ....................................",
-"..................          .      ..     ..............................",
-"..................       .. .      ..        ...........................",
-"..................      .....       .....      .........................",
-"..................     ...          ........     .......................",
-".................     ...                .....    ......................",
-"................   .. .                     ....    ....................",
-"...............   ....                        ...    ...................",
-"..............   ......                        ....   ..................",
-"..............  .........                       ....   .................",
-".............  .......  ..                       ....   ................",
-".............  .....   ....                       ....   ...............",
-".............  ....    .....                       ....  ...............",
-".............  ...     ......                       ...   ..............",
-".............  ...    .......                       ....   .............",
-"............   ... .........                         ....  .............",
-"............    ...........                          ....   ............",
-"............     .........                            ....  ............",
-"...........       .......                             ....   ...........",
-"...........        .....                               ....  ...........",
-"..........          ...                .               ....  ...........",
-"..........           .                ..                ....  ..........",
-".........                            ..                 ....  ..........",
-"........                             ..                 ....  ..........",
-"........                             .                   ....  .........",
-".......                             ..                   ....  .........",
+"..................          X      ..     ..............................",
+"..................       XX X      ..        ...........................",
+"..................      XXXXX       .....      .........................",
+"..................     XXX          ........     .......................",
+".................     XXX                .....    ......................",
+"................   XX X                     ....    ....................",
+"...............   XXXX                        ...    ...................",
+"..............   XXXXXX                        ....   ..................",
+"..............  XXXXXXXXX                       ....   .................",
+".............  XXXXXXX  XX                       ....   ................",
+".............  XXXXX   XXXX                       ....   ...............",
+".............  XXXX    XXXXX                       ....  ...............",
+".............  XXX     XXXXXX                       ...   ..............",
+".............  XXX    XXXXXXX                       ....   .............",
+"............   XXX XXXXXXXXX                         ....  .............",
+"............    XXXXXXXXXXX                          ....   ............",
+"............     XXXXXXXXX                            ....  ............",
+"...........       XXXXXXX                             ....   ...........",
+"...........        XXXXX                               ....  ...........",
+"..........          XXX                X               ....  ...........",
+"..........           X                XX                ....  ..........",
+".........                            XX                 ....  ..........",
+"........                             XX                 ....  ..........",
+"........                             X                   ....  .........",
+".......                             XX                   ....  .........",
 "......                                                   ....  .........",
 "......                             .                      ....  ........",
 ".....                            ...                      ....  ........",
 ".....                          .....                      ....  ........",
-".....    ..                  .......                      ....   .......",
-"....    ....               ........                        ....  .......",
-"....    ....             ..........                        ....  .......",
-"....    ...             ..........                         ....  .......",
-"....    ...            ...........                         ....  .......",
+".....    XX                  .......                      ....   .......",
+"....    XXXX               ........                        ....  .......",
+"....    XXXX             ..........                        ....  .......",
+"....    XXX             ..........                         ....  .......",
+"....    XXX            ...........                         ....  .......",
 "....          ..      ...........                          ....  .......",
 "....          ..     ...........                            ....  ......",
 "....         ...    ............                            ....  ......",
diff --git a/pixmaps/ldd33.xpm b/pixmaps/ldd33.xpm
index 5e2871e..6b450c3 100644
--- a/pixmaps/ldd33.xpm
+++ b/pixmaps/ldd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -19,18 +20,18 @@ static char *ldd33[] = {
 "..............       ............",
 "..............       ............",
 ".............         ...........",
-".............    .    ...........",
-".............    .    ...........",
-"............     .     ..........",
-"............     .     ..........",
-"............   .....   ..........",
-"...........      .      .........",
-"...........      .      .........",
-"...........      .      .........",
+".............    X    ...........",
+".............    X    ...........",
+"............     X     ..........",
+"............     X     ..........",
+"............   XXXXX   ..........",
+"...........      X      .........",
+"...........      X      .........",
+"...........      X      .........",
 "............           ..........",
 ".............         ...........",
-"..............   .   ............",
-"............... . . .............",
+"..............   X   ............",
+"............... X X .............",
 "................   ..............",
 "................   ..............",
 "................   ..............",
diff --git a/pixmaps/ldd37.xpm b/pixmaps/ldd37.xpm
index b432d94..cb9daf9 100644
--- a/pixmaps/ldd37.xpm
+++ b/pixmaps/ldd37.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 ".....................................",
@@ -21,20 +22,20 @@ static char *ldd37[] = {
 "..............         ..............",
 "..............         ..............",
 "..............         ..............",
-".............     .     .............",
-".............     .     .............",
-".............     .     .............",
-"............      .      ............",
-"............    .....    ............",
-"............      .      ............",
-"...........       .       ...........",
-"...........       .       ...........",
-"...........       .       ...........",
+".............     X     .............",
+".............     X     .............",
+".............     X     .............",
+"............      X      ............",
+"............    XXXXX    ............",
+"............      X      ............",
+"...........       X       ...........",
+"...........       X       ...........",
+"...........       X       ...........",
 "............             ............",
 ".............           .............",
 "..............         ..............",
-"...............   .   ...............",
-"................ . . ................",
+"...............   X   ...............",
+"................ X X ................",
 ".................   .................",
 ".................   .................",
 ".................   .................",
diff --git a/pixmaps/ldd40.xpm b/pixmaps/ldd40.xpm
index a5db236..6af78cc 100644
--- a/pixmaps/ldd40.xpm
+++ b/pixmaps/ldd40.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "........................................",
@@ -21,22 +22,22 @@ static char *ldd40[] = {
 "...............         ................",
 "..............           ...............",
 "..............           ...............",
-".............      .      ..............",
-".............      .      ..............",
-".............      .      ..............",
-"............       .       .............",
-"............       .       .............",
-"............    .......    .............",
-"...........        .        ............",
-"...........        .        ............",
-"..........         .         ...........",
-"..........         .         ...........",
-"...........        .        ............",
+".............      X      ..............",
+".............      X      ..............",
+".............      X      ..............",
+"............       X       .............",
+"............       X       .............",
+"............    XXXXXXX    .............",
+"...........        X        ............",
+"...........        X        ............",
+"..........         X         ...........",
+"..........         X         ...........",
+"...........        X        ............",
 "............               .............",
 ".............             ..............",
 "..............           ...............",
-"...............    .    ................",
-"................  . .  .................",
+"...............    X    ................",
+"................  X X  .................",
 ".................     ..................",
 "..................   ...................",
 "..................   ...................",
diff --git a/pixmaps/ldd45.xpm b/pixmaps/ldd45.xpm
index 2f04001..c4e86ce 100644
--- a/pixmaps/ldd45.xpm
+++ b/pixmaps/ldd45.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
@@ -23,24 +24,24 @@ static char *ldd45[] = {
 "..................         ..................",
 ".................           .................",
 ".................           .................",
-".................     .     .................",
-"................      .      ................",
-"................      .      ................",
-"................      .      ................",
-"...............       .       ...............",
-"...............       .       ...............",
-"...............    .......    ...............",
-"..............        .        ..............",
-"..............        .        ..............",
-"..............        .        ..............",
-".............         .         .............",
-".............         .         .............",
+".................     X     .................",
+"................      X      ................",
+"................      X      ................",
+"................      X      ................",
+"...............       X       ...............",
+"...............       X       ...............",
+"...............    XXXXXXX    ...............",
+"..............        X        ..............",
+"..............        X        ..............",
+"..............        X        ..............",
+".............         X         .............",
+".............         X         .............",
 "..............                 ..............",
 "...............               ...............",
 "................             ................",
 ".................           .................",
-"..................    .    ..................",
-"...................  . .  ...................",
+"..................    X    ..................",
+"...................  X X  ...................",
 "....................     ....................",
 ".....................   .....................",
 ".....................   .....................",
diff --git a/pixmaps/ldd49.xpm b/pixmaps/ldd49.xpm
index dccce91..1e903a3 100644
--- a/pixmaps/ldd49.xpm
+++ b/pixmaps/ldd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -27,17 +28,17 @@ static char *ldd49[] = {
 "..................             ..................",
 ".................               .................",
 ".................               .................",
-".................       .       .................",
-"................        .        ................",
-"................        .        ................",
-"................        .        ................",
-"...............         .         ...............",
-"...............      .......      ...............",
-"..............          .          ..............",
-"..............          .          ..............",
-".............           .           .............",
-".............           .           .............",
-"..............          .          ..............",
+".................       X       .................",
+"................        X        ................",
+"................        X        ................",
+"................        X        ................",
+"...............         X         ...............",
+"...............      XXXXXXX      ...............",
+"..............          X          ..............",
+"..............          X          ..............",
+".............           X           .............",
+".............           X           .............",
+"..............          X          ..............",
 "...............                   ...............",
 "................                 ................",
 ".................               .................",
diff --git a/pixmaps/ldd54.xpm b/pixmaps/ldd54.xpm
index 8bb6d14..37fdef7 100644
--- a/pixmaps/ldd54.xpm
+++ b/pixmaps/ldd54.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "......................................................",
@@ -28,28 +29,28 @@ static char *ldd54[] = {
 "....................              ....................",
 "....................              ....................",
 "...................                ...................",
-"...................       ..       ...................",
-"...................       ..       ...................",
-"..................        ..        ..................",
-"..................        ..        ..................",
-"..................        ..        ..................",
-".................         ..         .................",
-".................         ..         .................",
-".................      ........      .................",
-"................       ........       ................",
-"................          ..          ................",
-"................          ..          ................",
-"...............           ..           ...............",
-"...............           ..           ...............",
-"...............           ..           ...............",
-"................          ..          ................",
+"...................       XX       ...................",
+"...................       XX       ...................",
+"..................        XX        ..................",
+"..................        XX        ..................",
+"..................        XX        ..................",
+".................         XX         .................",
+".................         XX         .................",
+".................      XXXXXXXX      .................",
+"................       XXXXXXXX       ................",
+"................          XX          ................",
+"................          XX          ................",
+"...............           XX           ...............",
+"...............           XX           ...............",
+"...............           XX           ...............",
+"................          XX          ................",
 ".................                    .................",
 "..................                  ..................",
 "...................                ...................",
 "....................              ....................",
-".....................     ..     .....................",
-"......................   ....   ......................",
-".......................  .  .  .......................",
+".....................     XX     .....................",
+"......................   XXXX   ......................",
+".......................  X  X  .......................",
 "........................      ........................",
 ".........................    .........................",
 ".........................    .........................",
diff --git a/pixmaps/ldd58.xpm b/pixmaps/ldd58.xpm
index 8a96e1e..8086c02 100644
--- a/pixmaps/ldd58.xpm
+++ b/pixmaps/ldd58.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "..........................................................",
@@ -31,28 +32,28 @@ static char *ldd58[] = {
 ".....................                .....................",
 ".....................                .....................",
 "....................                  ....................",
-"....................        ..        ....................",
-"....................        ..        ....................",
-"...................         ..         ...................",
-"...................         ..         ...................",
-"...................         ..         ...................",
-"..................          ..          ..................",
-"..................          ..          ..................",
-"..................      ..........      ..................",
-".................       ..........       .................",
-".................           ..           .................",
-".................           ..           .................",
-"................            ..            ................",
-"................            ..            ................",
-".................           ..           .................",
-"..................          ..          ..................",
+"....................        XX        ....................",
+"....................        XX        ....................",
+"...................         XX         ...................",
+"...................         XX         ...................",
+"...................         XX         ...................",
+"..................          XX          ..................",
+"..................          XX          ..................",
+"..................      XXXXXXXXXX      ..................",
+".................       XXXXXXXXXX       .................",
+".................           XX           .................",
+".................           XX           .................",
+"................            XX            ................",
+"................            XX            ................",
+".................           XX           .................",
+"..................          XX          ..................",
 "...................                    ...................",
 "....................                  ....................",
 ".....................                .....................",
 "......................              ......................",
-".......................     ..     .......................",
-"........................   ....   ........................",
-".........................  .  .  .........................",
+".......................     XX     .......................",
+"........................   XXXX   ........................",
+".........................  X  X  .........................",
 "..........................      ..........................",
 "...........................    ...........................",
 "...........................    ...........................",
diff --git a/pixmaps/ldd64.xpm b/pixmaps/ldd64.xpm
index eb63814..ad1019d 100644
--- a/pixmaps/ldd64.xpm
+++ b/pixmaps/ldd64.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
@@ -32,23 +33,23 @@ static char *ldd64[] = {
 "........................                ........................",
 ".......................                  .......................",
 ".......................                  .......................",
-".......................        ..        .......................",
-"......................         ..         ......................",
-"......................         ..         ......................",
-"......................         ..         ......................",
-".....................          ..          .....................",
-".....................          ..          .....................",
-".....................          ..          .....................",
-"....................           ..           ....................",
-"....................       ..........       ....................",
-"....................       ..........       ....................",
-"...................            ..            ...................",
-"...................            ..            ...................",
-"...................            ..            ...................",
-"..................             ..             ..................",
-"..................             ..             ..................",
-"..................             ..             ..................",
-"...................            ..            ...................",
+".......................        XX        .......................",
+"......................         XX         ......................",
+"......................         XX         ......................",
+"......................         XX         ......................",
+".....................          XX          .....................",
+".....................          XX          .....................",
+".....................          XX          .....................",
+"....................           XX           ....................",
+"....................       XXXXXXXXXX       ....................",
+"....................       XXXXXXXXXX       ....................",
+"...................            XX            ...................",
+"...................            XX            ...................",
+"...................            XX            ...................",
+"..................             XX             ..................",
+"..................             XX             ..................",
+"..................             XX             ..................",
+"...................            XX            ...................",
 "....................                        ....................",
 ".....................                      .....................",
 "......................                    ......................",
diff --git a/pixmaps/ldd72.xpm b/pixmaps/ldd72.xpm
index dbdb38a..61489ac 100644
--- a/pixmaps/ldd72.xpm
+++ b/pixmaps/ldd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -37,27 +38,27 @@ static char *ldd72[] = {
 "..........................                     .........................",
 "..........................                     .........................",
 ".........................                       ........................",
-".........................          ...          ........................",
-"........................           ...           .......................",
-"........................           ...           .......................",
-"........................           ...           .......................",
-".......................            ...            ......................",
-".......................            ...            ......................",
-"......................             ...             .....................",
-"......................             ...             .....................",
-"......................        .............        .....................",
-".....................         .............         ....................",
-".....................         .............         ....................",
-"....................               ...               ...................",
-"....................               ...               ...................",
-"....................               ...               ...................",
-"...................                ...                ..................",
-"...................                ...                ..................",
-"...................                ...                ..................",
-"....................               ...               ...................",
-".....................              ...              ....................",
-"......................             ...             .....................",
-".......................            ...            ......................",
+".........................          XXX          ........................",
+"........................           XXX           .......................",
+"........................           XXX           .......................",
+"........................           XXX           .......................",
+".......................            XXX            ......................",
+".......................            XXX            ......................",
+"......................             XXX             .....................",
+"......................             XXX             .....................",
+"......................        XXXXXXXXXXXXX        .....................",
+".....................         XXXXXXXXXXXXX         ....................",
+".....................         XXXXXXXXXXXXX         ....................",
+"....................               XXX               ...................",
+"....................               XXX               ...................",
+"....................               XXX               ...................",
+"...................                XXX                ..................",
+"...................                XXX                ..................",
+"...................                XXX                ..................",
+"....................               XXX               ...................",
+".....................              XXX              ....................",
+"......................             XXX             .....................",
+".......................            XXX            ......................",
 "........................                         .......................",
 ".........................                       ........................",
 "..........................                     .........................",
diff --git a/pixmaps/ldl33.xpm b/pixmaps/ldl33.xpm
index 63e54fd..467b892 100644
--- a/pixmaps/ldl33.xpm
+++ b/pixmaps/ldl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -19,18 +20,18 @@ static char *ldl33[] = {
 "..............       ............",
 "..............       ............",
 ".............         ...........",
-".............    .    ...........",
-".............    .    ...........",
-"............     .     ..........",
-"............     .     ..........",
-"............   .....   ..........",
-"...........      .      .........",
-"...........      .      .........",
-"...........      .      .........",
+".............    X    ...........",
+".............    X    ...........",
+"............     X     ..........",
+"............     X     ..........",
+"............   XXXXX   ..........",
+"...........      X      .........",
+"...........      X      .........",
+"...........      X      .........",
 "............           ..........",
 ".............         ...........",
-"..............   .   ............",
-"............... . . .............",
+"..............   X   ............",
+"............... X X .............",
 "................   ..............",
 "................   ..............",
 "................   ..............",
diff --git a/pixmaps/ldl37.xpm b/pixmaps/ldl37.xpm
index 9ead598..97dd3d1 100644
--- a/pixmaps/ldl37.xpm
+++ b/pixmaps/ldl37.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl37[] = {
 /* columns rows colors chars-per-pixel */
-"37 37 2 1",
+"37 37 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".....................................",
 ".....................................",
@@ -21,20 +22,20 @@ static char *ldl37[] = {
 "..............         ..............",
 "..............         ..............",
 "..............         ..............",
-".............     .     .............",
-".............     .     .............",
-".............     .     .............",
-"............      .      ............",
-"............    .....    ............",
-"............      .      ............",
-"...........       .       ...........",
-"...........       .       ...........",
-"...........       .       ...........",
+".............     X     .............",
+".............     X     .............",
+".............     X     .............",
+"............      X      ............",
+"............    XXXXX    ............",
+"............      X      ............",
+"...........       X       ...........",
+"...........       X       ...........",
+"...........       X       ...........",
 "............             ............",
 ".............           .............",
 "..............         ..............",
-"...............   .   ...............",
-"................ . . ................",
+"...............   X   ...............",
+"................ X X ................",
 ".................   .................",
 ".................   .................",
 ".................   .................",
diff --git a/pixmaps/ldl40.xpm b/pixmaps/ldl40.xpm
index 9555d12..a5573be 100644
--- a/pixmaps/ldl40.xpm
+++ b/pixmaps/ldl40.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl40[] = {
 /* columns rows colors chars-per-pixel */
-"40 40 2 1",
+"40 40 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................",
 "........................................",
@@ -21,22 +22,22 @@ static char *ldl40[] = {
 "...............         ................",
 "..............           ...............",
 "..............           ...............",
-".............      .      ..............",
-".............      .      ..............",
-".............      .      ..............",
-"............       .       .............",
-"............       .       .............",
-"............    .......    .............",
-"...........        .        ............",
-"...........        .        ............",
-"..........         .         ...........",
-"..........         .         ...........",
-"...........        .        ............",
+".............      X      ..............",
+".............      X      ..............",
+".............      X      ..............",
+"............       X       .............",
+"............       X       .............",
+"............    XXXXXXX    .............",
+"...........        X        ............",
+"...........        X        ............",
+"..........         X         ...........",
+"..........         X         ...........",
+"...........        X        ............",
 "............               .............",
 ".............             ..............",
 "..............           ...............",
-"...............    .    ................",
-"................  . .  .................",
+"...............    X    ................",
+"................  X X  .................",
 ".................     ..................",
 "..................   ...................",
 "..................   ...................",
diff --git a/pixmaps/ldl45.xpm b/pixmaps/ldl45.xpm
index 5d4a131..7a27117 100644
--- a/pixmaps/ldl45.xpm
+++ b/pixmaps/ldl45.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl45[] = {
 /* columns rows colors chars-per-pixel */
-"45 45 2 1",
+"45 45 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".............................................",
 ".............................................",
@@ -23,24 +24,24 @@ static char *ldl45[] = {
 "..................         ..................",
 ".................           .................",
 ".................           .................",
-".................     .     .................",
-"................      .      ................",
-"................      .      ................",
-"................      .      ................",
-"...............       .       ...............",
-"...............       .       ...............",
-"...............    .......    ...............",
-"..............        .        ..............",
-"..............        .        ..............",
-"..............        .        ..............",
-".............         .         .............",
-".............         .         .............",
+".................     X     .................",
+"................      X      ................",
+"................      X      ................",
+"................      X      ................",
+"...............       X       ...............",
+"...............       X       ...............",
+"...............    XXXXXXX    ...............",
+"..............        X        ..............",
+"..............        X        ..............",
+"..............        X        ..............",
+".............         X         .............",
+".............         X         .............",
 "..............                 ..............",
 "...............               ...............",
 "................             ................",
 ".................           .................",
-"..................    .    ..................",
-"...................  . .  ...................",
+"..................    X    ..................",
+"...................  X X  ...................",
 "....................     ....................",
 ".....................   .....................",
 ".....................   .....................",
diff --git a/pixmaps/ldl49.xpm b/pixmaps/ldl49.xpm
index 74ce593..8a44600 100644
--- a/pixmaps/ldl49.xpm
+++ b/pixmaps/ldl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -27,17 +28,17 @@ static char *ldl49[] = {
 "..................             ..................",
 ".................               .................",
 ".................               .................",
-".................       .       .................",
-"................        .        ................",
-"................        .        ................",
-"................        .        ................",
-"...............         .         ...............",
-"...............      .......      ...............",
-"..............          .          ..............",
-"..............          .          ..............",
-".............           .           .............",
-".............           .           .............",
-"..............          .          ..............",
+".................       X       .................",
+"................        X        ................",
+"................        X        ................",
+"................        X        ................",
+"...............         X         ...............",
+"...............      XXXXXXX      ...............",
+"..............          X          ..............",
+"..............          X          ..............",
+".............           X           .............",
+".............           X           .............",
+"..............          X          ..............",
 "...............                   ...............",
 "................                 ................",
 ".................               .................",
diff --git a/pixmaps/ldl54.xpm b/pixmaps/ldl54.xpm
index 7fcdd54..c42ee21 100644
--- a/pixmaps/ldl54.xpm
+++ b/pixmaps/ldl54.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl54[] = {
 /* columns rows colors chars-per-pixel */
-"54 54 2 1",
+"54 54 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "......................................................",
 "......................................................",
@@ -28,28 +29,28 @@ static char *ldl54[] = {
 "....................              ....................",
 "....................              ....................",
 "...................                ...................",
-"...................       ..       ...................",
-"...................       ..       ...................",
-"..................        ..        ..................",
-"..................        ..        ..................",
-"..................        ..        ..................",
-".................         ..         .................",
-".................         ..         .................",
-".................      ........      .................",
-"................       ........       ................",
-"................          ..          ................",
-"................          ..          ................",
-"...............           ..           ...............",
-"...............           ..           ...............",
-"...............           ..           ...............",
-"................          ..          ................",
+"...................       XX       ...................",
+"...................       XX       ...................",
+"..................        XX        ..................",
+"..................        XX        ..................",
+"..................        XX        ..................",
+".................         XX         .................",
+".................         XX         .................",
+".................      XXXXXXXX      .................",
+"................       XXXXXXXX       ................",
+"................          XX          ................",
+"................          XX          ................",
+"...............           XX           ...............",
+"...............           XX           ...............",
+"...............           XX           ...............",
+"................          XX          ................",
 ".................                    .................",
 "..................                  ..................",
 "...................                ...................",
 "....................              ....................",
-".....................     ..     .....................",
-"......................   ....   ......................",
-".......................  .  .  .......................",
+".....................     XX     .....................",
+"......................   XXXX   ......................",
+".......................  X  X  .......................",
 "........................      ........................",
 ".........................    .........................",
 ".........................    .........................",
diff --git a/pixmaps/ldl58.xpm b/pixmaps/ldl58.xpm
index 0987914..ef21281 100644
--- a/pixmaps/ldl58.xpm
+++ b/pixmaps/ldl58.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl58[] = {
 /* columns rows colors chars-per-pixel */
-"58 58 2 1",
+"58 58 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "..........................................................",
 "..........................................................",
@@ -31,28 +32,28 @@ static char *ldl58[] = {
 ".....................                .....................",
 ".....................                .....................",
 "....................                  ....................",
-"....................        ..        ....................",
-"....................        ..        ....................",
-"...................         ..         ...................",
-"...................         ..         ...................",
-"...................         ..         ...................",
-"..................          ..          ..................",
-"..................          ..          ..................",
-"..................      ..........      ..................",
-".................       ..........       .................",
-".................           ..           .................",
-".................           ..           .................",
-"................            ..            ................",
-"................            ..            ................",
-".................           ..           .................",
-"..................          ..          ..................",
+"....................        XX        ....................",
+"....................        XX        ....................",
+"...................         XX         ...................",
+"...................         XX         ...................",
+"...................         XX         ...................",
+"..................          XX          ..................",
+"..................          XX          ..................",
+"..................      XXXXXXXXXX      ..................",
+".................       XXXXXXXXXX       .................",
+".................           XX           .................",
+".................           XX           .................",
+"................            XX            ................",
+"................            XX            ................",
+".................           XX           .................",
+"..................          XX          ..................",
 "...................                    ...................",
 "....................                  ....................",
 ".....................                .....................",
 "......................              ......................",
-".......................     ..     .......................",
-"........................   ....   ........................",
-".........................  .  .  .........................",
+".......................     XX     .......................",
+"........................   XXXX   ........................",
+".........................  X  X  .........................",
 "..........................      ..........................",
 "...........................    ...........................",
 "...........................    ...........................",
diff --git a/pixmaps/ldl64.xpm b/pixmaps/ldl64.xpm
index af0b708..791dd0e 100644
--- a/pixmaps/ldl64.xpm
+++ b/pixmaps/ldl64.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl64[] = {
 /* columns rows colors chars-per-pixel */
-"64 64 2 1",
+"64 64 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "................................................................",
 "................................................................",
@@ -32,23 +33,23 @@ static char *ldl64[] = {
 "........................                ........................",
 ".......................                  .......................",
 ".......................                  .......................",
-".......................        ..        .......................",
-"......................         ..         ......................",
-"......................         ..         ......................",
-"......................         ..         ......................",
-".....................          ..          .....................",
-".....................          ..          .....................",
-".....................          ..          .....................",
-"....................           ..           ....................",
-"....................       ..........       ....................",
-"....................       ..........       ....................",
-"...................            ..            ...................",
-"...................            ..            ...................",
-"...................            ..            ...................",
-"..................             ..             ..................",
-"..................             ..             ..................",
-"..................             ..             ..................",
-"...................            ..            ...................",
+".......................        XX        .......................",
+"......................         XX         ......................",
+"......................         XX         ......................",
+"......................         XX         ......................",
+".....................          XX          .....................",
+".....................          XX          .....................",
+".....................          XX          .....................",
+"....................           XX           ....................",
+"....................       XXXXXXXXXX       ....................",
+"....................       XXXXXXXXXX       ....................",
+"...................            XX            ...................",
+"...................            XX            ...................",
+"...................            XX            ...................",
+"..................             XX             ..................",
+"..................             XX             ..................",
+"..................             XX             ..................",
+"...................            XX            ...................",
 "....................                        ....................",
 ".....................                      .....................",
 "......................                    ......................",
diff --git a/pixmaps/ldl72.xpm b/pixmaps/ldl72.xpm
index 6fb0c52..8b1d2d2 100644
--- a/pixmaps/ldl72.xpm
+++ b/pixmaps/ldl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *ldl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -37,27 +38,27 @@ static char *ldl72[] = {
 "..........................                     .........................",
 "..........................                     .........................",
 ".........................                       ........................",
-".........................          ...          ........................",
-"........................           ...           .......................",
-"........................           ...           .......................",
-"........................           ...           .......................",
-".......................            ...            ......................",
-".......................            ...            ......................",
-"......................             ...             .....................",
-"......................             ...             .....................",
-"......................        .............        .....................",
-".....................         .............         ....................",
-".....................         .............         ....................",
-"....................               ...               ...................",
-"....................               ...               ...................",
-"....................               ...               ...................",
-"...................                ...                ..................",
-"...................                ...                ..................",
-"...................                ...                ..................",
-"....................               ...               ...................",
-".....................              ...              ....................",
-"......................             ...             .....................",
-".......................            ...            ......................",
+".........................          XXX          ........................",
+"........................           XXX           .......................",
+"........................           XXX           .......................",
+"........................           XXX           .......................",
+".......................            XXX            ......................",
+".......................            XXX            ......................",
+"......................             XXX             .....................",
+"......................             XXX             .....................",
+"......................        XXXXXXXXXXXXX        .....................",
+".....................         XXXXXXXXXXXXX         ....................",
+".....................         XXXXXXXXXXXXX         ....................",
+"....................               XXX               ...................",
+"....................               XXX               ...................",
+"....................               XXX               ...................",
+"...................                XXX                ..................",
+"...................                XXX                ..................",
+"...................                XXX                ..................",
+"....................               XXX               ...................",
+".....................              XXX              ....................",
+"......................             XXX             .....................",
+".......................            XXX            ......................",
 "........................                         .......................",
 ".........................                       ........................",
 "..........................                     .........................",
diff --git a/pixmaps/mdd33.xpm b/pixmaps/mdd33.xpm
index 8ccecf3..f599594 100644
--- a/pixmaps/mdd33.xpm
+++ b/pixmaps/mdd33.xpm
@@ -1,42 +1,42 @@
-/* XPM */
-static char *mdd33[] = {
-/* columns rows colors chars-per-pixel */
-"33 33 3 1",
-"  c white s light_piece",
-". c green s dark_square",
-"X c black s dark_piece",
-/* pixels */
-".................................",
-".................................",
-".................................",
-".................................",
-".................................",
-"................X................",
-"...............XXX...............",
-"..............XXXXX..............",
-"..............XXXXX..............",
-"...............XXX...............",
-"...............   ...............",
-"...........XXXXXXXXXXX...........",
-"........XXXXXXXXXXXXXXXXX........",
-".......XXXXXXXXXXXXXXXXXXX.......",
-"......XXXXXXXXXXXXXXXXXXXXX......",
-"......XXXXXXXXXXXXXXXXXXXXX......",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-"....XXXXXXXXXXXXXXXXXXXXXXXXX....",
-"....XXXXXXXXXXXXXXXXXXXXXXXXX....",
-"....XXXXXX             XXXXXX....",
-"...XX     XXXXXXXXXXXXX     XX...",
-"...X XXXXXXXXXXXXXXXXXXXXXXX X...",
-"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
-"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
-"...XXXXXXXXXXXXXXXXXXXXXXXXXXX...",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-"..........XXXXXXXXXXXXX..........",
-".................................",
-".................................",
-"................................."
-};
+/* XPM */
+static char *mdd33[] = {
+/* columns rows colors chars-per-pixel */
+"33 33 3 1",
+"  c black s dark_piece",
+". c green s dark_square",
+"X c white s light_piece",
+/* pixels */
+".................................",
+".................................",
+".................................",
+".................................",
+".................................",
+"................ ................",
+"...............   ...............",
+"..............     ..............",
+"..............     ..............",
+"...............   ...............",
+"............... X ...............",
+"...........           ...........",
+"........                 ........",
+".......                   .......",
+"......                     ......",
+"......                     ......",
+".....                       .....",
+".....                       .....",
+".....                       .....",
+".....                       .....",
+"....                         ....",
+"....                         ....",
+"....      XXXXXXXXXXXXX      ....",
+"...  XXXXX             XXXXX  ...",
+"... X                       X ...",
+"..                             ..",
+"..                             ..",
+"...                           ...",
+".....                       .....",
+"..........             ..........",
+".................................",
+".................................",
+"................................."
+};
diff --git a/pixmaps/mdd49.xpm b/pixmaps/mdd49.xpm
index 1510c80..e178399 100644
--- a/pixmaps/mdd49.xpm
+++ b/pixmaps/mdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *mdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -18,7 +19,7 @@ static char *mdd49[] = {
 "......................     ......................",
 "......................     ......................",
 "......................     ......................",
-"...................... ... ......................",
+"...................... XXX ......................",
 ".................                ................",
 "...............                   ...............",
 "............                         ............",
@@ -32,18 +33,18 @@ static char *mdd49[] = {
 "........                                 ........",
 ".......                                  ........",
 ".......                                   .......",
-".......            ...........            .......",
-".......      ....               ....      .......",
-".......   ..                         ..   .......",
+".......            XXXXXXXXXXX            .......",
+".......      XXXX               XXXX      .......",
+".......   XX                         XX   .......",
 "......                                     ......",
 "......                                     ......",
 "......                                     ......",
-".....          ...................          .....",
-"....     ......                   ......     ....",
-"...   ...                               ...   ...",
-"..  ..  ..                            ..   ..  ..",
-".  .      ......                 .....       .  .",
-".               .................               .",
+".....          XXXXXXXXXXXXXXXXXXX          .....",
+"....     XXXXXX                   XXXXXX     ....",
+"...   XXX                               XXX   ...",
+"..  XX  XX                            XX   XX  ..",
+".  X      XXXXXX                 XXXXX       X  .",
+".               XXXXXXXXXXXXXXXXX               .",
 ".                                               .",
 "..                                             ..",
 "...                                           ...",
diff --git a/pixmaps/mdd72.xpm b/pixmaps/mdd72.xpm
index 73ee78f..736be28 100644
--- a/pixmaps/mdd72.xpm
+++ b/pixmaps/mdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *mdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -28,8 +29,8 @@ static char *mdd72[] = {
 "................................         ...............................",
 "................................         ...............................",
 "................................         ...............................",
-".................................  ...  ................................",
-".................................  ...  ................................",
+".................................  XXX  ................................",
+".................................  XXX  ................................",
 "...........................                   ..........................",
 "........................                          ......................",
 ".....................                               ....................",
@@ -48,22 +49,22 @@ static char *mdd72[] = {
 ".............                                              .............",
 ".............                                              .............",
 ".............                                              .............",
-"............               ....................             ............",
-"............        ...... .................... .....       ............",
-"............    ..........                      ........    ............",
-"............    ....                                 ...    ............",
+"............               XXXXXXXXXXXXXXXXXXXX             ............",
+"............        XXXXXX XXXXXXXXXXXXXXXXXXXX XXXXX       ............",
+"............    XXXXXXXXXX                      XXXXXXXX    ............",
+"............    XXXX                                 XXX    ............",
 "...........                                                  ...........",
 "...........                                                  ...........",
 "...........                                                  ...........",
 "..........                                                    ..........",
 ".........                                                      .........",
-"........               ..........................               ........",
-".......         ........................................         .......",
-"......     ............                           ...........     ......",
-".....    .......                                       ........    .....",
-"....    ...  .............                    .............  ...    ....",
-"...             ........................................             ...",
-"...                       .....................                      ...",
+"........               XXXXXXXXXXXXXXXXXXXXXXXXXX               ........",
+".......         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX         .......",
+"......     XXXXXXXXXXXX                           XXXXXXXXXXX     ......",
+".....    XXXXXXX                                       XXXXXXXX    .....",
+"....    XXX  XXXXXXXXXXXXX                    XXXXXXXXXXXXX  XXX    ....",
+"...             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX             ...",
+"...                       XXXXXXXXXXXXXXXXXXXXX                      ...",
 "...                                                                  ...",
 "....                                                                ....",
 ".....                                                              .....",
diff --git a/pixmaps/mdl33.xpm b/pixmaps/mdl33.xpm
index cda976f..253cc90 100644
--- a/pixmaps/mdl33.xpm
+++ b/pixmaps/mdl33.xpm
@@ -1,42 +1,42 @@
-/* XPM */
-static char *mdl33[] = {
-/* columns rows colors chars-per-pixel */
-"33 33 3 1",
-"  c white s light_piece",
-". c gray s light_square",
-"X c black s dark_piece",
-/* pixels */
-".................................",
-".................................",
-".................................",
-".................................",
-".................................",
-"................X................",
-"...............XXX...............",
-"..............XXXXX..............",
-"..............XXXXX..............",
-"...............XXX...............",
-"...............   ...............",
-"...........XXXXXXXXXXX...........",
-"........XXXXXXXXXXXXXXXXX........",
-".......XXXXXXXXXXXXXXXXXXX.......",
-"......XXXXXXXXXXXXXXXXXXXXX......",
-"......XXXXXXXXXXXXXXXXXXXXX......",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-"....XXXXXXXXXXXXXXXXXXXXXXXXX....",
-"....XXXXXXXXXXXXXXXXXXXXXXXXX....",
-"....XXXXXX             XXXXXX....",
-"...XX     XXXXXXXXXXXXX     XX...",
-"...X XXXXXXXXXXXXXXXXXXXXXXX X...",
-"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
-"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
-"...XXXXXXXXXXXXXXXXXXXXXXXXXXX...",
-".....XXXXXXXXXXXXXXXXXXXXXXX.....",
-"..........XXXXXXXXXXXXX..........",
-".................................",
-".................................",
-"................................."
-};
+/* XPM */
+static char *mdl33[] = {
+/* columns rows colors chars-per-pixel */
+"33 33 3 1",
+"  c black s dark_piece",
+". c gray s light_square",
+"X c white s light_piece",
+/* pixels */
+".................................",
+".................................",
+".................................",
+".................................",
+".................................",
+"................ ................",
+"...............   ...............",
+"..............     ..............",
+"..............     ..............",
+"...............   ...............",
+"............... X ...............",
+"...........           ...........",
+"........                 ........",
+".......                   .......",
+"......                     ......",
+"......                     ......",
+".....                       .....",
+".....                       .....",
+".....                       .....",
+".....                       .....",
+"....                         ....",
+"....                         ....",
+"....      XXXXXXXXXXXXX      ....",
+"...  XXXXX             XXXXX  ...",
+"... X                       X ...",
+"..                             ..",
+"..                             ..",
+"...                           ...",
+".....                       .....",
+"..........             ..........",
+".................................",
+".................................",
+"................................."
+};
diff --git a/pixmaps/mdl49.xpm b/pixmaps/mdl49.xpm
index 2ecdf81..3298cfa 100644
--- a/pixmaps/mdl49.xpm
+++ b/pixmaps/mdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *mdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -18,7 +19,7 @@ static char *mdl49[] = {
 "......................     ......................",
 "......................     ......................",
 "......................     ......................",
-"...................... ... ......................",
+"...................... XXX ......................",
 ".................                ................",
 "...............                   ...............",
 "............                         ............",
@@ -32,18 +33,18 @@ static char *mdl49[] = {
 "........                                 ........",
 ".......                                  ........",
 ".......                                   .......",
-".......            ...........            .......",
-".......      ....               ....      .......",
-".......   ..                         ..   .......",
+".......            XXXXXXXXXXX            .......",
+".......      XXXX               XXXX      .......",
+".......   XX                         XX   .......",
 "......                                     ......",
 "......                                     ......",
 "......                                     ......",
-".....          ...................          .....",
-"....     ......                   ......     ....",
-"...   ...                               ...   ...",
-"..  ..  ..                            ..   ..  ..",
-".  .      ......                 .....       .  .",
-".               .................               .",
+".....          XXXXXXXXXXXXXXXXXXX          .....",
+"....     XXXXXX                   XXXXXX     ....",
+"...   XXX                               XXX   ...",
+"..  XX  XX                            XX   XX  ..",
+".  X      XXXXXX                 XXXXX       X  .",
+".               XXXXXXXXXXXXXXXXX               .",
 ".                                               .",
 "..                                             ..",
 "...                                           ...",
diff --git a/pixmaps/mdl72.xpm b/pixmaps/mdl72.xpm
index c303d37..b1a1498 100644
--- a/pixmaps/mdl72.xpm
+++ b/pixmaps/mdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *mdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -28,8 +29,8 @@ static char *mdl72[] = {
 "................................         ...............................",
 "................................         ...............................",
 "................................         ...............................",
-".................................  ...  ................................",
-".................................  ...  ................................",
+".................................  XXX  ................................",
+".................................  XXX  ................................",
 "...........................                   ..........................",
 "........................                          ......................",
 ".....................                               ....................",
@@ -48,22 +49,22 @@ static char *mdl72[] = {
 ".............                                              .............",
 ".............                                              .............",
 ".............                                              .............",
-"............               ....................             ............",
-"............        ...... .................... .....       ............",
-"............    ..........                      ........    ............",
-"............    ....                                 ...    ............",
+"............               XXXXXXXXXXXXXXXXXXXX             ............",
+"............        XXXXXX XXXXXXXXXXXXXXXXXXXX XXXXX       ............",
+"............    XXXXXXXXXX                      XXXXXXXX    ............",
+"............    XXXX                                 XXX    ............",
 "...........                                                  ...........",
 "...........                                                  ...........",
 "...........                                                  ...........",
 "..........                                                    ..........",
 ".........                                                      .........",
-"........               ..........................               ........",
-".......         ........................................         .......",
-"......     ............                           ...........     ......",
-".....    .......                                       ........    .....",
-"....    ...  .............                    .............  ...    ....",
-"...             ........................................             ...",
-"...                       .....................                      ...",
+"........               XXXXXXXXXXXXXXXXXXXXXXXXXX               ........",
+".......         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX         .......",
+"......     XXXXXXXXXXXX                           XXXXXXXXXXX     ......",
+".....    XXXXXXX                                       XXXXXXXX    .....",
+"....    XXX  XXXXXXXXXXXXX                    XXXXXXXXXXXXX  XXX    ....",
+"...             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX             ...",
+"...                       XXXXXXXXXXXXXXXXXXXXX                      ...",
 "...                                                                  ...",
 "....                                                                ....",
 ".....                                                              .....",
diff --git a/pixmaps/odd33.xpm b/pixmaps/odd33.xpm
index 55d3314..7583b13 100644
--- a/pixmaps/odd33.xpm
+++ b/pixmaps/odd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *odd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -18,19 +19,19 @@ static char *odd33[] = {
 ".. ..                    ........",
 ".......                      ....",
 ".........                      ..",
-"........... ..........         ..",
-"............         .         ..",
-"............         .        . .",
-"....                 ........ . .",
-"....                        .  ..",
+"........... XXXXXXXXXX         ..",
+"............         X         ..",
+"............         X        X .",
+"....                 XXXXXXXX X .",
+"....                        X  ..",
 "....                         ....",
 "....                         ....",
 "....                         ....",
 "....                         ....",
 "....                         ....",
-"....    ...          ...     ....",
-"....   .   .        .   .    ....",
-"....  .     .      .     .   ....",
+"....    XXX          XXX     ....",
+"....   X   X        X   X    ....",
+"....  X     X      X     X   ....",
 "....                         ....",
 ".......     ........     ........",
 "........   ..........   .........",
diff --git a/pixmaps/odd49.xpm b/pixmaps/odd49.xpm
index e11bd91..a82d049 100644
--- a/pixmaps/odd49.xpm
+++ b/pixmaps/odd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *odd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -27,13 +28,13 @@ static char *odd49[] = {
 "...........                            ..........",
 ".............                             .......",
 "...............                             .....",
-"................. ................           ....",
-".................                .           ....",
-".................                .           ....",
-"......                           .......... .....",
-"......                                    .  ....",
-"......                                    .  ....",
-"......                                    .  ....",
+"................. XXXXXXXXXXXXXXXX           ....",
+".................                X           ....",
+".................                X           ....",
+"......                           XXXXXXXXXX .....",
+"......                                    X  ....",
+"......                                    X  ....",
+"......                                    X  ....",
 "......                                     ......",
 "......                                     ......",
 "......                                     ......",
@@ -43,13 +44,13 @@ static char *odd49[] = {
 "......                                     ......",
 "......                                     ......",
 "......                                     ......",
-"......      ..                     ..      ......",
-"......     ....                   ....     ......",
-"......    ......                 ......    ......",
-"......    ......                 ......    ......",
-"......... ...... ............... ...... .........",
-".......... .... ................. .... ..........",
-"..........  ..  .................  ..  ..........",
+"......      XX                     XX      ......",
+"......     XXXX                   XXXX     ......",
+"......    XXXXXX                 XXXXXX    ......",
+"......    XXXXXX                 XXXXXX    ......",
+"......... XXXXXX ............... XXXXXX .........",
+".......... XXXX ................. XXXX ..........",
+"..........  XX  .................  XX  ..........",
 "............  .....................  ............",
 ".................................................",
 ".................................................",
diff --git a/pixmaps/odd72.xpm b/pixmaps/odd72.xpm
index 0e75e81..6c666b1 100644
--- a/pixmaps/odd72.xpm
+++ b/pixmaps/odd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *odd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -37,18 +38,18 @@ static char *odd72[] = {
 ".................                                      .................",
 "...................                                       ..............",
 ".....................                                        ...........",
-".....................  ...........................               .......",
-".....................  ...........................                 .....",
-".....................                           ..                 .....",
-".....................                           ..                 .....",
-"........                                        ...............    .....",
-"........                                        ...............   ......",
-"........                                                     ..   ......",
-"........                                                     ..    .....",
-"........                                                     ..     ....",
-"........                                                     ..     ....",
-"........                                                     ..     ....",
-"........                                                     ..    .....",
+".....................  XXXXXXXXXXXXXXXXXXXXXXXXXXX               .......",
+".....................  XXXXXXXXXXXXXXXXXXXXXXXXXXX                 .....",
+".....................                           XX                 .....",
+".....................                           XX                 .....",
+"........                                        XXXXXXXXXXXXXXX    .....",
+"........                                        XXXXXXXXXXXXXXX   ......",
+"........                                                     XX   ......",
+"........                                                     XX    .....",
+"........                                                     XX     ....",
+"........                                                     XX     ....",
+"........                                                     XX     ....",
+"........                                                     XX    .....",
 "........                                                          ......",
 "........                                                       .........",
 "........                                                       .........",
@@ -61,15 +62,15 @@ static char *odd72[] = {
 "........                                                       .........",
 "........                                                       .........",
 "........                                                       .........",
-"........           ....                         ....           .........",
-"........          ......                       ......          .........",
-"........         ........                     ........         .........",
-"........         ........                     ........         .........",
-"........         ........                     ........         .........",
-"...............  ........  .................  ........  ................",
-"...............  ........  .................  ........  ................",
-"................  ......   ..................  ......   ................",
-"................   ....   ...................   ....   .................",
+"........           XXXX                         XXXX           .........",
+"........          XXXXXX                       XXXXXX          .........",
+"........         XXXXXXXX                     XXXXXXXX         .........",
+"........         XXXXXXXX                     XXXXXXXX         .........",
+"........         XXXXXXXX                     XXXXXXXX         .........",
+"...............  XXXXXXXX  .................  XXXXXXXX  ................",
+"...............  XXXXXXXX  .................  XXXXXXXX  ................",
+"................  XXXXXX   ..................  XXXXXX   ................",
+"................   XXXX   ...................   XXXX   .................",
 ".................        .....................        ..................",
 "..................      .......................      ...................",
 "........................................................................",
diff --git a/pixmaps/odl33.xpm b/pixmaps/odl33.xpm
index 5308eca..876a4d7 100644
--- a/pixmaps/odl33.xpm
+++ b/pixmaps/odl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *odl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -18,19 +19,19 @@ static char *odl33[] = {
 ".. ..                    ........",
 ".......                      ....",
 ".........                      ..",
-"........... ..........         ..",
-"............         .         ..",
-"............         .        . .",
-"....                 ........ . .",
-"....                        .  ..",
+"........... XXXXXXXXXX         ..",
+"............         X         ..",
+"............         X        X .",
+"....                 XXXXXXXX X .",
+"....                        X  ..",
 "....                         ....",
 "....                         ....",
 "....                         ....",
 "....                         ....",
 "....                         ....",
-"....    ...          ...     ....",
-"....   .   .        .   .    ....",
-"....  .     .      .     .   ....",
+"....    XXX          XXX     ....",
+"....   X   X        X   X    ....",
+"....  X     X      X     X   ....",
 "....                         ....",
 ".......     ........     ........",
 "........   ..........   .........",
diff --git a/pixmaps/odl49.xpm b/pixmaps/odl49.xpm
index 2c80d39..fdc0e6d 100644
--- a/pixmaps/odl49.xpm
+++ b/pixmaps/odl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *odl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -27,13 +28,13 @@ static char *odl49[] = {
 "...........                            ..........",
 ".............                             .......",
 "...............                             .....",
-"................. ................           ....",
-".................                .           ....",
-".................                .           ....",
-"......                           .......... .....",
-"......                                    .  ....",
-"......                                    .  ....",
-"......                                    .  ....",
+"................. XXXXXXXXXXXXXXXX           ....",
+".................                X           ....",
+".................                X           ....",
+"......                           XXXXXXXXXX .....",
+"......                                    X  ....",
+"......                                    X  ....",
+"......                                    X  ....",
 "......                                     ......",
 "......                                     ......",
 "......                                     ......",
@@ -43,13 +44,13 @@ static char *odl49[] = {
 "......                                     ......",
 "......                                     ......",
 "......                                     ......",
-"......      ..                     ..      ......",
-"......     ....                   ....     ......",
-"......    ......                 ......    ......",
-"......    ......                 ......    ......",
-"......... ...... ............... ...... .........",
-".......... .... ................. .... ..........",
-"..........  ..  .................  ..  ..........",
+"......      XX                     XX      ......",
+"......     XXXX                   XXXX     ......",
+"......    XXXXXX                 XXXXXX    ......",
+"......    XXXXXX                 XXXXXX    ......",
+"......... XXXXXX ............... XXXXXX .........",
+".......... XXXX ................. XXXX ..........",
+"..........  XX  .................  XX  ..........",
 "............  .....................  ............",
 ".................................................",
 ".................................................",
diff --git a/pixmaps/odl72.xpm b/pixmaps/odl72.xpm
index f65d242..c528533 100644
--- a/pixmaps/odl72.xpm
+++ b/pixmaps/odl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *odl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -37,18 +38,18 @@ static char *odl72[] = {
 ".................                                      .................",
 "...................                                       ..............",
 ".....................                                        ...........",
-".....................  ...........................               .......",
-".....................  ...........................                 .....",
-".....................                           ..                 .....",
-".....................                           ..                 .....",
-"........                                        ...............    .....",
-"........                                        ...............   ......",
-"........                                                     ..   ......",
-"........                                                     ..    .....",
-"........                                                     ..     ....",
-"........                                                     ..     ....",
-"........                                                     ..     ....",
-"........                                                     ..    .....",
+".....................  XXXXXXXXXXXXXXXXXXXXXXXXXXX               .......",
+".....................  XXXXXXXXXXXXXXXXXXXXXXXXXXX                 .....",
+".....................                           XX                 .....",
+".....................                           XX                 .....",
+"........                                        XXXXXXXXXXXXXXX    .....",
+"........                                        XXXXXXXXXXXXXXX   ......",
+"........                                                     XX   ......",
+"........                                                     XX    .....",
+"........                                                     XX     ....",
+"........                                                     XX     ....",
+"........                                                     XX     ....",
+"........                                                     XX    .....",
 "........                                                          ......",
 "........                                                       .........",
 "........                                                       .........",
@@ -61,15 +62,15 @@ static char *odl72[] = {
 "........                                                       .........",
 "........                                                       .........",
 "........                                                       .........",
-"........           ....                         ....           .........",
-"........          ......                       ......          .........",
-"........         ........                     ........         .........",
-"........         ........                     ........         .........",
-"........         ........                     ........         .........",
-"...............  ........  .................  ........  ................",
-"...............  ........  .................  ........  ................",
-"................  ......   ..................  ......   ................",
-"................   ....   ...................   ....   .................",
+"........           XXXX                         XXXX           .........",
+"........          XXXXXX                       XXXXXX          .........",
+"........         XXXXXXXX                     XXXXXXXX         .........",
+"........         XXXXXXXX                     XXXXXXXX         .........",
+"........         XXXXXXXX                     XXXXXXXX         .........",
+"...............  XXXXXXXX  .................  XXXXXXXX  ................",
+"...............  XXXXXXXX  .................  XXXXXXXX  ................",
+"................  XXXXXX   ..................  XXXXXX   ................",
+"................   XXXX   ...................   XXXX   .................",
 ".................        .....................        ..................",
 "..................      .......................      ...................",
 "........................................................................",
diff --git a/pixmaps/sdd49.xpm b/pixmaps/sdd49.xpm
index 61b330c..c8f22e8 100644
--- a/pixmaps/sdd49.xpm
+++ b/pixmaps/sdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *sdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -18,14 +19,14 @@ static char *sdd49[] = {
 ".............                    ................",
 "...........                      ................",
 "..........                        ...............",
-"......... ......                ..  .............",
-"........        ...                   ...........",
-"........           ...                 ..........",
-".......               ..              . .........",
-".......                 ..            .. ........",
-"......                    .      ..      ........",
-"......                     .     ..       .......",
-"......                      .             .......",
+"......... XXXXXX                XX  .............",
+"........        XXX                   ...........",
+"........           XXX                 ..........",
+".......               XX              X .........",
+".......                 XX            XX ........",
+"......                    X      XX      ........",
+"......                     X     XX       .......",
+"......                      X             .......",
 "......                       .            .......",
 "......                      ....          .......",
 "......                      .......     . .......",
diff --git a/pixmaps/sdd72.xpm b/pixmaps/sdd72.xpm
index 8503541..f0a77f3 100644
--- a/pixmaps/sdd72.xpm
+++ b/pixmaps/sdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *sdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -23,18 +24,18 @@ static char *sdd72[] = {
 "...................                             ........................",
 ".................                                .......................",
 "................                                  ......................",
-"...............                               ...  .....................",
-".............   .........                    .....   ...................",
-".............  ............                            .................",
-"............            ......                          ................",
-"...........                ......                        ...............",
-"...........                   ......                  ... ..............",
-"..........                       .....                 ... .............",
-"..........                         ....                 ..  ............",
-".........                            ...       ....          ...........",
-".........                             ...       ...          ...........",
-".........                              ...      ....          ..........",
-".........                               .                     ..........",
+"...............                               XXX  .....................",
+".............   XXXXXXXXX                    XXXXX   ...................",
+".............  XXXXXXXXXXXX                            .................",
+"............            XXXXXX                          ................",
+"...........                XXXXXX                        ...............",
+"...........                   XXXXXX                  XXX ..............",
+"..........                       XXXXX                 XXX .............",
+"..........                         XXXX                 XX  ............",
+".........                            XXX       XXXX          ...........",
+".........                             XXX       XXX          ...........",
+".........                              XXX      XXXX          ..........",
+".........                               X                     ..........",
 ".........                                                     ..........",
 ".........                                 ..                  ..........",
 ".........                                 ...                 ..........",
diff --git a/pixmaps/sdl49.xpm b/pixmaps/sdl49.xpm
index 05b0f88..298bfd3 100644
--- a/pixmaps/sdl49.xpm
+++ b/pixmaps/sdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *sdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -18,14 +19,14 @@ static char *sdl49[] = {
 ".............                    ................",
 "...........                      ................",
 "..........                        ...............",
-"......... ......                ..  .............",
-"........        ...                   ...........",
-"........           ...                 ..........",
-".......               ..              . .........",
-".......                 ..            .. ........",
-"......                    .      ..      ........",
-"......                     .     ..       .......",
-"......                      .             .......",
+"......... XXXXXX                XX  .............",
+"........        XXX                   ...........",
+"........           XXX                 ..........",
+".......               XX              X .........",
+".......                 XX            XX ........",
+"......                    X      XX      ........",
+"......                     X     XX       .......",
+"......                      X             .......",
 "......                       .            .......",
 "......                      ....          .......",
 "......                      .......     . .......",
diff --git a/pixmaps/sdl72.xpm b/pixmaps/sdl72.xpm
index f61c684..9498a41 100644
--- a/pixmaps/sdl72.xpm
+++ b/pixmaps/sdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *sdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -23,18 +24,18 @@ static char *sdl72[] = {
 "...................                             ........................",
 ".................                                .......................",
 "................                                  ......................",
-"...............                               ...  .....................",
-".............   .........                    .....   ...................",
-".............  ............                            .................",
-"............            ......                          ................",
-"...........                ......                        ...............",
-"...........                   ......                  ... ..............",
-"..........                       .....                 ... .............",
-"..........                         ....                 ..  ............",
-".........                            ...       ....          ...........",
-".........                             ...       ...          ...........",
-".........                              ...      ....          ..........",
-".........                               .                     ..........",
+"...............                               XXX  .....................",
+".............   XXXXXXXXX                    XXXXX   ...................",
+".............  XXXXXXXXXXXX                            .................",
+"............            XXXXXX                          ................",
+"...........                XXXXXX                        ...............",
+"...........                   XXXXXX                  XXX ..............",
+"..........                       XXXXX                 XXX .............",
+"..........                         XXXX                 XX  ............",
+".........                            XXX       XXXX          ...........",
+".........                             XXX       XXX          ...........",
+".........                              XXX      XXXX          ..........",
+".........                               X                     ..........",
 ".........                                                     ..........",
 ".........                                 ..                  ..........",
 ".........                                 ...                 ..........",
diff --git a/pixmaps/udd49.xpm b/pixmaps/udd49.xpm
index b4721c9..c2ad907 100644
--- a/pixmaps/udd49.xpm
+++ b/pixmaps/udd49.xpm
@@ -1,44 +1,45 @@
 /* XPM */
 static char *udd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".  ..............................................",
 "..  .............................................",
 "..   ............................................",
-"... . ...... ........ ...........................",
-".... . .....   .....   ..........................",
-".... .. ....    ....    .........................",
-"..... .. ...     ..     .........................",
-"...... .. ..       .   .   ......................",
-"....... .. ..   .. .   .      ...................",
-"....... ...    .                .................",
-"........ ...                     ................",
-"......... ..                       ..............",
+"... X ...... ........ ...........................",
+".... X .....   .....   ..........................",
+".... XX ....    ....    .........................",
+"..... XX ...     ..     .........................",
+"...... XX ..       X   X   ......................",
+"....... XX ..   XX X   X      ...................",
+"....... XXX    X                .................",
+"........ XXX                     ................",
+"......... XX                       ..............",
 "..........                          .............",
-".........      .                     ............",
-".........    ..                       ...........",
-".........    .                        ...........",
-".........   .                          ..........",
-"........                 .              .........",
-"........                 .              .........",
-"........                 .               ........",
-".......                  .               ........",
-".......                 .                ........",
+".........      X                     ............",
+".........    XX                       ...........",
+".........    X                        ...........",
+".........   X                          ..........",
+"........                 X              .........",
+"........                 X              .........",
+"........                 X               ........",
+".......                  X               ........",
+".......                 X                ........",
 "......                                    .......",
 ".....                   .                 .......",
 ".....                  ..                 .......",
 "....                  ...                  ......",
 "....                .....                  ......",
-"...   ..           ......                  ......",
-"...   .          .......                   ......",
+"...   XX           ......                  ......",
+"...   X          .......                   ......",
 "...             ........                    .....",
-"...       .     .......                     .....",
-"...      .    .  .....                      .....",
-"....     .   .   ....                       .....",
+"...       X     .......                     .....",
+"...      .    X  .....                      .....",
+"....     .   X   ....                       .....",
 ".....    .      . ..                        .....",
 "..........  .   ...                         .....",
 ".............. ...                           ....",
diff --git a/pixmaps/udd72.xpm b/pixmaps/udd72.xpm
index e762155..976e295 100644
--- a/pixmaps/udd72.xpm
+++ b/pixmaps/udd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *udd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -12,25 +13,25 @@ static char *udd72[] = {
 ".   ............................ .......................................",
 "..    ...........   ...........   ......................................",
 "..     ...........   .........    ......................................",
-"...  .  ..........     ......      .....................................",
-"....  .   ........      .....      .....................................",
-".....  ..  .......       ...        ....................................",
-"......  ..  ......        ..        ....................................",
-".......  ..   ....          .      .     ...............................",
-"........  ..   ...       . ..      ..       ............................",
-".........  ...  ..      .. .       ..          .........................",
-"..........  ...  .     ...          .            .......................",
-"...........  ...      ...                          .....................",
-"............  ...     .                             ....................",
-".............  ...                                   ...................",
-"..............  .                                     ..................",
+"...  X  ..........     ......      .....................................",
+"....  X   ........      .....      .....................................",
+".....  XX  .......       ...        ....................................",
+"......  XX  ......        ..        ....................................",
+".......  XX   ....          X      X     ...............................",
+"........  XX   ...       X XX      XX       ............................",
+".........  XXX  ..      XX X       XX          .........................",
+"..........  XXX  .     XXX          X            .......................",
+"...........  XXX      XXX                          .....................",
+"............  XXX     X                             ....................",
+".............  XXX                                   ...................",
+"..............  X                                     ..................",
 "..............                                         .................",
-".............         ..                                ................",
-".............       ...                                  ...............",
-".............      ....                                  ...............",
-".............     .....                                   ..............",
-".............     ....                                     .............",
-"............      .                                        .............",
+".............         XX                                ................",
+".............       XXX                                  ...............",
+".............      XXXX                                  ...............",
+".............     XXXXX                                   ..............",
+".............     XXXX                                     .............",
+"............      X                                        .............",
 "............                                                ............",
 "............                                                ............",
 "...........                                                  ...........",
@@ -45,18 +46,18 @@ static char *udd72[] = {
 "......                             .                            ........",
 ".....                            ...                            ........",
 ".....                          .....                            ........",
-".....    ..                  .......                             .......",
-"....    ....               ........                              .......",
-"....    ....             ..........                              .......",
-"....    ...             ..........                               .......",
-"....    ...            ...........                               .......",
+".....    XX                  .......                             .......",
+"....    XXXX               ........                              .......",
+"....    XXXX             ..........                              .......",
+"....    XXX             ..........                               .......",
+"....    XXX            ...........                               .......",
 "....                  ...........                                 ......",
 "....                   .........                                  ......",
-"....                .    .......                                  ......",
-".....               ...  ......                                   ......",
-"......             ..   ......                                    ......",
-"........    .       ..  .....                                     ......",
-"..............   .   . .....                                      ......",
+"....                X    .......                                  ......",
+".....               XXX  ......                                   ......",
+"......             XX   ......                                    ......",
+"........    .       XX  .....                                     ......",
+"..............   .   X .....                                      ......",
 "...................     ...                                       ......",
 "....................    ...                                        .....",
 "..........................                                         .....",
diff --git a/pixmaps/udl49.xpm b/pixmaps/udl49.xpm
index ebd9c86..0a5e30b 100644
--- a/pixmaps/udl49.xpm
+++ b/pixmaps/udl49.xpm
@@ -1,44 +1,45 @@
 /* XPM */
 static char *udl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".  ..............................................",
 "..  .............................................",
 "..   ............................................",
-"... . ...... ........ ...........................",
-".... . .....   .....   ..........................",
-".... .. ....    ....    .........................",
-"..... .. ...     ..     .........................",
-"...... .. ..       .   .   ......................",
-"....... .. ..   .. .   .      ...................",
-"....... ...    .                .................",
-"........ ...                     ................",
-"......... ..                       ..............",
+"... X ...... ........ ...........................",
+".... X .....   .....   ..........................",
+".... XX ....    ....    .........................",
+"..... XX ...     ..     .........................",
+"...... XX ..       X   X   ......................",
+"....... XX ..   XX X   X      ...................",
+"....... XXX    X                .................",
+"........ XXX                     ................",
+"......... XX                       ..............",
 "..........                          .............",
-".........      .                     ............",
-".........    ..                       ...........",
-".........    .                        ...........",
-".........   .                          ..........",
-"........                 .              .........",
-"........                 .              .........",
-"........                 .               ........",
-".......                  .               ........",
-".......                 .                ........",
+".........      X                     ............",
+".........    XX                       ...........",
+".........    X                        ...........",
+".........   X                          ..........",
+"........                 X              .........",
+"........                 X              .........",
+"........                 X               ........",
+".......                  X               ........",
+".......                 X                ........",
 "......                                    .......",
 ".....                   .                 .......",
 ".....                  ..                 .......",
 "....                  ...                  ......",
 "....                .....                  ......",
-"...   ..           ......                  ......",
-"...   .          .......                   ......",
+"...   XX           ......                  ......",
+"...   X          .......                   ......",
 "...             ........                    .....",
-"...       .     .......                     .....",
-"...      .    .  .....                      .....",
-"....     .   .   ....                       .....",
+"...       X     .......                     .....",
+"...      .    X  .....                      .....",
+"....     .   X   ....                       .....",
 ".....    .      . ..                        .....",
 "..........  .   ...                         .....",
 ".............. ...                           ....",
diff --git a/pixmaps/udl72.xpm b/pixmaps/udl72.xpm
index 851f6ee..d759885 100644
--- a/pixmaps/udl72.xpm
+++ b/pixmaps/udl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *udl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -12,25 +13,25 @@ static char *udl72[] = {
 ".   ............................ .......................................",
 "..    ...........   ...........   ......................................",
 "..     ...........   .........    ......................................",
-"...  .  ..........     ......      .....................................",
-"....  .   ........      .....      .....................................",
-".....  ..  .......       ...        ....................................",
-"......  ..  ......        ..        ....................................",
-".......  ..   ....          .      .     ...............................",
-"........  ..   ...       . ..      ..       ............................",
-".........  ...  ..      .. .       ..          .........................",
-"..........  ...  .     ...          .            .......................",
-"...........  ...      ...                          .....................",
-"............  ...     .                             ....................",
-".............  ...                                   ...................",
-"..............  .                                     ..................",
+"...  X  ..........     ......      .....................................",
+"....  X   ........      .....      .....................................",
+".....  XX  .......       ...        ....................................",
+"......  XX  ......        ..        ....................................",
+".......  XX   ....          X      X     ...............................",
+"........  XX   ...       X XX      XX       ............................",
+".........  XXX  ..      XX X       XX          .........................",
+"..........  XXX  .     XXX          X            .......................",
+"...........  XXX      XXX                          .....................",
+"............  XXX     X                             ....................",
+".............  XXX                                   ...................",
+"..............  X                                     ..................",
 "..............                                         .................",
-".............         ..                                ................",
-".............       ...                                  ...............",
-".............      ....                                  ...............",
-".............     .....                                   ..............",
-".............     ....                                     .............",
-"............      .                                        .............",
+".............         XX                                ................",
+".............       XXX                                  ...............",
+".............      XXXX                                  ...............",
+".............     XXXXX                                   ..............",
+".............     XXXX                                     .............",
+"............      X                                        .............",
 "............                                                ............",
 "............                                                ............",
 "...........                                                  ...........",
@@ -45,18 +46,18 @@ static char *udl72[] = {
 "......                             .                            ........",
 ".....                            ...                            ........",
 ".....                          .....                            ........",
-".....    ..                  .......                             .......",
-"....    ....               ........                              .......",
-"....    ....             ..........                              .......",
-"....    ...             ..........                               .......",
-"....    ...            ...........                               .......",
+".....    XX                  .......                             .......",
+"....    XXXX               ........                              .......",
+"....    XXXX             ..........                              .......",
+"....    XXX             ..........                               .......",
+"....    XXX            ...........                               .......",
 "....                  ...........                                 ......",
 "....                   .........                                  ......",
-"....                .    .......                                  ......",
-".....               ...  ......                                   ......",
-"......             ..   ......                                    ......",
-"........    .       ..  .....                                     ......",
-"..............   .   . .....                                      ......",
+"....                X    .......                                  ......",
+".....               XXX  ......                                   ......",
+"......             XX   ......                                    ......",
+"........    .       XX  .....                                     ......",
+"..............   .   X .....                                      ......",
 "...................     ...                                       ......",
 "....................    ...                                        .....",
 "..........................                                         .....",
diff --git a/pixmaps/vdd33.xpm b/pixmaps/vdd33.xpm
index b998fc2..07b2591 100644
--- a/pixmaps/vdd33.xpm
+++ b/pixmaps/vdd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *vdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -14,27 +15,27 @@ static char *vdd33[] = {
 "............          ...........",
 "..........              .........",
 ".........                ........",
-"........        ...      ........",
-"........      ..   .      .......",
-"........     ...   .    . .......",
-".......         ...    ...  .....",
-".......                .     ....",
-".......               .       ...",
-".......             .......   ...",
-"......              .      .  ...",
+"........        XXX      ........",
+"........      XX   X      .......",
+"........     XXX   X    X .......",
+".......         XXX    XXX  .....",
+".......                X     ....",
+".......               X       ...",
+".......             XXXXXXX   ...",
+"......              X      .  ...",
 "......                   .... ...",
 "......                ...........",
-"......             .. ...........",
-"......           ..    ..........",
-"......          .       .........",
+"......             XX ...........",
+"......           XX    ..........",
+"......          X       .........",
 "......                   ........",
-"......              ....  .......",
-"......             .    .. ......",
-".....             .       . .....",
-"....  .          .           ....",
-"...    .         .            ...",
-"...    .         .             ..",
-"...     .         .            ..",
+"......              XXXX  .......",
+"......             X    XX ......",
+".....             X       X .....",
+"....  X          X           ....",
+"...    X         X            ...",
+"...    X         X             ..",
+"...     X         X            ..",
 "....     .         .           ..",
 ".................................",
 "................................."
diff --git a/pixmaps/vdd49.xpm b/pixmaps/vdd49.xpm
index 8abaaba..a01532e 100644
--- a/pixmaps/vdd49.xpm
+++ b/pixmaps/vdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *vdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -17,40 +18,40 @@ static char *vdd49[] = {
 "..............                    ...............",
 ".............                      ..............",
 "............                        .............",
-"...........             ....         ............",
-"...........           ..    .        ............",
-"..........          ..   ..  .        ...........",
-"..........        ...    ..  .     ..   .........",
-"..........           ..     .      .. .   .......",
-".........              .....         .      .....",
-".........                         ...        ....",
-".........                        .           ....",
-"........                        .             ...",
-"........                     ........         ...",
-"........                    ..       ....     ...",
-"........                      .          .    ...",
+"...........             XXXX         ............",
+"...........           XX    X        ............",
+"..........          XX   XX  X        ...........",
+"..........        XXX    XX  X     XX   .........",
+"..........           XX     X      XX X   .......",
+".........              XXXXX         X      .....",
+".........                         XXX        ....",
+".........                        X           ....",
+"........                        X             ...",
+"........                     XXXXXXXX         ...",
+"........                    XX       XXXX     ...",
+"........                      X          .    ...",
 "........                               ....  ....",
 "........                         ..........  ....",
 "........                        ........... .....",
 "........                       ..................",
 ".......                        ..................",
-".......                       . .................",
-".......                     ..    ...............",
-".......                  ..        ..............",
+".......                       X .................",
+".......                     XX    ...............",
+".......                  XX        ..............",
 ".......                             .............",
 ".......                              ............",
-".......                         ...   ...........",
-".......                       ..   .   ..........",
-".......                      .      ..  .........",
-".......                     .         .  ........",
-".....  .                   .           .. .......",
-"....   .                   .             . ......",
-"...    .                  .                 .....",
-"...     .                  .                 ....",
-"...     .                  .                  ...",
-"...     .                   .                 ...",
-"....     .                  .                 ...",
-"....     .                   .                ...",
+".......                         XXX   ...........",
+".......                       XX   X   ..........",
+".......                      X      XX  .........",
+".......                     X         X  ........",
+".....  X                   X           XX .......",
+"....   X                   X             X ......",
+"...    X                  X                 .....",
+"...     X                  X                 ....",
+"...     X                  X                  ...",
+"...     X                   X                 ...",
+"....     X                  X                 ...",
+"....     X                   X                ...",
 ".....                                         ...",
 ".................................................",
 "................................................."
diff --git a/pixmaps/vdd54.xpm b/pixmaps/vdd54.xpm
deleted file mode 100644
index 801f61a..0000000
--- a/pixmaps/vdd54.xpm
+++ /dev/null
@@ -1,62 +0,0 @@
-/* XPM */
-static char *vdd54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 2 1",
-"  c black s dark_piece",
-". c green s dark_square",
-/* pixels */
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-".......................      .........................",
-"...................             ......................",
-"..................                 ...................",
-"................                     .................",
-"...............                       ................",
-"..............           ......        ...............",
-".............           ..    ..        ..............",
-"............           ..      ..       ..............",
-"............         ...   ..   .        .............",
-"...........        .....   ..   .     ..   ...........",
-"...........            ..      .      .. .   .........",
-"..........    ..         ......         .      .......",
-"..........        ..                 ...        ......",
-"..........             ..           .            .....",
-".........       ..                 .             .....",
-".........           ..          ........         .....",
-".........     ..               ..       ....     .....",
-".........                    ..  .          .    .....",
-".........                  ..     .       ....  ......",
-".........                 .         ..........  ......",
-".........               ..         ........... .......",
-".........           ....          ....................",
-"........        ....              ....................",
-"........                           ...................",
-"........                       ..    .................",
-"........                    ..        ................",
-"........                               ...............",
-"........                 ..             ..............",
-"........                           ...   .............",
-"........                         ..   .   ............",
-"........                        .      ..  ...........",
-"........                       .         .  ..........",
-"......  .                     .           .. .........",
-".....   .                     .             . ........",
-"....    .                    .                 .......",
-"....     .                    .                 ......",
-"....     .                    .                  .....",
-"....     .                     .                  ....",
-".....     .                    .                   ...",
-".....     .                     .                  ...",
-"......     .                     .                 ...",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................"
-};
diff --git a/pixmaps/vdd72.xpm b/pixmaps/vdd72.xpm
index a379d9d..8732f9a 100644
--- a/pixmaps/vdd72.xpm
+++ b/pixmaps/vdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *vdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -26,51 +27,51 @@ static char *vdd72[] = {
 "....................                             .......................",
 "...................                               ......................",
 "..................                                 .....................",
-"..................                ......            ....................",
-".................               ...    ..           ....................",
-".................              ...  ..  ..           ...................",
-"................             ...   ....  ..      ..   ..................",
-"................           ....    ....  ..     ...    .................",
-"................             ...    ..  ..      ..   .  ................",
-"...............                ...     ..           ..     .............",
-"...............                  .......           ..        ...........",
-"...............                                 ....          ..........",
-"..............                                 ...            ..........",
-"..............                                ..               .........",
-"..............                             ....                .........",
-"..............                           .........             .........",
-"..............                          ...     .......        .........",
-".............                            ..          ....      .........",
-".............                             ..             ..    .........",
-".............                              .     .   .......  ..........",
+"..................                XXXXXX            ....................",
+".................               XXX    XX           ....................",
+".................              XXX  XX  XX           ...................",
+"................             XXX   XXXX  XX      XX   ..................",
+"................           XXXX    XXXX  XX     XXX    .................",
+"................             XXX    XX  XX      XX   X  ................",
+"...............                XXX     XX           XX     .............",
+"...............                  XXXXXXX           XX        ...........",
+"...............                                 XXXX          ..........",
+"..............                                 XXX            ..........",
+"..............                                XX               .........",
+"..............                             XXXX                .........",
+"..............                           XXXXXXXXX             .........",
+"..............                          XXX     XXXXXXX        .........",
+".............                            XX          XXXX      .........",
+".............                             XX             ..    .........",
+".............                              X     .   .......  ..........",
 ".............                                ...............  ..........",
 ".............                                ............... ...........",
 ".............                                ...........................",
 ".............                               ............................",
 "............                                ............................",
-"............                            ..   ...........................",
-"............                           ..    ...........................",
-"............                       ..           ........................",
-"............                     ...             .......................",
+"............                            XX   ...........................",
+"............                           XX    ...........................",
+"............                       XX           ........................",
+"............                     XXX             .......................",
 "............                                      ......................",
 "............                                       .....................",
 "............                                        ....................",
-"............                                 ....    ...................",
-"............                              .........   ..................",
-"............                             ....    ...   .................",
-"............                            ...        ..   ................",
-"............                           ...          ...  ...............",
-"..........   .                         ..            ...  ..............",
-".........   ..                        ..               ... .............",
-"........    ..                        ..                 .  ............",
-".......      ..                      ..                      ...........",
-".......      ..                      ..                        .........",
-".......      ..                      ..                        .........",
-".......      ...                     ..                         ........",
-".......       ..                     ...                        ........",
-"........      ..                      ..                        ........",
-"........       ..                     ..                        ........",
-"........       ..                     ..                        ........",
+"............                                 XXXX    ...................",
+"............                              XXXXXXXXX   ..................",
+"............                             XXXX    XXX   .................",
+"............                            XXX        XX   ................",
+"............                           XXX          XXX  ...............",
+"..........   X                         XX            XXX  ..............",
+".........   XX                        XX               XXX .............",
+"........    XX                        XX                 X  ............",
+".......      XX                      XX                      ...........",
+".......      XX                      XX                        .........",
+".......      XX                      XX                        .........",
+".......      XXX                     XX                         ........",
+".......       XX                     XXX                        ........",
+"........      XX                      XX                        ........",
+"........       XX                     XX                        ........",
+"........       XX                     XX                        ........",
 "..........                                                      ........",
 "........................................................................",
 "........................................................................",
diff --git a/pixmaps/vdl33.xpm b/pixmaps/vdl33.xpm
index 575a626..b64a468 100644
--- a/pixmaps/vdl33.xpm
+++ b/pixmaps/vdl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *vdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -14,27 +15,27 @@ static char *vdl33[] = {
 "............          ...........",
 "..........              .........",
 ".........                ........",
-"........        ...      ........",
-"........      ..   .      .......",
-"........     ...   .    . .......",
-".......         ...    ...  .....",
-".......                .     ....",
-".......               .       ...",
-".......             .......   ...",
-"......              .      .  ...",
+"........        XXX      ........",
+"........      XX   X      .......",
+"........     XXX   X    X .......",
+".......         XXX    XXX  .....",
+".......                X     ....",
+".......               X       ...",
+".......             XXXXXXX   ...",
+"......              X      .  ...",
 "......                   .... ...",
 "......                ...........",
-"......             .. ...........",
-"......           ..    ..........",
-"......          .       .........",
+"......             XX ...........",
+"......           XX    ..........",
+"......          X       .........",
 "......                   ........",
-"......              ....  .......",
-"......             .    .. ......",
-".....             .       . .....",
-"....  .          .           ....",
-"...    .         .            ...",
-"...    .         .             ..",
-"...     .         .            ..",
+"......              XXXX  .......",
+"......             X    XX ......",
+".....             X       X .....",
+"....  X          X           ....",
+"...    X         X            ...",
+"...    X         X             ..",
+"...     X         X            ..",
 "....     .         .           ..",
 ".................................",
 "................................."
diff --git a/pixmaps/vdl49.xpm b/pixmaps/vdl49.xpm
index b6b415c..f800074 100644
--- a/pixmaps/vdl49.xpm
+++ b/pixmaps/vdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *vdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -17,40 +18,40 @@ static char *vdl49[] = {
 "..............                    ...............",
 ".............                      ..............",
 "............                        .............",
-"...........             ....         ............",
-"...........           ..    .        ............",
-"..........          ..   ..  .        ...........",
-"..........        ...    ..  .     ..   .........",
-"..........           ..     .      .. .   .......",
-".........              .....         .      .....",
-".........                         ...        ....",
-".........                        .           ....",
-"........                        .             ...",
-"........                     ........         ...",
-"........                    ..       ....     ...",
-"........                      .          .    ...",
+"...........             XXXX         ............",
+"...........           XX    X        ............",
+"..........          XX   XX  X        ...........",
+"..........        XXX    XX  X     XX   .........",
+"..........           XX     X      XX X   .......",
+".........              XXXXX         X      .....",
+".........                         XXX        ....",
+".........                        X           ....",
+"........                        X             ...",
+"........                     XXXXXXXX         ...",
+"........                    XX       XXXX     ...",
+"........                      X          .    ...",
 "........                               ....  ....",
 "........                         ..........  ....",
 "........                        ........... .....",
 "........                       ..................",
 ".......                        ..................",
-".......                       . .................",
-".......                     ..    ...............",
-".......                  ..        ..............",
+".......                       X .................",
+".......                     XX    ...............",
+".......                  XX        ..............",
 ".......                             .............",
 ".......                              ............",
-".......                         ...   ...........",
-".......                       ..   .   ..........",
-".......                      .      ..  .........",
-".......                     .         .  ........",
-".....  .                   .           .. .......",
-"....   .                   .             . ......",
-"...    .                  .                 .....",
-"...     .                  .                 ....",
-"...     .                  .                  ...",
-"...     .                   .                 ...",
-"....     .                  .                 ...",
-"....     .                   .                ...",
+".......                         XXX   ...........",
+".......                       XX   X   ..........",
+".......                      X      XX  .........",
+".......                     X         X  ........",
+".....  X                   X           XX .......",
+"....   X                   X             X ......",
+"...    X                  X                 .....",
+"...     X                  X                 ....",
+"...     X                  X                  ...",
+"...     X                   X                 ...",
+"....     X                  X                 ...",
+"....     X                   X                ...",
 ".....                                         ...",
 ".................................................",
 "................................................."
diff --git a/pixmaps/vdl54.xpm b/pixmaps/vdl54.xpm
deleted file mode 100644
index 677f25a..0000000
--- a/pixmaps/vdl54.xpm
+++ /dev/null
@@ -1,62 +0,0 @@
-/* XPM */
-static char *vdl54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 2 1",
-"  c black s dark_piece",
-". c gray s light_square",
-/* pixels */
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-".......................      .........................",
-"...................             ......................",
-"..................                 ...................",
-"................                     .................",
-"...............                       ................",
-"..............           ......        ...............",
-".............           ..    ..        ..............",
-"............           ..      ..       ..............",
-"............         ...   ..   .        .............",
-"...........        .....   ..   .     ..   ...........",
-"...........            ..      .      .. .   .........",
-"..........    ..         ......         .      .......",
-"..........        ..                 ...        ......",
-"..........             ..           .            .....",
-".........       ..                 .             .....",
-".........           ..          ........         .....",
-".........     ..               ..       ....     .....",
-".........                    ..  .          .    .....",
-".........                  ..     .       ....  ......",
-".........                 .         ..........  ......",
-".........               ..         ........... .......",
-".........           ....          ....................",
-"........        ....              ....................",
-"........                           ...................",
-"........                       ..    .................",
-"........                    ..        ................",
-"........                               ...............",
-"........                 ..             ..............",
-"........                           ...   .............",
-"........                         ..   .   ............",
-"........                        .      ..  ...........",
-"........                       .         .  ..........",
-"......  .                     .           .. .........",
-".....   .                     .             . ........",
-"....    .                    .                 .......",
-"....     .                    .                 ......",
-"....     .                    .                  .....",
-"....     .                     .                  ....",
-".....     .                    .                   ...",
-".....     .                     .                  ...",
-"......     .                     .                 ...",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................"
-};
diff --git a/pixmaps/vdl72.xpm b/pixmaps/vdl72.xpm
index 1373726..33ec319 100644
--- a/pixmaps/vdl72.xpm
+++ b/pixmaps/vdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *vdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -26,51 +27,51 @@ static char *vdl72[] = {
 "....................                             .......................",
 "...................                               ......................",
 "..................                                 .....................",
-"..................                ......            ....................",
-".................               ...    ..           ....................",
-".................              ...  ..  ..           ...................",
-"................             ...   ....  ..      ..   ..................",
-"................           ....    ....  ..     ...    .................",
-"................             ...    ..  ..      ..   .  ................",
-"...............                ...     ..           ..     .............",
-"...............                  .......           ..        ...........",
-"...............                                 ....          ..........",
-"..............                                 ...            ..........",
-"..............                                ..               .........",
-"..............                             ....                .........",
-"..............                           .........             .........",
-"..............                          ...     .......        .........",
-".............                            ..          ....      .........",
-".............                             ..             ..    .........",
-".............                              .     .   .......  ..........",
+"..................                XXXXXX            ....................",
+".................               XXX    XX           ....................",
+".................              XXX  XX  XX           ...................",
+"................             XXX   XXXX  XX      XX   ..................",
+"................           XXXX    XXXX  XX     XXX    .................",
+"................             XXX    XX  XX      XX   X  ................",
+"...............                XXX     XX           XX     .............",
+"...............                  XXXXXXX           XX        ...........",
+"...............                                 XXXX          ..........",
+"..............                                 XXX            ..........",
+"..............                                XX               .........",
+"..............                             XXXX                .........",
+"..............                           XXXXXXXXX             .........",
+"..............                          XXX     XXXXXXX        .........",
+".............                            XX          XXXX      .........",
+".............                             XX             ..    .........",
+".............                              X     .   .......  ..........",
 ".............                                ...............  ..........",
 ".............                                ............... ...........",
 ".............                                ...........................",
 ".............                               ............................",
 "............                                ............................",
-"............                            ..   ...........................",
-"............                           ..    ...........................",
-"............                       ..           ........................",
-"............                     ...             .......................",
+"............                            XX   ...........................",
+"............                           XX    ...........................",
+"............                       XX           ........................",
+"............                     XXX             .......................",
 "............                                      ......................",
 "............                                       .....................",
 "............                                        ....................",
-"............                                 ....    ...................",
-"............                              .........   ..................",
-"............                             ....    ...   .................",
-"............                            ...        ..   ................",
-"............                           ...          ...  ...............",
-"..........   .                         ..            ...  ..............",
-".........   ..                        ..               ... .............",
-"........    ..                        ..                 .  ............",
-".......      ..                      ..                      ...........",
-".......      ..                      ..                        .........",
-".......      ..                      ..                        .........",
-".......      ...                     ..                         ........",
-".......       ..                     ...                        ........",
-"........      ..                      ..                        ........",
-"........       ..                     ..                        ........",
-"........       ..                     ..                        ........",
+"............                                 XXXX    ...................",
+"............                              XXXXXXXXX   ..................",
+"............                             XXXX    XXX   .................",
+"............                            XXX        XX   ................",
+"............                           XXX          XXX  ...............",
+"..........   X                         XX            XXX  ..............",
+".........   XX                        XX               XXX .............",
+"........    XX                        XX                 X  ............",
+".......      XX                      XX                      ...........",
+".......      XX                      XX                        .........",
+".......      XX                      XX                        .........",
+".......      XXX                     XX                         ........",
+".......       XX                     XXX                        ........",
+"........      XX                      XX                        ........",
+"........       XX                     XX                        ........",
+"........       XX                     XX                        ........",
 "..........                                                      ........",
 "........................................................................",
 "........................................................................",
diff --git a/pixmaps/vld54.xpm b/pixmaps/vld54.xpm
deleted file mode 100644
index 7ad71f9..0000000
--- a/pixmaps/vld54.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static char *vld54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 3 1",
-"  c black s dark_piece",
-". c green s dark_square",
-"X c white s light_piece",
-/* pixels */
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................XXXXXX..........................",
-"..................XXXXXXXXXXXXX.......................",
-".................XXXXXX      XXXXX....................",
-"...............XXXX    XXXXXX   XXXX..................",
-"..............XXXX XXXXXXXXXXXXX   XX.................",
-".............XXX  XXXXXXXXXXXXXXXXX  X................",
-"............XXX XXXXXXXXXXXXXXXXXXXXX X...............",
-"...........XXX XXXXXXXXXX      XXXXXXX ...............",
-"...........XX XXXXXXXXXX  X  X  XXXXXXX ..............",
-"..........XX XXXXXXXXXX  X XX X  XXXXXX XX............",
-"..........XX XXXXXXXX   X X  X X XXXXXXX XXX..........",
-".........XX XXXXXXX    XX X  X X XXXXX  X  XXX........",
-".........XX XXXXXXXXXXX  X XX X XXXXXX  X X  XX.......",
-".........X XXX  XXXXXXXXX      XXXXXXXXX XXXX  X......",
-"........XX XXXXXXX  XXXXXXXXXXXXXXXXX   XXXXXXX ......",
-"........XX XXXXXXXXXXXX  XXXXXXXXXXX XXXXXXXXXXX .....",
-"........X XXXXXX  XXXXXXXXXXXXXXXXX XXXXXXXXXXXX .....",
-"........X XXXXXXXXXX  XXXXXXXXXX        XXX.XXXX .....",
-"........X XXXX  XXXXXXXXXXXXXXX  XXXXXXX     XX. .....",
-"........X XXXXXXXXXXXXXXXXXXX  XX X......   . X. .....",
-"........X XXXXXXXXXXXXXXXXX  XXXXX        ...X  ......",
-"........X XXXXXXXXXXXXXXXX XXXXXX.. ..........  ......",
-".......XX XXXXXXXXXXXXXX  XXXXXXX. ........... .......",
-".......XX XXXXXXXXXX    XXXXXXXXX ....................",
-".......X XXXXXXX    XXXXXXXXXXXXX XX..................",
-".......X XXXXXXXXXXXXXXXXXXXXXXXX  XX.................",
-".......X XXXXXXXXXXXXXXXXXXXXXX  XX  X................",
-".......X XXXXXXXXXXXXXXXXXXX  XXXXXXX X...............",
-".......X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............",
-".......X XXXXXXXXXXXXXXXX  XXXXXXXXXXXX X.............",
-".......X XXXXXXXXXXXXXXXXXXXXXXXXXX   XX X............",
-".......X XXXXXXXXXXXXXXXXXXXXXXXX  XXX XX X...........",
-".....XXX XXXXXXXXXXXXXXXXXXXXXXX XXXXXX  X X..........",
-"....XXXX XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X X.........",
-"...XXX   XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX   X........",
-"...XX XX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX  X.......",
-"...X XXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X......",
-"...X XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X.....",
-".... XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX X....",
-".... XXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX X...",
-"..... XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ...",
-"..... .... ..................... ................. ...",
-"......                                             ...",
-"......................................................",
-"......................................................",
-"......................................................"
-};
diff --git a/pixmaps/vll54.xpm b/pixmaps/vll54.xpm
deleted file mode 100644
index d900119..0000000
--- a/pixmaps/vll54.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static char *vll54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 3 1",
-"  c black s dark_piece",
-". c gray s light_square",
-"X c white s light_piece",
-/* pixels */
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................................................",
-"......................XXXXXX..........................",
-"..................XXXXXXXXXXXXX.......................",
-".................XXXXXX      XXXXX....................",
-"...............XXXX    XXXXXX   XXXX..................",
-"..............XXXX XXXXXXXXXXXXX   XX.................",
-".............XXX  XXXXXXXXXXXXXXXXX  X................",
-"............XXX XXXXXXXXXXXXXXXXXXXXX X...............",
-"...........XXX XXXXXXXXXX      XXXXXXX ...............",
-"...........XX XXXXXXXXXX  X  X  XXXXXXX ..............",
-"..........XX XXXXXXXXXX  X XX X  XXXXXX XX............",
-"..........XX XXXXXXXX   X X  X X XXXXXXX XXX..........",
-".........XX XXXXXXX    XX X  X X XXXXX  X  XXX........",
-".........XX XXXXXXXXXXX  X XX X XXXXXX  X X  XX.......",
-".........X XXX  XXXXXXXXX      XXXXXXXXX XXXX  X......",
-"........XX XXXXXXX  XXXXXXXXXXXXXXXXX   XXXXXXX ......",
-"........XX XXXXXXXXXXXX  XXXXXXXXXXX XXXXXXXXXXX .....",
-"........X XXXXXX  XXXXXXXXXXXXXXXXX XXXXXXXXXXXX .....",
-"........X XXXXXXXXXX  XXXXXXXXXX        XXX.XXXX .....",
-"........X XXXX  XXXXXXXXXXXXXXX  XXXXXXX     XX. .....",
-"........X XXXXXXXXXXXXXXXXXXX  XX X......   . X. .....",
-"........X XXXXXXXXXXXXXXXXX  XXXXX        ...X  ......",
-"........X XXXXXXXXXXXXXXXX XXXXXX.. ..........  ......",
-".......XX XXXXXXXXXXXXXX  XXXXXXX. ........... .......",
-".......XX XXXXXXXXXX    XXXXXXXXX ....................",
-".......X XXXXXXX    XXXXXXXXXXXXX XX..................",
-".......X XXXXXXXXXXXXXXXXXXXXXXXX  XX.................",
-".......X XXXXXXXXXXXXXXXXXXXXXX  XX  X................",
-".......X XXXXXXXXXXXXXXXXXXX  XXXXXXX X...............",
-".......X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............",
-".......X XXXXXXXXXXXXXXXX  XXXXXXXXXXXX X.............",
-".......X XXXXXXXXXXXXXXXXXXXXXXXXXX   XX X............",
-".......X XXXXXXXXXXXXXXXXXXXXXXXX  XXX XX X...........",
-".....XXX XXXXXXXXXXXXXXXXXXXXXXX XXXXXX  X X..........",
-"....XXXX XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X X.........",
-"...XXX   XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX   X........",
-"...XX XX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX  X.......",
-"...X XXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X......",
-"...X XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X.....",
-".... XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX X....",
-".... XXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX X...",
-"..... XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ...",
-"..... .... ..................... ................. ...",
-"......                                             ...",
-"......................................................",
-"......................................................",
-"......................................................"
-};
diff --git a/pixmaps/wdd33.xpm b/pixmaps/wdd33.xpm
index 4da3814..5028e93 100644
--- a/pixmaps/wdd33.xpm
+++ b/pixmaps/wdd33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wdd33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -13,24 +14,24 @@ static char *wdd33[] = {
 "..............     ..............",
 "...........            ..........",
 "..........               ........",
-"........  ..              .......",
-".......     ....           ......",
-"......          ....        .....",
-".....               ..       ....",
-".....                 ..     ....",
-".....           ...     ..    ...",
-"....           .....     .    ...",
-"....           .....      ..  ...",
-"....            ...          ....",
-"..... ...       ...          ....",
-"....     .....   .            ...",
-"....          ..              ...",
-"....            ...           ...",
-"....          ...  ...        ...",
-"....      ....        ..      ...",
-"....   ...              ...  ....",
-"....  .                   .  ....",
-".....                      . ....",
+"........  XX              .......",
+".......     XXXX           ......",
+"......          XXXX        .....",
+".....               XX       ....",
+".....                 XX     ....",
+".....           XXX     XX    ...",
+"....           XXXXX     X    ...",
+"....           XXXXX      XX  ...",
+"....            XXX          ....",
+"..... XXX       XXX          ....",
+"....     XXXXX   X            ...",
+"....          XX              ...",
+"....            XXX           ...",
+"....          XXX  XXX        ...",
+"....      XXXX        XX      ...",
+"....   XXX              XXX  ....",
+"....  X                   X  ....",
+".....                      X ....",
 ".....                       .....",
 "......                     ......",
 "........                  .......",
diff --git a/pixmaps/wdd49.xpm b/pixmaps/wdd49.xpm
index 5bc2017..371bb46 100644
--- a/pixmaps/wdd49.xpm
+++ b/pixmaps/wdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wdd49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                            ..     ......",
-".......                 .....         ..   ......",
-".......                .......          .  ......",
-".......                .......           . ......",
-".......                .......             ......",
-".......                .......              .....",
-".......                 .....               .....",
-".......                 .....                ....",
-".......                  ...                 ....",
-".......                  ...                 ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                            XX     ......",
+".......                 XXXXX         XX   ......",
+".......                XXXXXXX          X  ......",
+".......                XXXXXXX           X ......",
+".......                XXXXXXX             ......",
+".......                XXXXXXX              .....",
+".......                 XXXXX               .....",
+".......                 XXXXX                ....",
+".......                  XXX                 ....",
+".......                  XXX                 ....",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wdd54.xpm b/pixmaps/wdd54.xpm
deleted file mode 100644
index 981f80b..0000000
--- a/pixmaps/wdd54.xpm
+++ /dev/null
@@ -1,62 +0,0 @@
-/* XPM */
-static char *wdd54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 2 1",
-"  c black s dark_piece",
-". c green s dark_square",
-/* pixels */
-"......................................................",
-"..........................  ..........................",
-"........................      ........................",
-".......................   ..   .......................",
-".......................  ....  .......................",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".....................       .....................     ",
-"...............                 .................     ",
-"..............                     ..............     ",
-"............                         ............     ",
-"...........                           ...........     ",
-"..........                             ..........     ",
-"........  ......                       ..........     ",
-".......         .........               .........     ",
-".......                  ...             ........     ",
-"......                      ...           .......     ",
-"......                         ...        .......     ",
-".....                             ...     .......     ",
-".....                   ..           ...   ......     ",
-"....                  ......            .. ......     ",
-"....                 ........              ......     ",
-"...                  ........               .....     ",
-"...                   ......                 ....     ",
-"...                   ......                 ....     ",
-"...                    ....                  ....     ",
-"...                    ....                   ...     ",
-"...                     ..                    ...     ",
-"...                     ..                    ...     ",
-"........                                      ...     ",
-"...     ......                                ...     ",
-"...           .....                            ..     ",
-"..                 ....                        ..     ",
-"..                     ....                    ..     ",
-"..                    ...  ....                ..     ",
-"..                ....         ...            ...     ",
-"..            ....                ....        ...     ",
-"...       ....                        ..      ...     ",
-"...     ..                              .     ...     ",
-"....   .                                 .   ....     ",
-"....  .                                   .  ....     ",
-"..... .                                   . .....     ",
-"..... .                                   . .....     ",
-"......                                     ......     ",
-".......                                   .......     ",
-"........                                 ........     ",
-"...........                            ..........     ",
-".................                ................     ",
-".................................................     ",
-".................................................     ",
-".................................................     "
-};
diff --git a/pixmaps/wdd72.xpm b/pixmaps/wdd72.xpm
index 73515ff..95907e2 100644
--- a/pixmaps/wdd72.xpm
+++ b/pixmaps/wdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wdd72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................    ..                                     .............",
-"...............    ............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                         ......           ....      .........",
-"...........                         ......             ....    .........",
-"..........                         ........             .....  .........",
-"..........                         ........               ...   ........",
-"..........                        ..........                ..   .......",
-"..........                        ..........                     .......",
-"..........                         ........                      .......",
-"..........                         ........                      .......",
-"..........                          ......                       .......",
-"..........                          ......                       .......",
-"..........                           ....                        .......",
-"...........                          ....                        .......",
-"...........                           ..                          ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"................    XX                                     .............",
+"...............    XXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                         XXXXXX           XXXX      .........",
+"...........                         XXXXXX             XXXX    .........",
+"..........                         XXXXXXXX             XXXXX  .........",
+"..........                         XXXXXXXX               XXX   ........",
+"..........                        XXXXXXXXXX                XX   .......",
+"..........                        XXXXXXXXXX                     .......",
+"..........                         XXXXXXXX                      .......",
+"..........                         XXXXXXXX                      .......",
+"..........                          XXXXXX                       .......",
+"..........                          XXXXXX                       .......",
+"..........                           XXXX                        .......",
+"...........                          XXXX                        .......",
+"...........                           XX                          ......",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wdl33.xpm b/pixmaps/wdl33.xpm
index c210b29..cad08ef 100644
--- a/pixmaps/wdl33.xpm
+++ b/pixmaps/wdl33.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wdl33[] = {
 /* columns rows colors chars-per-pixel */
-"33 33 2 1",
+"33 33 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................",
 ".................................",
@@ -13,24 +14,24 @@ static char *wdl33[] = {
 "..............     ..............",
 "...........            ..........",
 "..........               ........",
-"........  ..              .......",
-".......     ....           ......",
-"......          ....        .....",
-".....               ..       ....",
-".....                 ..     ....",
-".....           ...     ..    ...",
-"....           .....     .    ...",
-"....           .....      ..  ...",
-"....            ...          ....",
-"..... ...       ...          ....",
-"....     .....   .            ...",
-"....          ..              ...",
-"....            ...           ...",
-"....          ...  ...        ...",
-"....      ....        ..      ...",
-"....   ...              ...  ....",
-"....  .                   .  ....",
-".....                      . ....",
+"........  XX              .......",
+".......     XXXX           ......",
+"......          XXXX        .....",
+".....               XX       ....",
+".....                 XX     ....",
+".....           XXX     XX    ...",
+"....           XXXXX     X    ...",
+"....           XXXXX      XX  ...",
+"....            XXX          ....",
+"..... XXX       XXX          ....",
+"....     XXXXX   X            ...",
+"....          XX              ...",
+"....            XXX           ...",
+"....          XXX  XXX        ...",
+"....      XXXX        XX      ...",
+"....   XXX              XXX  ....",
+"....  X                   X  ....",
+".....                      X ....",
 ".....                       .....",
 "......                     ......",
 "........                  .......",
diff --git a/pixmaps/wdl49.xpm b/pixmaps/wdl49.xpm
index 80bab0d..570a741 100644
--- a/pixmaps/wdl49.xpm
+++ b/pixmaps/wdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wdl49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                            ..     ......",
-".......                 .....         ..   ......",
-".......                .......          .  ......",
-".......                .......           . ......",
-".......                .......             ......",
-".......                .......              .....",
-".......                 .....               .....",
-".......                 .....                ....",
-".......                  ...                 ....",
-".......                  ...                 ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                            XX     ......",
+".......                 XXXXX         XX   ......",
+".......                XXXXXXX          X  ......",
+".......                XXXXXXX           X ......",
+".......                XXXXXXX             ......",
+".......                XXXXXXX              .....",
+".......                 XXXXX               .....",
+".......                 XXXXX                ....",
+".......                  XXX                 ....",
+".......                  XXX                 ....",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wdl54.xpm b/pixmaps/wdl54.xpm
deleted file mode 100644
index 11e8998..0000000
--- a/pixmaps/wdl54.xpm
+++ /dev/null
@@ -1,62 +0,0 @@
-/* XPM */
-static char *wdl54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 2 1",
-"  c black s dark_piece",
-". c gray s light_square",
-/* pixels */
-"......................................................",
-"..........................  ..........................",
-"........................      ........................",
-".......................   ..   .......................",
-".......................  ....  .......................",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".....................       .....................     ",
-"...............                 .................     ",
-"..............                     ..............     ",
-"............                         ............     ",
-"...........                           ...........     ",
-"..........                             ..........     ",
-"........  ......                       ..........     ",
-".......         .........               .........     ",
-".......                  ...             ........     ",
-"......                      ...           .......     ",
-"......                         ...        .......     ",
-".....                             ...     .......     ",
-".....                   ..           ...   ......     ",
-"....                  ......            .. ......     ",
-"....                 ........              ......     ",
-"...                  ........               .....     ",
-"...                   ......                 ....     ",
-"...                   ......                 ....     ",
-"...                    ....                  ....     ",
-"...                    ....                   ...     ",
-"...                     ..                    ...     ",
-"...                     ..                    ...     ",
-"........                                      ...     ",
-"...     ......                                ...     ",
-"...           .....                            ..     ",
-"..                 ....                        ..     ",
-"..                     ....                    ..     ",
-"..                    ...  ....                ..     ",
-"..                ....         ...            ...     ",
-"..            ....                ....        ...     ",
-"...       ....                        ..      ...     ",
-"...     ..                              .     ...     ",
-"....   .                                 .   ....     ",
-"....  .                                   .  ....     ",
-"..... .                                   . .....     ",
-"..... .                                   . .....     ",
-"......                                     ......     ",
-".......                                   .......     ",
-"........                                 ........     ",
-"...........                            ..........     ",
-".................                ................     ",
-".................................................     ",
-".................................................     ",
-".................................................     "
-};
diff --git a/pixmaps/wdl72.xpm b/pixmaps/wdl72.xpm
index 585ea0c..687f74a 100644
--- a/pixmaps/wdl72.xpm
+++ b/pixmaps/wdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wdl72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................    ..                                     .............",
-"...............    ............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                         ......           ....      .........",
-"...........                         ......             ....    .........",
-"..........                         ........             .....  .........",
-"..........                         ........               ...   ........",
-"..........                        ..........                ..   .......",
-"..........                        ..........                     .......",
-"..........                         ........                      .......",
-"..........                         ........                      .......",
-"..........                          ......                       .......",
-"..........                          ......                       .......",
-"..........                           ....                        .......",
-"...........                          ....                        .......",
-"...........                           ..                          ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"................    XX                                     .............",
+"...............    XXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                         XXXXXX           XXXX      .........",
+"...........                         XXXXXX             XXXX    .........",
+"..........                         XXXXXXXX             XXXXX  .........",
+"..........                         XXXXXXXX               XXX   ........",
+"..........                        XXXXXXXXXX                XX   .......",
+"..........                        XXXXXXXXXX                     .......",
+"..........                         XXXXXXXX                      .......",
+"..........                         XXXXXXXX                      .......",
+"..........                          XXXXXX                       .......",
+"..........                          XXXXXX                       .......",
+"..........                           XXXX                        .......",
+"...........                          XXXX                        .......",
+"...........                           XX                          ......",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wld54.xpm b/pixmaps/wld54.xpm
deleted file mode 100644
index 01b4f7b..0000000
--- a/pixmaps/wld54.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static char *wld54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 3 1",
-"  c black s dark_piece",
-". c green s dark_square",
-"X c white s light_piece",
-/* pixels */
-"......................................................",
-"..........................  ..........................",
-"........................      ........................",
-".......................   XX   .......................",
-".......................  XXXX  .......................",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".....................       .....................     ",
-"...............      XXXXXXX    .................     ",
-".............. XXXXXXXXXXXXXXXXX   ..............     ",
-"............  XXXXXXXXXXXXXXXXXXXXX  ............     ",
-"........... XXXXXXXXXXXXXXXXXXXXXXXXX ...........     ",
-".......... XXXXXXXXXXXXXXXXXXXXXXXXXXX ..........     ",
-"........        XXXXXXXXXXXXXXXXXXXXXX ..........     ",
-"....... XXXXXXXX         XXXXXXXXXXXXXX .........     ",
-"....... XXXXXXXXXXXXXXXXX   XXXXXXXXXXXX ........     ",
-"...... XXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX .......     ",
-"...... XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX .......     ",
-"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXX .......     ",
-"..... XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX   XX ......     ",
-".... XXXXXXXXXXXXXXXXX      XXXXXXXXXXXX   ......     ",
-".... XXXXXXXXXXXXXXXX        XXXXXXXXXXXXX ......     ",
-"... XXXXXXXXXXXXXXXXX        XXXXXXXXXXXXXX .....     ",
-"... XXXXXXXXXXXXXXXXXX      XXXXXXXXXXXXXXXX ....     ",
-"... XXXXXXXXXXXXXXXXXX      XXXXXXXXXXXXXXXX ....     ",
-"... XXXXXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXX ....     ",
-"... XXXXXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXXX ...     ",
-"... XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXX ...     ",
-"... XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXX ...     ",
-"....    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...     ",
-"... XXXX      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...     ",
-"... XXXXXXXXXX     XXXXXXXXXXXXXXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXXXXXX   XX    XXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXX    XXXXXXXXX   XXXXXXXXXXX ...     ",
-".. XXXXXXXXXXX    XXXXXXXXXXXXXXXX    XXXXXXX ...     ",
-"... XXXXX     XXXXXXXXXXXXXXXXXXXXXXXX  XXXXX ...     ",
-"... XXX  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXX ...     ",
-".... X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ....     ",
-".... X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ....     ",
-"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .....     ",
-"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .....     ",
-"...... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ......     ",
-"....... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .......     ",
-"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXX  ........     ",
-"...........      XXXXXXXXXXXXXXXX      ..........     ",
-".................                ................     ",
-".................................................     ",
-".................................................     ",
-".................................................     "
-};
diff --git a/pixmaps/wldd49.xpm b/pixmaps/wldd49.xpm
index 7875fb4..aaf9332 100644
--- a/pixmaps/wldd49.xpm
+++ b/pixmaps/wldd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wldd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wldd49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                 ...        ..     ......",
-".......                ..   ..        ..   ......",
-".......               .       .         .  ......",
-".......               .       .          . ......",
-".......              .         .           ......",
-".......              .         .            .....",
-".......               .       .             .....",
-".......               .       .              ....",
-".......                ..   ..               ....",
-".......                  ...                 ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                 XXX        XX     ......",
+".......                XX   XX        XX   ......",
+".......               X       X         X  ......",
+".......               X       X          X ......",
+".......              X         X           ......",
+".......              X         X            .....",
+".......               X       X             .....",
+".......               X       X              ....",
+".......                XX   XX               ....",
+".......                  XXX                 ....",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wldd72.xpm b/pixmaps/wldd72.xpm
index a324880..619c2da 100644
--- a/pixmaps/wldd72.xpm
+++ b/pixmaps/wldd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wldd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wldd72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................   ..                                      .............",
-"...............   .............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                         .....            ....      .........",
-"...........                        .......             ....    .........",
-"..........                        ...   ...             .....  .........",
-"..........                       ..       ..              ...   ........",
-"..........                       ..       ..                ..   .......",
-"..........                      ..         ..                    .......",
-"..........                      ..         ..                    .......",
-"..........                      ..         ..                    .......",
-"..........                       ..       ..                     .......",
-"..........                       ..       ..                     .......",
-"..........                        ...   ...                      .......",
-"...........                        .......                       .......",
-"...........                         .....                         ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"................   XX                                      .............",
+"...............   XXXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                         XXXXX            XXXX      .........",
+"...........                        XXXXXXX             XXXX    .........",
+"..........                        XXX   XXX             XXXXX  .........",
+"..........                       XX       XX              XXX   ........",
+"..........                       XX       XX                XX   .......",
+"..........                      XX         XX                    .......",
+"..........                      XX         XX                    .......",
+"..........                      XX         XX                    .......",
+"..........                       XX       XX                     .......",
+"..........                       XX       XX                     .......",
+"..........                        XXX   XXX                      .......",
+"...........                        XXXXXXX                       .......",
+"...........                         XXXXX                         ......",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wldl49.xpm b/pixmaps/wldl49.xpm
index 9464070..87d38a2 100644
--- a/pixmaps/wldl49.xpm
+++ b/pixmaps/wldl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wldl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wldl49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                 ...        ..     ......",
-".......                ..   ..        ..   ......",
-".......               .       .         .  ......",
-".......               .       .          . ......",
-".......              .         .           ......",
-".......              .         .            .....",
-".......               .       .             .....",
-".......               .       .              ....",
-".......                ..   ..               ....",
-".......                  ...                 ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                 XXX        XX     ......",
+".......                XX   XX        XX   ......",
+".......               X       X         X  ......",
+".......               X       X          X ......",
+".......              X         X           ......",
+".......              X         X            .....",
+".......               X       X             .....",
+".......               X       X              ....",
+".......                XX   XX               ....",
+".......                  XXX                 ....",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wldl72.xpm b/pixmaps/wldl72.xpm
index 5bc8474..50fd7ea 100644
--- a/pixmaps/wldl72.xpm
+++ b/pixmaps/wldl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wldl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wldl72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................   ..                                      .............",
-"...............   .............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                         .....            ....      .........",
-"...........                        .......             ....    .........",
-"..........                        ...   ...             .....  .........",
-"..........                       ..       ..              ...   ........",
-"..........                       ..       ..                ..   .......",
-"..........                      ..         ..                    .......",
-"..........                      ..         ..                    .......",
-"..........                      ..         ..                    .......",
-"..........                       ..       ..                     .......",
-"..........                       ..       ..                     .......",
-"..........                        ...   ...                      .......",
-"...........                        .......                       .......",
-"...........                         .....                         ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"................   XX                                      .............",
+"...............   XXXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                         XXXXX            XXXX      .........",
+"...........                        XXXXXXX             XXXX    .........",
+"..........                        XXX   XXX             XXXXX  .........",
+"..........                       XX       XX              XXX   ........",
+"..........                       XX       XX                XX   .......",
+"..........                      XX         XX                    .......",
+"..........                      XX         XX                    .......",
+"..........                      XX         XX                    .......",
+"..........                       XX       XX                     .......",
+"..........                       XX       XX                     .......",
+"..........                        XXX   XXX                      .......",
+"...........                        XXXXXXX                       .......",
+"...........                         XXXXX                         ......",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wll54.xpm b/pixmaps/wll54.xpm
deleted file mode 100644
index 8fca8fd..0000000
--- a/pixmaps/wll54.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static char *wll54[] = {
-/* columns rows colors chars-per-pixel */
-"54 54 3 1",
-"  c black s dark_piece",
-". c gray s light_square",
-"X c white s light_piece",
-/* pixels */
-"......................................................",
-"..........................  ..........................",
-"........................      ........................",
-".......................   XX   .......................",
-".......................  XXXX  .......................",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".................................................     ",
-".....................       .....................     ",
-"...............      XXXXXXX    .................     ",
-".............. XXXXXXXXXXXXXXXXX   ..............     ",
-"............  XXXXXXXXXXXXXXXXXXXXX  ............     ",
-"........... XXXXXXXXXXXXXXXXXXXXXXXXX ...........     ",
-".......... XXXXXXXXXXXXXXXXXXXXXXXXXXX ..........     ",
-"........        XXXXXXXXXXXXXXXXXXXXXX ..........     ",
-"....... XXXXXXXX         XXXXXXXXXXXXXX .........     ",
-"....... XXXXXXXXXXXXXXXXX   XXXXXXXXXXXX ........     ",
-"...... XXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX .......     ",
-"...... XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX .......     ",
-"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXX .......     ",
-"..... XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX   XX ......     ",
-".... XXXXXXXXXXXXXXXXX      XXXXXXXXXXXX   ......     ",
-".... XXXXXXXXXXXXXXXX        XXXXXXXXXXXXX ......     ",
-"... XXXXXXXXXXXXXXXXX        XXXXXXXXXXXXXX .....     ",
-"... XXXXXXXXXXXXXXXXXX      XXXXXXXXXXXXXXXX ....     ",
-"... XXXXXXXXXXXXXXXXXX      XXXXXXXXXXXXXXXX ....     ",
-"... XXXXXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXX ....     ",
-"... XXXXXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXXX ...     ",
-"... XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXX ...     ",
-"... XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXX ...     ",
-"....    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...     ",
-"... XXXX      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...     ",
-"... XXXXXXXXXX     XXXXXXXXXXXXXXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXXXXXX   XX    XXXXXXXXXXXXXXX ..     ",
-".. XXXXXXXXXXXXXXX    XXXXXXXXX   XXXXXXXXXXX ...     ",
-".. XXXXXXXXXXX    XXXXXXXXXXXXXXXX    XXXXXXX ...     ",
-"... XXXXX     XXXXXXXXXXXXXXXXXXXXXXXX  XXXXX ...     ",
-"... XXX  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXX ...     ",
-".... X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ....     ",
-".... X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ....     ",
-"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .....     ",
-"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .....     ",
-"...... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ......     ",
-"....... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .......     ",
-"........   XXXXXXXXXXXXXXXXXXXXXXXXXXXX  ........     ",
-"...........      XXXXXXXXXXXXXXXX      ..........     ",
-".................                ................     ",
-".................................................     ",
-".................................................     ",
-".................................................     "
-};
diff --git a/pixmaps/wndd49.xpm b/pixmaps/wndd49.xpm
index 86756cd..f77ad0e 100644
--- a/pixmaps/wndd49.xpm
+++ b/pixmaps/wndd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wndd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,28 +24,28 @@ static char *wndd49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                  ....      ..     ......",
-".......                 .......       ..   ......",
-".......                ......           .  ......",
-".......                .....             . ......",
-".......               .....                ......",
-".......               .....                 .....",
-".......               .....                 .....",
-".......                .....                 ....",
-".......                ......                ....",
-".......                 .......              ....",
-"........ .........        ....               ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                  XXXX      XX     ......",
+".......                 XXXXXXX       XX   ......",
+".......                XXXXXX           X  ......",
+".......                XXXXX             X ......",
+".......               XXXXX                ......",
+".......               XXXXX                 .....",
+".......               XXXXX                 .....",
+".......                XXXXX                 ....",
+".......                XXXXXX                ....",
+".......                 XXXXXXX              ....",
+"........ XXXXXXXXX        XXXX               ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
 ".......                                    ......",
 "........                                  .......",
 ".........                               .........",
diff --git a/pixmaps/wndd72.xpm b/pixmaps/wndd72.xpm
index 9695990..9eac568 100644
--- a/pixmaps/wndd72.xpm
+++ b/pixmaps/wndd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wndd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wndd72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................   ..                                      .............",
-"...............   .............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                           ......         ....      .........",
-"...........                         .........          ....    .........",
-"..........                         ........             .....  .........",
-"..........                        .......                 ...   ........",
-"..........                        ......                    ..   .......",
-"..........                       ......                          .......",
-"..........                       ......                          .......",
-"..........                       ......                          .......",
-"..........                       ......                          .......",
-"..........                        ......                         .......",
-"..........                        .......                        .......",
-"...........                        ........                      .......",
-"...........                         .........                     ......",
-"...........      .........            ......                      ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ..   ........",
-"...........  ..                                             .  .........",
+"................   XX                                      .............",
+"...............   XXXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                           XXXXXX         XXXX      .........",
+"...........                         XXXXXXXXX          XXXX    .........",
+"..........                         XXXXXXXX             XXXXX  .........",
+"..........                        XXXXXXX                 XXX   ........",
+"..........                        XXXXXX                    XX   .......",
+"..........                       XXXXXX                          .......",
+"..........                       XXXXXX                          .......",
+"..........                       XXXXXX                          .......",
+"..........                       XXXXXX                          .......",
+"..........                        XXXXXX                         .......",
+"..........                        XXXXXXX                        .......",
+"...........                        XXXXXXXX                      .......",
+"...........                         XXXXXXXXX                     ......",
+"...........      XXXXXXXXX            XXXXXX                      ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XX   ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wndl49.xpm b/pixmaps/wndl49.xpm
index ae37096..07a8158 100644
--- a/pixmaps/wndl49.xpm
+++ b/pixmaps/wndl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wndl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,28 +24,28 @@ static char *wndl49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                  ....      ..     ......",
-".......                 .......       ..   ......",
-".......                ......           .  ......",
-".......                .....             . ......",
-".......               .....                ......",
-".......               .....                 .....",
-".......               .....                 .....",
-".......                .....                 ....",
-".......                ......                ....",
-".......                 .......              ....",
-"........ .........        ....               ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                  XXXX      XX     ......",
+".......                 XXXXXXX       XX   ......",
+".......                XXXXXX           X  ......",
+".......                XXXXX             X ......",
+".......               XXXXX                ......",
+".......               XXXXX                 .....",
+".......               XXXXX                 .....",
+".......                XXXXX                 ....",
+".......                XXXXXX                ....",
+".......                 XXXXXXX              ....",
+"........ XXXXXXXXX        XXXX               ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
 ".......                                    ......",
 "........                                  .......",
 ".........                               .........",
diff --git a/pixmaps/wndl72.xpm b/pixmaps/wndl72.xpm
index 5e2fe29..ec79e2e 100644
--- a/pixmaps/wndl72.xpm
+++ b/pixmaps/wndl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wndl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wndl72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................   ..                                      .............",
-"...............   .............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                           ......         ....      .........",
-"...........                         .........          ....    .........",
-"..........                         ........             .....  .........",
-"..........                        .......                 ...   ........",
-"..........                        ......                    ..   .......",
-"..........                       ......                          .......",
-"..........                       ......                          .......",
-"..........                       ......                          .......",
-"..........                       ......                          .......",
-"..........                        ......                         .......",
-"..........                        .......                        .......",
-"...........                        ........                      .......",
-"...........                         .........                     ......",
-"...........      .........            ......                      ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ..   ........",
-"...........  ..                                             .  .........",
+"................   XX                                      .............",
+"...............   XXXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                           XXXXXX         XXXX      .........",
+"...........                         XXXXXXXXX          XXXX    .........",
+"..........                         XXXXXXXX             XXXXX  .........",
+"..........                        XXXXXXX                 XXX   ........",
+"..........                        XXXXXX                    XX   .......",
+"..........                       XXXXXX                          .......",
+"..........                       XXXXXX                          .......",
+"..........                       XXXXXX                          .......",
+"..........                       XXXXXX                          .......",
+"..........                        XXXXXX                         .......",
+"..........                        XXXXXXX                        .......",
+"...........                        XXXXXXXX                      .......",
+"...........                         XXXXXXXXX                     ......",
+"...........      XXXXXXXXX            XXXXXX                      ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XX   ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wpdd49.xpm b/pixmaps/wpdd49.xpm
index d4c641c..150815b 100644
--- a/pixmaps/wpdd49.xpm
+++ b/pixmaps/wpdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wpdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wpdd49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                            ..     ......",
-".......                               ..   ......",
-".......                                 .  ......",
-".......                                  . ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                            XX     ......",
+".......                               XX   ......",
+".......                                 X  ......",
+".......                                  X ......",
 ".......                                    ......",
 ".......                                     .....",
 ".......                                     .....",
 ".......                                      ....",
 ".......                                      ....",
 ".......                                      ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wpdd72.xpm b/pixmaps/wpdd72.xpm
index a8c2a24..a4cacb8 100644
--- a/pixmaps/wpdd72.xpm
+++ b/pixmaps/wpdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wpdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,19 +32,19 @@ static char *wpdd72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................    ..                                     .............",
-"...............    ............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                                          ....      .........",
-"...........                                            ....    .........",
-"..........                                              .....  .........",
-"..........                                                ...   ........",
-"..........                                                  ..   .......",
+"................    XX                                     .............",
+"...............    XXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                                          XXXX      .........",
+"...........                                            XXXX    .........",
+"..........                                              XXXXX  .........",
+"..........                                                XXX   ........",
+"..........                                                  XX   .......",
 "..........                                                       .......",
 "..........                                                       .......",
 "..........                                                       .......",
@@ -52,18 +53,18 @@ static char *wpdd72[] = {
 "..........                                                       .......",
 "...........                                                      .......",
 "...........                                                       ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wpdl49.xpm b/pixmaps/wpdl49.xpm
index f5889cd..d529b79 100644
--- a/pixmaps/wpdl49.xpm
+++ b/pixmaps/wpdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wpdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wpdl49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                       ....       ......",
-"........                            ..     ......",
-".......                               ..   ......",
-".......                                 .  ......",
-".......                                  . ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                       XXXX       ......",
+"........                            XX     ......",
+".......                               XX   ......",
+".......                                 X  ......",
+".......                                  X ......",
 ".......                                    ......",
 ".......                                     .....",
 ".......                                     .....",
 ".......                                      ....",
 ".......                                      ....",
 ".......                                      ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wpdl72.xpm b/pixmaps/wpdl72.xpm
index 4d8c5e9..71de004 100644
--- a/pixmaps/wpdl72.xpm
+++ b/pixmaps/wpdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wpdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,19 +32,19 @@ static char *wpdl72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................    ..                                     .............",
-"...............    ............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                                      ......      ..........",
-"...........                                          ....      .........",
-"...........                                            ....    .........",
-"..........                                              .....  .........",
-"..........                                                ...   ........",
-"..........                                                  ..   .......",
+"................    XX                                     .............",
+"...............    XXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                                      XXXXXX      ..........",
+"...........                                          XXXX      .........",
+"...........                                            XXXX    .........",
+"..........                                              XXXXX  .........",
+"..........                                                XXX   ........",
+"..........                                                  XX   .......",
 "..........                                                       .......",
 "..........                                                       .......",
 "..........                                                       .......",
@@ -52,18 +53,18 @@ static char *wpdl72[] = {
 "..........                                                       .......",
 "...........                                                      .......",
 "...........                                                       ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wsdd49.xpm b/pixmaps/wsdd49.xpm
index b9ea823..f7b650e 100644
--- a/pixmaps/wsdd49.xpm
+++ b/pixmaps/wsdd49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wsdd49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wsdd49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                 .     ....       ......",
-"........                  .         ..     ......",
-".......                  ...          ..   ......",
-".......                  ...            .  ......",
-".......             ............         . ......",
-".......              ..........            ......",
-".......                ......               .....",
-".......                ......               .....",
-".......                ......                ....",
-".......               ...  ...               ....",
-".......               .      .               ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                 X     XXXX       ......",
+"........                  X         XX     ......",
+".......                  XXX          XX   ......",
+".......                  XXX            X  ......",
+".......             XXXXXXXXXXXX         X ......",
+".......              XXXXXXXXXX            ......",
+".......                XXXXXX               .....",
+".......                XXXXXX               .....",
+".......                XXXXXX                ....",
+".......               XXX  XXX               ....",
+".......               X      X               ....",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wsdd72.xpm b/pixmaps/wsdd72.xpm
index 29431a8..7cd3976 100644
--- a/pixmaps/wsdd72.xpm
+++ b/pixmaps/wsdd72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wsdd72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c green s dark_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wsdd72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................   ..                                      .............",
-"...............   .............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                         .            ......      ..........",
-"...........                          .               ....      .........",
-"...........                         ...                ....    .........",
-"..........                          ...                 .....  .........",
-"..........                         .....                  ...   ........",
-"..........                    ...............               ..   .......",
-"..........                     ............                      .......",
-"..........                       .........                       .......",
-"..........                        .......                        .......",
-"..........                        .......                        .......",
-"..........                       .........                       .......",
-"..........                       ...   ...                       .......",
-"...........                     ...     ...                      .......",
-"...........                     .         .                       ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"................   XX                                      .............",
+"...............   XXXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                         X            XXXXXX      ..........",
+"...........                          X               XXXX      .........",
+"...........                         XXX                XXXX    .........",
+"..........                          XXX                 XXXXX  .........",
+"..........                         XXXXX                  XXX   ........",
+"..........                    XXXXXXXXXXXXXXX               XX   .......",
+"..........                     XXXXXXXXXXXX                      .......",
+"..........                       XXXXXXXXX                       .......",
+"..........                        XXXXXXX                        .......",
+"..........                        XXXXXXX                        .......",
+"..........                       XXXXXXXXX                       .......",
+"..........                       XXX   XXX                       .......",
+"...........                     XXX     XXX                      .......",
+"...........                     X         X                       ......",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/pixmaps/wsdl49.xpm b/pixmaps/wsdl49.xpm
index 6bf4b24..6a14306 100644
--- a/pixmaps/wsdl49.xpm
+++ b/pixmaps/wsdl49.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wsdl49[] = {
 /* columns rows colors chars-per-pixel */
-"49 49 2 1",
+"49 49 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 ".................................................",
 ".................................................",
@@ -23,29 +24,29 @@ static char *wsdl49[] = {
 "...............                       ...........",
 ".............                          ..........",
 "............                            .........",
-"........... ...........                  ........",
-"..........             .....              .......",
-".........                   ....          .......",
-".........                 .     ....       ......",
-"........                  .         ..     ......",
-".......                  ...          ..   ......",
-".......                  ...            .  ......",
-".......             ............         . ......",
-".......              ..........            ......",
-".......                ......               .....",
-".......                ......               .....",
-".......                ......                ....",
-".......               ...  ...               ....",
-".......               .      .               ....",
-"........ .........                           ....",
-".......           .....                      ....",
-".......                ......                ....",
-".......        ........      .....           ....",
-".......      ..                   ...        ....",
-".......    ..                        ...    .....",
-".......   .                             .   .....",
-".......  .                               . ......",
-"....... .                                  ......",
+"........... XXXXXXXXXXX                  ........",
+"..........             XXXXX              .......",
+".........                   XXXX          .......",
+".........                 X     XXXX       ......",
+"........                  X         XX     ......",
+".......                  XXX          XX   ......",
+".......                  XXX            X  ......",
+".......             XXXXXXXXXXXX         X ......",
+".......              XXXXXXXXXX            ......",
+".......                XXXXXX               .....",
+".......                XXXXXX               .....",
+".......                XXXXXX                ....",
+".......               XXX  XXX               ....",
+".......               X      X               ....",
+"........ XXXXXXXXX                           ....",
+".......           XXXXX                      ....",
+".......                XXXXXX                ....",
+".......        XXXXXXXX      XXXXX           ....",
+".......      XX                   XXX        ....",
+".......    XX                        XXX    .....",
+".......   X                             X   .....",
+".......  X                               X ......",
+"....... X                                  ......",
 "........                                  .......",
 ".........                               .........",
 "..........                            ...........",
diff --git a/pixmaps/wsdl72.xpm b/pixmaps/wsdl72.xpm
index fceed2a..bd42f11 100644
--- a/pixmaps/wsdl72.xpm
+++ b/pixmaps/wsdl72.xpm
@@ -1,9 +1,10 @@
 /* XPM */
 static char *wsdl72[] = {
 /* columns rows colors chars-per-pixel */
-"72 72 2 1",
+"72 72 3 1",
 "  c black s dark_piece",
 ". c gray s light_square",
+"X c white s light_piece",
 /* pixels */
 "........................................................................",
 "........................................................................",
@@ -31,39 +32,39 @@ static char *wsdl72[] = {
 ".....................                                    ...............",
 "...................                                       ..............",
 "..................                                        ..............",
-"................   ..                                      .............",
-"...............   .............                             ............",
-"..............      ..................                       ...........",
-"..............               .............                   ...........",
-".............                        ..........               ..........",
-".............                            ..........           ..........",
-"............                                  ........        ..........",
-"............                         .            ......      ..........",
-"...........                          .               ....      .........",
-"...........                         ...                ....    .........",
-"..........                          ...                 .....  .........",
-"..........                         .....                  ...   ........",
-"..........                    ...............               ..   .......",
-"..........                     ............                      .......",
-"..........                       .........                       .......",
-"..........                        .......                        .......",
-"..........                        .......                        .......",
-"..........                       .........                       .......",
-"..........                       ...   ...                       .......",
-"...........                     ...     ...                      .......",
-"...........                     .         .                       ......",
-"...........      .........                                        ......",
-"...........  ...................                                  ......",
-"...........  .....       .............                            ......",
-"..........                       ...........                      ......",
-"..........                 .....................                  ......",
-"..........            ............         ........               ......",
-"..........         .........                   .......           .......",
-"..........       ......                           .......        .......",
-"..........      ....                                 .......    ........",
-"...........   ....                                       .....  ........",
-"...........  ....                                          ...  ........",
-"...........  ..                                             .  .........",
+"................   XX                                      .............",
+"...............   XXXXXXXXXXXXX                             ............",
+"..............      XXXXXXXXXXXXXXXXXX                       ...........",
+"..............               XXXXXXXXXXXXX                   ...........",
+".............                        XXXXXXXXXX               ..........",
+".............                            XXXXXXXXXX           ..........",
+"............                                  XXXXXXXX        ..........",
+"............                         X            XXXXXX      ..........",
+"...........                          X               XXXX      .........",
+"...........                         XXX                XXXX    .........",
+"..........                          XXX                 XXXXX  .........",
+"..........                         XXXXX                  XXX   ........",
+"..........                    XXXXXXXXXXXXXXX               XX   .......",
+"..........                     XXXXXXXXXXXX                      .......",
+"..........                       XXXXXXXXX                       .......",
+"..........                        XXXXXXX                        .......",
+"..........                        XXXXXXX                        .......",
+"..........                       XXXXXXXXX                       .......",
+"..........                       XXX   XXX                       .......",
+"...........                     XXX     XXX                      .......",
+"...........                     X         X                       ......",
+"...........      XXXXXXXXX                                        ......",
+"...........  XXXXXXXXXXXXXXXXXXX                                  ......",
+"...........  XXXXX       XXXXXXXXXXXXX                            ......",
+"..........                       XXXXXXXXXXX                      ......",
+"..........                 XXXXXXXXXXXXXXXXXXXXX                  ......",
+"..........            XXXXXXXXXXXX         XXXXXXXX               ......",
+"..........         XXXXXXXXX                   XXXXXXX           .......",
+"..........       XXXXXX                           XXXXXXX        .......",
+"..........      XXXX                                 XXXXXXX    ........",
+"...........   XXXX                                       XXXXX  ........",
+"...........  XXXX                                          XXX  ........",
+"...........  XX                                             X  .........",
 "...........                                                    .........",
 "............                                                   .........",
 "............                                                  ..........",
diff --git a/po/LINGUAS b/po/LINGUAS
deleted file mode 100755
index 3a8928a..0000000
--- a/po/LINGUAS
+++ /dev/null
@@ -1,2 +0,0 @@
-# whitespace separated list of translated languages goes below
-tr de
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
deleted file mode 100755
index 5583699..0000000
--- a/po/Makefile.in.in
+++ /dev/null
@@ -1,354 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2003 by Ulrich Drepper <drepper at gnu.ai.mit.edu>
-#
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-
-PACKAGE = @PRODUCT@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
- at SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-datadir = @datadir@
-localedir = $(datadir)/locale
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
-
-GMSGFMT = @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = @XGETTEXT@
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update
-
-.po.mo:
-	@echo "$(MSGFMT) -c -o $@ $<"; \
-	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
-	@lang=`echo $* | sed -e 's,.*/,,'`; \
-	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
-	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
-	sed -e '/^#/d' $< > t-$@
-	mv t-$@ $@
-
-
-all: all- at USE_NLS@
-
-all-yes: stamp-po
-all-no:
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
-	test -z "$(CATALOGS)" || $(MAKE) $(CATALOGS)
-	@echo "touch stamp-po"
-	@echo timestamp > stamp-poT
-	@mv stamp-poT stamp-po
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
-	$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-	  --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
-	  --files-from=$(srcdir)/POTFILES.in \
-	  --copyright-holder='$(COPYRIGHT_HOLDER)' \
-	  --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)'
-	test ! -f $(DOMAIN).po || { \
-	  if test -f $(srcdir)/$(DOMAIN).pot; then \
-	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
-	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
-	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
-	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
-	    else \
-	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
-	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-	    fi; \
-	  else \
-	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-	  fi; \
-	}
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
-	$(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
-	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
-	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
-	cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data- at USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
-	  for file in $(DISTFILES.common) Makevars.template; do \
-	    $(INSTALL_DATA) $(srcdir)/$$file \
-			    $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	  for file in Makevars; do \
-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	else \
-	  : ; \
-	fi
-install-data-no: all
-install-data-yes: all
-	$(mkinstalldirs) $(DESTDIR)$(datadir)
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  dir=$(localedir)/$$lang/LC_MESSAGES; \
-	  $(mkinstalldirs) $(DESTDIR)$$dir; \
-	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
-	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
-	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
-	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-	    if test -n "$$lc"; then \
-	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-	         for file in *; do \
-	           if test -f $$file; then \
-	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-	           fi; \
-	         done); \
-	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	      else \
-	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-	          :; \
-	        else \
-	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        fi; \
-	      fi; \
-	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
-	    fi; \
-	  done; \
-	done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data- at USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
-	else \
-	  : ; \
-	fi
-installdirs-data-no:
-installdirs-data-yes:
-	$(mkinstalldirs) $(DESTDIR)$(datadir)
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  dir=$(localedir)/$$lang/LC_MESSAGES; \
-	  $(mkinstalldirs) $(DESTDIR)$$dir; \
-	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-	    if test -n "$$lc"; then \
-	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-	         for file in *; do \
-	           if test -f $$file; then \
-	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-	           fi; \
-	         done); \
-	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	      else \
-	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-	          :; \
-	        else \
-	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        fi; \
-	      fi; \
-	    fi; \
-	  done; \
-	done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data- at USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  for file in $(DISTFILES.common) Makevars.template; do \
-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	else \
-	  : ; \
-	fi
-uninstall-data-no:
-uninstall-data-yes:
-	catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
-	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	  done; \
-	done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
-	rm -f remove-potcdate.sed
-	rm -f stamp-poT
-	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
-	rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
-	rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
-	@echo "This command is intended for maintainers to use;"
-	@echo "it deletes files that may require special tools to rebuild."
-	rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
-	$(MAKE) update-po
-	@$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: $(DISTFILES)
-	dists="$(DISTFILES)"; \
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  dists="$$dists Makevars.template"; \
-	fi; \
-	if test -f $(srcdir)/ChangeLog; then \
-	  dists="$$dists ChangeLog"; \
-	fi; \
-	for i in 0 1 2 3 4 5 6 7 8 9; do \
-	  if test -f $(srcdir)/ChangeLog.$$i; then \
-	    dists="$$dists ChangeLog.$$i"; \
-	  fi; \
-	done; \
-	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
-	for file in $$dists; do \
-	  if test -f $$file; then \
-	    cp -p $$file $(distdir); \
-	  else \
-	    cp -p $(srcdir)/$$file $(distdir); \
-	  fi; \
-	done
-
-update-po: Makefile
-	$(MAKE) $(DOMAIN).pot-update
-	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
-	$(MAKE) update-gmo
-
-# General rule for updating PO files.
-
-.nop.po-update:
-	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
-	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
-	tmpdir=`pwd`; \
-	echo "$$lang:"; \
-	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
-	cd $(srcdir); \
-	if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
-	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
-	    rm -f $$tmpdir/$$lang.new.po; \
-	  else \
-	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
-	      :; \
-	    else \
-	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
-	      exit 1; \
-	    fi; \
-	  fi; \
-	else \
-	  echo "msgmerge for $$lang.po failed!" 1>&2; \
-	  rm -f $$tmpdir/$$lang.new.po; \
-	fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
-	@:
-
-Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@
-	cd $(top_builddir) \
-	  && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
-	       $(SHELL) ./config.status
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
deleted file mode 100755
index 7ca6b7a..0000000
--- a/po/Makevars
+++ /dev/null
@@ -1,41 +0,0 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ -cLabel
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
-# package.  (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.)  Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright.  The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-#   in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-#   understood.
-# - Strings which make invalid assumptions about notation of date, time or
-#   money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS =
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used.  It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
deleted file mode 100755
index 7de6241..0000000
--- a/po/POTFILES.in
+++ /dev/null
@@ -1,5 +0,0 @@
-xboard.c
-xedittags.c
-xgamelist.c
-xhistory.c
-backend.c
diff --git a/po/de.po b/po/de.po
deleted file mode 100644
index 9db4a44..0000000
--- a/po/de.po
+++ /dev/null
@@ -1,1335 +0,0 @@
-# XBoard -- a graphical chessboard for X
-# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
-# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
-# This file is distributed under the same license as the XBoard package.
-# Arun Persaud <arun at nubati.net>, 2009.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: XBoard 4.2.7\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-12-01 20:00+0200\n"
-"PO-Revision-Date: 2009-04-09 21:17-0700\n"
-"Last-Translator: Arun Persaud <arun at nubati.net>\n"
-"Language-Team: German\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: xboard.c:514
-msgid "Reset Game"
-msgstr "Spiel zurücksetzen"
-
-#: xboard.c:516
-msgid "Load Game"
-msgstr "Spiel laden"
-
-#: xboard.c:517
-msgid "Load Next Game"
-msgstr "Nächstes Spiel laden"
-
-#: xboard.c:518
-msgid "Load Previous Game"
-msgstr "Vorheriges Spiel laden"
-
-#: xboard.c:519
-msgid "Reload Same Game"
-msgstr "Spiel erneut laden"
-
-#: xboard.c:520
-msgid "Save Game"
-msgstr "Spiel speichern"
-
-#: xboard.c:522
-msgid "Copy Game"
-msgstr "Spiel kopieren"
-
-#: xboard.c:523
-msgid "Paste Game"
-msgstr "Spiel einfügen"
-
-#: xboard.c:525
-msgid "Load Position"
-msgstr "Stellung laden"
-
-#: xboard.c:526
-msgid "Load Next Position"
-msgstr "Nächste Stellung laden"
-
-#: xboard.c:527
-msgid "Load Previous Position"
-msgstr "Vorherige Stellung laden"
-
-#: xboard.c:528
-msgid "Reload Same Position"
-msgstr "Stellung erneut laden"
-
-#: xboard.c:529
-msgid "Save Position"
-msgstr "Stellung speichern"
-
-#: xboard.c:531
-msgid "Copy Position"
-msgstr "Stellung kopieren"
-
-#: xboard.c:532
-msgid "Paste Position"
-msgstr "Stellung einfügen"
-
-#: xboard.c:534
-msgid "Mail Move"
-msgstr "Verschicke Zug"
-
-#: xboard.c:535
-msgid "Reload CMail Message"
-msgstr "CMail Nachricht erneut laden"
-
-#: xboard.c:537
-msgid "Exit"
-msgstr "Beenden"
-
-#: xboard.c:542
-msgid "Machine White"
-msgstr "Computer weiß"
-
-#: xboard.c:543
-msgid "Machine Black"
-msgstr "Computer schwarz"
-
-#: xboard.c:544
-msgid "Two Machines"
-msgstr "Zwei Computer"
-
-#: xboard.c:545
-msgid "Analysis Mode"
-msgstr "Analyse-Modus"
-
-#: xboard.c:546
-msgid "Analyze File"
-msgstr "Datei analyzieren"
-
-#: xboard.c:547
-msgid "ICS Client"
-msgstr ""
-
-#: xboard.c:548
-msgid "Edit Game"
-msgstr "Spiel bearbeiten"
-
-#: xboard.c:549
-msgid "Edit Position"
-msgstr "Stellung bearbeiten"
-
-#: xboard.c:550
-msgid "Training"
-msgstr "Training"
-
-#: xboard.c:552
-msgid "Show Game List"
-msgstr "Spielliste anzeigen"
-
-#: xboard.c:553
-msgid "Show Move List"
-msgstr "Züge anzeigen"
-
-#: xboard.c:554 xedittags.c:393
-msgid "Edit Tags"
-msgstr "Markierung bearbeiten"
-
-#: xboard.c:555
-msgid "Edit Comment"
-msgstr "Kommentar bearbeiten"
-
-#: xboard.c:556
-msgid "ICS Input Box"
-msgstr "ICS Eingabefeld"
-
-#: xboard.c:557
-msgid "Pause"
-msgstr "Pause"
-
-#: xboard.c:562
-msgid "Accept"
-msgstr "Annehmen"
-
-#: xboard.c:563
-msgid "Decline"
-msgstr "Ablehnen"
-
-#: xboard.c:564
-msgid "Rematch"
-msgstr ""
-
-#: xboard.c:566
-msgid "Call Flag"
-msgstr "Zeit reklamieren"
-
-#: xboard.c:567
-msgid "Draw"
-msgstr "Remi"
-
-#: xboard.c:568
-msgid "Adjourn"
-msgstr "Aussetzen"
-
-#: xboard.c:569
-msgid "Abort"
-msgstr "Abbrechen"
-
-#: xboard.c:570
-msgid "Resign"
-msgstr "Aufgeben"
-
-#: xboard.c:572
-msgid "Stop Observing"
-msgstr "Beobachtung beenden"
-
-#: xboard.c:573
-msgid "Stop Examining"
-msgstr "Untersuchung beenden"
-
-#: xboard.c:578
-msgid "Backward"
-msgstr "Zurück"
-
-#: xboard.c:579
-msgid "Forward"
-msgstr "Vorwärts"
-
-#: xboard.c:580
-msgid "Back to Start"
-msgstr "Zurück zum Anfang"
-
-#: xboard.c:581
-msgid "Forward to End"
-msgstr "Vorwärts zum Ende"
-
-#: xboard.c:582
-msgid "Revert"
-msgstr ""
-
-#: xboard.c:583
-msgid "Truncate Game"
-msgstr ""
-
-#: xboard.c:585
-msgid "Move Now"
-msgstr "Jetzt ziehen"
-
-#: xboard.c:586
-msgid "Retract Move"
-msgstr "Zug zurücknehmen"
-
-#: xboard.c:591
-msgid "Always Queen"
-msgstr "Immer Königin"
-
-#: xboard.c:592
-msgid "Animate Dragging"
-msgstr "Ziehen animieren"
-
-#: xboard.c:593
-msgid "Animate Moving"
-msgstr "Züge animieren"
-
-#: xboard.c:594
-msgid "Auto Comment"
-msgstr ""
-
-#: xboard.c:595
-msgid "Auto Flag"
-msgstr "Zeit automatisch reklamieren"
-
-#: xboard.c:596
-msgid "Auto Flip View"
-msgstr "Brett automatisch drehen"
-
-#: xboard.c:597
-msgid "Auto Observe"
-msgstr ""
-
-#: xboard.c:598
-msgid "Auto Raise Board"
-msgstr ""
-
-#: xboard.c:599
-msgid "Auto Save"
-msgstr "Automatisch speichern"
-
-#: xboard.c:600
-msgid "Blindfold"
-msgstr ""
-
-#: xboard.c:601
-msgid "Flash Moves"
-msgstr ""
-
-#: xboard.c:602
-msgid "Flip View"
-msgstr "Brett drehen"
-
-#: xboard.c:603
-msgid "Get Move List"
-msgstr ""
-
-#: xboard.c:605
-msgid "Highlight Dragging"
-msgstr ""
-
-#: xboard.c:607
-msgid "Highlight Last Move"
-msgstr ""
-
-#: xboard.c:608
-msgid "Move Sound"
-msgstr ""
-
-#: xboard.c:609
-msgid "ICS Alarm"
-msgstr "ICS-Alarm"
-
-#: xboard.c:610
-msgid "Old Save Style"
-msgstr ""
-
-#: xboard.c:611
-msgid "Periodic Updates"
-msgstr ""
-
-#: xboard.c:612
-msgid "Ponder Next Move"
-msgstr "Nächsten Zug abwägen"
-
-#: xboard.c:613
-msgid "Popup Exit Message"
-msgstr ""
-
-#: xboard.c:614
-msgid "Popup Move Errors"
-msgstr ""
-
-#: xboard.c:615
-msgid "Premove"
-msgstr ""
-
-#: xboard.c:616
-msgid "Quiet Play"
-msgstr ""
-
-#: xboard.c:617
-msgid "Show Coords"
-msgstr "Zeige Koordinaten"
-
-#: xboard.c:618
-msgid "Show Thinking"
-msgstr ""
-
-#: xboard.c:619
-msgid "Test Legality"
-msgstr ""
-
-#: xboard.c:624
-msgid "Info XBoard"
-msgstr "Info XBoard"
-
-#: xboard.c:625
-msgid "Man XBoard"
-msgstr "Man XBoard"
-
-#: xboard.c:627
-msgid "Hint"
-msgstr "Hinweiss"
-
-#: xboard.c:628
-msgid "Book"
-msgstr "Buch"
-
-#: xboard.c:630 xboard.c:6746
-msgid "About XBoard"
-msgstr "Über XBoard"
-
-#: xboard.c:635
-msgid "File"
-msgstr "Datei"
-
-#: xboard.c:636
-msgid "Mode"
-msgstr ""
-
-#: xboard.c:637
-msgid "Action"
-msgstr "Aktion"
-
-#: xboard.c:638
-msgid "Step"
-msgstr "Züge"
-
-#: xboard.c:639
-msgid "Options"
-msgstr "Optionen"
-
-#: xboard.c:640
-msgid "Help"
-msgstr "Hilfe"
-
-#. Label on pause button
-#: xboard.c:646
-msgid "P"
-msgstr "P"
-
-#: xboard.c:658 xboard.c:7440
-msgid "White"
-msgstr "Weiss"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675
-msgid "Pawn"
-msgstr "Bauer"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5218 xboard.c:5277
-msgid "Knight"
-msgstr "Springer"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5216
-msgid "Bishop"
-msgstr "Läufer"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5214
-msgid "Rook"
-msgstr "Turm"
-
-#: xboard.c:659 xboard.c:661 xboard.c:675 xboard.c:5212
-msgid "Queen"
-msgstr "Königin"
-
-#: xboard.c:659 xboard.c:661 xboard.c:5222
-msgid "King"
-msgstr "König"
-
-#: xboard.c:659 xboard.c:661
-msgid "Empty square"
-msgstr "Leeres Feld"
-
-#: xboard.c:659 xboard.c:661
-msgid "Clear board"
-msgstr ""
-
-#: xboard.c:660 xboard.c:7454
-msgid "Black"
-msgstr "Schwarz"
-
-#: xboard.c:1666
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr "%s: XPM-Ordner nicht erreichbar %s\n"
-
-#: xboard.c:1689
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr "Mögliche »%s« Größen:\n"
-
-#: xboard.c:1725
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr "Fehler: Keine »%s« Datein!\n"
-
-#: xboard.c:1741
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-"         Unable to autosize for XPM/XIM pieces.\n"
-"   Please report this error to frankm at hiwaay.net.\n"
-"   Include system type & operating system in message.\n"
-msgstr ""
-
-#: xboard.c:1802
-#, c-format
-msgid "%s: unrecognized color %s\n"
-msgstr "%s: nicht erkannte Farbe %s\n"
-
-#: xboard.c:1812
-#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
-msgstr ""
-
-#: xboard.c:1883
-#, c-format
-msgid "%s: unrecognized argument %s\n"
-msgstr "%s: nicht erkanntes Argument %s\n"
-
-#: xboard.c:1892
-#, c-format
-msgid "%s: can't cd to CHESSDIR: "
-msgstr "%s: cd zu CHESSDIR funktioniert nicht: "
-
-#: xboard.c:1928
-#, c-format
-msgid "%s: bad boardSize syntax %s\n"
-msgstr "%s: falsche boardSize Syntax %s\n"
-
-#: xboard.c:1964
-#, c-format
-msgid "%s: unrecognized boardSize name %s\n"
-msgstr ""
-
-#: xboard.c:1982
-#, c-format
-msgid "Error expanding path name \"%s\"\n"
-msgstr ""
-
-#: xboard.c:1987
-#, c-format
-msgid ""
-"XBoard square size (hint): %d\n"
-"%s fulldir:%s:\n"
-msgstr ""
-
-#: xboard.c:1993
-#, c-format
-msgid "Closest %s size: %d\n"
-msgstr "Nächste %s Größe: %d\n"
-
-#: xboard.c:2105
-#, c-format
-msgid "%s: too few colors available; trying monochrome mode\n"
-msgstr "%s: nicht genügend Farben vorhanden; versuche monochrom Modus\n"
-
-#: xboard.c:2110
-#, c-format
-msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
-msgstr ""
-
-#: xboard.c:2128
-#, c-format
-msgid "%s: can't parse color names; disabling colorization\n"
-msgstr ""
-
-#: xboard.c:2308 xboard.c:2318
-#, c-format
-msgid "%s: messageWidget geometry error %d %d %d %d %d\n"
-msgstr "%s: messageWidget Geometriefehler %d %d %d %d %d\n"
-
-#: xboard.c:2339
-#, c-format
-msgid "%s: titleWidget geometry error %d %d %d %d %d\n"
-msgstr "%s: titleWidget Geometriefehler %d %d %d %d %d\n"
-
-#: xboard.c:2909
-msgid "Unable to create font set.\n"
-msgstr "Nicht in der Lage Schriftsatz zu generieren.\n"
-
-#: xboard.c:2917
-#, c-format
-msgid "%s: no fonts match pattern %s\n"
-msgstr "%s: keine Schriften stimmen mit Muster %s überein\n"
-
-#: xboard.c:2960
-#, c-format
-msgid ""
-"resolved %s at pixel size %d\n"
-"  to %s\n"
-msgstr ""
-
-#: xboard.c:3084
-#, c-format
-msgid "%s: error loading XIM!\n"
-msgstr "%s: Fehler beim Laden von XIM!\n"
-
-#: xboard.c:3176
-msgid "XIM pieces cannot be used in monochrome mode"
-msgstr "XIM Figuren können nicht im Monochrom-modus benutzt werden"
-
-#: xboard.c:3180
-msgid ""
-"\n"
-"Loading XIMs...\n"
-msgstr ""
-
-#: xboard.c:3194 xboard.c:3215 xboard.c:3222 xboard.c:3313 xboard.c:3334
-#: xboard.c:3345
-#, c-format
-msgid "(File:%s:) "
-msgstr "(Datei:%s) "
-
-#: xboard.c:3210 xboard.c:3327
-msgid "light square "
-msgstr "weisses Feld "
-
-#: xboard.c:3218 xboard.c:3341
-msgid "dark square "
-msgstr "schwarze Feld "
-
-#: xboard.c:3229 xboard.c:3354
-msgid "Done.\n"
-msgstr "Fertig.\n"
-
-#: xboard.c:3271
-msgid "XPM pieces cannot be used in monochrome mode"
-msgstr "XPM Figuren können nicht im Monochrom-modus benutzt werden"
-
-#: xboard.c:3281
-#, c-format
-msgid "No builtin XPM pieces of size %d\n"
-msgstr "Keine XPM-Figuren der Größe %d vorhanden\n"
-
-#: xboard.c:3291
-#, c-format
-msgid "Error %d loading XPM image \"%s\"\n"
-msgstr "Fehler %d beim Laden von XPM-Bild »%s«\n"
-
-#: xboard.c:3302
-msgid ""
-"\n"
-"Loading XPMs...\n"
-msgstr ""
-"\n"
-"Lade XPMs…\n"
-
-#: xboard.c:3318 xboard.c:3338 xboard.c:3349
-#, c-format
-msgid "Error %d loading XPM file \"%s\"\n"
-msgstr ""
-
-#: xboard.c:3431
-#, c-format
-msgid "Can't open bitmap file %s"
-msgstr "Bitmap file %s kann nicht geöffnet werden"
-
-#: xboard.c:3434
-#, c-format
-msgid "Invalid bitmap in file %s"
-msgstr "Ungültiges Bitmap in Datei %s"
-
-#: xboard.c:3437
-#, c-format
-msgid "Ran out of memory reading bitmap file %s"
-msgstr ""
-
-#: xboard.c:3441
-#, c-format
-msgid "Unknown XReadBitmapFile error %d on file %s"
-msgstr "Unbekannter XReadBitmapFile-Fehler %d bei Datei %s"
-
-#: xboard.c:3445
-#, c-format
-msgid "%s: %s...using built-in\n"
-msgstr ""
-
-#: xboard.c:3449
-#, c-format
-msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"
-msgstr ""
-
-#: xboard.c:3456
-#, c-format
-msgid "%s: No built-in bitmap for %s; giving up\n"
-msgstr ""
-
-#: xboard.c:3652
-msgid "Drop"
-msgstr ""
-
-#: xboard.c:4573 xboard.c:4576 xboard.c:4832 xboard.c:5078 xboard.c:5087
-#: xboard.c:5340 xedittags.c:150 xedittags.c:248
-msgid "ok"
-msgstr "Ok"
-
-#: xboard.c:4587 xboard.c:4590 xboard.c:4839 xboard.c:5082 xboard.c:5088
-#: xboard.c:5127 xboard.c:5225 xboard.c:5273 xboard.c:7014 xboard.c:7055
-#: xedittags.c:157 xedittags.c:259
-msgid "cancel"
-msgstr "abbrechen"
-
-#: xboard.c:4601 xboard.c:4604 xboard.c:4841 xedittags.c:159
-msgid "clear"
-msgstr ""
-
-#: xboard.c:4614 xboard.c:4617 xboard.c:5008 xedittags.c:128 xedittags.c:282
-#: xgamelist.c:226 xgamelist.c:292
-msgid "close"
-msgstr "schließen"
-
-#: xboard.c:4628 xboard.c:4631 xboard.c:5010 xedittags.c:130 xedittags.c:293
-msgid "edit"
-msgstr ""
-
-#: xboard.c:4873
-msgid "ICS Input"
-msgstr ""
-
-#: xboard.c:5062
-msgid "File name prompt"
-msgstr ""
-
-#: xboard.c:5164 xboard.c:6864 xboard.c:6878
-msgid "Error"
-msgstr "Fehler"
-
-#: xboard.c:5164
-msgid "Can't open file"
-msgstr "Datei kann nicht geöffnet werden"
-
-#: xboard.c:5169
-msgid "Failed to open file"
-msgstr "Fehler beim Öffnen der Datei"
-
-#: xboard.c:5198
-msgid "Promotion"
-msgstr "Umwandlung"
-
-#: xboard.c:5207
-msgid "Promote pawn to what?"
-msgstr "In Was soll der Bauer umgewandelt werden?"
-
-#: xboard.c:5525 backend.c:5699
-msgid "Cannot build game list"
-msgstr ""
-
-#: xboard.c:5546
-msgid "Load game file name?"
-msgstr ""
-
-#: xboard.c:5612
-msgid "Load position file name?"
-msgstr ""
-
-#: xboard.c:5621
-msgid "Save game file name?"
-msgstr ""
-
-#: xboard.c:5632
-msgid "Save position file name?"
-msgstr ""
-
-#: xboard.c:5804
-msgid "Can't open temp file"
-msgstr ""
-
-#: xboard.c:5885 xboard.c:5903
-#, c-format
-msgid "%s does not support analysis"
-msgstr ""
-
-#: xboard.c:5913
-msgid "File to analyze"
-msgstr ""
-
-#: xboard.c:6901
-msgid "Fatal Error"
-msgstr ""
-
-#: xboard.c:6901
-msgid "Exiting"
-msgstr ""
-
-#: xboard.c:6911
-msgid "Information"
-msgstr ""
-
-#: xboard.c:6918
-msgid "Note"
-msgstr ""
-
-#: xboard.c:6968
-#, c-format
-msgid "AskQuestionProc needed 4 parameters, got %d\n"
-msgstr ""
-
-#: xboard.c:7001
-msgid "Error writing to chess program"
-msgstr ""
-
-#: xboard.c:7053
-msgid "enter"
-msgstr ""
-
-#: xboard.c:7166 backend.c:1323
-msgid "Error writing to display"
-msgstr ""
-
-#: xboard.c:7239
-#, c-format
-msgid "ERROR: Unknown user %s (in path %s)\n"
-msgstr ""
-
-#: xboard.c:7594
-msgid "Socket support is not configured in"
-msgstr ""
-
-#: xboard.c:7696
-msgid "internal rcmd not implemented for Unix"
-msgstr ""
-
-#: xboard.c:8422
-#, c-format
-msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n"
-msgstr ""
-
-#: xboard.c:8423
-#, c-format
-msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n"
-msgstr ""
-
-#: xedittags.c:346 xedittags.c:354
-msgid "Tags"
-msgstr ""
-
-#: xedittags.c:385
-msgid "Edit tags"
-msgstr ""
-
-#: xgamelist.c:193 xgamelist.c:298
-msgid "load"
-msgstr ""
-
-#: xgamelist.c:204 xgamelist.c:311
-msgid "prev"
-msgstr ""
-
-#: xgamelist.c:215 xgamelist.c:304
-msgid "next"
-msgstr ""
-
-#: xgamelist.c:301
-msgid "No game selected"
-msgstr ""
-
-#: xgamelist.c:307
-msgid "Can't go forward any further"
-msgstr ""
-
-#: xgamelist.c:314 backend.c:5833 backend.c:6292
-msgid "Can't back up any further"
-msgstr ""
-
-#: xgamelist.c:415
-msgid "There is no game list"
-msgstr ""
-
-#: xhistory.c:156
-msgid "White "
-msgstr "Weiss"
-
-#: xhistory.c:157
-msgid "Black "
-msgstr "Schwarz"
-
-#: xhistory.c:347 xhistory.c:351
-msgid "Move list"
-msgstr ""
-
-#: xhistory.c:445
-msgid "Close"
-msgstr "Schließen"
-
-#: backend.c:468
-#, c-format
-msgid "bad timeControl option %s"
-msgstr ""
-
-#: backend.c:483
-#, c-format
-msgid "bad searchTime option %s"
-msgstr ""
-
-#: backend.c:542 backend.c:552
-#, c-format
-msgid "protocol version %d not supported"
-msgstr ""
-
-#: backend.c:603
-#, c-format
-msgid "Variant %s supported only in ICS mode"
-msgstr ""
-
-#: backend.c:618
-#, c-format
-msgid "Unknown variant name %s"
-msgstr ""
-
-#: backend.c:705
-#, c-format
-msgid "Could not open comm port %s"
-msgstr ""
-
-#: backend.c:708
-#, c-format
-msgid "Could not connect to host %s, port %s"
-msgstr ""
-
-#: backend.c:753
-#, c-format
-msgid "Unknown initialMode %s"
-msgstr ""
-
-#: backend.c:761
-msgid "Can't have a match with no chess programs"
-msgstr ""
-
-#: backend.c:771
-msgid "Bad game file"
-msgstr ""
-
-#: backend.c:778
-msgid "Bad position file"
-msgstr ""
-
-#: backend.c:790
-msgid "AnalyzeFile mode requires a game file"
-msgstr ""
-
-#: backend.c:805
-msgid "Analysis mode requires a chess engine"
-msgstr ""
-
-#: backend.c:809
-msgid "Analysis mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:819
-msgid "MachineWhite mode requires a chess engine"
-msgstr ""
-
-#: backend.c:824
-msgid "MachineWhite mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:831
-msgid "MachineBlack mode requires a chess engine"
-msgstr ""
-
-#: backend.c:836
-msgid "MachineBlack mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:843
-msgid "TwoMachines mode requires a chess engine"
-msgstr ""
-
-#: backend.c:848
-msgid "TwoMachines mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:859
-msgid "Training mode requires a game file"
-msgstr ""
-
-#: backend.c:1007 backend.c:1029 backend.c:1054 backend.c:1409
-msgid "Error writing to ICS"
-msgstr ""
-
-#: backend.c:1011
-msgid "Error reading from keyboard"
-msgstr ""
-
-#: backend.c:1014
-msgid "Got end of file from keyboard"
-msgstr ""
-
-#: backend.c:1258
-#, c-format
-msgid "recognized '%s' (%d) as variant %s\n"
-msgstr ""
-
-#: backend.c:2000
-msgid "Error gathering move list: two headers"
-msgstr ""
-
-#: backend.c:2014
-#, c-format
-msgid "Ratings from header: W %d, B %d\n"
-msgstr ""
-
-#: backend.c:2047
-msgid "Error gathering move list: nested"
-msgstr ""
-
-#: backend.c:2556
-msgid "Connection closed by ICS"
-msgstr ""
-
-#: backend.c:2558
-msgid "Error reading from ICS"
-msgstr ""
-
-#: backend.c:2606
-#, c-format
-msgid "Parsing board: %s\n"
-msgstr ""
-
-#: backend.c:2618
-#, c-format
-msgid ""
-"Failed to parse board string:\n"
-"\"%s\""
-msgstr ""
-
-#: backend.c:2627 backend.c:4811
-msgid "Game too long; increase MAX_MOVES and recompile"
-msgstr ""
-
-#: backend.c:2689
-msgid "Error gathering move list: extra board"
-msgstr ""
-
-#: backend.c:2936 backend.c:2958
-#, c-format
-msgid "Couldn't parse move \"%s\" from ICS"
-msgstr ""
-
-#: backend.c:3391
-msgid "You are playing Black"
-msgstr "Sie spielen Schwarz"
-
-#: backend.c:3400 backend.c:3431
-msgid "You are playing White"
-msgstr "Sie spielen Weiß"
-
-#: backend.c:3407 backend.c:3439 backend.c:3504 backend.c:3526 backend.c:3542
-#: backend.c:7925
-msgid "It is White's turn"
-msgstr "Weiß ist am Zug"
-
-#: backend.c:3411 backend.c:3443 backend.c:3512 backend.c:3532 backend.c:3563
-#: backend.c:7917
-msgid "It is Black's turn"
-msgstr "Schwarz ist am Zug"
-
-#: backend.c:3454
-msgid "Displayed position is not current"
-msgstr ""
-
-#: backend.c:3602
-msgid "Illegal move"
-msgstr "Ungültiger Zug"
-
-#: backend.c:3636
-msgid "End of game"
-msgstr "Ende des Spiels"
-
-#: backend.c:3639
-msgid "Incorrect move"
-msgstr ""
-
-#: backend.c:3858
-#, c-format
-msgid "Illegal move \"%s\" from %s machine"
-msgstr ""
-
-#: backend.c:4099
-#, c-format
-msgid "Illegal move \"%s\" (rejected by %s chess program)"
-msgstr ""
-
-#: backend.c:4124
-#, c-format
-msgid "Failed to start %s chess program %s on %s: %s\n"
-msgstr ""
-
-#: backend.c:4147
-#, c-format
-msgid ""
-"Illegal hint move \"%s\"\n"
-"from %s chess program"
-msgstr ""
-
-#: backend.c:4322
-msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
-msgstr ""
-
-#: backend.c:4578
-#, c-format
-msgid "Ambiguous move in ICS output: \"%s\""
-msgstr ""
-
-#: backend.c:4583
-#, c-format
-msgid "Illegal move in ICS output: \"%s\""
-msgstr ""
-
-#: backend.c:4589
-msgid "Gap in move list"
-msgstr ""
-
-#: backend.c:4890
-#, c-format
-msgid "Variant %s not supported by %s"
-msgstr ""
-
-#: backend.c:5242
-#, c-format
-msgid "Match %s vs. %s: final score %d-%d-%d"
-msgstr ""
-
-#: backend.c:5628
-#, c-format
-msgid "Ambiguous move: %d.%s%s"
-msgstr ""
-
-#: backend.c:5639
-#, c-format
-msgid "Illegal move: %d.%s%s"
-msgstr ""
-
-#: backend.c:5687 backend.c:6314 backend.c:6507 backend.c:6733
-#, c-format
-msgid "Can't open \"%s\""
-msgstr ""
-
-#: backend.c:5788
-msgid "No more games in this message"
-msgstr ""
-
-#: backend.c:5829
-msgid "No game has been loaded yet"
-msgstr ""
-
-#: backend.c:5888
-msgid "Game number out of range"
-msgstr ""
-
-#: backend.c:5899
-msgid "Can't seek on game file"
-msgstr ""
-
-#: backend.c:5958
-msgid "Game not found in file"
-msgstr "Spiel in Datei nicht gefunden"
-
-#: backend.c:6075 backend.c:6404
-msgid "Bad FEN position in file"
-msgstr ""
-
-#: backend.c:6218
-msgid "No moves in game"
-msgstr "Keine Züge in dem Spiel"
-
-#: backend.c:6288
-msgid "No position has been loaded yet"
-msgstr ""
-
-#: backend.c:6355 backend.c:6366
-msgid "Can't seek on position file"
-msgstr ""
-
-#: backend.c:6373 backend.c:6395
-msgid "Position not found in file"
-msgstr ""
-
-#: backend.c:6436
-msgid "Black to play"
-msgstr "Schwarz am Zug"
-
-#: backend.c:6439
-msgid "White to play"
-msgstr "Weiß am Zug"
-
-#: backend.c:6863
-msgid ""
-"You have edited the game history.\n"
-"Use Reload Same Game and make your move again."
-msgstr ""
-
-#: backend.c:6868
-msgid ""
-"You have entered too many moves.\n"
-"Back up to the correct position and try again."
-msgstr ""
-
-#: backend.c:6873
-msgid ""
-"Displayed position is not current.\n"
-"Step forward to the correct position and try again."
-msgstr ""
-
-#: backend.c:6921
-msgid "You have not made a move yet"
-msgstr "Sie haben noch keinen Zug gemacht"
-
-#: backend.c:6942
-msgid ""
-"The cmail message is not loaded.\n"
-"Use Reload CMail Message and make your move again."
-msgstr ""
-
-#: backend.c:6947
-msgid "No unfinished games"
-msgstr ""
-
-#: backend.c:6953
-#, c-format
-msgid ""
-"You have already mailed a move.\n"
-"Wait until a move arrives from your opponent.\n"
-"To resend the same move, type\n"
-"\"cmail -remail -game %s\"\n"
-"on the command line."
-msgstr ""
-
-#: backend.c:6968
-msgid "Failed to invoke cmail"
-msgstr ""
-
-#: backend.c:7030
-msgid "Waiting for reply from opponent\n"
-msgstr ""
-
-#: backend.c:7053
-msgid "Still need to make move for game\n"
-msgstr ""
-
-#: backend.c:7058
-msgid "Still need to make moves for both games\n"
-msgstr ""
-
-#: backend.c:7063
-#, c-format
-msgid "Still need to make moves for all %d games\n"
-msgstr ""
-
-#: backend.c:7071
-#, c-format
-msgid "Still need to make a move for game %s\n"
-msgstr ""
-
-#: backend.c:7077
-msgid "No unfinished games\n"
-msgstr ""
-
-#: backend.c:7079
-msgid "Ready to send mail\n"
-msgstr ""
-
-#: backend.c:7085
-#, c-format
-msgid "Still need to make moves for games %s\n"
-msgstr ""
-
-#: backend.c:7237
-msgid "Edit comment"
-msgstr ""
-
-#: backend.c:7239
-#, c-format
-msgid "Edit comment on %d.%s%s"
-msgstr ""
-
-#: backend.c:7270 backend.c:7297
-msgid "Analysis"
-msgstr "Analyse"
-
-#: backend.c:7271 backend.c:7298
-msgid ""
-"Starting analysis mode...\n"
-"If this message stays up, your chess program does not support analysis."
-msgstr ""
-
-#: backend.c:7330
-msgid "It is not White's turn"
-msgstr "Weiß ist nicht am Zug"
-
-#: backend.c:7393
-msgid "It is not Black's turn"
-msgstr "Schwarz ist nicht am Zug"
-
-#: backend.c:7474 backend.c:8405
-msgid ""
-"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
-
-#: backend.c:7506
-msgid "Starting second chess program"
-msgstr "Starte zweites Schachprogramm"
-
-#: backend.c:7571
-msgid "Training mode off"
-msgstr "Trainier-Modus aus"
-
-#: backend.c:7579
-msgid "Training mode on"
-msgstr "Trainier-Modus ein"
-
-#: backend.c:7582
-msgid "Already at end of game"
-msgstr ""
-
-#: backend.c:7663
-msgid "Warning: You are still playing a game"
-msgstr ""
-
-#: backend.c:7666
-msgid "Warning: You are still observing a game"
-msgstr ""
-
-#: backend.c:7669
-msgid "Warning: You are still examining a game"
-msgstr ""
-
-#: backend.c:7942
-msgid "That square is occupied"
-msgstr ""
-
-#: backend.c:7966 backend.c:7992
-msgid "There is no pending offer on this move"
-msgstr ""
-
-#: backend.c:8028 backend.c:8039
-msgid "Your opponent is not out of time"
-msgstr ""
-
-#: backend.c:8074
-msgid "You must make your move before offering a draw"
-msgstr ""
-
-#: backend.c:8387
-msgid "You are not examining a game"
-msgstr ""
-
-#: backend.c:8391
-msgid "You can't revert while pausing"
-msgstr ""
-
-#: backend.c:8445 backend.c:8452
-msgid "It is your turn"
-msgstr "Sie sind am Zug"
-
-#: backend.c:8502 backend.c:8509 backend.c:8528 backend.c:8535
-msgid "Wait until your turn"
-msgstr "Warten Sie bis Sie am Zug sind"
-
-#: backend.c:8514
-msgid "No hint available"
-msgstr ""
-
-#: backend.c:8820
-#, c-format
-msgid "Error writing to %s chess program"
-msgstr ""
-
-#: backend.c:8841
-#, c-format
-msgid "Error: %s chess program (%s) exited unexpectedly"
-msgstr ""
-
-#: backend.c:8847
-#, c-format
-msgid "Error reading from %s chess program (%s)"
-msgstr ""
-
-#: backend.c:9350 backend.c:9372
-msgid "Both flags fell"
-msgstr ""
-
-#: backend.c:9352
-msgid "White's flag fell"
-msgstr ""
-
-#: backend.c:9374
-msgid "Black's flag fell"
-msgstr ""
-
-#: backend.c:9972
-msgid "Bad FEN position in clipboard"
-msgstr ""
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
deleted file mode 100755
index 2436c49..0000000
--- a/po/remove-potcdate.sin
+++ /dev/null
@@ -1,19 +0,0 @@
-# Sed script that remove the POT-Creation-Date line in the header entry
-# from a POT file.
-#
-# The distinction between the first and the following occurrences of the
-# pattern is achieved by looking at the hold space.
-/^"POT-Creation-Date: .*"$/{
-x
-# Test if the hold space is empty.
-s/P/P/
-ta
-# Yes it was empty. First occurrence. Remove the line.
-g
-d
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/po/tr.po b/po/tr.po
deleted file mode 100644
index 0384b0a..0000000
--- a/po/tr.po
+++ /dev/null
@@ -1,1333 +0,0 @@
-# XBoard -- a graphical chessboard for X
-# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
-# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
-# This file is distributed under the same license as the XBoard package.
-# A. Alper Atýcý <alper_atici at yahoo.com>, 2003.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: XBoard 4.2.7\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-12-01 20:00+0200\n"
-"PO-Revision-Date: 2003-12-26 16:38+0200\n"
-"Last-Translator: A. Alper Atýcý <alper_atici at yahoo.com>\n"
-"Language-Team: Turkish <gnu-tr-u12a at lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-9\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: xboard.c:514
-msgid "Reset Game"
-msgstr "Oyunu Sýfýrla"
-
-#: xboard.c:516
-msgid "Load Game"
-msgstr "Oyun Yükle"
-
-#: xboard.c:517
-msgid "Load Next Game"
-msgstr "Sonraki Oyunu Yükle"
-
-#: xboard.c:518
-msgid "Load Previous Game"
-msgstr "Önceki Oyunu Yükle"
-
-#: xboard.c:519
-msgid "Reload Same Game"
-msgstr "Ayný Oyunu Tekrar Yükle"
-
-#: xboard.c:520
-msgid "Save Game"
-msgstr "Oyunu Kaydet"
-
-#: xboard.c:522
-msgid "Copy Game"
-msgstr "Oyunu Kopyala"
-
-#: xboard.c:523
-msgid "Paste Game"
-msgstr "Oyunu Yapýþtýr"
-
-#: xboard.c:525
-msgid "Load Position"
-msgstr "Pozisyon Yükle"
-
-#: xboard.c:526
-msgid "Load Next Position"
-msgstr "Sonraki Pozisyonu Yükle"
-
-#: xboard.c:527
-msgid "Load Previous Position"
-msgstr "Önceki Pozisyonu Yükle"
-
-#: xboard.c:528
-msgid "Reload Same Position"
-msgstr "Ayný Pozisyonu Tekrar Yükle"
-
-#: xboard.c:529
-msgid "Save Position"
-msgstr "Pozisyonu Kaydet"
-
-#: xboard.c:531
-msgid "Copy Position"
-msgstr "Pozisyonu Kopyala"
-
-#: xboard.c:532
-msgid "Paste Position"
-msgstr "Pozisyonu Yapýþtýr"
-
-#: xboard.c:534
-msgid "Mail Move"
-msgstr "Hamleyi Postala"
-
-#: xboard.c:535
-msgid "Reload CMail Message"
-msgstr "CMail Ýletisini Tekrar Yükle"
-
-#: xboard.c:537
-msgid "Exit"
-msgstr "Çýk"
-
-#: xboard.c:542
-msgid "Machine White"
-msgstr "Bilgisayar Beyaz"
-
-#: xboard.c:543
-msgid "Machine Black"
-msgstr "Bilgisayar Siyah"
-
-#: xboard.c:544
-msgid "Two Machines"
-msgstr "Ýkisi de Bilgisayar"
-
-#: xboard.c:545
-msgid "Analysis Mode"
-msgstr "Analiz Kipi"
-
-#: xboard.c:546
-msgid "Analyze File"
-msgstr "Analiz Dosyasý"
-
-#: xboard.c:547
-msgid "ICS Client"
-msgstr "ICS Ýstemcisi"
-
-#: xboard.c:548
-msgid "Edit Game"
-msgstr "Oyunu Düzenle"
-
-#: xboard.c:549
-msgid "Edit Position"
-msgstr "Pozisyonu Düzenle"
-
-#: xboard.c:550
-msgid "Training"
-msgstr "Eðitim"
-
-#: xboard.c:552
-msgid "Show Game List"
-msgstr "Oyun Listesini Göster"
-
-#: xboard.c:553
-msgid "Show Move List"
-msgstr "Hamle Listesini Göster"
-
-#: xboard.c:554 xedittags.c:393
-msgid "Edit Tags"
-msgstr ""
-
-#: xboard.c:555
-msgid "Edit Comment"
-msgstr ""
-
-#: xboard.c:556
-msgid "ICS Input Box"
-msgstr ""
-
-#: xboard.c:557
-msgid "Pause"
-msgstr "Duraklat"
-
-#: xboard.c:562
-msgid "Accept"
-msgstr "Kabul et"
-
-#: xboard.c:563
-msgid "Decline"
-msgstr "Red et"
-
-#: xboard.c:564
-msgid "Rematch"
-msgstr ""
-
-#: xboard.c:566
-msgid "Call Flag"
-msgstr "Terk et"
-
-#: xboard.c:567
-msgid "Draw"
-msgstr "Berabere"
-
-#: xboard.c:568
-msgid "Adjourn"
-msgstr "Ertele"
-
-#: xboard.c:569
-msgid "Abort"
-msgstr ""
-
-#: xboard.c:570
-msgid "Resign"
-msgstr ""
-
-#: xboard.c:572
-msgid "Stop Observing"
-msgstr ""
-
-#: xboard.c:573
-msgid "Stop Examining"
-msgstr ""
-
-#: xboard.c:578
-msgid "Backward"
-msgstr "Geri"
-
-#: xboard.c:579
-msgid "Forward"
-msgstr "Ýleri"
-
-#: xboard.c:580
-msgid "Back to Start"
-msgstr "En Baþa"
-
-#: xboard.c:581
-msgid "Forward to End"
-msgstr "En Sona"
-
-#: xboard.c:582
-msgid "Revert"
-msgstr ""
-
-#: xboard.c:583
-msgid "Truncate Game"
-msgstr ""
-
-#: xboard.c:585
-msgid "Move Now"
-msgstr ""
-
-#: xboard.c:586
-msgid "Retract Move"
-msgstr "Hamleyi Geri Al"
-
-#: xboard.c:591
-msgid "Always Queen"
-msgstr "Hep Vezir Olsun"
-
-#: xboard.c:592
-msgid "Animate Dragging"
-msgstr ""
-
-#: xboard.c:593
-msgid "Animate Moving"
-msgstr ""
-
-#: xboard.c:594
-msgid "Auto Comment"
-msgstr ""
-
-#: xboard.c:595
-msgid "Auto Flag"
-msgstr ""
-
-#: xboard.c:596
-msgid "Auto Flip View"
-msgstr ""
-
-#: xboard.c:597
-msgid "Auto Observe"
-msgstr ""
-
-#: xboard.c:598
-msgid "Auto Raise Board"
-msgstr ""
-
-#: xboard.c:599
-msgid "Auto Save"
-msgstr ""
-
-#: xboard.c:600
-msgid "Blindfold"
-msgstr "Tahtayý Görmeden"
-
-#: xboard.c:601
-msgid "Flash Moves"
-msgstr ""
-
-#: xboard.c:602
-msgid "Flip View"
-msgstr ""
-
-#: xboard.c:603
-msgid "Get Move List"
-msgstr ""
-
-#: xboard.c:605
-msgid "Highlight Dragging"
-msgstr ""
-
-#: xboard.c:607
-msgid "Highlight Last Move"
-msgstr ""
-
-#: xboard.c:608
-msgid "Move Sound"
-msgstr ""
-
-#: xboard.c:609
-msgid "ICS Alarm"
-msgstr ""
-
-#: xboard.c:610
-msgid "Old Save Style"
-msgstr ""
-
-#: xboard.c:611
-msgid "Periodic Updates"
-msgstr ""
-
-#: xboard.c:612
-msgid "Ponder Next Move"
-msgstr ""
-
-#: xboard.c:613
-msgid "Popup Exit Message"
-msgstr ""
-
-#: xboard.c:614
-msgid "Popup Move Errors"
-msgstr ""
-
-#: xboard.c:615
-msgid "Premove"
-msgstr ""
-
-#: xboard.c:616
-msgid "Quiet Play"
-msgstr ""
-
-#: xboard.c:617
-msgid "Show Coords"
-msgstr ""
-
-#: xboard.c:618
-msgid "Show Thinking"
-msgstr ""
-
-#: xboard.c:619
-msgid "Test Legality"
-msgstr ""
-
-#: xboard.c:624
-msgid "Info XBoard"
-msgstr "XBoard Info Sayfasý"
-
-#: xboard.c:625
-msgid "Man XBoard"
-msgstr "XBoard Man Sayfasý"
-
-#: xboard.c:627
-msgid "Hint"
-msgstr "Ýpucu"
-
-#: xboard.c:628
-msgid "Book"
-msgstr "Kitap"
-
-#: xboard.c:630 xboard.c:6746
-msgid "About XBoard"
-msgstr "XBoard Hakkýnda"
-
-#: xboard.c:635
-msgid "File"
-msgstr "Dosya"
-
-#: xboard.c:636
-msgid "Mode"
-msgstr "Kip"
-
-#: xboard.c:637
-msgid "Action"
-msgstr "Eylem"
-
-#: xboard.c:638
-msgid "Step"
-msgstr "Adým"
-
-#: xboard.c:639
-msgid "Options"
-msgstr "Seçenekler"
-
-#: xboard.c:640
-msgid "Help"
-msgstr "Yardým"
-
-#. Label on pause button
-#: xboard.c:646
-msgid "P"
-msgstr "D"
-
-#: xboard.c:658 xboard.c:7440
-msgid "White"
-msgstr "Beyaz"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675
-msgid "Pawn"
-msgstr "Piyon"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5218 xboard.c:5277
-msgid "Knight"
-msgstr "At"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5216
-msgid "Bishop"
-msgstr "Fil"
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5214
-msgid "Rook"
-msgstr "Kale"
-
-#: xboard.c:659 xboard.c:661 xboard.c:675 xboard.c:5212
-msgid "Queen"
-msgstr "Vezir"
-
-#: xboard.c:659 xboard.c:661 xboard.c:5222
-msgid "King"
-msgstr "Þah"
-
-#: xboard.c:659 xboard.c:661
-msgid "Empty square"
-msgstr "Kareyi Boþalt"
-
-#: xboard.c:659 xboard.c:661
-msgid "Clear board"
-msgstr "Tahtayý Temizle"
-
-#: xboard.c:660 xboard.c:7454
-msgid "Black"
-msgstr "Siyah"
-
-#: xboard.c:1666
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xboard.c:1689
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xboard.c:1725
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xboard.c:1741
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-"         Unable to autosize for XPM/XIM pieces.\n"
-"   Please report this error to frankm at hiwaay.net.\n"
-"   Include system type & operating system in message.\n"
-msgstr ""
-
-#: xboard.c:1802
-#, c-format
-msgid "%s: unrecognized color %s\n"
-msgstr ""
-
-#: xboard.c:1812
-#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
-msgstr ""
-
-#: xboard.c:1883
-#, c-format
-msgid "%s: unrecognized argument %s\n"
-msgstr ""
-
-#: xboard.c:1892
-#, c-format
-msgid "%s: can't cd to CHESSDIR: "
-msgstr ""
-
-#: xboard.c:1928
-#, c-format
-msgid "%s: bad boardSize syntax %s\n"
-msgstr ""
-
-#: xboard.c:1964
-#, c-format
-msgid "%s: unrecognized boardSize name %s\n"
-msgstr ""
-
-#: xboard.c:1982
-#, c-format
-msgid "Error expanding path name \"%s\"\n"
-msgstr ""
-
-#: xboard.c:1987
-#, c-format
-msgid ""
-"XBoard square size (hint): %d\n"
-"%s fulldir:%s:\n"
-msgstr ""
-
-#: xboard.c:1993
-#, c-format
-msgid "Closest %s size: %d\n"
-msgstr ""
-
-#: xboard.c:2105
-#, c-format
-msgid "%s: too few colors available; trying monochrome mode\n"
-msgstr ""
-
-#: xboard.c:2110
-#, c-format
-msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
-msgstr ""
-
-#: xboard.c:2128
-#, c-format
-msgid "%s: can't parse color names; disabling colorization\n"
-msgstr ""
-
-#: xboard.c:2308 xboard.c:2318
-#, c-format
-msgid "%s: messageWidget geometry error %d %d %d %d %d\n"
-msgstr ""
-
-#: xboard.c:2339
-#, c-format
-msgid "%s: titleWidget geometry error %d %d %d %d %d\n"
-msgstr ""
-
-#: xboard.c:2909
-msgid "Unable to create font set.\n"
-msgstr ""
-
-#: xboard.c:2917
-#, c-format
-msgid "%s: no fonts match pattern %s\n"
-msgstr ""
-
-#: xboard.c:2960
-#, c-format
-msgid ""
-"resolved %s at pixel size %d\n"
-"  to %s\n"
-msgstr ""
-
-#: xboard.c:3084
-#, c-format
-msgid "%s: error loading XIM!\n"
-msgstr ""
-
-#: xboard.c:3176
-msgid "XIM pieces cannot be used in monochrome mode"
-msgstr ""
-
-#: xboard.c:3180
-msgid ""
-"\n"
-"Loading XIMs...\n"
-msgstr ""
-
-#: xboard.c:3194 xboard.c:3215 xboard.c:3222 xboard.c:3313 xboard.c:3334
-#: xboard.c:3345
-#, c-format
-msgid "(File:%s:) "
-msgstr ""
-
-#: xboard.c:3210 xboard.c:3327
-msgid "light square "
-msgstr ""
-
-#: xboard.c:3218 xboard.c:3341
-msgid "dark square "
-msgstr ""
-
-#: xboard.c:3229 xboard.c:3354
-msgid "Done.\n"
-msgstr ""
-
-#: xboard.c:3271
-msgid "XPM pieces cannot be used in monochrome mode"
-msgstr ""
-
-#: xboard.c:3281
-#, c-format
-msgid "No builtin XPM pieces of size %d\n"
-msgstr ""
-
-#: xboard.c:3291
-#, c-format
-msgid "Error %d loading XPM image \"%s\"\n"
-msgstr ""
-
-#: xboard.c:3302
-msgid ""
-"\n"
-"Loading XPMs...\n"
-msgstr ""
-
-#: xboard.c:3318 xboard.c:3338 xboard.c:3349
-#, c-format
-msgid "Error %d loading XPM file \"%s\"\n"
-msgstr ""
-
-#: xboard.c:3431
-#, c-format
-msgid "Can't open bitmap file %s"
-msgstr ""
-
-#: xboard.c:3434
-#, c-format
-msgid "Invalid bitmap in file %s"
-msgstr ""
-
-#: xboard.c:3437
-#, c-format
-msgid "Ran out of memory reading bitmap file %s"
-msgstr ""
-
-#: xboard.c:3441
-#, c-format
-msgid "Unknown XReadBitmapFile error %d on file %s"
-msgstr ""
-
-#: xboard.c:3445
-#, c-format
-msgid "%s: %s...using built-in\n"
-msgstr ""
-
-#: xboard.c:3449
-#, c-format
-msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"
-msgstr ""
-
-#: xboard.c:3456
-#, c-format
-msgid "%s: No built-in bitmap for %s; giving up\n"
-msgstr ""
-
-#: xboard.c:3652
-msgid "Drop"
-msgstr ""
-
-#: xboard.c:4573 xboard.c:4576 xboard.c:4832 xboard.c:5078 xboard.c:5087
-#: xboard.c:5340 xedittags.c:150 xedittags.c:248
-msgid "ok"
-msgstr "tamam"
-
-#: xboard.c:4587 xboard.c:4590 xboard.c:4839 xboard.c:5082 xboard.c:5088
-#: xboard.c:5127 xboard.c:5225 xboard.c:5273 xboard.c:7014 xboard.c:7055
-#: xedittags.c:157 xedittags.c:259
-msgid "cancel"
-msgstr "iptal"
-
-#: xboard.c:4601 xboard.c:4604 xboard.c:4841 xedittags.c:159
-msgid "clear"
-msgstr "temizle"
-
-#: xboard.c:4614 xboard.c:4617 xboard.c:5008 xedittags.c:128 xedittags.c:282
-#: xgamelist.c:226 xgamelist.c:292
-msgid "close"
-msgstr "kapat"
-
-#: xboard.c:4628 xboard.c:4631 xboard.c:5010 xedittags.c:130 xedittags.c:293
-msgid "edit"
-msgstr "düzenle"
-
-#: xboard.c:4873
-msgid "ICS Input"
-msgstr ""
-
-#: xboard.c:5062
-msgid "File name prompt"
-msgstr "Dosya adý giriþi"
-
-#: xboard.c:5164 xboard.c:6864 xboard.c:6878
-msgid "Error"
-msgstr "Hata"
-
-#: xboard.c:5164
-msgid "Can't open file"
-msgstr "Dosya açýlamýyor"
-
-#: xboard.c:5169
-msgid "Failed to open file"
-msgstr "Dosya açýlamadý"
-
-#: xboard.c:5198
-msgid "Promotion"
-msgstr "Terfi"
-
-#: xboard.c:5207
-msgid "Promote pawn to what?"
-msgstr "Piyon hangi taþa terfi edilsin?"
-
-#: xboard.c:5525 backend.c:5699
-msgid "Cannot build game list"
-msgstr ""
-
-#: xboard.c:5546
-msgid "Load game file name?"
-msgstr ""
-
-#: xboard.c:5612
-msgid "Load position file name?"
-msgstr ""
-
-#: xboard.c:5621
-msgid "Save game file name?"
-msgstr ""
-
-#: xboard.c:5632
-msgid "Save position file name?"
-msgstr ""
-
-#: xboard.c:5804
-msgid "Can't open temp file"
-msgstr ""
-
-#: xboard.c:5885 xboard.c:5903
-#, c-format
-msgid "%s does not support analysis"
-msgstr ""
-
-#: xboard.c:5913
-msgid "File to analyze"
-msgstr "Analiz edilecek dosya"
-
-#: xboard.c:6901
-msgid "Fatal Error"
-msgstr ""
-
-#: xboard.c:6901
-msgid "Exiting"
-msgstr ""
-
-#: xboard.c:6911
-msgid "Information"
-msgstr "Bilgi"
-
-#: xboard.c:6918
-msgid "Note"
-msgstr "Not"
-
-#: xboard.c:6968
-#, c-format
-msgid "AskQuestionProc needed 4 parameters, got %d\n"
-msgstr ""
-
-#: xboard.c:7001
-msgid "Error writing to chess program"
-msgstr ""
-
-#: xboard.c:7053
-msgid "enter"
-msgstr "gir"
-
-#: xboard.c:7166 backend.c:1323
-msgid "Error writing to display"
-msgstr ""
-
-#: xboard.c:7239
-#, c-format
-msgid "ERROR: Unknown user %s (in path %s)\n"
-msgstr ""
-
-#: xboard.c:7594
-msgid "Socket support is not configured in"
-msgstr ""
-
-#: xboard.c:7696
-msgid "internal rcmd not implemented for Unix"
-msgstr ""
-
-#: xboard.c:8422
-#, c-format
-msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n"
-msgstr ""
-
-#: xboard.c:8423
-#, c-format
-msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n"
-msgstr ""
-
-#: xedittags.c:346 xedittags.c:354
-msgid "Tags"
-msgstr ""
-
-#: xedittags.c:385
-msgid "Edit tags"
-msgstr ""
-
-#: xgamelist.c:193 xgamelist.c:298
-msgid "load"
-msgstr "yükle"
-
-#: xgamelist.c:204 xgamelist.c:311
-msgid "prev"
-msgstr "önceki"
-
-#: xgamelist.c:215 xgamelist.c:304
-msgid "next"
-msgstr "sonraki"
-
-#: xgamelist.c:301
-msgid "No game selected"
-msgstr ""
-
-#: xgamelist.c:307
-msgid "Can't go forward any further"
-msgstr ""
-
-#: xgamelist.c:314 backend.c:5833 backend.c:6292
-msgid "Can't back up any further"
-msgstr ""
-
-#: xgamelist.c:415
-msgid "There is no game list"
-msgstr ""
-
-#: xhistory.c:156
-msgid "White "
-msgstr "Beyaz "
-
-#: xhistory.c:157
-msgid "Black "
-msgstr "Siyah "
-
-#: xhistory.c:347 xhistory.c:351
-msgid "Move list"
-msgstr "Hamle listesi"
-
-#: xhistory.c:445
-msgid "Close"
-msgstr "Kapat"
-
-#: backend.c:468
-#, c-format
-msgid "bad timeControl option %s"
-msgstr ""
-
-#: backend.c:483
-#, c-format
-msgid "bad searchTime option %s"
-msgstr ""
-
-#: backend.c:542 backend.c:552
-#, c-format
-msgid "protocol version %d not supported"
-msgstr ""
-
-#: backend.c:603
-#, c-format
-msgid "Variant %s supported only in ICS mode"
-msgstr ""
-
-#: backend.c:618
-#, c-format
-msgid "Unknown variant name %s"
-msgstr ""
-
-#: backend.c:705
-#, c-format
-msgid "Could not open comm port %s"
-msgstr ""
-
-#: backend.c:708
-#, c-format
-msgid "Could not connect to host %s, port %s"
-msgstr ""
-
-#: backend.c:753
-#, c-format
-msgid "Unknown initialMode %s"
-msgstr ""
-
-#: backend.c:761
-msgid "Can't have a match with no chess programs"
-msgstr ""
-
-#: backend.c:771
-msgid "Bad game file"
-msgstr ""
-
-#: backend.c:778
-msgid "Bad position file"
-msgstr ""
-
-#: backend.c:790
-msgid "AnalyzeFile mode requires a game file"
-msgstr ""
-
-#: backend.c:805
-msgid "Analysis mode requires a chess engine"
-msgstr ""
-
-#: backend.c:809
-msgid "Analysis mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:819
-msgid "MachineWhite mode requires a chess engine"
-msgstr ""
-
-#: backend.c:824
-msgid "MachineWhite mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:831
-msgid "MachineBlack mode requires a chess engine"
-msgstr ""
-
-#: backend.c:836
-msgid "MachineBlack mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:843
-msgid "TwoMachines mode requires a chess engine"
-msgstr ""
-
-#: backend.c:848
-msgid "TwoMachines mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:859
-msgid "Training mode requires a game file"
-msgstr ""
-
-#: backend.c:1007 backend.c:1029 backend.c:1054 backend.c:1409
-msgid "Error writing to ICS"
-msgstr ""
-
-#: backend.c:1011
-msgid "Error reading from keyboard"
-msgstr ""
-
-#: backend.c:1014
-msgid "Got end of file from keyboard"
-msgstr ""
-
-#: backend.c:1258
-#, c-format
-msgid "recognized '%s' (%d) as variant %s\n"
-msgstr ""
-
-#: backend.c:2000
-msgid "Error gathering move list: two headers"
-msgstr ""
-
-#: backend.c:2014
-#, c-format
-msgid "Ratings from header: W %d, B %d\n"
-msgstr ""
-
-#: backend.c:2047
-msgid "Error gathering move list: nested"
-msgstr ""
-
-#: backend.c:2556
-msgid "Connection closed by ICS"
-msgstr ""
-
-#: backend.c:2558
-msgid "Error reading from ICS"
-msgstr ""
-
-#: backend.c:2606
-#, c-format
-msgid "Parsing board: %s\n"
-msgstr ""
-
-#: backend.c:2618
-#, c-format
-msgid ""
-"Failed to parse board string:\n"
-"\"%s\""
-msgstr ""
-
-#: backend.c:2627 backend.c:4811
-msgid "Game too long; increase MAX_MOVES and recompile"
-msgstr ""
-
-#: backend.c:2689
-msgid "Error gathering move list: extra board"
-msgstr ""
-
-#: backend.c:2936 backend.c:2958
-#, c-format
-msgid "Couldn't parse move \"%s\" from ICS"
-msgstr ""
-
-#: backend.c:3391
-msgid "You are playing Black"
-msgstr "Siz Siyah'sýnýz"
-
-#: backend.c:3400 backend.c:3431
-msgid "You are playing White"
-msgstr "Siz Beyaz'sýnýz"
-
-#: backend.c:3407 backend.c:3439 backend.c:3504 backend.c:3526 backend.c:3542
-#: backend.c:7925
-msgid "It is White's turn"
-msgstr "Sýra Beyaz'da"
-
-#: backend.c:3411 backend.c:3443 backend.c:3512 backend.c:3532 backend.c:3563
-#: backend.c:7917
-msgid "It is Black's turn"
-msgstr "Sýra Siyah'ta"
-
-#: backend.c:3454
-msgid "Displayed position is not current"
-msgstr ""
-
-#: backend.c:3602
-msgid "Illegal move"
-msgstr "Geçersiz hamle"
-
-#: backend.c:3636
-msgid "End of game"
-msgstr "Oyun sonu"
-
-#: backend.c:3639
-msgid "Incorrect move"
-msgstr "Yanlýþ hamle"
-
-#: backend.c:3858
-#, c-format
-msgid "Illegal move \"%s\" from %s machine"
-msgstr ""
-
-#: backend.c:4099
-#, c-format
-msgid "Illegal move \"%s\" (rejected by %s chess program)"
-msgstr ""
-
-#: backend.c:4124
-#, c-format
-msgid "Failed to start %s chess program %s on %s: %s\n"
-msgstr ""
-
-#: backend.c:4147
-#, c-format
-msgid ""
-"Illegal hint move \"%s\"\n"
-"from %s chess program"
-msgstr ""
-
-#: backend.c:4322
-msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
-msgstr ""
-
-#: backend.c:4578
-#, c-format
-msgid "Ambiguous move in ICS output: \"%s\""
-msgstr ""
-
-#: backend.c:4583
-#, c-format
-msgid "Illegal move in ICS output: \"%s\""
-msgstr ""
-
-#: backend.c:4589
-msgid "Gap in move list"
-msgstr ""
-
-#: backend.c:4890
-#, c-format
-msgid "Variant %s not supported by %s"
-msgstr ""
-
-#: backend.c:5242
-#, c-format
-msgid "Match %s vs. %s: final score %d-%d-%d"
-msgstr ""
-
-#: backend.c:5628
-#, c-format
-msgid "Ambiguous move: %d.%s%s"
-msgstr ""
-
-#: backend.c:5639
-#, c-format
-msgid "Illegal move: %d.%s%s"
-msgstr ""
-
-#: backend.c:5687 backend.c:6314 backend.c:6507 backend.c:6733
-#, c-format
-msgid "Can't open \"%s\""
-msgstr ""
-
-#: backend.c:5788
-msgid "No more games in this message"
-msgstr ""
-
-#: backend.c:5829
-msgid "No game has been loaded yet"
-msgstr ""
-
-#: backend.c:5888
-msgid "Game number out of range"
-msgstr ""
-
-#: backend.c:5899
-msgid "Can't seek on game file"
-msgstr ""
-
-#: backend.c:5958
-msgid "Game not found in file"
-msgstr ""
-
-#: backend.c:6075 backend.c:6404
-msgid "Bad FEN position in file"
-msgstr ""
-
-#: backend.c:6218
-msgid "No moves in game"
-msgstr ""
-
-#: backend.c:6288
-msgid "No position has been loaded yet"
-msgstr ""
-
-#: backend.c:6355 backend.c:6366
-msgid "Can't seek on position file"
-msgstr ""
-
-#: backend.c:6373 backend.c:6395
-msgid "Position not found in file"
-msgstr ""
-
-#: backend.c:6436
-msgid "Black to play"
-msgstr ""
-
-#: backend.c:6439
-msgid "White to play"
-msgstr ""
-
-#: backend.c:6863
-msgid ""
-"You have edited the game history.\n"
-"Use Reload Same Game and make your move again."
-msgstr ""
-
-#: backend.c:6868
-msgid ""
-"You have entered too many moves.\n"
-"Back up to the correct position and try again."
-msgstr ""
-
-#: backend.c:6873
-msgid ""
-"Displayed position is not current.\n"
-"Step forward to the correct position and try again."
-msgstr ""
-
-#: backend.c:6921
-msgid "You have not made a move yet"
-msgstr ""
-
-#: backend.c:6942
-msgid ""
-"The cmail message is not loaded.\n"
-"Use Reload CMail Message and make your move again."
-msgstr ""
-
-#: backend.c:6947
-msgid "No unfinished games"
-msgstr ""
-
-#: backend.c:6953
-#, c-format
-msgid ""
-"You have already mailed a move.\n"
-"Wait until a move arrives from your opponent.\n"
-"To resend the same move, type\n"
-"\"cmail -remail -game %s\"\n"
-"on the command line."
-msgstr ""
-
-#: backend.c:6968
-msgid "Failed to invoke cmail"
-msgstr ""
-
-#: backend.c:7030
-msgid "Waiting for reply from opponent\n"
-msgstr ""
-
-#: backend.c:7053
-msgid "Still need to make move for game\n"
-msgstr ""
-
-#: backend.c:7058
-msgid "Still need to make moves for both games\n"
-msgstr ""
-
-#: backend.c:7063
-#, c-format
-msgid "Still need to make moves for all %d games\n"
-msgstr ""
-
-#: backend.c:7071
-#, c-format
-msgid "Still need to make a move for game %s\n"
-msgstr ""
-
-#: backend.c:7077
-msgid "No unfinished games\n"
-msgstr ""
-
-#: backend.c:7079
-msgid "Ready to send mail\n"
-msgstr ""
-
-#: backend.c:7085
-#, c-format
-msgid "Still need to make moves for games %s\n"
-msgstr ""
-
-#: backend.c:7237
-msgid "Edit comment"
-msgstr ""
-
-#: backend.c:7239
-#, c-format
-msgid "Edit comment on %d.%s%s"
-msgstr ""
-
-#: backend.c:7270 backend.c:7297
-msgid "Analysis"
-msgstr ""
-
-#: backend.c:7271 backend.c:7298
-msgid ""
-"Starting analysis mode...\n"
-"If this message stays up, your chess program does not support analysis."
-msgstr ""
-
-#: backend.c:7330
-msgid "It is not White's turn"
-msgstr ""
-
-#: backend.c:7393
-msgid "It is not Black's turn"
-msgstr ""
-
-#: backend.c:7474 backend.c:8405
-msgid ""
-"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
-
-#: backend.c:7506
-msgid "Starting second chess program"
-msgstr ""
-
-#: backend.c:7571
-msgid "Training mode off"
-msgstr ""
-
-#: backend.c:7579
-msgid "Training mode on"
-msgstr ""
-
-#: backend.c:7582
-msgid "Already at end of game"
-msgstr ""
-
-#: backend.c:7663
-msgid "Warning: You are still playing a game"
-msgstr ""
-
-#: backend.c:7666
-msgid "Warning: You are still observing a game"
-msgstr ""
-
-#: backend.c:7669
-msgid "Warning: You are still examining a game"
-msgstr ""
-
-#: backend.c:7942
-msgid "That square is occupied"
-msgstr ""
-
-#: backend.c:7966 backend.c:7992
-msgid "There is no pending offer on this move"
-msgstr ""
-
-#: backend.c:8028 backend.c:8039
-msgid "Your opponent is not out of time"
-msgstr ""
-
-#: backend.c:8074
-msgid "You must make your move before offering a draw"
-msgstr ""
-
-#: backend.c:8387
-msgid "You are not examining a game"
-msgstr ""
-
-#: backend.c:8391
-msgid "You can't revert while pausing"
-msgstr ""
-
-#: backend.c:8445 backend.c:8452
-msgid "It is your turn"
-msgstr ""
-
-#: backend.c:8502 backend.c:8509 backend.c:8528 backend.c:8535
-msgid "Wait until your turn"
-msgstr ""
-
-#: backend.c:8514
-msgid "No hint available"
-msgstr ""
-
-#: backend.c:8820
-#, c-format
-msgid "Error writing to %s chess program"
-msgstr ""
-
-#: backend.c:8841
-#, c-format
-msgid "Error: %s chess program (%s) exited unexpectedly"
-msgstr ""
-
-#: backend.c:8847
-#, c-format
-msgid "Error reading from %s chess program (%s)"
-msgstr ""
-
-#: backend.c:9350 backend.c:9372
-msgid "Both flags fell"
-msgstr "Berabere"
-
-#: backend.c:9352
-msgid "White's flag fell"
-msgstr "Beyaz Þah mat"
-
-#: backend.c:9374
-msgid "Black's flag fell"
-msgstr "Siyah Þah mat"
-
-#: backend.c:9972
-msgid "Bad FEN position in clipboard"
-msgstr ""
diff --git a/po/xboard.pot b/po/xboard.pot
deleted file mode 100755
index 632d876..0000000
--- a/po/xboard.pot
+++ /dev/null
@@ -1,1333 +0,0 @@
-# XBoard -- a graphical chessboard for X
-# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
-# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
-# This file is distributed under the same license as the XBoard package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: XBoard 4.2.7\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-12-01 20:00+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: xboard.c:514
-msgid "Reset Game"
-msgstr ""
-
-#: xboard.c:516
-msgid "Load Game"
-msgstr ""
-
-#: xboard.c:517
-msgid "Load Next Game"
-msgstr ""
-
-#: xboard.c:518
-msgid "Load Previous Game"
-msgstr ""
-
-#: xboard.c:519
-msgid "Reload Same Game"
-msgstr ""
-
-#: xboard.c:520
-msgid "Save Game"
-msgstr ""
-
-#: xboard.c:522
-msgid "Copy Game"
-msgstr ""
-
-#: xboard.c:523
-msgid "Paste Game"
-msgstr ""
-
-#: xboard.c:525
-msgid "Load Position"
-msgstr ""
-
-#: xboard.c:526
-msgid "Load Next Position"
-msgstr ""
-
-#: xboard.c:527
-msgid "Load Previous Position"
-msgstr ""
-
-#: xboard.c:528
-msgid "Reload Same Position"
-msgstr ""
-
-#: xboard.c:529
-msgid "Save Position"
-msgstr ""
-
-#: xboard.c:531
-msgid "Copy Position"
-msgstr ""
-
-#: xboard.c:532
-msgid "Paste Position"
-msgstr ""
-
-#: xboard.c:534
-msgid "Mail Move"
-msgstr ""
-
-#: xboard.c:535
-msgid "Reload CMail Message"
-msgstr ""
-
-#: xboard.c:537
-msgid "Exit"
-msgstr ""
-
-#: xboard.c:542
-msgid "Machine White"
-msgstr ""
-
-#: xboard.c:543
-msgid "Machine Black"
-msgstr ""
-
-#: xboard.c:544
-msgid "Two Machines"
-msgstr ""
-
-#: xboard.c:545
-msgid "Analysis Mode"
-msgstr ""
-
-#: xboard.c:546
-msgid "Analyze File"
-msgstr ""
-
-#: xboard.c:547
-msgid "ICS Client"
-msgstr ""
-
-#: xboard.c:548
-msgid "Edit Game"
-msgstr ""
-
-#: xboard.c:549
-msgid "Edit Position"
-msgstr ""
-
-#: xboard.c:550
-msgid "Training"
-msgstr ""
-
-#: xboard.c:552
-msgid "Show Game List"
-msgstr ""
-
-#: xboard.c:553
-msgid "Show Move List"
-msgstr ""
-
-#: xboard.c:554 xedittags.c:393
-msgid "Edit Tags"
-msgstr ""
-
-#: xboard.c:555
-msgid "Edit Comment"
-msgstr ""
-
-#: xboard.c:556
-msgid "ICS Input Box"
-msgstr ""
-
-#: xboard.c:557
-msgid "Pause"
-msgstr ""
-
-#: xboard.c:562
-msgid "Accept"
-msgstr ""
-
-#: xboard.c:563
-msgid "Decline"
-msgstr ""
-
-#: xboard.c:564
-msgid "Rematch"
-msgstr ""
-
-#: xboard.c:566
-msgid "Call Flag"
-msgstr ""
-
-#: xboard.c:567
-msgid "Draw"
-msgstr ""
-
-#: xboard.c:568
-msgid "Adjourn"
-msgstr ""
-
-#: xboard.c:569
-msgid "Abort"
-msgstr ""
-
-#: xboard.c:570
-msgid "Resign"
-msgstr ""
-
-#: xboard.c:572
-msgid "Stop Observing"
-msgstr ""
-
-#: xboard.c:573
-msgid "Stop Examining"
-msgstr ""
-
-#: xboard.c:578
-msgid "Backward"
-msgstr ""
-
-#: xboard.c:579
-msgid "Forward"
-msgstr ""
-
-#: xboard.c:580
-msgid "Back to Start"
-msgstr ""
-
-#: xboard.c:581
-msgid "Forward to End"
-msgstr ""
-
-#: xboard.c:582
-msgid "Revert"
-msgstr ""
-
-#: xboard.c:583
-msgid "Truncate Game"
-msgstr ""
-
-#: xboard.c:585
-msgid "Move Now"
-msgstr ""
-
-#: xboard.c:586
-msgid "Retract Move"
-msgstr ""
-
-#: xboard.c:591
-msgid "Always Queen"
-msgstr ""
-
-#: xboard.c:592
-msgid "Animate Dragging"
-msgstr ""
-
-#: xboard.c:593
-msgid "Animate Moving"
-msgstr ""
-
-#: xboard.c:594
-msgid "Auto Comment"
-msgstr ""
-
-#: xboard.c:595
-msgid "Auto Flag"
-msgstr ""
-
-#: xboard.c:596
-msgid "Auto Flip View"
-msgstr ""
-
-#: xboard.c:597
-msgid "Auto Observe"
-msgstr ""
-
-#: xboard.c:598
-msgid "Auto Raise Board"
-msgstr ""
-
-#: xboard.c:599
-msgid "Auto Save"
-msgstr ""
-
-#: xboard.c:600
-msgid "Blindfold"
-msgstr ""
-
-#: xboard.c:601
-msgid "Flash Moves"
-msgstr ""
-
-#: xboard.c:602
-msgid "Flip View"
-msgstr ""
-
-#: xboard.c:603
-msgid "Get Move List"
-msgstr ""
-
-#: xboard.c:605
-msgid "Highlight Dragging"
-msgstr ""
-
-#: xboard.c:607
-msgid "Highlight Last Move"
-msgstr ""
-
-#: xboard.c:608
-msgid "Move Sound"
-msgstr ""
-
-#: xboard.c:609
-msgid "ICS Alarm"
-msgstr ""
-
-#: xboard.c:610
-msgid "Old Save Style"
-msgstr ""
-
-#: xboard.c:611
-msgid "Periodic Updates"
-msgstr ""
-
-#: xboard.c:612
-msgid "Ponder Next Move"
-msgstr ""
-
-#: xboard.c:613
-msgid "Popup Exit Message"
-msgstr ""
-
-#: xboard.c:614
-msgid "Popup Move Errors"
-msgstr ""
-
-#: xboard.c:615
-msgid "Premove"
-msgstr ""
-
-#: xboard.c:616
-msgid "Quiet Play"
-msgstr ""
-
-#: xboard.c:617
-msgid "Show Coords"
-msgstr ""
-
-#: xboard.c:618
-msgid "Show Thinking"
-msgstr ""
-
-#: xboard.c:619
-msgid "Test Legality"
-msgstr ""
-
-#: xboard.c:624
-msgid "Info XBoard"
-msgstr ""
-
-#: xboard.c:625
-msgid "Man XBoard"
-msgstr ""
-
-#: xboard.c:627
-msgid "Hint"
-msgstr ""
-
-#: xboard.c:628
-msgid "Book"
-msgstr ""
-
-#: xboard.c:630 xboard.c:6746
-msgid "About XBoard"
-msgstr ""
-
-#: xboard.c:635
-msgid "File"
-msgstr ""
-
-#: xboard.c:636
-msgid "Mode"
-msgstr ""
-
-#: xboard.c:637
-msgid "Action"
-msgstr ""
-
-#: xboard.c:638
-msgid "Step"
-msgstr ""
-
-#: xboard.c:639
-msgid "Options"
-msgstr ""
-
-#: xboard.c:640
-msgid "Help"
-msgstr ""
-
-#. Label on pause button
-#: xboard.c:646
-msgid "P"
-msgstr ""
-
-#: xboard.c:658 xboard.c:7440
-msgid "White"
-msgstr ""
-
-#: xboard.c:658 xboard.c:660 xboard.c:675
-msgid "Pawn"
-msgstr ""
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5218 xboard.c:5277
-msgid "Knight"
-msgstr ""
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5216
-msgid "Bishop"
-msgstr ""
-
-#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5214
-msgid "Rook"
-msgstr ""
-
-#: xboard.c:659 xboard.c:661 xboard.c:675 xboard.c:5212
-msgid "Queen"
-msgstr ""
-
-#: xboard.c:659 xboard.c:661 xboard.c:5222
-msgid "King"
-msgstr ""
-
-#: xboard.c:659 xboard.c:661
-msgid "Empty square"
-msgstr ""
-
-#: xboard.c:659 xboard.c:661
-msgid "Clear board"
-msgstr ""
-
-#: xboard.c:660 xboard.c:7454
-msgid "Black"
-msgstr ""
-
-#: xboard.c:1666
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xboard.c:1689
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xboard.c:1725
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xboard.c:1741
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-"         Unable to autosize for XPM/XIM pieces.\n"
-"   Please report this error to frankm at hiwaay.net.\n"
-"   Include system type & operating system in message.\n"
-msgstr ""
-
-#: xboard.c:1802
-#, c-format
-msgid "%s: unrecognized color %s\n"
-msgstr ""
-
-#: xboard.c:1812
-#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
-msgstr ""
-
-#: xboard.c:1883
-#, c-format
-msgid "%s: unrecognized argument %s\n"
-msgstr ""
-
-#: xboard.c:1892
-#, c-format
-msgid "%s: can't cd to CHESSDIR: "
-msgstr ""
-
-#: xboard.c:1928
-#, c-format
-msgid "%s: bad boardSize syntax %s\n"
-msgstr ""
-
-#: xboard.c:1964
-#, c-format
-msgid "%s: unrecognized boardSize name %s\n"
-msgstr ""
-
-#: xboard.c:1982
-#, c-format
-msgid "Error expanding path name \"%s\"\n"
-msgstr ""
-
-#: xboard.c:1987
-#, c-format
-msgid ""
-"XBoard square size (hint): %d\n"
-"%s fulldir:%s:\n"
-msgstr ""
-
-#: xboard.c:1993
-#, c-format
-msgid "Closest %s size: %d\n"
-msgstr ""
-
-#: xboard.c:2105
-#, c-format
-msgid "%s: too few colors available; trying monochrome mode\n"
-msgstr ""
-
-#: xboard.c:2110
-#, c-format
-msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
-msgstr ""
-
-#: xboard.c:2128
-#, c-format
-msgid "%s: can't parse color names; disabling colorization\n"
-msgstr ""
-
-#: xboard.c:2308 xboard.c:2318
-#, c-format
-msgid "%s: messageWidget geometry error %d %d %d %d %d\n"
-msgstr ""
-
-#: xboard.c:2339
-#, c-format
-msgid "%s: titleWidget geometry error %d %d %d %d %d\n"
-msgstr ""
-
-#: xboard.c:2909
-msgid "Unable to create font set.\n"
-msgstr ""
-
-#: xboard.c:2917
-#, c-format
-msgid "%s: no fonts match pattern %s\n"
-msgstr ""
-
-#: xboard.c:2960
-#, c-format
-msgid ""
-"resolved %s at pixel size %d\n"
-"  to %s\n"
-msgstr ""
-
-#: xboard.c:3084
-#, c-format
-msgid "%s: error loading XIM!\n"
-msgstr ""
-
-#: xboard.c:3176
-msgid "XIM pieces cannot be used in monochrome mode"
-msgstr ""
-
-#: xboard.c:3180
-msgid ""
-"\n"
-"Loading XIMs...\n"
-msgstr ""
-
-#: xboard.c:3194 xboard.c:3215 xboard.c:3222 xboard.c:3313 xboard.c:3334
-#: xboard.c:3345
-#, c-format
-msgid "(File:%s:) "
-msgstr ""
-
-#: xboard.c:3210 xboard.c:3327
-msgid "light square "
-msgstr ""
-
-#: xboard.c:3218 xboard.c:3341
-msgid "dark square "
-msgstr ""
-
-#: xboard.c:3229 xboard.c:3354
-msgid "Done.\n"
-msgstr ""
-
-#: xboard.c:3271
-msgid "XPM pieces cannot be used in monochrome mode"
-msgstr ""
-
-#: xboard.c:3281
-#, c-format
-msgid "No builtin XPM pieces of size %d\n"
-msgstr ""
-
-#: xboard.c:3291
-#, c-format
-msgid "Error %d loading XPM image \"%s\"\n"
-msgstr ""
-
-#: xboard.c:3302
-msgid ""
-"\n"
-"Loading XPMs...\n"
-msgstr ""
-
-#: xboard.c:3318 xboard.c:3338 xboard.c:3349
-#, c-format
-msgid "Error %d loading XPM file \"%s\"\n"
-msgstr ""
-
-#: xboard.c:3431
-#, c-format
-msgid "Can't open bitmap file %s"
-msgstr ""
-
-#: xboard.c:3434
-#, c-format
-msgid "Invalid bitmap in file %s"
-msgstr ""
-
-#: xboard.c:3437
-#, c-format
-msgid "Ran out of memory reading bitmap file %s"
-msgstr ""
-
-#: xboard.c:3441
-#, c-format
-msgid "Unknown XReadBitmapFile error %d on file %s"
-msgstr ""
-
-#: xboard.c:3445
-#, c-format
-msgid "%s: %s...using built-in\n"
-msgstr ""
-
-#: xboard.c:3449
-#, c-format
-msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"
-msgstr ""
-
-#: xboard.c:3456
-#, c-format
-msgid "%s: No built-in bitmap for %s; giving up\n"
-msgstr ""
-
-#: xboard.c:3652
-msgid "Drop"
-msgstr ""
-
-#: xboard.c:4573 xboard.c:4576 xboard.c:4832 xboard.c:5078 xboard.c:5087
-#: xboard.c:5340 xedittags.c:150 xedittags.c:248
-msgid "ok"
-msgstr ""
-
-#: xboard.c:4587 xboard.c:4590 xboard.c:4839 xboard.c:5082 xboard.c:5088
-#: xboard.c:5127 xboard.c:5225 xboard.c:5273 xboard.c:7014 xboard.c:7055
-#: xedittags.c:157 xedittags.c:259
-msgid "cancel"
-msgstr ""
-
-#: xboard.c:4601 xboard.c:4604 xboard.c:4841 xedittags.c:159
-msgid "clear"
-msgstr ""
-
-#: xboard.c:4614 xboard.c:4617 xboard.c:5008 xedittags.c:128 xedittags.c:282
-#: xgamelist.c:226 xgamelist.c:292
-msgid "close"
-msgstr ""
-
-#: xboard.c:4628 xboard.c:4631 xboard.c:5010 xedittags.c:130 xedittags.c:293
-msgid "edit"
-msgstr ""
-
-#: xboard.c:4873
-msgid "ICS Input"
-msgstr ""
-
-#: xboard.c:5062
-msgid "File name prompt"
-msgstr ""
-
-#: xboard.c:5164 xboard.c:6864 xboard.c:6878
-msgid "Error"
-msgstr ""
-
-#: xboard.c:5164
-msgid "Can't open file"
-msgstr ""
-
-#: xboard.c:5169
-msgid "Failed to open file"
-msgstr ""
-
-#: xboard.c:5198
-msgid "Promotion"
-msgstr ""
-
-#: xboard.c:5207
-msgid "Promote pawn to what?"
-msgstr ""
-
-#: xboard.c:5525 backend.c:5699
-msgid "Cannot build game list"
-msgstr ""
-
-#: xboard.c:5546
-msgid "Load game file name?"
-msgstr ""
-
-#: xboard.c:5612
-msgid "Load position file name?"
-msgstr ""
-
-#: xboard.c:5621
-msgid "Save game file name?"
-msgstr ""
-
-#: xboard.c:5632
-msgid "Save position file name?"
-msgstr ""
-
-#: xboard.c:5804
-msgid "Can't open temp file"
-msgstr ""
-
-#: xboard.c:5885 xboard.c:5903
-#, c-format
-msgid "%s does not support analysis"
-msgstr ""
-
-#: xboard.c:5913
-msgid "File to analyze"
-msgstr ""
-
-#: xboard.c:6901
-msgid "Fatal Error"
-msgstr ""
-
-#: xboard.c:6901
-msgid "Exiting"
-msgstr ""
-
-#: xboard.c:6911
-msgid "Information"
-msgstr ""
-
-#: xboard.c:6918
-msgid "Note"
-msgstr ""
-
-#: xboard.c:6968
-#, c-format
-msgid "AskQuestionProc needed 4 parameters, got %d\n"
-msgstr ""
-
-#: xboard.c:7001
-msgid "Error writing to chess program"
-msgstr ""
-
-#: xboard.c:7053
-msgid "enter"
-msgstr ""
-
-#: xboard.c:7166 backend.c:1323
-msgid "Error writing to display"
-msgstr ""
-
-#: xboard.c:7239
-#, c-format
-msgid "ERROR: Unknown user %s (in path %s)\n"
-msgstr ""
-
-#: xboard.c:7594
-msgid "Socket support is not configured in"
-msgstr ""
-
-#: xboard.c:7696
-msgid "internal rcmd not implemented for Unix"
-msgstr ""
-
-#: xboard.c:8422
-#, c-format
-msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n"
-msgstr ""
-
-#: xboard.c:8423
-#, c-format
-msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n"
-msgstr ""
-
-#: xedittags.c:346 xedittags.c:354
-msgid "Tags"
-msgstr ""
-
-#: xedittags.c:385
-msgid "Edit tags"
-msgstr ""
-
-#: xgamelist.c:193 xgamelist.c:298
-msgid "load"
-msgstr ""
-
-#: xgamelist.c:204 xgamelist.c:311
-msgid "prev"
-msgstr ""
-
-#: xgamelist.c:215 xgamelist.c:304
-msgid "next"
-msgstr ""
-
-#: xgamelist.c:301
-msgid "No game selected"
-msgstr ""
-
-#: xgamelist.c:307
-msgid "Can't go forward any further"
-msgstr ""
-
-#: xgamelist.c:314 backend.c:5833 backend.c:6292
-msgid "Can't back up any further"
-msgstr ""
-
-#: xgamelist.c:415
-msgid "There is no game list"
-msgstr ""
-
-#: xhistory.c:156
-msgid "White "
-msgstr ""
-
-#: xhistory.c:157
-msgid "Black "
-msgstr ""
-
-#: xhistory.c:347 xhistory.c:351
-msgid "Move list"
-msgstr ""
-
-#: xhistory.c:445
-msgid "Close"
-msgstr ""
-
-#: backend.c:468
-#, c-format
-msgid "bad timeControl option %s"
-msgstr ""
-
-#: backend.c:483
-#, c-format
-msgid "bad searchTime option %s"
-msgstr ""
-
-#: backend.c:542 backend.c:552
-#, c-format
-msgid "protocol version %d not supported"
-msgstr ""
-
-#: backend.c:603
-#, c-format
-msgid "Variant %s supported only in ICS mode"
-msgstr ""
-
-#: backend.c:618
-#, c-format
-msgid "Unknown variant name %s"
-msgstr ""
-
-#: backend.c:705
-#, c-format
-msgid "Could not open comm port %s"
-msgstr ""
-
-#: backend.c:708
-#, c-format
-msgid "Could not connect to host %s, port %s"
-msgstr ""
-
-#: backend.c:753
-#, c-format
-msgid "Unknown initialMode %s"
-msgstr ""
-
-#: backend.c:761
-msgid "Can't have a match with no chess programs"
-msgstr ""
-
-#: backend.c:771
-msgid "Bad game file"
-msgstr ""
-
-#: backend.c:778
-msgid "Bad position file"
-msgstr ""
-
-#: backend.c:790
-msgid "AnalyzeFile mode requires a game file"
-msgstr ""
-
-#: backend.c:805
-msgid "Analysis mode requires a chess engine"
-msgstr ""
-
-#: backend.c:809
-msgid "Analysis mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:819
-msgid "MachineWhite mode requires a chess engine"
-msgstr ""
-
-#: backend.c:824
-msgid "MachineWhite mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:831
-msgid "MachineBlack mode requires a chess engine"
-msgstr ""
-
-#: backend.c:836
-msgid "MachineBlack mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:843
-msgid "TwoMachines mode requires a chess engine"
-msgstr ""
-
-#: backend.c:848
-msgid "TwoMachines mode does not work with ICS mode"
-msgstr ""
-
-#: backend.c:859
-msgid "Training mode requires a game file"
-msgstr ""
-
-#: backend.c:1007 backend.c:1029 backend.c:1054 backend.c:1409
-msgid "Error writing to ICS"
-msgstr ""
-
-#: backend.c:1011
-msgid "Error reading from keyboard"
-msgstr ""
-
-#: backend.c:1014
-msgid "Got end of file from keyboard"
-msgstr ""
-
-#: backend.c:1258
-#, c-format
-msgid "recognized '%s' (%d) as variant %s\n"
-msgstr ""
-
-#: backend.c:2000
-msgid "Error gathering move list: two headers"
-msgstr ""
-
-#: backend.c:2014
-#, c-format
-msgid "Ratings from header: W %d, B %d\n"
-msgstr ""
-
-#: backend.c:2047
-msgid "Error gathering move list: nested"
-msgstr ""
-
-#: backend.c:2556
-msgid "Connection closed by ICS"
-msgstr ""
-
-#: backend.c:2558
-msgid "Error reading from ICS"
-msgstr ""
-
-#: backend.c:2606
-#, c-format
-msgid "Parsing board: %s\n"
-msgstr ""
-
-#: backend.c:2618
-#, c-format
-msgid ""
-"Failed to parse board string:\n"
-"\"%s\""
-msgstr ""
-
-#: backend.c:2627 backend.c:4811
-msgid "Game too long; increase MAX_MOVES and recompile"
-msgstr ""
-
-#: backend.c:2689
-msgid "Error gathering move list: extra board"
-msgstr ""
-
-#: backend.c:2936 backend.c:2958
-#, c-format
-msgid "Couldn't parse move \"%s\" from ICS"
-msgstr ""
-
-#: backend.c:3391
-msgid "You are playing Black"
-msgstr ""
-
-#: backend.c:3400 backend.c:3431
-msgid "You are playing White"
-msgstr ""
-
-#: backend.c:3407 backend.c:3439 backend.c:3504 backend.c:3526 backend.c:3542
-#: backend.c:7925
-msgid "It is White's turn"
-msgstr ""
-
-#: backend.c:3411 backend.c:3443 backend.c:3512 backend.c:3532 backend.c:3563
-#: backend.c:7917
-msgid "It is Black's turn"
-msgstr ""
-
-#: backend.c:3454
-msgid "Displayed position is not current"
-msgstr ""
-
-#: backend.c:3602
-msgid "Illegal move"
-msgstr ""
-
-#: backend.c:3636
-msgid "End of game"
-msgstr ""
-
-#: backend.c:3639
-msgid "Incorrect move"
-msgstr ""
-
-#: backend.c:3858
-#, c-format
-msgid "Illegal move \"%s\" from %s machine"
-msgstr ""
-
-#: backend.c:4099
-#, c-format
-msgid "Illegal move \"%s\" (rejected by %s chess program)"
-msgstr ""
-
-#: backend.c:4124
-#, c-format
-msgid "Failed to start %s chess program %s on %s: %s\n"
-msgstr ""
-
-#: backend.c:4147
-#, c-format
-msgid ""
-"Illegal hint move \"%s\"\n"
-"from %s chess program"
-msgstr ""
-
-#: backend.c:4322
-msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
-msgstr ""
-
-#: backend.c:4578
-#, c-format
-msgid "Ambiguous move in ICS output: \"%s\""
-msgstr ""
-
-#: backend.c:4583
-#, c-format
-msgid "Illegal move in ICS output: \"%s\""
-msgstr ""
-
-#: backend.c:4589
-msgid "Gap in move list"
-msgstr ""
-
-#: backend.c:4890
-#, c-format
-msgid "Variant %s not supported by %s"
-msgstr ""
-
-#: backend.c:5242
-#, c-format
-msgid "Match %s vs. %s: final score %d-%d-%d"
-msgstr ""
-
-#: backend.c:5628
-#, c-format
-msgid "Ambiguous move: %d.%s%s"
-msgstr ""
-
-#: backend.c:5639
-#, c-format
-msgid "Illegal move: %d.%s%s"
-msgstr ""
-
-#: backend.c:5687 backend.c:6314 backend.c:6507 backend.c:6733
-#, c-format
-msgid "Can't open \"%s\""
-msgstr ""
-
-#: backend.c:5788
-msgid "No more games in this message"
-msgstr ""
-
-#: backend.c:5829
-msgid "No game has been loaded yet"
-msgstr ""
-
-#: backend.c:5888
-msgid "Game number out of range"
-msgstr ""
-
-#: backend.c:5899
-msgid "Can't seek on game file"
-msgstr ""
-
-#: backend.c:5958
-msgid "Game not found in file"
-msgstr ""
-
-#: backend.c:6075 backend.c:6404
-msgid "Bad FEN position in file"
-msgstr ""
-
-#: backend.c:6218
-msgid "No moves in game"
-msgstr ""
-
-#: backend.c:6288
-msgid "No position has been loaded yet"
-msgstr ""
-
-#: backend.c:6355 backend.c:6366
-msgid "Can't seek on position file"
-msgstr ""
-
-#: backend.c:6373 backend.c:6395
-msgid "Position not found in file"
-msgstr ""
-
-#: backend.c:6436
-msgid "Black to play"
-msgstr ""
-
-#: backend.c:6439
-msgid "White to play"
-msgstr ""
-
-#: backend.c:6863
-msgid ""
-"You have edited the game history.\n"
-"Use Reload Same Game and make your move again."
-msgstr ""
-
-#: backend.c:6868
-msgid ""
-"You have entered too many moves.\n"
-"Back up to the correct position and try again."
-msgstr ""
-
-#: backend.c:6873
-msgid ""
-"Displayed position is not current.\n"
-"Step forward to the correct position and try again."
-msgstr ""
-
-#: backend.c:6921
-msgid "You have not made a move yet"
-msgstr ""
-
-#: backend.c:6942
-msgid ""
-"The cmail message is not loaded.\n"
-"Use Reload CMail Message and make your move again."
-msgstr ""
-
-#: backend.c:6947
-msgid "No unfinished games"
-msgstr ""
-
-#: backend.c:6953
-#, c-format
-msgid ""
-"You have already mailed a move.\n"
-"Wait until a move arrives from your opponent.\n"
-"To resend the same move, type\n"
-"\"cmail -remail -game %s\"\n"
-"on the command line."
-msgstr ""
-
-#: backend.c:6968
-msgid "Failed to invoke cmail"
-msgstr ""
-
-#: backend.c:7030
-msgid "Waiting for reply from opponent\n"
-msgstr ""
-
-#: backend.c:7053
-msgid "Still need to make move for game\n"
-msgstr ""
-
-#: backend.c:7058
-msgid "Still need to make moves for both games\n"
-msgstr ""
-
-#: backend.c:7063
-#, c-format
-msgid "Still need to make moves for all %d games\n"
-msgstr ""
-
-#: backend.c:7071
-#, c-format
-msgid "Still need to make a move for game %s\n"
-msgstr ""
-
-#: backend.c:7077
-msgid "No unfinished games\n"
-msgstr ""
-
-#: backend.c:7079
-msgid "Ready to send mail\n"
-msgstr ""
-
-#: backend.c:7085
-#, c-format
-msgid "Still need to make moves for games %s\n"
-msgstr ""
-
-#: backend.c:7237
-msgid "Edit comment"
-msgstr ""
-
-#: backend.c:7239
-#, c-format
-msgid "Edit comment on %d.%s%s"
-msgstr ""
-
-#: backend.c:7270 backend.c:7297
-msgid "Analysis"
-msgstr ""
-
-#: backend.c:7271 backend.c:7298
-msgid ""
-"Starting analysis mode...\n"
-"If this message stays up, your chess program does not support analysis."
-msgstr ""
-
-#: backend.c:7330
-msgid "It is not White's turn"
-msgstr ""
-
-#: backend.c:7393
-msgid "It is not Black's turn"
-msgstr ""
-
-#: backend.c:7474 backend.c:8405
-msgid ""
-"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
-
-#: backend.c:7506
-msgid "Starting second chess program"
-msgstr ""
-
-#: backend.c:7571
-msgid "Training mode off"
-msgstr ""
-
-#: backend.c:7579
-msgid "Training mode on"
-msgstr ""
-
-#: backend.c:7582
-msgid "Already at end of game"
-msgstr ""
-
-#: backend.c:7663
-msgid "Warning: You are still playing a game"
-msgstr ""
-
-#: backend.c:7666
-msgid "Warning: You are still observing a game"
-msgstr ""
-
-#: backend.c:7669
-msgid "Warning: You are still examining a game"
-msgstr ""
-
-#: backend.c:7942
-msgid "That square is occupied"
-msgstr ""
-
-#: backend.c:7966 backend.c:7992
-msgid "There is no pending offer on this move"
-msgstr ""
-
-#: backend.c:8028 backend.c:8039
-msgid "Your opponent is not out of time"
-msgstr ""
-
-#: backend.c:8074
-msgid "You must make your move before offering a draw"
-msgstr ""
-
-#: backend.c:8387
-msgid "You are not examining a game"
-msgstr ""
-
-#: backend.c:8391
-msgid "You can't revert while pausing"
-msgstr ""
-
-#: backend.c:8445 backend.c:8452
-msgid "It is your turn"
-msgstr ""
-
-#: backend.c:8502 backend.c:8509 backend.c:8528 backend.c:8535
-msgid "Wait until your turn"
-msgstr ""
-
-#: backend.c:8514
-msgid "No hint available"
-msgstr ""
-
-#: backend.c:8820
-#, c-format
-msgid "Error writing to %s chess program"
-msgstr ""
-
-#: backend.c:8841
-#, c-format
-msgid "Error: %s chess program (%s) exited unexpectedly"
-msgstr ""
-
-#: backend.c:8847
-#, c-format
-msgid "Error reading from %s chess program (%s)"
-msgstr ""
-
-#: backend.c:9350 backend.c:9372
-msgid "Both flags fell"
-msgstr ""
-
-#: backend.c:9352
-msgid "White's flag fell"
-msgstr ""
-
-#: backend.c:9374
-msgid "Black's flag fell"
-msgstr ""
-
-#: backend.c:9972
-msgid "Bad FEN position in clipboard"
-msgstr ""
diff --git a/pxboard b/pxboard
deleted file mode 100644
index 3a2a97a..0000000
--- a/pxboard
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /bin/sh
-#
-# pxboard
-# Usage: cat game |pxboard [xboard-options]
-# or (in rn or xrn) save an article to: |pxboard [xboard-options]
-#
-# This script saves its standard input to a temporary file and invokes
-# "xboard -loadGameFile file &" on the file.  Although it is possible
-# to pipe games directly into xboard using "xboard -lgf -", this
-# script is nicer in two ways:  (1) xboard can seek on the temporary
-# file, so the popup game list, Load Previous Game, and Reload Same
-# Game all work.  (2) The script runs xboard in the background and
-# exits.  So if you save a news article by piping it into this script,
-# you immediately get back control of your news reader.
-#
-# The script turns on -noChessProgram mode by default.  If you want a
-# chess program started, give the -xncp option.
-#
-tmp=`mktemp "${TMPDIR:-/tmp}/pxboard.$$.XXXXXX"` || exit 1
-cat > "$tmp"
-( xboard -ncp -lgf "$tmp" "$@" ; rm "$tmp" ) &
diff --git a/shiphtml b/shiphtml
deleted file mode 100644
index 6951bd5..0000000
--- a/shiphtml
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/csh
-# Usage: shiphtml version
-# E.g., shiphtml 3.4.pl0
-# To be sure everything is in sync, do this right after making a distribution.
-#  Otherwise the documentation and/or FAQ might reflect work in progress.
-
-set v=$1
-set w=`echo $v | tr . _`
-set r=$HOME/tim-mann/httpdocs
-
-(cd linux ; make all more)
-#rm -f ${r}/xboard/*
-cp -f FAQ.html ../xboard.distrib/xboard-${v}.tar.gz linux/*.html zippy.README \
-    engine-intf.html ics-parsing.txt ChangeLog linux/xboard.ps \
-    ${r}/xboard/
-cp -f ../xboard.distrib/relmsg/${v} \
-    ${r}/xboard/xboard-${v}.README
-
-#rm -f ${r}/winboard/*
-cp -f ../xboard.distrib/winboard{-${w}.exe,-${w}-src.{zip,tar.gz}} ChangeLog \
-    ${r}/winboard/
-cp -f ../xboard.distrib/winboard-${w}/winboard.hlp \
-    ${r}/winboard/
-cp -f ../xboard.distrib/relmsg/${v} \
-    ${r}/winboard/winboard-${w}.README
diff --git a/sounds/README b/sounds/README
deleted file mode 100644
index 1b5fc8c..0000000
--- a/sounds/README
+++ /dev/null
@@ -1,8 +0,0 @@
-The sound files in this directory are in the public domain.
-
-alarm.wav, challenge.wav, channel1.wav, channel.wav, draw.wav,
-kibitz.wav, lose.wav, request.wav, seek.wav, shout.wav, sshout.wav,
-tell.wav, unfinished.wav, and win.wav were recorded and contributed by
-Timothy Mann on 17 September 2000.
-
-move.wav was recorded and contributed by Pete Galati in February 1999.
diff --git a/sounds/alarm.wav b/sounds/alarm.wav
deleted file mode 100644
index d8b2908..0000000
Binary files a/sounds/alarm.wav and /dev/null differ
diff --git a/sounds/challenge.wav b/sounds/challenge.wav
deleted file mode 100644
index 62a0e09..0000000
Binary files a/sounds/challenge.wav and /dev/null differ
diff --git a/sounds/channel.wav b/sounds/channel.wav
deleted file mode 100644
index 2728596..0000000
Binary files a/sounds/channel.wav and /dev/null differ
diff --git a/sounds/channel1.wav b/sounds/channel1.wav
deleted file mode 100644
index 8d99e71..0000000
Binary files a/sounds/channel1.wav and /dev/null differ
diff --git a/sounds/ching.wav b/sounds/ching.wav
deleted file mode 100644
index 20c9bc4..0000000
Binary files a/sounds/ching.wav and /dev/null differ
diff --git a/sounds/click.wav b/sounds/click.wav
deleted file mode 100644
index 82fac66..0000000
Binary files a/sounds/click.wav and /dev/null differ
diff --git a/sounds/cymbal.wav b/sounds/cymbal.wav
deleted file mode 100644
index b55bac4..0000000
Binary files a/sounds/cymbal.wav and /dev/null differ
diff --git a/sounds/ding1.wav b/sounds/ding1.wav
deleted file mode 100644
index bea01ef..0000000
Binary files a/sounds/ding1.wav and /dev/null differ
diff --git a/sounds/draw.wav b/sounds/draw.wav
deleted file mode 100644
index d4d99e3..0000000
Binary files a/sounds/draw.wav and /dev/null differ
diff --git a/sounds/drip.wav b/sounds/drip.wav
deleted file mode 100644
index 7b3696f..0000000
Binary files a/sounds/drip.wav and /dev/null differ
diff --git a/sounds/gong.wav b/sounds/gong.wav
deleted file mode 100644
index 93d2a94..0000000
Binary files a/sounds/gong.wav and /dev/null differ
diff --git a/sounds/honkhonk.wav b/sounds/honkhonk.wav
deleted file mode 100644
index b107329..0000000
Binary files a/sounds/honkhonk.wav and /dev/null differ
diff --git a/sounds/kibitz.wav b/sounds/kibitz.wav
deleted file mode 100644
index 58fa03a..0000000
Binary files a/sounds/kibitz.wav and /dev/null differ
diff --git a/sounds/laser.wav b/sounds/laser.wav
deleted file mode 100644
index 2889384..0000000
Binary files a/sounds/laser.wav and /dev/null differ
diff --git a/sounds/lose.wav b/sounds/lose.wav
deleted file mode 100644
index 7d4ef93..0000000
Binary files a/sounds/lose.wav and /dev/null differ
diff --git a/sounds/move.wav b/sounds/move.wav
deleted file mode 100644
index f999edb..0000000
Binary files a/sounds/move.wav and /dev/null differ
diff --git a/sounds/penalty.wav b/sounds/penalty.wav
deleted file mode 100644
index 2ad3af0..0000000
Binary files a/sounds/penalty.wav and /dev/null differ
diff --git a/sounds/phone.wav b/sounds/phone.wav
deleted file mode 100644
index e5158a4..0000000
Binary files a/sounds/phone.wav and /dev/null differ
diff --git a/sounds/pop.wav b/sounds/pop.wav
deleted file mode 100644
index c089bed..0000000
Binary files a/sounds/pop.wav and /dev/null differ
diff --git a/sounds/pop2.wav b/sounds/pop2.wav
deleted file mode 100644
index 524b8e2..0000000
Binary files a/sounds/pop2.wav and /dev/null differ
diff --git a/sounds/request.wav b/sounds/request.wav
deleted file mode 100644
index 3e9ef92..0000000
Binary files a/sounds/request.wav and /dev/null differ
diff --git a/sounds/seek.wav b/sounds/seek.wav
deleted file mode 100644
index e797921..0000000
Binary files a/sounds/seek.wav and /dev/null differ
diff --git a/sounds/shout.wav b/sounds/shout.wav
deleted file mode 100644
index b1b3a1a..0000000
Binary files a/sounds/shout.wav and /dev/null differ
diff --git a/sounds/slap.wav b/sounds/slap.wav
deleted file mode 100644
index 34c3fdf..0000000
Binary files a/sounds/slap.wav and /dev/null differ
diff --git a/sounds/squeak.wav b/sounds/squeak.wav
deleted file mode 100644
index aa7fa23..0000000
Binary files a/sounds/squeak.wav and /dev/null differ
diff --git a/sounds/sshout.wav b/sounds/sshout.wav
deleted file mode 100644
index 1eea0e7..0000000
Binary files a/sounds/sshout.wav and /dev/null differ
diff --git a/sounds/swish.wav b/sounds/swish.wav
deleted file mode 100644
index f89471b..0000000
Binary files a/sounds/swish.wav and /dev/null differ
diff --git a/sounds/tell.wav b/sounds/tell.wav
deleted file mode 100644
index c28c777..0000000
Binary files a/sounds/tell.wav and /dev/null differ
diff --git a/sounds/thud.wav b/sounds/thud.wav
deleted file mode 100644
index f5bc554..0000000
Binary files a/sounds/thud.wav and /dev/null differ
diff --git a/sounds/unfinished.wav b/sounds/unfinished.wav
deleted file mode 100644
index 03918d8..0000000
Binary files a/sounds/unfinished.wav and /dev/null differ
diff --git a/sounds/whipcrak.wav b/sounds/whipcrak.wav
deleted file mode 100644
index e38bb6f..0000000
Binary files a/sounds/whipcrak.wav and /dev/null differ
diff --git a/sounds/win.wav b/sounds/win.wav
deleted file mode 100644
index 0c13495..0000000
Binary files a/sounds/win.wav and /dev/null differ
diff --git a/sounds/woodthunk.wav b/sounds/woodthunk.wav
deleted file mode 100644
index 2001e38..0000000
Binary files a/sounds/woodthunk.wav and /dev/null differ
diff --git a/stamp-vti b/stamp-vti
new file mode 100644
index 0000000..d4bf9e0
--- /dev/null
+++ b/stamp-vti
@@ -0,0 +1,4 @@
+ at set UPDATED 28 October 2009
+ at set UPDATED-MONTH October 2009
+ at set EDITION 4.4.1
+ at set VERSION 4.4.1
diff --git a/texinfo.tex b/texinfo.tex
new file mode 100644
index 0000000..d2b264d
--- /dev/null
+++ b/texinfo.tex
@@ -0,0 +1,8962 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2007-12-02.17}
+%
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2007,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007 Free Software Foundation, Inc.
+%
+% This texinfo.tex file is free software: you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction.  (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+%   ftp://tug.org/tex/texinfo.tex
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo at gnu.org.  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\undefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% For @cropmarks command.
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page.  The solution is
+% described on page 260 of The TeXbook.  It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after.  I won't pretend I can describe this better than DEK...
+\def\domark{%
+  \toks0=\expandafter{\lastchapterdefs}%
+  \toks2=\expandafter{\lastsectiondefs}%
+  \toks4=\expandafter{\prevchapterdefs}%
+  \toks6=\expandafter{\prevsectiondefs}%
+  \toks8=\expandafter{\lastcolordefs}%
+  \mark{%
+                   \the\toks0 \the\toks2
+      \noexpand\or \the\toks4 \the\toks6
+    \noexpand\else \the\toks8
+  }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+  %
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  %
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  %
+  {%
+    % Have to do this stuff outside the \shipout because we want it to
+    % take effect in \write's, yet the group defined by the \vbox ends
+    % before the \shipout runs.
+    %
+    \indexdummies         % don't expand commands in the output.
+    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
+               % the page break happens to be in the middle of an example.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be 
+               % {\code {{\tt \backslashcurfont }acronym}
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \vskip\topandbottommargin
+        \line\bgroup
+          \hfil % center the page within the outer (page) hsize.
+          \ifodd\pageno\hskip\bindingoffset\fi
+          \vbox\bgroup
+      \fi
+      %
+      \unvbox\headlinebox
+      \pagebody{#1}%
+      \ifdim\ht\footlinebox > 0pt
+        % Only leave this space if the footline is nonempty.
+        % (We lessened \vsize for it in \oddfootingyyy.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 24pt
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \line{%
+            \vbox{\moveleft\cornerthick\nsbot}%
+            \hfill
+            \vbox{\moveright\cornerthick\nsbot}%
+          }%
+          \nointerlineskip
+          \line{\ewbot\hfil\ewbot}%
+        }%
+      \egroup % \vbox from first cropmarks clause
+      \fi
+    }% end of \shipout\vbox
+  }% end of group with \indexdummies
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha at viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr at ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.  The argument is the rest of
+% the input line (except we remove a trailing comment).  #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\argtorun{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%	is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty \@M \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as enviroments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At runtime, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Evironment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    out of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ptexi
+  \else\ifx\temp\jmacro \j
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+  \kern-.15em
+  \TeX
+}
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+% 
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+  \fi\fi
+}
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    \errmessage{@group invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % Do @comment since we are called inside an environment such as
+    % @example, where each end-of-line in the input causes an
+    % end-of-line in the output.  We don't want the end-of-line after
+    % the `@group' to put extra space in the output.  Since @group
+    % should appear on a line by itself (according to the Texinfo
+    % manual), we don't worry about eating any user text.
+    \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\vfil}%
+    %
+    % TeX does not even consider page breaks if a penalty added to the
+    % main vertical list is 10000 or more.  But in order to see if the
+    % empty box we just added fits on the page, we must make it consider
+    % page breaks.  On the other hand, we don't want to actually break the
+    % page after the empty box.  So we use a penalty of 9999.
+    %
+    % There is an extremely small chance that TeX will actually break the
+    % page at this \penalty, if there are no other feasible breakpoints in
+    % sight.  (If the user is using lots of big @group commands, which
+    % almost-but-not-quite fill up a page, TeX will have a hard time doing
+    % good page breaking, for example.)  However, I could not construct an
+    % example where a page broke at this \penalty; if it happens in a real
+    % document, then we can reconsider our strategy.
+    \penalty9999
+    %
+    % Back up by the size of the box, whether we did a page break or not.
+    \kern -#1\mil
+    %
+    % Do not allow a page break right after this kern.
+    \nobreak
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @include file    insert text of that file as input.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable
+    \def\temp{\input #1 }%
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\next\centerH
+  \else
+    \let\next\centerV
+  \fi
+  \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+  {%
+    \hfil\break
+    \advance\hsize by -\leftskip
+    \advance\hsize by -\rightskip
+    \line{#1}%
+    \break
+  }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n   outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care.  Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+  }
+}
+
+% @bullet and @minus need the same treatment as @math, just above.
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+% 
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef at activebackslashdouble{%
+   @catcode`@\=@active
+   @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters.  hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo.  It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+% 
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+% 
+\def\HyPsdSubst#1#2#3{%
+  \def\HyPsdReplace##1#1##2\END{%
+    ##1%
+    \ifx\\##2\\%
+    \else
+      #2%
+      \HyReturnAfterFi{%
+        \HyPsdReplace##2\END
+      }%
+    \fi
+  }%
+  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+  \xdef#1{#1}% redefine it as its expansion; the definition is simply
+             % \lastnode when called from \setref -> \pdfmkdest.
+  \HyPsdSubst{(}{\realbackslash(}{#1}%
+  \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+  %
+  % Color manipulation macros based on pdfcolor.tex.
+  \def\cmykDarkRed{0.28 1 1 0.35}
+  \def\cmykBlack{0 0 0 1}
+  %
+  \def\pdfsetcolor#1{\pdfliteral{#1 k}}
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\setcolor#1{%
+    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+    \domark
+    \pdfsetcolor{#1}%
+  }
+  %
+  \def\maincolor{\cmykBlack}
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\lastcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  %
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+  \def\dopdfimage#1#2#3{%
+    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+    % others).  Let's try in that order.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.png \ifeof 1
+        \openin 1 #1.jpg \ifeof 1
+          \openin 1 #1.jpeg \ifeof 1
+            \openin 1 #1.JPG \ifeof 1
+              \openin 1 #1.pdf \ifeof 1
+                \errhelp = \nopdfimagehelp
+                \errmessage{Could not find image file #1 for pdf}%
+              \else \gdef\pdfimgext{pdf}%
+              \fi
+            \else \gdef\pdfimgext{JPG}%
+            \fi
+          \else \gdef\pdfimgext{jpeg}%
+          \fi
+        \else \gdef\pdfimgext{jpg}%
+        \fi
+      \else \gdef\pdfimgext{png}%
+      \fi
+      \closein 1
+    \endgroup
+    %
+    % without \immediate, pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifdim \wd0 >0pt width \imagewidth \fi
+      \ifdim \wd2 >0pt height \imageheight \fi
+      \ifnum\pdftexversion<13
+         #1.\pdfimgext
+       \else
+         {#1.\pdfimgext}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  %
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \indexnofonts
+    \turnoffactive
+    \activebackslashdouble
+    \makevalueexpandable
+    \def\pdfdestname{#1}%
+    \backslashparens\pdfdestname
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}
+  %
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  \def\urlcolor{\cmykDarkRed}
+  \def\linkcolor{\cmykDarkRed}
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
+  %
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \def\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      % Doubled backslashes in the name.
+      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+       \backslashparens\pdfoutlinedest}%
+    \fi
+    %
+    % Also double the backslashes in the display string.
+    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+     \backslashparens\pdfoutlinetext}%
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Thanh's hack / proper braces in bookmarks
+      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+      %
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\numchapentry##1##2##3##4{%
+	\def\thischapnum{##2}%
+	\def\thissecnum{0}%
+	\def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+	\advancenumber{chap\thischapnum}%
+	\def\thissecnum{##2}%
+	\def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+	\advancenumber{sec\thissecnum}%
+	\def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+	\advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
+      \indexnofonts
+      \setupdatafile
+      \catcode`\\=\active \otherbackslash
+      \input \tocreadfilename
+    \endgroup
+  }
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \ifx\p\space\else\addtokens{\filename}{\PP}%
+        \advance\filenamelength by 1
+      \fi
+    \fi
+    \nextsp}
+  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      % 
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
+      \makevalueexpandable
+      \leavevmode\setcolor{\urlcolor}%
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \setcolor{\linkcolor}#1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\setcolor = \gobble
+  \let\pdfsetcolor = \gobble
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading  \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly.  There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\def\setleading#1{%
+  \dimen0 = #1\relax
+  \normalbaselineskip = \baselinefactor\dimen0
+  \normallineskip = \lineskipfactor\normalbaselineskip
+  \normalbaselines
+  \setbox\strutbox =\hbox{%
+    \vrule width0pt height\strutheightpercent\baselineskip
+                    depth \strutdepthpercent \baselineskip
+  }%
+}
+
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\undefined \else
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt.  This is the default in
+% Texinfo.
+% 
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+% 
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12 
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+% 
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  \wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  % 
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+  \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+  \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \resetmathfonts \setleading{25pt}}
+\def\titlefont#1{{\titlefonts\rm #1}}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+%
+% I wish the USA used A4 paper.
+% --karl, 24jan03.
+
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+% Define these so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+                    \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\var=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% @b, explicit bold.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph.  Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+\def\samp#1{`\tclose{#1}'\null}
+\setfont\keyrm\rmshape{8}{1000}{OT1}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+    \vbox{\hrule\kern-0.4pt
+     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+    \kern-0.4pt\hrule}%
+  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
+% The old definition, with no lozenge:
+%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+  {%
+    % Change normal interword space to be same as for the current font.
+    \spaceskip = \fontdimen2\font
+    %
+    % Switch to typewriter.
+    \tt
+    %
+    % But `\ ' produces the large typewriter interword space.
+    \def\ {{\spaceskip = 0pt{} }}%
+    %
+    % Turn off hyphenation.
+    \nohyphenation
+    %
+    \rawbackslash
+    \plainfrenchspacing
+    #1%
+  }%
+  \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+%  -- rms.
+{
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
+  %
+  \global\def\code{\begingroup
+    \catcode\rquoteChar=\active \catcode\lquoteChar=\active
+    \let'\codequoteright \let`\codequoteleft
+    %
+    \catcode\dashChar=\active  \catcode\underChar=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+% 
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+  \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct.'
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\look}}\fi
+\else{\tclose{\kbdfont\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+% 
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+% 
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+% 
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+% 
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+% 
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+% 
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+% 
+% 
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  % 
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  % 
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  % 
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename 
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else 
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% Hacks for glyphs from the EC fonts similar to \euro.  We don't
+% use \let for the aliases, because sometimes we redefine the original
+% macro, and the alias should reflect the redefinition.
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+\def\ecfont{%
+  % We can't distinguish serif/sanserif and italic/slanted, but this
+  % is used for crude hacks anyway (like adding French and German
+  % quotes to documents typeset with CM, where we lose kerning), so
+  % hopefully nobody will notice/care.
+  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \else
+    % regular:
+    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+  \fi
+  \thisecfont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+% 
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+        \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
+      \iffinishedtitlepage\else
+	 \finishtitlepage
+      \fi
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\def\Etitlepage{%
+    \iffinishedtitlepage\else
+	\finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+		\let\tt=\authortt}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rm #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\authorfont \leftline{#1}}%
+  \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+  %
+  % Leave some space for the footline.  Hopefully ok to assume
+  % @evenfooting will not be used by itself.
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top     \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+                          \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+                          \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+  \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    %
+    % Make this a paragraph so we get the \parskip glue and wrapping,
+    % but leave it ragged-right.
+    \begingroup
+      \advance\leftskip by-\tableindent
+      \advance\hsize by\tableindent
+      \advance\rightskip by0pt plus1fil
+      \leavevmode\unhbox0\par
+    \endgroup
+    %
+    % We're going to be starting a paragraph, but we don't want the
+    % \parskip glue -- logically it's part of the @item we just started.
+    \nobreak \vskip-\parskip
+    %
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    % 
+    \penalty 10001
+    \endgroup
+    \itemxneedsnegativevskipfalse
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  \def\itemcontents{#1}%
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    %
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    %
+    \ifnum\lccode\expandafter`\thearg=0\relax
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+%   @multitable @columnfractions .25 .3 .45
+%   @item ...
+%
+%   Numbers following @columnfractions are the percent of the total
+%   current hsize to be used for each column. You may use as many
+%   columns as desired.
+
+
+% Or use a template:
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item ...
+%   using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab at tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item first col stuff @tab second col stuff @tab third col
+%   @item
+%   first col stuff
+%   @tab
+%   second col stuff
+%   @tab
+%   third col
+%   @item first col stuff @tab second col stuff
+%   @tab Many paragraphs of text may be used in any column.
+%
+%         They will wrap at the width determined by the template.
+%   @item at tab@tab This will be in third column.
+%   @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+  \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+  \def\firstarg{#1}%
+  \ifx\firstarg\xendsetuptable
+    \let\go = \relax
+  \else
+    \ifx\firstarg\xcolumnfractions
+      \global\setpercenttrue
+    \else
+      \ifsetpercent
+         \let\go\pickupwholefraction
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+                   % separator; typically that is always in the input, anyway.
+         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+      \fi
+    \fi
+    \ifx\go\pickupwholefraction
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we encounter the problem it was intended to solve again.
+%					--karl, nathan at acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+	% Maybe so, but it also creates really weird page breaks when the
+	% table breaks over pages. Wouldn't \vfil be better?  Wait until the
+	% problem manifests itself, so it can be fixed for real --karl.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+	% The first column will be indented with the surrounding text.
+	\advance\hsize by\leftskip
+      \else
+	\ifsetpercent \else
+	  % If user has not set preamble in terms of percent of \hsize
+	  % we will advance \hsize by \multitablecolspace.
+	  \advance\hsize by \multitablecolspace
+	\fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%%        If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \obeylines
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next `@end #1'.
+    \long\def\doignoretext##1^^M at end #1{%
+      \doignoretextyyy##1^^M@#1\_STOP_}%
+    %
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+    %
+    % And now expand that command.
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty			% Nothing found.
+    \let\next\doignoretextzzz
+  \else					% Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy		% ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0	% We have just found the outermost @end.
+    \let\next\enddoignore
+  \else				% Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+  % Ignore anything after the last `@end #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname\donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+  \def\ {\realbackslash\space }%
+  %
+  % Need these in case \tex is in effect and \{ is a \delimiter again.
+  % But can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.
+  \let\{ = \mylbrace
+  \let\} = \myrbrace
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  % 
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  % 
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  % 
+  % Sample whatsit resulting:
+  % . at write3{\entry{xyz}{@folio }{@code {xyz at endinput }}}
+  % 
+  % So:
+  \let\endinput = \empty
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  \def\@{@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control% words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\L
+  \definedummyword\OE
+  \definedummyword\O
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\l
+  \definedummyword\oe
+  \definedummyword\o
+  \definedummyword\ss
+  \definedummyword\exclamdown
+  \definedummyword\questiondown
+  \definedummyword\ordf
+  \definedummyword\ordm
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\guillemetleft
+  \definedummyword\guillemetright
+  \definedummyword\guilsinglleft
+  \definedummyword\guilsinglright
+  \definedummyword\expansion
+  \definedummyword\minus
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\quotedblbase
+  \definedummyword\quotedblleft
+  \definedummyword\quotedblright
+  \definedummyword\quoteleft
+  \definedummyword\quoteright
+  \definedummyword\quotesinglbase
+  \definedummyword\result
+  \definedummyword\textdegree
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sc
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\acronym
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % Hopefully, all control words can become @asis.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  \def\@{@}%
+  % how to handle braces?
+  \def\_{\normalunderscore}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\o{o}%
+  \def\ss{ss}%
+  \def\exclamdown{!}%
+  \def\questiondown{?}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\registeredsymbol{R}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\guillemetleft{<<}%
+  \def\guillemetright{>>}%
+  \def\guilsinglleft{<}%
+  \def\guilsinglright{>}%
+  \def\expansion{==>}%
+  \def\minus{-}%
+  \def\pounds{pounds}%
+  \def\point{.}%
+  \def\print{-|}%
+  \def\quotedblbase{"}%
+  \def\quotedblleft{"}%
+  \def\quotedblright{"}%
+  \def\quoteleft{`}%
+  \def\quoteright{'}%
+  \def\quotesinglbase{,}%
+  \def\result{=>}%
+  \def\textdegree{degrees}%
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  % 
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  % 
+  \macrolist
+}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \safewhatsit\dosubindwrite
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z at skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{%
+\ifhmode
+  #1%
+\else
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \whatsitskip = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \whatsitpenalty = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\whatsitskip glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\whatsitskip
+  \fi
+  %
+  #1%
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    % 
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\whatsitskip
+  \fi
+\fi
+}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \plainfrenchspacing
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial {@}
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
+  \openin 1 \jobname.#1s
+  \ifeof 1
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    \putwordIndexNonexistent
+  \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      \putwordIndexIsEmpty
+    \else
+      % Index files are almost Texinfo source, but we use \ as the escape
+      % character.  It would be better to use @, but that's too big a change
+      % to make right now.
+      \def\indexbackslash{\backslashcurfont}%
+      \catcode`\\ = 0
+      \escapechar = `\\
+      \begindoublecolumns
+      \input \jobname.#1s
+      \enddoublecolumns
+    \fi
+  \fi
+  \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%	\def\entry#1#2{...
+% But this frozes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
+    %
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
+      \ %
+    \else
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+	\pdfgettoks#1.%
+	\ \the\toksA
+      \else
+	\ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+  \parfillskip=0in
+  \parskip=0in
+  \hangindent=1in
+  \hangafter=1
+  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % Grab any single-column material above us.
+  \output = {%
+    %
+    % Here is a possibility not foreseen in manmac: if we accumulate a
+    % whole lot of material, we might end up calling this \output
+    % routine twice in a row (see the doublecol-lose test, which is
+    % essentially a couple of indexes with @setchapternewpage off).  In
+    % that case we just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % Use the double-column output routine for subsequent pages.
+  \output = {\doublecolumnout}%
+  %
+  % Change the page size parameters.  We could do this once outside this
+  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+  % format, but then we repeat the same computation.  Repeating a couple
+  % of assignments once per index is clearly meaningless for the
+  % execution time, so we may as well do it in one place.
+  %
+  % First we halve the line length, less a little for the gutter between
+  % the columns.  We compute the gutter based on the line length, so it
+  % changes automatically with the paper format.  The magic constant
+  % below is chosen so that the gutter has the same value (well, +-<1pt)
+  % as it did when we hard-coded it.
+  %
+  % We put the result in a separate register, \doublecolumhsize, so we
+  % can restore it in \pagesofar, after \hsize itself has (potentially)
+  % been clobbered.
+  %
+  \doublecolumnhsize = \hsize
+    \advance\doublecolumnhsize by -.04154\hsize
+    \divide\doublecolumnhsize by 2
+  \hsize = \doublecolumnhsize
+  %
+  % Double the \vsize as well.  (We don't need a separate register here,
+  % since nobody clobbers \vsize.)
+  \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@ = \vsize
+  \divide\dimen@ by 2
+  \advance\dimen@ by -\ht\partialpage
+  %
+  % box0 will be the left-hand column, box2 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255
+  \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen at .}%
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {%
+    \vbadness = 10000
+    \loop
+      \global\setbox3 = \copy0
+      \global\setbox1 = \vsplit3 to \dimen@
+    \ifdim\ht3>\dimen@
+      \global\advance\dimen@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno        \secno=0
+\newcount\subsecno     \subsecno=0
+\newcount\subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno  \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter.  Page headings and footings can use
+% these.  @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unmlevel
+      \chardef\unmlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+	\errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unmlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unmlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+	\unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+	  \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+	  \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  \message{\putwordChapter\space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  \def\appendixnum{\putwordAppendix\space \appendixletter}%
+  \message{\appendixnum}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % This used to be simply \message{#1}, but TeX fully expands the
+  % argument to \message.  Therefore, if #1 contained @-commands, TeX
+  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
+  % expanded @cite (which turns out to cause errors because \cite is meant
+  % to be executed, not expanded).
+  %
+  % Anyway, we don't want the fully-expanded definition of @cite to appear
+  % as a result of the \message, we just want `@cite' itself.  We use
+  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:		--kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+%       1) We use \vbox rather than the earlier \line to permit
+%          overlong headings to fold.
+%       2) \hyphenpenalty is set to 10000 because hyphenation in a
+%          heading is obnoxious; this forbids it.
+%       3) Likewise, headings look best if no \parindent is used, and
+%          if justification is not attempted.  Hence \raggedright.
+
+
+\def\majorheading{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                    \parindent=0pt\raggedright
+                    \rm #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong.  But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+  \chappager
+  \ifodd\pageno \else
+    \begingroup
+      \evenheadline={\hfil}\evenfootline={\hfil}%
+      \oddheadline={\hfil}\oddfootline={\hfil}%
+      \hbox to 0pt{}%
+      \chappager
+    \endgroup
+  \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  % Insert the first mark before the heading break (see notes for \domark).
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+                        \gdef\thissection{}}%
+  %
+  \def\temptype{#2}%
+  \ifx\temptype\Ynothingkeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{\thischaptername}}%
+  \else\ifx\temptype\Yomitfromtockeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{}}%
+  \else\ifx\temptype\Yappendixkeyword
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\appendixletter}%
+      \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \else
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\the\chapno}%
+      \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \fi\fi\fi
+  %
+  % Output the mark.  Pass it through \safewhatsit, to take care of
+  % the preceding space.
+  \safewhatsit\domark
+  %
+  % Insert the chapter heading break.
+  \pchapsepmacro
+  %
+  % Now the second mark, after the heading break.  No break points
+  % between here and the heading.
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \domark
+  %
+  {%
+    \chapfonts \rm
+    %
+    % Have to define \lastsection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\lastsection{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \nobreak % Avoid page breaks at the interline glue.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\raggedright
+                       \rm #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt
+                       \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rm
+    %
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    % Insert first mark before the heading break (see notes for \domark).
+    \let\prevsectiondefs=\lastsectiondefs
+    \ifx\temptype\Ynothingkeyword
+      \ifx\sectionlevel\seckeyword
+        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+                              \gdef\thissection{\thissectionname}}%
+      \fi
+    \else\ifx\temptype\Yomitfromtockeyword
+      % Don't redefine \thissection.
+    \else\ifx\temptype\Yappendixkeyword
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \else
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \fi\fi\fi
+    %
+    % Output the mark.  Pass it through \safewhatsit, to take care of
+    % the preceding space.
+    \safewhatsit\domark
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Now the second mark, after the heading break.  No break points
+    % between here and the heading.
+    \let\prevsectiondefs=\lastsectiondefs
+    \domark
+    %
+    % Only insert the space after the number if we have a section number.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\lastsection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \lastsection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\lastsection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\lastsection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chapmacro.
+    \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)
+  \vskip-\parskip
+  % 
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  % 
+  %   @section sec-whatever
+  %   @deffn def-whatever
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }%
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+% 
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <tege at matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+% 
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+   \begingroup
+     \chapentryfonts
+     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, it should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex    escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\envdef\tex{%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \escapechar=`\\
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments.  \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical.  We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt	% allow for 3pt kerns on either
+				% side, and for 6pt waste from
+				% each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing = t%
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+	  \hskip\lskip
+	  \vrule\kern3pt
+	  \vbox\bgroup
+	      \kern3pt
+	      \hsize=\cartinner
+	      \baselineskip=\normbskip
+	      \lineskip=\normlskip
+	      \parskip=\normpskip
+	      \vskip -\parskip
+	      \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+	      \kern3pt
+	  \egroup
+	  \kern3pt\vrule
+	  \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \let\par = \lisppar % don't ignore blank lines
+  \obeylines % each line of input is a line of output
+  \parskip = 0pt
+  \parindent = 0pt
+  \emergencystretch = 0pt % don't try to avoid overfull boxes
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+  \makedispenv{#1}{#3}
+  \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel at xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+  \nonfillstart
+  \tt\quoteexpand
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble       % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\envdef\quotation{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \advance\rightskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\undefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+
+% LaTeX-like @verbatim... at end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command.  --janneke at gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|\do\@\do+\do\"%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% [Knuth] pp. 380,381,391
+% Disable Spanish ligatures ?` and !` of \tt font
+\begingroup
+  \catcode`\`=\active\gdef`{\relax\lq}
+\endgroup
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \catcode`\`=\active
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report.  xpdf does work with the
+% regular 0x27.  
+% 
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+% 
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      `%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+%
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen0=\wd0 % the width so far, or since the previous tab
+      \divide\dimen0 by\tabw
+      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
+      \wd0=\dimen0 \box0 \starttabbox
+    }%
+  }
+  \catcode`\'=\active
+  \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+  %
+  \catcode`\`=\active
+  \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
+  %
+  \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  % Easiest (and conventionally used) font for verbatim
+  \tt
+  \def\par{\leavevmode\egroup\box0\endgraf}%
+  \catcode`\`=\active
+  \tabexpand
+  \quoteexpand
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     \def\doverbatim#1 at end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  \xdef\doverbatim#1^^M#2 at end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1 at end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \printdefunline, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    %
+    % As a minor refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remainnig is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % How we'll format the type name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  % (plain.tex says that \dimen1 should be used only as global.)
+  \parshape 2 0in \dimen0 \defargsindent \dimen2
+  %
+  % Put the type name to the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% return value type
+    \ifx\temp\empty\else \tclose{\temp} \fi
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \let\var=\ttslanted
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+  \message{Warning: unbalanced parentheses in @def...}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \message{Warning: unbalanced square brackets in @def...}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{%
+  \begingroup
+    \newlinechar`\^^M
+    \let\xeatspaces\eatspaces
+    % Undo catcode changes of \startcontents and \doprintindex
+    % When called from @insertcopying or (short)caption, we need active
+    % backslash to get it printed correctly.  Previously, we had
+    % \catcode`\\=\other instead.  We'll see whether a problem appears
+    % with macro expansion.				--kasal, 19aug04
+    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+    % ... and \example
+    \spaceisspace
+    %
+    % Append \endinput to make sure that TeX does not see the ending newline.
+    % I've verified that it is necessary both for e-TeX and for ordinary TeX
+    %							--kasal, 29nov03
+    \scantokens{#1\endinput}%
+  \endgroup
+}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+% 
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef at usembodybackslash{@let\=@mbodybackslash}
+ @gdef at mbodybackslash#1\{@csname macarg.#1 at endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0%
+  \else
+     \expandafter\parsemargdef \argl;%
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX:  let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1%
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1 at end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1 at end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \expandafter\noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+      \csname\the\macname xxx\endcsname
+      \paramlist{%
+          \egroup
+          \noexpand\norecurse{\the\macname}%
+          \noexpand\scanmacro{\temp}\egroup}%
+    \fi
+  \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs    % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+	  ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\lastsection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+    }%
+  \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual.  All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+  \unsepspaces
+  \def\printedmanual{\ignorespaces #5}%
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox1=\hbox{\printedmanual\unskip}%
+  \setbox0=\hbox{\printedrefname\unskip}%
+  \ifdim \wd0 = 0pt
+    % No printed node name was explicitly given.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+      % Use the node name inside the square brackets.
+      \def\printedrefname{\ignorespaces #1}%
+    \else
+      % Use the actual chapter/section title appear inside
+      % the square brackets.  Use the real section title if we have it.
+      \ifdim \wd1 > 0pt
+        % It is in another manual, so we don't have it.
+        \def\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    \leavevmode
+    \getfilename{#4}%
+    {\indexnofonts
+     \turnoffactive
+     % See comments at \activebackslashdouble.
+     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+      \backslashparens\pdfxrefdest}%
+     %
+     \ifnum\filenamelength>0
+       \startlink attr{/Border [0 0 0]}%
+         goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       \startlink attr{/Border [0 0 0]}%
+         goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \setcolor{\linkcolor}%
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd0 = 0pt
+      \refx{#1-snt}{}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % if the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd1 > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    %
+    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+    % insert empty discretionaries after hyphens, which means that it will
+    % not find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens, this
+    % is a loss.  Therefore, we give the text of the node name again, so it
+    % is as if TeX is seeing it for the first time.
+    \ifdim \wd1 > 0pt
+      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+    \else
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via a macro so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    \putwordChapter at tie \the\chapno
+  \else \ifnum\subsecno=0
+    \putwordSection at tie \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection at tie \the\chapno.\the\secno.\the\subsecno
+  \else
+    \putwordSection at tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     \putwordAppendix at tie @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     \putwordSection at tie @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection at tie @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    \putwordSection at tie
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        \message{\linenumber Undefined cross reference `#1'.}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  \catcode`\^^@=\other
+  \catcode`\^^A=\other
+  \catcode`\^^B=\other
+  \catcode`\^^C=\other
+  \catcode`\^^D=\other
+  \catcode`\^^E=\other
+  \catcode`\^^F=\other
+  \catcode`\^^G=\other
+  \catcode`\^^H=\other
+  \catcode`\^^K=\other
+  \catcode`\^^L=\other
+  \catcode`\^^N=\other
+  \catcode`\^^P=\other
+  \catcode`\^^Q=\other
+  \catcode`\^^R=\other
+  \catcode`\^^S=\other
+  \catcode`\^^T=\other
+  \catcode`\^^U=\other
+  \catcode`\^^V=\other
+  \catcode`\^^W=\other
+  \catcode`\^^X=\other
+  \catcode`\^^Z=\other
+  \catcode`\^^[=\other
+  \catcode`\^^\=\other
+  \catcode`\^^]=\other
+  \catcode`\^^^=\other
+  \catcode`\^^_=\other
+  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
+  % supported in the main text, it doesn't seem desirable.  Furthermore,
+  % that is not enough: for node names that actually contain a ^
+  % character, we would end up writing a line like this: 'xrdef {'hat
+  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+  % argument, and \hat is not an expandable control sequence.  It could
+  % all be worked out, but why?  Either we support ^^ or we don't.
+  %
+  % The other change necessary for this was to define \auxhat:
+  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+  % and then to call \auxhat in \setq.
+  %
+  \catcode`\^=\other
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \catcode`\[=\other
+  \catcode`\]=\other
+  \catcode`\"=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\$=\other
+  \catcode`\#=\other
+  \catcode`\&=\other
+  \catcode`\%=\other
+  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \global\advance\footnoteno by \@ne
+  \edef\thisfootno{$^{\the\footnoteno}$}%
+  %
+  % In case the footnote comes at the end of a sentence, preserve the
+  % extra spacing after we do the footnote number.
+  \let\@sf\empty
+  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  \thisfootno\@sf
+  \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter.  Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \insert\footins\bgroup
+  % We want to typeset this text as a normal paragraph, even if the
+  % footnote reference occurs in (for example) a display environment.
+  % So reset some parameters.
+  \hsize=\pagewidth
+  \interlinepenalty\interfootnotelinepenalty
+  \splittopskip\ht\strutbox % top baseline for broken footnotes
+  \splitmaxdepth\dp\strutbox
+  \floatingpenalty\@MM
+  \leftskip\z at skip
+  \rightskip\z at skip
+  \spaceskip\z at skip
+  \xspaceskip\z at skip
+  \parindent\defaultparindent
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\hang}%
+  \textindent{\thisfootno}%
+  %
+  % Don't crash into the line above the footnote text.  Since this
+  % expands into a box, it must come within the paragraph, lest it
+  % provide a place where TeX can split the footnote.
+  \footstrut
+  \futurelet\next\fo at t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarily, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image.  We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front.  If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+  work.  It is also included in the Texinfo distribution, or you can get
+  it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+  \ifx\epsfbox\undefined
+    \ifwarnednoepsf \else
+      \errhelp = \noepsfhelp
+      \errmessage{epsf.tex not found, images will be ignored}%
+      \global\warnednoepsftrue
+    \fi
+  \else
+    \imagexxx #1,,,,,\finish
+  \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+    \nobreak\bigskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+    \line\bgroup
+  \fi
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \epsfbox itself resets \epsf?size at each figure.
+    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+    \epsfbox{#1.eps}%
+  \fi
+  %
+  \ifimagevmode \egroup \bigbreak \fi  % space after the image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \lastsection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\lastsection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+	\appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+	\scanexp{%
+	  \xdef\noexpand\gtemp{%
+	    \ifx\thisshortcaption\empty
+	      \thiscaption
+	    \else
+	      \thisshortcaption
+	    \fi
+	  }%
+	}%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+	  \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype at tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+
+\message{localization,}
+
+% @documentlanguage is usually given very early, just after
+% @setfilename.  If done too late, it may not override everything
+% properly.  Single argument is the language (de) or locale (de_DE)
+% abbreviation.  It would be nice if we could set up a hyphenation file.
+%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file by the name they passed if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
+    \else
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup
+\endgroup}
+}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+% 
+\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \input txi-#1.tex
+  \fi
+  \closein 1
+}
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  In the current directory
+should work if nowhere else does.}
+
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone 
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else 
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+% 
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{~} 
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}} 
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}} 
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}} 
+  \gdef^^a9{\copyright} 
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}} 
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-} 
+  \gdef^^ae{\registeredsymbol} 
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A} 
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+  \gdef^^b2{\missingcharmsg{OGONEK}}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U} 
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'\i}
+  \gdef^^ee{\^\i}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+% 
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+% 
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BB}{\guillemetright}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2018}{\quoteleft}
+  \DeclareUnicodeCharacter{2019}{\quoteright}
+  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+  \DeclareUnicodeCharacter{201C}{\quotedblleft}
+  \DeclareUnicodeCharacter{201D}{\quotedblright}
+  \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+  \DeclareUnicodeCharacter{203A}{\guilsinglright}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{607.2pt}{6in}% that's 46 lines
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {-.2in}{0in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo at urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1\relax
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef at realbackslash{\} @gdef at doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+ at def@normalbackslash{{@tt at backslashcurfont}}
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+ at gdef@rawbackslash{@let\=@backslashcurfont}
+ at gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+% 
+ at def@normalturnoffactive{%
+  @let\=@normalbackslash
+  @let"=@normaldoublequote
+  @let~=@normaltilde
+  @let^=@normalcaret
+  @let_=@normalunderscore
+  @let|=@normalverticalbar
+  @let<=@normalless
+  @let>=@normalgreater
+  @let+=@normalplus
+  @let$=@normaldollar %$ font-lock fix
+  @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+ at otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+ at gdef@eatinput input texinfo{@fixbackslash}
+ at global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+ at gdef@fixbackslash{%
+  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @catcode`+=@active
+  @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+ at escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+ at catcode`@& = @other
+ at catcode`@# = @other
+ at catcode`@% = @other
+
+
+ at c Local variables:
+ at c eval: (add-hook 'write-file-hooks 'time-stamp)
+ at c page-delimiter: "^\\\\message"
+ at c time-stamp-start: "def\\\\texinfoversion{"
+ at c time-stamp-format: "%:y-%02m-%02d.%02H"
+ at c time-stamp-end: "}"
+ at c End:
+
+ at c vim:sw=2:
+
+ at ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+ at end ignore
diff --git a/version.texi b/version.texi
new file mode 100644
index 0000000..d4bf9e0
--- /dev/null
+++ b/version.texi
@@ -0,0 +1,4 @@
+ at set UPDATED 28 October 2009
+ at set UPDATED-MONTH October 2009
+ at set EDITION 4.4.1
+ at set VERSION 4.4.1
diff --git a/winboard/COMPILING b/winboard/COMPILING
deleted file mode 100644
index 1ab1906..0000000
--- a/winboard/COMPILING
+++ /dev/null
@@ -1,46 +0,0 @@
-Compiling with an Integrated Development Envrionment
-
-    Microsoft Visual C++
-    --
-    For MSVC 6.0 IDE, all you need to do is 'File|Open Workspace...' and select
-    'winboard.dsw'.  Then to build, choose 'Build|Batch Build...' and select
-    the targets you want to build.  This method has full support for Debug and
-    Release builds either with or without JAWS support.
-
-    For later versions of Visual C++, open the same workspace and convert when
-    prompted.  Then compile as above.
-
-
-    DevCpp
-    --
-    For DevCpp, you need to 'File|Open Project or File...' and select either
-    'winboard.dev' or 'WB4Jaws.dev'.  After parsing the project, you can 'Execute|
-    Compile' to build.  This IDE has no facility for defines in the resource
-    compiler, so the version information resource will not indicate JAWS support
-    even if it actually has that support.  These projects are not set up for
-    debugging, but you can do so by adjusting the 'Compiler' and 'Parameters'
-    options in the 'Project|Project Options' dialog.
-
-
-
-Compiling from the Command Line
-
-    GCC -- this includes cygwin, mingw, djgpp and others.
-
-        make -f makefile.gcc
-
-        You can modify certain settings in the makefile such as JAWS support,
-        debugging support.  If using cygwin, you can select whether or not to
-        link with cygwin1.dll instead of the msvcrt runtime.
-
-
-    CL -- this includes MSVC and recent Intel compilers.
-
-        nmake -f makefile.ms        Note: NMAKE, not MAKE
-
-        For Visual Studio 2005 and later, set VCVER to 8, otherwise set it to 6.
-        You can select JAWS support or debugging just like the GCC makefile.  For
-        MSVC 6.0 and earlier, you are going to need the latest SDK from Microsoft.
-        After you install it, set the SDK_INC variable appropriately.  It defaults
-        to the standard location, but you still need to uncomment the line.
-
diff --git a/winboard/WB4Jaws.dev b/winboard/WB4Jaws.dev
deleted file mode 100644
index c91698b..0000000
--- a/winboard/WB4Jaws.dev
+++ /dev/null
@@ -1,260 +0,0 @@
-[Project]
-FileName=WB4Jaws.dev
-Name=Winboard
-UnitCount=23
-Type=0
-Ver=1
-ObjFiles=
-Includes=
-Libs=
-PrivateResource=Winboard_private.rc
-ResourceIncludes=..
-MakeIncludes=
-Compiler=-I.._@@_-I._@@_-DNDEBUG_@@_-DJAWS_@@_
-CppCompiler=
-Linker=-fpic_@@_-s_@@_-mwindows_@@_-lwsock32_@@_-lwinmm_@@_-lcomctl32_@@_
-IsCpp=0
-Icon=
-ExeOutput=
-ObjectOutput=.\objs
-OverrideOutput=1
-OverrideOutputName=Winboard.exe
-HostApplication=
-Folders=
-CommandLine=
-UseCustomMakefile=0
-CustomMakefile=makefile.gcc
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0000000000001000000100
-
-[Unit1]
-FileName=wsockerr.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=parser.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=wclipbrd.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=wedittags.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=wengineo.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=wevalgraph.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=wgamelist.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=whistory.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=winboard.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=wlayout.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=woptions.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=wsnap.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=..\uci.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=..\backend.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=..\book.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit16]
-FileName=..\gamelist.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit17]
-FileName=..\lists.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit18]
-FileName=..\moves.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit19]
-FileName=..\pgntags.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit20]
-FileName=winboard.rc
-Folder=Winboard
-Compile=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit21]
-FileName=..\zippy.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit22]
-FileName=help.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit23]
-FileName=wsettings.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
diff --git a/winboard/Winboard.dev b/winboard/Winboard.dev
deleted file mode 100644
index 3b65063..0000000
--- a/winboard/Winboard.dev
+++ /dev/null
@@ -1,260 +0,0 @@
-[Project]
-FileName=Winboard.dev
-Name=Winboard
-UnitCount=23
-Type=0
-Ver=1
-ObjFiles=
-Includes=
-Libs=
-PrivateResource=Winboard_private.rc
-ResourceIncludes=..
-MakeIncludes=
-Compiler=-I.._@@_-I._@@_-DNDEBUG_@@_
-CppCompiler=
-Linker=-fpic_@@_-s_@@_-mwindows_@@_-lwsock32_@@_-lwinmm_@@_-lcomctl32_@@_
-IsCpp=0
-Icon=
-ExeOutput=
-ObjectOutput=./objs
-OverrideOutput=0
-OverrideOutputName=Winboard.exe
-HostApplication=
-Folders=
-CommandLine=
-UseCustomMakefile=0
-CustomMakefile=makefile.gcc
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0000000000001000000100
-
-[Unit1]
-FileName=wsockerr.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=parser.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=wclipbrd.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=wedittags.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=wengineo.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=wevalgraph.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=wgamelist.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=whistory.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=winboard.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=wlayout.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=woptions.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=wsnap.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=..\uci.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=..\backend.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=..\book.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit16]
-FileName=..\gamelist.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit17]
-FileName=..\lists.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit18]
-FileName=..\moves.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit19]
-FileName=..\pgntags.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit20]
-FileName=winboard.rc
-Folder=Winboard
-Compile=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit21]
-FileName=..\zippy.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit22]
-FileName=help.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit23]
-FileName=wsettings.c
-CompileCpp=0
-Folder=Winboard
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
diff --git a/winboard/bitmaps/README.bitmaps b/winboard/bitmaps/README.bitmaps
deleted file mode 100644
index 573108d..0000000
--- a/winboard/bitmaps/README.bitmaps
+++ /dev/null
@@ -1,20 +0,0 @@
-This directory provides bitmaps with the same size and naming
-conventions as those distributed till xboard-3.**
-These bitmaps are distributed under the GNU GENERAL PUBLIC LICENSE
-coming with xboard.
-
-The bitmaps contained herein were converted from my MetaFont
-version of chess font. These are designed very well to deliver
-good rastered images on low resolution devices. The general
-shape of these fonts are designed after very old typefaces
-used in printing chess books. They are not as fancy as the
-currently used bitmaps of xboard, but I like them in their
-'san serif'-ness - may be others too.
-  The MetaFont source of this font may be obtained from me
-under the GNU GENERAL PUBLIC LICENSE.
-  To convert the pk-Files to bitmaps I used the conversion tool
-mftobdf to generate X11-bdf - fonts, and then used a small C
-program, to write the xbm-files.
-
-5.Feb.1994 Elmar Bartel
-bartel at informatik.tu-muenchen.de
diff --git a/winboard/bitmaps/a33o.bmp b/winboard/bitmaps/a33o.bmp
deleted file mode 100644
index fcd6740..0000000
Binary files a/winboard/bitmaps/a33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a33s.bmp b/winboard/bitmaps/a33s.bmp
deleted file mode 100644
index 2a1bb7d..0000000
Binary files a/winboard/bitmaps/a33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a33w.bmp b/winboard/bitmaps/a33w.bmp
deleted file mode 100644
index 19598b4..0000000
Binary files a/winboard/bitmaps/a33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a37o.bmp b/winboard/bitmaps/a37o.bmp
deleted file mode 100644
index dfdc7ff..0000000
Binary files a/winboard/bitmaps/a37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a37s.bmp b/winboard/bitmaps/a37s.bmp
deleted file mode 100644
index ef1b222..0000000
Binary files a/winboard/bitmaps/a37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a37w.bmp b/winboard/bitmaps/a37w.bmp
deleted file mode 100644
index e0ed7cd..0000000
Binary files a/winboard/bitmaps/a37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a40o.bmp b/winboard/bitmaps/a40o.bmp
deleted file mode 100644
index 7545fdd..0000000
Binary files a/winboard/bitmaps/a40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a40s.bmp b/winboard/bitmaps/a40s.bmp
deleted file mode 100644
index d2a67d6..0000000
Binary files a/winboard/bitmaps/a40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a40w.bmp b/winboard/bitmaps/a40w.bmp
deleted file mode 100644
index 668ec31..0000000
Binary files a/winboard/bitmaps/a40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a45o.bmp b/winboard/bitmaps/a45o.bmp
deleted file mode 100644
index e6fbc98..0000000
Binary files a/winboard/bitmaps/a45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a45s.bmp b/winboard/bitmaps/a45s.bmp
deleted file mode 100644
index b6f36ae..0000000
Binary files a/winboard/bitmaps/a45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a45w.bmp b/winboard/bitmaps/a45w.bmp
deleted file mode 100644
index 1b84946..0000000
Binary files a/winboard/bitmaps/a45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a49c.bmp b/winboard/bitmaps/a49c.bmp
deleted file mode 100644
index 19b739a..0000000
Binary files a/winboard/bitmaps/a49c.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a49o.bmp b/winboard/bitmaps/a49o.bmp
deleted file mode 100644
index 911d9fa..0000000
Binary files a/winboard/bitmaps/a49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a49s.bmp b/winboard/bitmaps/a49s.bmp
deleted file mode 100644
index 7b3836f..0000000
Binary files a/winboard/bitmaps/a49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a49w.bmp b/winboard/bitmaps/a49w.bmp
deleted file mode 100644
index 3a1b815..0000000
Binary files a/winboard/bitmaps/a49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a54o.bmp b/winboard/bitmaps/a54o.bmp
deleted file mode 100644
index 5281a27..0000000
Binary files a/winboard/bitmaps/a54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a54s.bmp b/winboard/bitmaps/a54s.bmp
deleted file mode 100644
index a7a2339..0000000
Binary files a/winboard/bitmaps/a54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a54w.bmp b/winboard/bitmaps/a54w.bmp
deleted file mode 100644
index c0208da..0000000
Binary files a/winboard/bitmaps/a54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a58o.bmp b/winboard/bitmaps/a58o.bmp
deleted file mode 100644
index 1661057..0000000
Binary files a/winboard/bitmaps/a58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a58s.bmp b/winboard/bitmaps/a58s.bmp
deleted file mode 100644
index e42dded..0000000
Binary files a/winboard/bitmaps/a58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a58w.bmp b/winboard/bitmaps/a58w.bmp
deleted file mode 100644
index 6827e85..0000000
Binary files a/winboard/bitmaps/a58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a64o.bmp b/winboard/bitmaps/a64o.bmp
deleted file mode 100644
index 4c72b61..0000000
Binary files a/winboard/bitmaps/a64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a64s.bmp b/winboard/bitmaps/a64s.bmp
deleted file mode 100644
index d8f467b..0000000
Binary files a/winboard/bitmaps/a64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a64w.bmp b/winboard/bitmaps/a64w.bmp
deleted file mode 100644
index a7fe420..0000000
Binary files a/winboard/bitmaps/a64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a72o.bmp b/winboard/bitmaps/a72o.bmp
deleted file mode 100644
index ea1680f..0000000
Binary files a/winboard/bitmaps/a72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a72s.bmp b/winboard/bitmaps/a72s.bmp
deleted file mode 100644
index 6250378..0000000
Binary files a/winboard/bitmaps/a72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/a72w.bmp b/winboard/bitmaps/a72w.bmp
deleted file mode 100644
index e041e34..0000000
Binary files a/winboard/bitmaps/a72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/analyze2_14.ico b/winboard/bitmaps/analyze2_14.ico
deleted file mode 100644
index 8f725f1..0000000
Binary files a/winboard/bitmaps/analyze2_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/analyze_14.ico b/winboard/bitmaps/analyze_14.ico
deleted file mode 100644
index f25d0fb..0000000
Binary files a/winboard/bitmaps/analyze_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/as33o.bmp b/winboard/bitmaps/as33o.bmp
deleted file mode 100644
index bae55ff..0000000
Binary files a/winboard/bitmaps/as33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as33s.bmp b/winboard/bitmaps/as33s.bmp
deleted file mode 100644
index 7d028dc..0000000
Binary files a/winboard/bitmaps/as33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as33w.bmp b/winboard/bitmaps/as33w.bmp
deleted file mode 100644
index 1f8a3a9..0000000
Binary files a/winboard/bitmaps/as33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as45o.bmp b/winboard/bitmaps/as45o.bmp
deleted file mode 100644
index e01dc8d..0000000
Binary files a/winboard/bitmaps/as45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as45s.bmp b/winboard/bitmaps/as45s.bmp
deleted file mode 100644
index f9df7c7..0000000
Binary files a/winboard/bitmaps/as45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as45w.bmp b/winboard/bitmaps/as45w.bmp
deleted file mode 100644
index 359c061..0000000
Binary files a/winboard/bitmaps/as45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as49o.bmp b/winboard/bitmaps/as49o.bmp
deleted file mode 100644
index de6625a..0000000
Binary files a/winboard/bitmaps/as49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as49s.bmp b/winboard/bitmaps/as49s.bmp
deleted file mode 100644
index 049ad53..0000000
Binary files a/winboard/bitmaps/as49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as49w.bmp b/winboard/bitmaps/as49w.bmp
deleted file mode 100644
index cfea22a..0000000
Binary files a/winboard/bitmaps/as49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as72o.bmp b/winboard/bitmaps/as72o.bmp
deleted file mode 100644
index fe967e9..0000000
Binary files a/winboard/bitmaps/as72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as72s.bmp b/winboard/bitmaps/as72s.bmp
deleted file mode 100644
index d1dcc7f..0000000
Binary files a/winboard/bitmaps/as72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/as72w.bmp b/winboard/bitmaps/as72w.bmp
deleted file mode 100644
index ad07b7e..0000000
Binary files a/winboard/bitmaps/as72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b108o.bmp b/winboard/bitmaps/b108o.bmp
deleted file mode 100644
index a02c11f..0000000
Binary files a/winboard/bitmaps/b108o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b108s.bmp b/winboard/bitmaps/b108s.bmp
deleted file mode 100644
index aac8e9c..0000000
Binary files a/winboard/bitmaps/b108s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b108w.bmp b/winboard/bitmaps/b108w.bmp
deleted file mode 100644
index 5086abf..0000000
Binary files a/winboard/bitmaps/b108w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b116o.bmp b/winboard/bitmaps/b116o.bmp
deleted file mode 100644
index 26b226a..0000000
Binary files a/winboard/bitmaps/b116o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b116s.bmp b/winboard/bitmaps/b116s.bmp
deleted file mode 100644
index 12d70e3..0000000
Binary files a/winboard/bitmaps/b116s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b116w.bmp b/winboard/bitmaps/b116w.bmp
deleted file mode 100644
index f11ec11..0000000
Binary files a/winboard/bitmaps/b116w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b129o.bmp b/winboard/bitmaps/b129o.bmp
deleted file mode 100644
index 243ef28..0000000
Binary files a/winboard/bitmaps/b129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b129s.bmp b/winboard/bitmaps/b129s.bmp
deleted file mode 100644
index 4209b45..0000000
Binary files a/winboard/bitmaps/b129s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b129w.bmp b/winboard/bitmaps/b129w.bmp
deleted file mode 100644
index 759f1ef..0000000
Binary files a/winboard/bitmaps/b129w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b21o.bmp b/winboard/bitmaps/b21o.bmp
deleted file mode 100644
index 4a5dc5f..0000000
Binary files a/winboard/bitmaps/b21o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b21s.bmp b/winboard/bitmaps/b21s.bmp
deleted file mode 100644
index cb9e317..0000000
Binary files a/winboard/bitmaps/b21s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b21w.bmp b/winboard/bitmaps/b21w.bmp
deleted file mode 100644
index 0b8b1ee..0000000
Binary files a/winboard/bitmaps/b21w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b25o.bmp b/winboard/bitmaps/b25o.bmp
deleted file mode 100644
index dfd160e..0000000
Binary files a/winboard/bitmaps/b25o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b25s.bmp b/winboard/bitmaps/b25s.bmp
deleted file mode 100644
index c9c41af..0000000
Binary files a/winboard/bitmaps/b25s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b25w.bmp b/winboard/bitmaps/b25w.bmp
deleted file mode 100644
index 1d79b9d..0000000
Binary files a/winboard/bitmaps/b25w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b29o.bmp b/winboard/bitmaps/b29o.bmp
deleted file mode 100644
index cb1ef88..0000000
Binary files a/winboard/bitmaps/b29o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b29s.bmp b/winboard/bitmaps/b29s.bmp
deleted file mode 100644
index f14cbfa..0000000
Binary files a/winboard/bitmaps/b29s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b29w.bmp b/winboard/bitmaps/b29w.bmp
deleted file mode 100644
index a04ae00..0000000
Binary files a/winboard/bitmaps/b29w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b33o.bmp b/winboard/bitmaps/b33o.bmp
deleted file mode 100644
index 8a2779a..0000000
Binary files a/winboard/bitmaps/b33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b33s.bmp b/winboard/bitmaps/b33s.bmp
deleted file mode 100644
index 1955f6b..0000000
Binary files a/winboard/bitmaps/b33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b33w.bmp b/winboard/bitmaps/b33w.bmp
deleted file mode 100644
index 3d34cbc..0000000
Binary files a/winboard/bitmaps/b33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b37o.bmp b/winboard/bitmaps/b37o.bmp
deleted file mode 100644
index 2e46cd4..0000000
Binary files a/winboard/bitmaps/b37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b37s.bmp b/winboard/bitmaps/b37s.bmp
deleted file mode 100644
index de6f7c5..0000000
Binary files a/winboard/bitmaps/b37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b37w.bmp b/winboard/bitmaps/b37w.bmp
deleted file mode 100644
index 432212c..0000000
Binary files a/winboard/bitmaps/b37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b40o.bmp b/winboard/bitmaps/b40o.bmp
deleted file mode 100644
index bb0c457..0000000
Binary files a/winboard/bitmaps/b40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b40s.bmp b/winboard/bitmaps/b40s.bmp
deleted file mode 100644
index 4664ff2..0000000
Binary files a/winboard/bitmaps/b40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b40w.bmp b/winboard/bitmaps/b40w.bmp
deleted file mode 100644
index 239e2fe..0000000
Binary files a/winboard/bitmaps/b40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b45o.bmp b/winboard/bitmaps/b45o.bmp
deleted file mode 100644
index 5cd3765..0000000
Binary files a/winboard/bitmaps/b45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b45s.bmp b/winboard/bitmaps/b45s.bmp
deleted file mode 100644
index 285e968..0000000
Binary files a/winboard/bitmaps/b45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b45w.bmp b/winboard/bitmaps/b45w.bmp
deleted file mode 100644
index dec307a..0000000
Binary files a/winboard/bitmaps/b45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b49o.bmp b/winboard/bitmaps/b49o.bmp
deleted file mode 100644
index b643dc3..0000000
Binary files a/winboard/bitmaps/b49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b49s.bmp b/winboard/bitmaps/b49s.bmp
deleted file mode 100644
index 1a7f30c..0000000
Binary files a/winboard/bitmaps/b49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b49w.bmp b/winboard/bitmaps/b49w.bmp
deleted file mode 100644
index 8a294bb..0000000
Binary files a/winboard/bitmaps/b49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b54o.bmp b/winboard/bitmaps/b54o.bmp
deleted file mode 100644
index 5020224..0000000
Binary files a/winboard/bitmaps/b54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b54s.bmp b/winboard/bitmaps/b54s.bmp
deleted file mode 100644
index cb770e5..0000000
Binary files a/winboard/bitmaps/b54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b54w.bmp b/winboard/bitmaps/b54w.bmp
deleted file mode 100644
index 011e8a9..0000000
Binary files a/winboard/bitmaps/b54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b58o.bmp b/winboard/bitmaps/b58o.bmp
deleted file mode 100644
index c8d3bd8..0000000
Binary files a/winboard/bitmaps/b58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b58s.bmp b/winboard/bitmaps/b58s.bmp
deleted file mode 100644
index f7c9220..0000000
Binary files a/winboard/bitmaps/b58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b58w.bmp b/winboard/bitmaps/b58w.bmp
deleted file mode 100644
index 6a808b2..0000000
Binary files a/winboard/bitmaps/b58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b64o.bmp b/winboard/bitmaps/b64o.bmp
deleted file mode 100644
index 52f14ac..0000000
Binary files a/winboard/bitmaps/b64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b64s.bmp b/winboard/bitmaps/b64s.bmp
deleted file mode 100644
index a24c96e..0000000
Binary files a/winboard/bitmaps/b64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b64w.bmp b/winboard/bitmaps/b64w.bmp
deleted file mode 100644
index acf8351..0000000
Binary files a/winboard/bitmaps/b64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b72o.bmp b/winboard/bitmaps/b72o.bmp
deleted file mode 100644
index e0010bb..0000000
Binary files a/winboard/bitmaps/b72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b72s.bmp b/winboard/bitmaps/b72s.bmp
deleted file mode 100644
index a91b41d..0000000
Binary files a/winboard/bitmaps/b72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b72w.bmp b/winboard/bitmaps/b72w.bmp
deleted file mode 100644
index 76f2128..0000000
Binary files a/winboard/bitmaps/b72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b80o.bmp b/winboard/bitmaps/b80o.bmp
deleted file mode 100644
index 3a72bfe..0000000
Binary files a/winboard/bitmaps/b80o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b80s.bmp b/winboard/bitmaps/b80s.bmp
deleted file mode 100644
index c9eef7a..0000000
Binary files a/winboard/bitmaps/b80s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b80w.bmp b/winboard/bitmaps/b80w.bmp
deleted file mode 100644
index ecaf147..0000000
Binary files a/winboard/bitmaps/b80w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b87o.bmp b/winboard/bitmaps/b87o.bmp
deleted file mode 100644
index 202994b..0000000
Binary files a/winboard/bitmaps/b87o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b87s.bmp b/winboard/bitmaps/b87s.bmp
deleted file mode 100644
index d5baa5c..0000000
Binary files a/winboard/bitmaps/b87s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b87w.bmp b/winboard/bitmaps/b87w.bmp
deleted file mode 100644
index 540b4c9..0000000
Binary files a/winboard/bitmaps/b87w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b95o.bmp b/winboard/bitmaps/b95o.bmp
deleted file mode 100644
index fea8eff..0000000
Binary files a/winboard/bitmaps/b95o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b95s.bmp b/winboard/bitmaps/b95s.bmp
deleted file mode 100644
index c288c7f..0000000
Binary files a/winboard/bitmaps/b95s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/b95w.bmp b/winboard/bitmaps/b95w.bmp
deleted file mode 100644
index 565deb0..0000000
Binary files a/winboard/bitmaps/b95w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/baloon_14.ico b/winboard/bitmaps/baloon_14.ico
deleted file mode 100644
index dfe056f..0000000
Binary files a/winboard/bitmaps/baloon_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/bas.gif b/winboard/bitmaps/bas.gif
deleted file mode 100644
index 7376f7e..0000000
Binary files a/winboard/bitmaps/bas.gif and /dev/null differ
diff --git a/winboard/bitmaps/bcv.gif b/winboard/bitmaps/bcv.gif
deleted file mode 100644
index 6576cf8..0000000
Binary files a/winboard/bitmaps/bcv.gif and /dev/null differ
diff --git a/winboard/bitmaps/bitmaps.h b/winboard/bitmaps/bitmaps.h
deleted file mode 100644
index b2e46cb..0000000
--- a/winboard/bitmaps/bitmaps.h
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * bitmaps.h - Include bitmap files for pieces and icons
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts.  
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "p129s.bm"
-#include "n129s.bm"
-#include "b129s.bm"
-#include "r129s.bm"
-#include "q129s.bm"
-#include "k129s.bm"
-
-#include "p129o.bm"
-#include "n129o.bm"
-#include "b129o.bm"
-#include "r129o.bm"
-#include "q129o.bm"
-#include "k129o.bm"
-
-#include "p116s.bm"
-#include "n116s.bm"
-#include "b116s.bm"
-#include "r116s.bm"
-#include "q116s.bm"
-#include "k116s.bm"
-
-#include "p116o.bm"
-#include "n116o.bm"
-#include "b116o.bm"
-#include "r116o.bm"
-#include "q116o.bm"
-#include "k116o.bm"
-
-#include "p108s.bm"
-#include "n108s.bm"
-#include "b108s.bm"
-#include "r108s.bm"
-#include "q108s.bm"
-#include "k108s.bm"
-
-#include "p108o.bm"
-#include "n108o.bm"
-#include "b108o.bm"
-#include "r108o.bm"
-#include "q108o.bm"
-#include "k108o.bm"
-
-#include "p95s.bm"
-#include "n95s.bm"
-#include "b95s.bm"
-#include "r95s.bm"
-#include "q95s.bm"
-#include "k95s.bm"
-
-#include "p95o.bm"
-#include "n95o.bm"
-#include "b95o.bm"
-#include "r95o.bm"
-#include "q95o.bm"
-#include "k95o.bm"
-
-#include "p87s.bm"
-#include "n87s.bm"
-#include "b87s.bm"
-#include "r87s.bm"
-#include "q87s.bm"
-#include "k87s.bm"
-
-#include "p87o.bm"
-#include "n87o.bm"
-#include "b87o.bm"
-#include "r87o.bm"
-#include "q87o.bm"
-#include "k87o.bm"
-
-#include "p80s.bm"
-#include "n80s.bm"
-#include "b80s.bm"
-#include "r80s.bm"
-#include "q80s.bm"
-#include "k80s.bm"
-
-#include "p80o.bm"
-#include "n80o.bm"
-#include "b80o.bm"
-#include "r80o.bm"
-#include "q80o.bm"
-#include "k80o.bm"
-
-#include "p72s.bm"
-#include "n72s.bm"
-#include "b72s.bm"
-#include "r72s.bm"
-#include "q72s.bm"
-#include "k72s.bm"
-
-#include "p72o.bm"
-#include "n72o.bm"
-#include "b72o.bm"
-#include "r72o.bm"
-#include "q72o.bm"
-#include "k72o.bm"
-
-#include "p64s.bm"
-#include "n64s.bm"
-#include "b64s.bm"
-#include "r64s.bm"
-#include "q64s.bm"
-#include "k64s.bm"
-
-#include "p64o.bm"
-#include "n64o.bm"
-#include "b64o.bm"
-#include "r64o.bm"
-#include "q64o.bm"
-#include "k64o.bm"
-
-#include "p58s.bm"
-#include "n58s.bm"
-#include "b58s.bm"
-#include "r58s.bm"
-#include "q58s.bm"
-#include "k58s.bm"
-
-#include "p58o.bm"
-#include "n58o.bm"
-#include "b58o.bm"
-#include "r58o.bm"
-#include "q58o.bm"
-#include "k58o.bm"
-
-#include "p54s.bm"
-#include "n54s.bm"
-#include "b54s.bm"
-#include "r54s.bm"
-#include "q54s.bm"
-#include "k54s.bm"
-
-#include "p54o.bm"
-#include "n54o.bm"
-#include "b54o.bm"
-#include "r54o.bm"
-#include "q54o.bm"
-#include "k54o.bm"
-
-#include "p49s.bm"
-#include "n49s.bm"
-#include "b49s.bm"
-#include "r49s.bm"
-#include "q49s.bm"
-#include "k49s.bm"
-
-#include "p49o.bm"
-#include "n49o.bm"
-#include "b49o.bm"
-#include "r49o.bm"
-#include "q49o.bm"
-#include "k49o.bm"
-
-#include "p45s.bm"
-#include "n45s.bm"
-#include "b45s.bm"
-#include "r45s.bm"
-#include "q45s.bm"
-#include "k45s.bm"
-
-#include "p45o.bm"
-#include "n45o.bm"
-#include "b45o.bm"
-#include "r45o.bm"
-#include "q45o.bm"
-#include "k45o.bm"
-
-#include "p40s.bm"
-#include "n40s.bm"
-#include "b40s.bm"
-#include "r40s.bm"
-#include "q40s.bm"
-#include "k40s.bm"
-
-#include "p40o.bm"
-#include "n40o.bm"
-#include "b40o.bm"
-#include "r40o.bm"
-#include "q40o.bm"
-#include "k40o.bm"
-
-#include "p37s.bm"
-#include "n37s.bm"
-#include "b37s.bm"
-#include "r37s.bm"
-#include "q37s.bm"
-#include "k37s.bm"
-
-#include "p37o.bm"
-#include "n37o.bm"
-#include "b37o.bm"
-#include "r37o.bm"
-#include "q37o.bm"
-#include "k37o.bm"
-
-#include "p33s.bm"
-#include "n33s.bm"
-#include "b33s.bm"
-#include "r33s.bm"
-#include "q33s.bm"
-#include "k33s.bm"
-
-#include "p33o.bm"
-#include "n33o.bm"
-#include "b33o.bm"
-#include "r33o.bm"
-#include "q33o.bm"
-#include "k33o.bm"
-
-#include "p29s.bm"
-#include "n29s.bm"
-#include "b29s.bm"
-#include "r29s.bm"
-#include "q29s.bm"
-#include "k29s.bm"
-
-#include "p29o.bm"
-#include "n29o.bm"
-#include "b29o.bm"
-#include "r29o.bm"
-#include "q29o.bm"
-#include "k29o.bm"
-
-#include "p25s.bm"
-#include "n25s.bm"
-#include "b25s.bm"
-#include "r25s.bm"
-#include "q25s.bm"
-#include "k25s.bm"
-
-#include "p25o.bm"
-#include "n25o.bm"
-#include "b25o.bm"
-#include "r25o.bm"
-#include "q25o.bm"
-#include "k25o.bm"
-
-#include "p21s.bm"
-#include "n21s.bm"
-#include "b21s.bm"
-#include "r21s.bm"
-#include "q21s.bm"
-#include "k21s.bm"
-
-#include "p21o.bm"
-#include "n21o.bm"
-#include "b21o.bm"
-#include "r21o.bm"
-#include "q21o.bm"
-#include "k21o.bm"
-
-typedef struct {
-    int squareSize;
-    unsigned char *bits[2][6];
-} BuiltInBits;
-
-BuiltInBits builtInBits[] = {\
-{ 129,\
-  { { p129s_bits, n129s_bits, b129s_bits, r129s_bits, q129s_bits, k129s_bits },\
-    { p129o_bits, n129o_bits, b129o_bits, r129o_bits, q129o_bits, k129o_bits } } },\
-{ 116,\
-  { { p116s_bits, n116s_bits, b116s_bits, r116s_bits, q116s_bits, k116s_bits },\
-    { p116o_bits, n116o_bits, b116o_bits, r116o_bits, q116o_bits, k116o_bits } } },\
-{ 108,\
-  { { p108s_bits, n108s_bits, b108s_bits, r108s_bits, q108s_bits, k108s_bits },\
-    { p108o_bits, n108o_bits, b108o_bits, r108o_bits, q108o_bits, k108o_bits } } },\
-{ 95,\
-  { { p95s_bits, n95s_bits, b95s_bits, r95s_bits, q95s_bits, k95s_bits },\
-    { p95o_bits, n95o_bits, b95o_bits, r95o_bits, q95o_bits, k95o_bits } } },\
-{ 87,\
-  { { p87s_bits, n87s_bits, b87s_bits, r87s_bits, q87s_bits, k87s_bits },\
-    { p87o_bits, n87o_bits, b87o_bits, r87o_bits, q87o_bits, k87o_bits } } },\
-{ 80,\
-  { { p80s_bits, n80s_bits, b80s_bits, r80s_bits, q80s_bits, k80s_bits },\
-    { p80o_bits, n80o_bits, b80o_bits, r80o_bits, q80o_bits, k80o_bits } } },\
-{ 72,\
-  { { p72s_bits, n72s_bits, b72s_bits, r72s_bits, q72s_bits, k72s_bits },\
-    { p72o_bits, n72o_bits, b72o_bits, r72o_bits, q72o_bits, k72o_bits } } },\
-{ 64,\
-  { { p64s_bits, n64s_bits, b64s_bits, r64s_bits, q64s_bits, k64s_bits },\
-    { p64o_bits, n64o_bits, b64o_bits, r64o_bits, q64o_bits, k64o_bits } } },\
-{ 58,\
-  { { p58s_bits, n58s_bits, b58s_bits, r58s_bits, q58s_bits, k58s_bits },\
-    { p58o_bits, n58o_bits, b58o_bits, r58o_bits, q58o_bits, k58o_bits } } },\
-{ 54,\
-  { { p54s_bits, n54s_bits, b54s_bits, r54s_bits, q54s_bits, k54s_bits },\
-    { p54o_bits, n54o_bits, b54o_bits, r54o_bits, q54o_bits, k54o_bits } } },\
-{ 49,\
-  { { p49s_bits, n49s_bits, b49s_bits, r49s_bits, q49s_bits, k49s_bits },\
-    { p49o_bits, n49o_bits, b49o_bits, r49o_bits, q49o_bits, k49o_bits } } },\
-{ 45,\
-  { { p45s_bits, n45s_bits, b45s_bits, r45s_bits, q45s_bits, k45s_bits },\
-    { p45o_bits, n45o_bits, b45o_bits, r45o_bits, q45o_bits, k45o_bits } } },\
-{ 40,\
-  { { p40s_bits, n40s_bits, b40s_bits, r40s_bits, q40s_bits, k40s_bits },\
-    { p40o_bits, n40o_bits, b40o_bits, r40o_bits, q40o_bits, k40o_bits } } },\
-{ 37,\
-  { { p37s_bits, n37s_bits, b37s_bits, r37s_bits, q37s_bits, k37s_bits },\
-    { p37o_bits, n37o_bits, b37o_bits, r37o_bits, q37o_bits, k37o_bits } } },\
-{ 33,\
-  { { p33s_bits, n33s_bits, b33s_bits, r33s_bits, q33s_bits, k33s_bits },\
-    { p33o_bits, n33o_bits, b33o_bits, r33o_bits, q33o_bits, k33o_bits } } },\
-{ 29,\
-  { { p29s_bits, n29s_bits, b29s_bits, r29s_bits, q29s_bits, k29s_bits },\
-    { p29o_bits, n29o_bits, b29o_bits, r29o_bits, q29o_bits, k29o_bits } } },\
-{ 25,\
-  { { p25s_bits, n25s_bits, b25s_bits, r25s_bits, q25s_bits, k25s_bits },\
-    { p25o_bits, n25o_bits, b25o_bits, r25o_bits, q25o_bits, k25o_bits } } },\
-{ 21,\
-  { { p21s_bits, n21s_bits, b21s_bits, r21s_bits, q21s_bits, k21s_bits },\
-    { p21o_bits, n21o_bits, b21o_bits, r21o_bits, q21o_bits, k21o_bits } } },\
-{ 0,\
-  { { NULL, NULL, NULL, NULL, NULL, NULL },\
-    { NULL, NULL, NULL, NULL, NULL, NULL } } }\
-};
-
diff --git a/winboard/bitmaps/black_14.ico b/winboard/bitmaps/black_14.ico
deleted file mode 100644
index 9661f7c..0000000
Binary files a/winboard/bitmaps/black_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/board.ico b/winboard/bitmaps/board.ico
deleted file mode 100644
index 62f0714..0000000
Binary files a/winboard/bitmaps/board.ico and /dev/null differ
diff --git a/winboard/bitmaps/c33o.bmp b/winboard/bitmaps/c33o.bmp
deleted file mode 100644
index d2fb0ff..0000000
Binary files a/winboard/bitmaps/c33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c33s.bmp b/winboard/bitmaps/c33s.bmp
deleted file mode 100644
index 895e0a8..0000000
Binary files a/winboard/bitmaps/c33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c33w.bmp b/winboard/bitmaps/c33w.bmp
deleted file mode 100644
index 057bca0..0000000
Binary files a/winboard/bitmaps/c33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c37o.bmp b/winboard/bitmaps/c37o.bmp
deleted file mode 100644
index 882afe0..0000000
Binary files a/winboard/bitmaps/c37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c37s.bmp b/winboard/bitmaps/c37s.bmp
deleted file mode 100644
index 6f3b87b..0000000
Binary files a/winboard/bitmaps/c37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c37w.bmp b/winboard/bitmaps/c37w.bmp
deleted file mode 100644
index f7e076d..0000000
Binary files a/winboard/bitmaps/c37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c40o.bmp b/winboard/bitmaps/c40o.bmp
deleted file mode 100644
index b5677fc..0000000
Binary files a/winboard/bitmaps/c40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c40s.bmp b/winboard/bitmaps/c40s.bmp
deleted file mode 100644
index 7af0713..0000000
Binary files a/winboard/bitmaps/c40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c40w.bmp b/winboard/bitmaps/c40w.bmp
deleted file mode 100644
index a0b8d15..0000000
Binary files a/winboard/bitmaps/c40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c45o.bmp b/winboard/bitmaps/c45o.bmp
deleted file mode 100644
index 971b7d0..0000000
Binary files a/winboard/bitmaps/c45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c45s.bmp b/winboard/bitmaps/c45s.bmp
deleted file mode 100644
index 775ac47..0000000
Binary files a/winboard/bitmaps/c45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c45w.bmp b/winboard/bitmaps/c45w.bmp
deleted file mode 100644
index 3b9687c..0000000
Binary files a/winboard/bitmaps/c45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c49o.bmp b/winboard/bitmaps/c49o.bmp
deleted file mode 100644
index fd470a9..0000000
Binary files a/winboard/bitmaps/c49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c49s.bmp b/winboard/bitmaps/c49s.bmp
deleted file mode 100644
index bac2d94..0000000
Binary files a/winboard/bitmaps/c49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c49w.bmp b/winboard/bitmaps/c49w.bmp
deleted file mode 100644
index 069a524..0000000
Binary files a/winboard/bitmaps/c49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c54o.bmp b/winboard/bitmaps/c54o.bmp
deleted file mode 100644
index 6a597db..0000000
Binary files a/winboard/bitmaps/c54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c54s.bmp b/winboard/bitmaps/c54s.bmp
deleted file mode 100644
index 4571271..0000000
Binary files a/winboard/bitmaps/c54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c54w.bmp b/winboard/bitmaps/c54w.bmp
deleted file mode 100644
index 61caf6d..0000000
Binary files a/winboard/bitmaps/c54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c58o.bmp b/winboard/bitmaps/c58o.bmp
deleted file mode 100644
index 15d110e..0000000
Binary files a/winboard/bitmaps/c58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c58s.bmp b/winboard/bitmaps/c58s.bmp
deleted file mode 100644
index 0bb3cf9..0000000
Binary files a/winboard/bitmaps/c58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c58w.bmp b/winboard/bitmaps/c58w.bmp
deleted file mode 100644
index 41f05cf..0000000
Binary files a/winboard/bitmaps/c58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c64o.bmp b/winboard/bitmaps/c64o.bmp
deleted file mode 100644
index 6edd01e..0000000
Binary files a/winboard/bitmaps/c64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c64s.bmp b/winboard/bitmaps/c64s.bmp
deleted file mode 100644
index 6dac16f..0000000
Binary files a/winboard/bitmaps/c64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c64w.bmp b/winboard/bitmaps/c64w.bmp
deleted file mode 100644
index 5c3c8ff..0000000
Binary files a/winboard/bitmaps/c64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c72o.bmp b/winboard/bitmaps/c72o.bmp
deleted file mode 100644
index 28bc14f..0000000
Binary files a/winboard/bitmaps/c72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c72s.bmp b/winboard/bitmaps/c72s.bmp
deleted file mode 100644
index 963afdf..0000000
Binary files a/winboard/bitmaps/c72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/c72w.bmp b/winboard/bitmaps/c72w.bmp
deleted file mode 100644
index d1f773d..0000000
Binary files a/winboard/bitmaps/c72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/clock_14.ico b/winboard/bitmaps/clock_14.ico
deleted file mode 100644
index 0785d5c..0000000
Binary files a/winboard/bitmaps/clock_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/convert.c b/winboard/bitmaps/convert.c
deleted file mode 100644
index c56cf4e..0000000
--- a/winboard/bitmaps/convert.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include <stdio.h>
-
-// [HGM] This program converts a WinBoard monochrome .bmp piece-symbol bitmap file
-//       to a .bm C-source file suitable for inclusion in xboard as buit-in bitmap.
-//       You will have to convert the bitmaps one by one, and re-direct the output to the desired file!
-
-main(int argc, char **argv)
-{
-	int i, j, k, d, cnt; char c, h, w, *p, data[10000], *name;
-	FILE *f;
-
-	if(argc<2) { printf("usage is: convert <bmp filename>\n"); exit(0); }
-	f = fopen(argv[1], "rb");
-	if(f == NULL) { printf("file %s not found\n", argv[1]); exit(0); }
-
-	if(fscanf(f, "BM%c", &i) != 1) { printf("%s does not have bitmap format\n"); exit(0); }
-	for(i=0; i<15; i++) fgetc(f); fscanf(f, "%c%c%c%c%c", &h, &i, &i, &i, &w);
-	for(i=0; i<39; i++) fgetc(f);
-
-// printf("h=%d, w=%d\n", h, w);
-
-	p = data;
-	for(i=0; i<h; i++) {
-		for(j=0; j<w; j+=32) {
-			c = fgetc(f);
-			for(k=0; k<8; k++) {
-				d = (d>>1) | (c&0x80);
-				c <<= 1;
-			}
-			*p++ = d;
-			c = fgetc(f);
-			for(k=0; k<8; k++) {
-				d = (d>>1) | (c&0x80);
-				c <<= 1;
-			}
-			*p++ = d;
-			c = fgetc(f);
-			for(k=0; k<8; k++) {
-				d = (d>>1) | (c&0x80);
-				c <<= 1;
-			}
-			*p++ = d;
-			c = fgetc(f);
-			for(k=0; k<8; k++) {
-				d = (d>>1) | (c&0x80);
-				c <<= 1;
-			}
-			*p++ = d;
-		}
-	}
-
-	name = argv[1];
-	for(i=0; argv[1][i]; i++) if(argv[1][i] == '\\') name = argv[1]+i+1;
-	for(i=0; name[i]; i++) if(name[i] == '.') name[i] = 0;
-	printf("#define %s_width %d\n", name, w);
-	printf("#define %s_height %d\n", name, h);
-	printf("static char %s_bits[] = {\n", name);
-	cnt = 0;
-	for(i=h-1; i>=0; i--) {
-		for(j=0; j<w; j+=8) {
-			c = ~data[i*((w+31)/8&~3)+j/8];
-			if(w-j<8) c &= 255>>(8+j-w);
-//			for(k=0; k<8; k++) {
-//				printf("%c", c&1 ? 'X' : '.');
-//				c >>= 1;
-//			}
-			if(cnt!=0) printf(",");
-			printf("0x%02x", c&255);
-			if(++cnt % 15 == 0) { printf("\n"); }
-		}
-	}
-	printf("\n};\n");
-}
diff --git a/winboard/bitmaps/convert.exe b/winboard/bitmaps/convert.exe
deleted file mode 100644
index 713a2fc..0000000
Binary files a/winboard/bitmaps/convert.exe and /dev/null differ
diff --git a/winboard/bitmaps/cv33o.bmp b/winboard/bitmaps/cv33o.bmp
deleted file mode 100644
index eba036e..0000000
Binary files a/winboard/bitmaps/cv33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv33s.bmp b/winboard/bitmaps/cv33s.bmp
deleted file mode 100644
index 31f6a45..0000000
Binary files a/winboard/bitmaps/cv33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv33w.bmp b/winboard/bitmaps/cv33w.bmp
deleted file mode 100644
index 7a86530..0000000
Binary files a/winboard/bitmaps/cv33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv37o.bmp b/winboard/bitmaps/cv37o.bmp
deleted file mode 100644
index 9075dd6..0000000
Binary files a/winboard/bitmaps/cv37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv37s.bmp b/winboard/bitmaps/cv37s.bmp
deleted file mode 100644
index 1b31080..0000000
Binary files a/winboard/bitmaps/cv37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv37w.bmp b/winboard/bitmaps/cv37w.bmp
deleted file mode 100644
index abf95b3..0000000
Binary files a/winboard/bitmaps/cv37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv40o.bmp b/winboard/bitmaps/cv40o.bmp
deleted file mode 100644
index 7fe8326..0000000
Binary files a/winboard/bitmaps/cv40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv40s.bmp b/winboard/bitmaps/cv40s.bmp
deleted file mode 100644
index bb2065e..0000000
Binary files a/winboard/bitmaps/cv40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv40w.bmp b/winboard/bitmaps/cv40w.bmp
deleted file mode 100644
index cc195bb..0000000
Binary files a/winboard/bitmaps/cv40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv45o.bmp b/winboard/bitmaps/cv45o.bmp
deleted file mode 100644
index 55b4087..0000000
Binary files a/winboard/bitmaps/cv45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv45s.bmp b/winboard/bitmaps/cv45s.bmp
deleted file mode 100644
index 22b05b7..0000000
Binary files a/winboard/bitmaps/cv45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv45w.bmp b/winboard/bitmaps/cv45w.bmp
deleted file mode 100644
index 250984d..0000000
Binary files a/winboard/bitmaps/cv45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv49o.bmp b/winboard/bitmaps/cv49o.bmp
deleted file mode 100644
index 95fd748..0000000
Binary files a/winboard/bitmaps/cv49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv49s.bmp b/winboard/bitmaps/cv49s.bmp
deleted file mode 100644
index 5fc24b9..0000000
Binary files a/winboard/bitmaps/cv49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv49w.bmp b/winboard/bitmaps/cv49w.bmp
deleted file mode 100644
index cbf8e92..0000000
Binary files a/winboard/bitmaps/cv49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv54o.bmp b/winboard/bitmaps/cv54o.bmp
deleted file mode 100644
index a74cbbb..0000000
Binary files a/winboard/bitmaps/cv54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv54s.bmp b/winboard/bitmaps/cv54s.bmp
deleted file mode 100644
index 9c5bd8b..0000000
Binary files a/winboard/bitmaps/cv54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv54w.bmp b/winboard/bitmaps/cv54w.bmp
deleted file mode 100644
index fff12e3..0000000
Binary files a/winboard/bitmaps/cv54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv58o.bmp b/winboard/bitmaps/cv58o.bmp
deleted file mode 100644
index 1622ca5..0000000
Binary files a/winboard/bitmaps/cv58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv58s.bmp b/winboard/bitmaps/cv58s.bmp
deleted file mode 100644
index 5b7674d..0000000
Binary files a/winboard/bitmaps/cv58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv58w.bmp b/winboard/bitmaps/cv58w.bmp
deleted file mode 100644
index 2f37d5b..0000000
Binary files a/winboard/bitmaps/cv58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv64o.bmp b/winboard/bitmaps/cv64o.bmp
deleted file mode 100644
index 522bb6c..0000000
Binary files a/winboard/bitmaps/cv64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv64s.bmp b/winboard/bitmaps/cv64s.bmp
deleted file mode 100644
index 1787acd..0000000
Binary files a/winboard/bitmaps/cv64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv64w.bmp b/winboard/bitmaps/cv64w.bmp
deleted file mode 100644
index b3e1bfd..0000000
Binary files a/winboard/bitmaps/cv64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv72o.bmp b/winboard/bitmaps/cv72o.bmp
deleted file mode 100644
index d72c45d..0000000
Binary files a/winboard/bitmaps/cv72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv72s.bmp b/winboard/bitmaps/cv72s.bmp
deleted file mode 100644
index e22fdd5..0000000
Binary files a/winboard/bitmaps/cv72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/cv72w.bmp b/winboard/bitmaps/cv72w.bmp
deleted file mode 100644
index 65e7e1d..0000000
Binary files a/winboard/bitmaps/cv72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk33o.bmp b/winboard/bitmaps/dk33o.bmp
deleted file mode 100644
index 9b00f94..0000000
Binary files a/winboard/bitmaps/dk33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk33s.bmp b/winboard/bitmaps/dk33s.bmp
deleted file mode 100644
index f1c8bc9..0000000
Binary files a/winboard/bitmaps/dk33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk33w.bmp b/winboard/bitmaps/dk33w.bmp
deleted file mode 100644
index c77c3b2..0000000
Binary files a/winboard/bitmaps/dk33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk49o.bmp b/winboard/bitmaps/dk49o.bmp
deleted file mode 100644
index e3f6f3a..0000000
Binary files a/winboard/bitmaps/dk49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk49s.bmp b/winboard/bitmaps/dk49s.bmp
deleted file mode 100644
index 46b05b1..0000000
Binary files a/winboard/bitmaps/dk49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk49w.bmp b/winboard/bitmaps/dk49w.bmp
deleted file mode 100644
index 4e05b8f..0000000
Binary files a/winboard/bitmaps/dk49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk72o.bmp b/winboard/bitmaps/dk72o.bmp
deleted file mode 100644
index e531478..0000000
Binary files a/winboard/bitmaps/dk72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk72s.bmp b/winboard/bitmaps/dk72s.bmp
deleted file mode 100644
index da3d696..0000000
Binary files a/winboard/bitmaps/dk72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/dk72w.bmp b/winboard/bitmaps/dk72w.bmp
deleted file mode 100644
index 66ee835..0000000
Binary files a/winboard/bitmaps/dk72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e129o.bmp b/winboard/bitmaps/e129o.bmp
deleted file mode 100644
index f464adf..0000000
Binary files a/winboard/bitmaps/e129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e33o.bmp b/winboard/bitmaps/e33o.bmp
deleted file mode 100644
index b7f0aac..0000000
Binary files a/winboard/bitmaps/e33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e33s.bmp b/winboard/bitmaps/e33s.bmp
deleted file mode 100644
index d132c2d..0000000
Binary files a/winboard/bitmaps/e33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e33w.bmp b/winboard/bitmaps/e33w.bmp
deleted file mode 100644
index 2ce9548..0000000
Binary files a/winboard/bitmaps/e33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e49o.bmp b/winboard/bitmaps/e49o.bmp
deleted file mode 100644
index ebb5c6b..0000000
Binary files a/winboard/bitmaps/e49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e49s.bmp b/winboard/bitmaps/e49s.bmp
deleted file mode 100644
index 46ffee2..0000000
Binary files a/winboard/bitmaps/e49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e49w.bmp b/winboard/bitmaps/e49w.bmp
deleted file mode 100644
index b2f3587..0000000
Binary files a/winboard/bitmaps/e49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e72o.bmp b/winboard/bitmaps/e72o.bmp
deleted file mode 100644
index e6c8d83..0000000
Binary files a/winboard/bitmaps/e72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e72s.bmp b/winboard/bitmaps/e72s.bmp
deleted file mode 100644
index 6d756a5..0000000
Binary files a/winboard/bitmaps/e72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/e72w.bmp b/winboard/bitmaps/e72w.bmp
deleted file mode 100644
index 2339883..0000000
Binary files a/winboard/bitmaps/e72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f33o.bmp b/winboard/bitmaps/f33o.bmp
deleted file mode 100644
index 588010b..0000000
Binary files a/winboard/bitmaps/f33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f33s.bmp b/winboard/bitmaps/f33s.bmp
deleted file mode 100644
index 6ef112d..0000000
Binary files a/winboard/bitmaps/f33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f33w.bmp b/winboard/bitmaps/f33w.bmp
deleted file mode 100644
index b7f7069..0000000
Binary files a/winboard/bitmaps/f33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f49o.bmp b/winboard/bitmaps/f49o.bmp
deleted file mode 100644
index 9653fa6..0000000
Binary files a/winboard/bitmaps/f49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f49s.bmp b/winboard/bitmaps/f49s.bmp
deleted file mode 100644
index f85fb56..0000000
Binary files a/winboard/bitmaps/f49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f49w.bmp b/winboard/bitmaps/f49w.bmp
deleted file mode 100644
index 98f0b16..0000000
Binary files a/winboard/bitmaps/f49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f72o.bmp b/winboard/bitmaps/f72o.bmp
deleted file mode 100644
index 257c225..0000000
Binary files a/winboard/bitmaps/f72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f72s.bmp b/winboard/bitmaps/f72s.bmp
deleted file mode 100644
index 271e64f..0000000
Binary files a/winboard/bitmaps/f72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/f72w.bmp b/winboard/bitmaps/f72w.bmp
deleted file mode 100644
index 3347e0f..0000000
Binary files a/winboard/bitmaps/f72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g33o.bmp b/winboard/bitmaps/g33o.bmp
deleted file mode 100644
index 6f3cc18..0000000
Binary files a/winboard/bitmaps/g33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g33s.bmp b/winboard/bitmaps/g33s.bmp
deleted file mode 100644
index 31dd9e8..0000000
Binary files a/winboard/bitmaps/g33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g33w.bmp b/winboard/bitmaps/g33w.bmp
deleted file mode 100644
index 0c52cea..0000000
Binary files a/winboard/bitmaps/g33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g49o.bmp b/winboard/bitmaps/g49o.bmp
deleted file mode 100644
index 2930420..0000000
Binary files a/winboard/bitmaps/g49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g49s.bmp b/winboard/bitmaps/g49s.bmp
deleted file mode 100644
index 835cd41..0000000
Binary files a/winboard/bitmaps/g49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g49w.bmp b/winboard/bitmaps/g49w.bmp
deleted file mode 100644
index 4cf34ac..0000000
Binary files a/winboard/bitmaps/g49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g72o.bmp b/winboard/bitmaps/g72o.bmp
deleted file mode 100644
index 6eb6bcf..0000000
Binary files a/winboard/bitmaps/g72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g72s.bmp b/winboard/bitmaps/g72s.bmp
deleted file mode 100644
index 751be79..0000000
Binary files a/winboard/bitmaps/g72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/g72w.bmp b/winboard/bitmaps/g72w.bmp
deleted file mode 100644
index aaae0c4..0000000
Binary files a/winboard/bitmaps/g72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/galactic.bmp b/winboard/bitmaps/galactic.bmp
deleted file mode 100644
index 7dc277e..0000000
Binary files a/winboard/bitmaps/galactic.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h129o.bmp b/winboard/bitmaps/h129o.bmp
deleted file mode 100644
index 563da93..0000000
Binary files a/winboard/bitmaps/h129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h33o.bmp b/winboard/bitmaps/h33o.bmp
deleted file mode 100644
index d811f80..0000000
Binary files a/winboard/bitmaps/h33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h33s.bmp b/winboard/bitmaps/h33s.bmp
deleted file mode 100644
index 95e5dbe..0000000
Binary files a/winboard/bitmaps/h33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h33w.bmp b/winboard/bitmaps/h33w.bmp
deleted file mode 100644
index cebb7a3..0000000
Binary files a/winboard/bitmaps/h33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h49o.bmp b/winboard/bitmaps/h49o.bmp
deleted file mode 100644
index 8ae9967..0000000
Binary files a/winboard/bitmaps/h49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h49s.bmp b/winboard/bitmaps/h49s.bmp
deleted file mode 100644
index 1ace8fe..0000000
Binary files a/winboard/bitmaps/h49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h49w.bmp b/winboard/bitmaps/h49w.bmp
deleted file mode 100644
index 0163d1e..0000000
Binary files a/winboard/bitmaps/h49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h72o.bmp b/winboard/bitmaps/h72o.bmp
deleted file mode 100644
index cdef69a..0000000
Binary files a/winboard/bitmaps/h72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h72s.bmp b/winboard/bitmaps/h72s.bmp
deleted file mode 100644
index 44baa80..0000000
Binary files a/winboard/bitmaps/h72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/h72w.bmp b/winboard/bitmaps/h72w.bmp
deleted file mode 100644
index eac2216..0000000
Binary files a/winboard/bitmaps/h72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/icon_b.bmp b/winboard/bitmaps/icon_b.bmp
deleted file mode 100644
index 152809d..0000000
Binary files a/winboard/bitmaps/icon_b.bmp and /dev/null differ
diff --git a/winboard/bitmaps/icon_b.ico b/winboard/bitmaps/icon_b.ico
deleted file mode 100644
index 8555e72..0000000
Binary files a/winboard/bitmaps/icon_b.ico and /dev/null differ
diff --git a/winboard/bitmaps/icon_o.ico b/winboard/bitmaps/icon_o.ico
deleted file mode 100644
index e3051fd..0000000
Binary files a/winboard/bitmaps/icon_o.ico and /dev/null differ
diff --git a/winboard/bitmaps/icon_ob.ico b/winboard/bitmaps/icon_ob.ico
deleted file mode 100644
index 27cfe72..0000000
Binary files a/winboard/bitmaps/icon_ob.ico and /dev/null differ
diff --git a/winboard/bitmaps/icon_ow.ico b/winboard/bitmaps/icon_ow.ico
deleted file mode 100644
index 5ba5631..0000000
Binary files a/winboard/bitmaps/icon_ow.ico and /dev/null differ
diff --git a/winboard/bitmaps/icon_w.bmp b/winboard/bitmaps/icon_w.bmp
deleted file mode 100644
index c1a7c03..0000000
Binary files a/winboard/bitmaps/icon_w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/icon_w.ico b/winboard/bitmaps/icon_w.ico
deleted file mode 100644
index d0d803a..0000000
Binary files a/winboard/bitmaps/icon_w.ico and /dev/null differ
diff --git a/winboard/bitmaps/icon_whi.ico b/winboard/bitmaps/icon_whi.ico
deleted file mode 100644
index fd7b2db..0000000
Binary files a/winboard/bitmaps/icon_whi.ico and /dev/null differ
diff --git a/winboard/bitmaps/k108o.bmp b/winboard/bitmaps/k108o.bmp
deleted file mode 100644
index 3a38071..0000000
Binary files a/winboard/bitmaps/k108o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k108s.bmp b/winboard/bitmaps/k108s.bmp
deleted file mode 100644
index 854baff..0000000
Binary files a/winboard/bitmaps/k108s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k108w.bmp b/winboard/bitmaps/k108w.bmp
deleted file mode 100644
index 4fa8e67..0000000
Binary files a/winboard/bitmaps/k108w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k116o.bmp b/winboard/bitmaps/k116o.bmp
deleted file mode 100644
index eafb1f7..0000000
Binary files a/winboard/bitmaps/k116o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k116s.bmp b/winboard/bitmaps/k116s.bmp
deleted file mode 100644
index 5fce825..0000000
Binary files a/winboard/bitmaps/k116s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k116w.bmp b/winboard/bitmaps/k116w.bmp
deleted file mode 100644
index fd37812..0000000
Binary files a/winboard/bitmaps/k116w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k129o.bmp b/winboard/bitmaps/k129o.bmp
deleted file mode 100644
index c2c9bb2..0000000
Binary files a/winboard/bitmaps/k129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k129s.bmp b/winboard/bitmaps/k129s.bmp
deleted file mode 100644
index 91db0dd..0000000
Binary files a/winboard/bitmaps/k129s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k129w.bmp b/winboard/bitmaps/k129w.bmp
deleted file mode 100644
index 2901b42..0000000
Binary files a/winboard/bitmaps/k129w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k21o.bmp b/winboard/bitmaps/k21o.bmp
deleted file mode 100644
index 0d753d9..0000000
Binary files a/winboard/bitmaps/k21o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k21s.bmp b/winboard/bitmaps/k21s.bmp
deleted file mode 100644
index bbc70fc..0000000
Binary files a/winboard/bitmaps/k21s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k21w.bmp b/winboard/bitmaps/k21w.bmp
deleted file mode 100644
index ea0ad50..0000000
Binary files a/winboard/bitmaps/k21w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k25o.bmp b/winboard/bitmaps/k25o.bmp
deleted file mode 100644
index 8c17818..0000000
Binary files a/winboard/bitmaps/k25o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k25s.bmp b/winboard/bitmaps/k25s.bmp
deleted file mode 100644
index fcf180c..0000000
Binary files a/winboard/bitmaps/k25s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k25w.bmp b/winboard/bitmaps/k25w.bmp
deleted file mode 100644
index bcc7986..0000000
Binary files a/winboard/bitmaps/k25w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k29o.bmp b/winboard/bitmaps/k29o.bmp
deleted file mode 100644
index 4284322..0000000
Binary files a/winboard/bitmaps/k29o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k29s.bmp b/winboard/bitmaps/k29s.bmp
deleted file mode 100644
index aefee9a..0000000
Binary files a/winboard/bitmaps/k29s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k29w.bmp b/winboard/bitmaps/k29w.bmp
deleted file mode 100644
index 9bea2c5..0000000
Binary files a/winboard/bitmaps/k29w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k33o.bmp b/winboard/bitmaps/k33o.bmp
deleted file mode 100644
index ef6bd2a..0000000
Binary files a/winboard/bitmaps/k33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k33s.bmp b/winboard/bitmaps/k33s.bmp
deleted file mode 100644
index 8ac836d..0000000
Binary files a/winboard/bitmaps/k33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k33w.bmp b/winboard/bitmaps/k33w.bmp
deleted file mode 100644
index 4658756..0000000
Binary files a/winboard/bitmaps/k33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k37o.bmp b/winboard/bitmaps/k37o.bmp
deleted file mode 100644
index 34b1702..0000000
Binary files a/winboard/bitmaps/k37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k37s.bmp b/winboard/bitmaps/k37s.bmp
deleted file mode 100644
index d5ac9ac..0000000
Binary files a/winboard/bitmaps/k37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k37w.bmp b/winboard/bitmaps/k37w.bmp
deleted file mode 100644
index 5be036f..0000000
Binary files a/winboard/bitmaps/k37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k40o.bmp b/winboard/bitmaps/k40o.bmp
deleted file mode 100644
index 52b02a3..0000000
Binary files a/winboard/bitmaps/k40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k40s.bmp b/winboard/bitmaps/k40s.bmp
deleted file mode 100644
index 5965e8c..0000000
Binary files a/winboard/bitmaps/k40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k40w.bmp b/winboard/bitmaps/k40w.bmp
deleted file mode 100644
index 098cc61..0000000
Binary files a/winboard/bitmaps/k40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k45o.bmp b/winboard/bitmaps/k45o.bmp
deleted file mode 100644
index 7fc08b3..0000000
Binary files a/winboard/bitmaps/k45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k45s.bmp b/winboard/bitmaps/k45s.bmp
deleted file mode 100644
index 4412cb5..0000000
Binary files a/winboard/bitmaps/k45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k45w.bmp b/winboard/bitmaps/k45w.bmp
deleted file mode 100644
index f6ef58f..0000000
Binary files a/winboard/bitmaps/k45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k49o.bmp b/winboard/bitmaps/k49o.bmp
deleted file mode 100644
index 912e63a..0000000
Binary files a/winboard/bitmaps/k49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k49s.bmp b/winboard/bitmaps/k49s.bmp
deleted file mode 100644
index bda98b0..0000000
Binary files a/winboard/bitmaps/k49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k49w.bmp b/winboard/bitmaps/k49w.bmp
deleted file mode 100644
index 985b675..0000000
Binary files a/winboard/bitmaps/k49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k54o.bmp b/winboard/bitmaps/k54o.bmp
deleted file mode 100644
index f3e9047..0000000
Binary files a/winboard/bitmaps/k54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k54s.bmp b/winboard/bitmaps/k54s.bmp
deleted file mode 100644
index 287d70b..0000000
Binary files a/winboard/bitmaps/k54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k54w.bmp b/winboard/bitmaps/k54w.bmp
deleted file mode 100644
index 0923c9b..0000000
Binary files a/winboard/bitmaps/k54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k58o.bmp b/winboard/bitmaps/k58o.bmp
deleted file mode 100644
index 95ac9de..0000000
Binary files a/winboard/bitmaps/k58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k58s.bmp b/winboard/bitmaps/k58s.bmp
deleted file mode 100644
index 8eb1ed7..0000000
Binary files a/winboard/bitmaps/k58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k58w.bmp b/winboard/bitmaps/k58w.bmp
deleted file mode 100644
index 10b2338..0000000
Binary files a/winboard/bitmaps/k58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k64o.bmp b/winboard/bitmaps/k64o.bmp
deleted file mode 100644
index 7418826..0000000
Binary files a/winboard/bitmaps/k64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k64s.bmp b/winboard/bitmaps/k64s.bmp
deleted file mode 100644
index d257d77..0000000
Binary files a/winboard/bitmaps/k64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k64w.bmp b/winboard/bitmaps/k64w.bmp
deleted file mode 100644
index b90bcb3..0000000
Binary files a/winboard/bitmaps/k64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k72o.bmp b/winboard/bitmaps/k72o.bmp
deleted file mode 100644
index 1e0ad8f..0000000
Binary files a/winboard/bitmaps/k72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k72s.bmp b/winboard/bitmaps/k72s.bmp
deleted file mode 100644
index 2df1e5d..0000000
Binary files a/winboard/bitmaps/k72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k72w.bmp b/winboard/bitmaps/k72w.bmp
deleted file mode 100644
index f710470..0000000
Binary files a/winboard/bitmaps/k72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k80o.bmp b/winboard/bitmaps/k80o.bmp
deleted file mode 100644
index d9bc797..0000000
Binary files a/winboard/bitmaps/k80o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k80s.bmp b/winboard/bitmaps/k80s.bmp
deleted file mode 100644
index e5848e4..0000000
Binary files a/winboard/bitmaps/k80s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k80w.bmp b/winboard/bitmaps/k80w.bmp
deleted file mode 100644
index 1e9797a..0000000
Binary files a/winboard/bitmaps/k80w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k87o.bmp b/winboard/bitmaps/k87o.bmp
deleted file mode 100644
index 929fa11..0000000
Binary files a/winboard/bitmaps/k87o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k87s.bmp b/winboard/bitmaps/k87s.bmp
deleted file mode 100644
index a013148..0000000
Binary files a/winboard/bitmaps/k87s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k87w.bmp b/winboard/bitmaps/k87w.bmp
deleted file mode 100644
index 2f4a62a..0000000
Binary files a/winboard/bitmaps/k87w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k95o.bmp b/winboard/bitmaps/k95o.bmp
deleted file mode 100644
index 7438de4..0000000
Binary files a/winboard/bitmaps/k95o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k95s.bmp b/winboard/bitmaps/k95s.bmp
deleted file mode 100644
index 098bc95..0000000
Binary files a/winboard/bitmaps/k95s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/k95w.bmp b/winboard/bitmaps/k95w.bmp
deleted file mode 100644
index 15a98c8..0000000
Binary files a/winboard/bitmaps/k95w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l33o.bmp b/winboard/bitmaps/l33o.bmp
deleted file mode 100644
index 510882b..0000000
Binary files a/winboard/bitmaps/l33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l33s.bmp b/winboard/bitmaps/l33s.bmp
deleted file mode 100644
index 4c1ce81..0000000
Binary files a/winboard/bitmaps/l33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l33w.bmp b/winboard/bitmaps/l33w.bmp
deleted file mode 100644
index fff3ec7..0000000
Binary files a/winboard/bitmaps/l33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l37o.bmp b/winboard/bitmaps/l37o.bmp
deleted file mode 100644
index 473b0f7..0000000
Binary files a/winboard/bitmaps/l37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l37s.bmp b/winboard/bitmaps/l37s.bmp
deleted file mode 100644
index 5709f68..0000000
Binary files a/winboard/bitmaps/l37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l37w.bmp b/winboard/bitmaps/l37w.bmp
deleted file mode 100644
index e9d27fa..0000000
Binary files a/winboard/bitmaps/l37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l40o.bmp b/winboard/bitmaps/l40o.bmp
deleted file mode 100644
index c97e0f2..0000000
Binary files a/winboard/bitmaps/l40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l40s.bmp b/winboard/bitmaps/l40s.bmp
deleted file mode 100644
index 50bc67a..0000000
Binary files a/winboard/bitmaps/l40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l40w.bmp b/winboard/bitmaps/l40w.bmp
deleted file mode 100644
index ca11b56..0000000
Binary files a/winboard/bitmaps/l40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l45o.bmp b/winboard/bitmaps/l45o.bmp
deleted file mode 100644
index 757f9cc..0000000
Binary files a/winboard/bitmaps/l45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l45s.bmp b/winboard/bitmaps/l45s.bmp
deleted file mode 100644
index 72e451b..0000000
Binary files a/winboard/bitmaps/l45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l45w.bmp b/winboard/bitmaps/l45w.bmp
deleted file mode 100644
index 9b2050f..0000000
Binary files a/winboard/bitmaps/l45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l49o.bmp b/winboard/bitmaps/l49o.bmp
deleted file mode 100644
index 4a83007..0000000
Binary files a/winboard/bitmaps/l49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l49s.bmp b/winboard/bitmaps/l49s.bmp
deleted file mode 100644
index 9dbea26..0000000
Binary files a/winboard/bitmaps/l49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l49w.bmp b/winboard/bitmaps/l49w.bmp
deleted file mode 100644
index da13b66..0000000
Binary files a/winboard/bitmaps/l49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l54o.bmp b/winboard/bitmaps/l54o.bmp
deleted file mode 100644
index 4fc6484..0000000
Binary files a/winboard/bitmaps/l54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l54s.bmp b/winboard/bitmaps/l54s.bmp
deleted file mode 100644
index 7abf49d..0000000
Binary files a/winboard/bitmaps/l54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l54w.bmp b/winboard/bitmaps/l54w.bmp
deleted file mode 100644
index 2ba36b8..0000000
Binary files a/winboard/bitmaps/l54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l58o.bmp b/winboard/bitmaps/l58o.bmp
deleted file mode 100644
index 584a038..0000000
Binary files a/winboard/bitmaps/l58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l58s.bmp b/winboard/bitmaps/l58s.bmp
deleted file mode 100644
index 1c7ba69..0000000
Binary files a/winboard/bitmaps/l58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l58w.bmp b/winboard/bitmaps/l58w.bmp
deleted file mode 100644
index 2ec0f44..0000000
Binary files a/winboard/bitmaps/l58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l64o.bmp b/winboard/bitmaps/l64o.bmp
deleted file mode 100644
index dcd5a4c..0000000
Binary files a/winboard/bitmaps/l64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l64s.bmp b/winboard/bitmaps/l64s.bmp
deleted file mode 100644
index 0bdc5bb..0000000
Binary files a/winboard/bitmaps/l64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l64w.bmp b/winboard/bitmaps/l64w.bmp
deleted file mode 100644
index 80342c3..0000000
Binary files a/winboard/bitmaps/l64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l72o.bmp b/winboard/bitmaps/l72o.bmp
deleted file mode 100644
index 130cbfd..0000000
Binary files a/winboard/bitmaps/l72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l72s.bmp b/winboard/bitmaps/l72s.bmp
deleted file mode 100644
index 798e908..0000000
Binary files a/winboard/bitmaps/l72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/l72w.bmp b/winboard/bitmaps/l72w.bmp
deleted file mode 100644
index 6914cb1..0000000
Binary files a/winboard/bitmaps/l72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m129o.bmp b/winboard/bitmaps/m129o.bmp
deleted file mode 100644
index 243ef28..0000000
Binary files a/winboard/bitmaps/m129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m33o.bmp b/winboard/bitmaps/m33o.bmp
deleted file mode 100644
index 313e998..0000000
Binary files a/winboard/bitmaps/m33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m33s.bmp b/winboard/bitmaps/m33s.bmp
deleted file mode 100644
index e2571b6..0000000
Binary files a/winboard/bitmaps/m33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m33w.bmp b/winboard/bitmaps/m33w.bmp
deleted file mode 100644
index 110f29e..0000000
Binary files a/winboard/bitmaps/m33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m49o.bmp b/winboard/bitmaps/m49o.bmp
deleted file mode 100644
index a70fb3e..0000000
Binary files a/winboard/bitmaps/m49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m49s.bmp b/winboard/bitmaps/m49s.bmp
deleted file mode 100644
index 516ef04..0000000
Binary files a/winboard/bitmaps/m49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m49w.bmp b/winboard/bitmaps/m49w.bmp
deleted file mode 100644
index eaa0795..0000000
Binary files a/winboard/bitmaps/m49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m72o.bmp b/winboard/bitmaps/m72o.bmp
deleted file mode 100644
index 1e1ad2a..0000000
Binary files a/winboard/bitmaps/m72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m72s.bmp b/winboard/bitmaps/m72s.bmp
deleted file mode 100644
index e9ac763..0000000
Binary files a/winboard/bitmaps/m72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/m72w.bmp b/winboard/bitmaps/m72w.bmp
deleted file mode 100644
index a1958ea..0000000
Binary files a/winboard/bitmaps/m72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n108o.bmp b/winboard/bitmaps/n108o.bmp
deleted file mode 100644
index 773c91b..0000000
Binary files a/winboard/bitmaps/n108o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n108s.bmp b/winboard/bitmaps/n108s.bmp
deleted file mode 100644
index 62691df..0000000
Binary files a/winboard/bitmaps/n108s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n108w.bmp b/winboard/bitmaps/n108w.bmp
deleted file mode 100644
index 248dff0..0000000
Binary files a/winboard/bitmaps/n108w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n116o.bmp b/winboard/bitmaps/n116o.bmp
deleted file mode 100644
index 61e037d..0000000
Binary files a/winboard/bitmaps/n116o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n116s.bmp b/winboard/bitmaps/n116s.bmp
deleted file mode 100644
index fc2419a..0000000
Binary files a/winboard/bitmaps/n116s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n116w.bmp b/winboard/bitmaps/n116w.bmp
deleted file mode 100644
index a6299b1..0000000
Binary files a/winboard/bitmaps/n116w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n129o.bmp b/winboard/bitmaps/n129o.bmp
deleted file mode 100644
index 857a82f..0000000
Binary files a/winboard/bitmaps/n129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n129s.bmp b/winboard/bitmaps/n129s.bmp
deleted file mode 100644
index d5f2142..0000000
Binary files a/winboard/bitmaps/n129s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n129w.bmp b/winboard/bitmaps/n129w.bmp
deleted file mode 100644
index e1d630c..0000000
Binary files a/winboard/bitmaps/n129w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n21o.bmp b/winboard/bitmaps/n21o.bmp
deleted file mode 100644
index 8ae7a73..0000000
Binary files a/winboard/bitmaps/n21o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n21s.bmp b/winboard/bitmaps/n21s.bmp
deleted file mode 100644
index 7c2aa5c..0000000
Binary files a/winboard/bitmaps/n21s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n21w.bmp b/winboard/bitmaps/n21w.bmp
deleted file mode 100644
index 174e345..0000000
Binary files a/winboard/bitmaps/n21w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n25o.bmp b/winboard/bitmaps/n25o.bmp
deleted file mode 100644
index 9ebffd6..0000000
Binary files a/winboard/bitmaps/n25o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n25s.bmp b/winboard/bitmaps/n25s.bmp
deleted file mode 100644
index c4f4ab5..0000000
Binary files a/winboard/bitmaps/n25s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n25w.bmp b/winboard/bitmaps/n25w.bmp
deleted file mode 100644
index 493f9b5..0000000
Binary files a/winboard/bitmaps/n25w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n29o.bmp b/winboard/bitmaps/n29o.bmp
deleted file mode 100644
index 5b78783..0000000
Binary files a/winboard/bitmaps/n29o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n29s.bmp b/winboard/bitmaps/n29s.bmp
deleted file mode 100644
index 88d0afb..0000000
Binary files a/winboard/bitmaps/n29s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n29w.bmp b/winboard/bitmaps/n29w.bmp
deleted file mode 100644
index d075211..0000000
Binary files a/winboard/bitmaps/n29w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n33o.bmp b/winboard/bitmaps/n33o.bmp
deleted file mode 100644
index 2677922..0000000
Binary files a/winboard/bitmaps/n33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n33s.bmp b/winboard/bitmaps/n33s.bmp
deleted file mode 100644
index 85d2f83..0000000
Binary files a/winboard/bitmaps/n33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n33w.bmp b/winboard/bitmaps/n33w.bmp
deleted file mode 100644
index 7a42f6a..0000000
Binary files a/winboard/bitmaps/n33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n37o.bmp b/winboard/bitmaps/n37o.bmp
deleted file mode 100644
index a68f14a..0000000
Binary files a/winboard/bitmaps/n37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n37s.bmp b/winboard/bitmaps/n37s.bmp
deleted file mode 100644
index 27a6de2..0000000
Binary files a/winboard/bitmaps/n37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n37w.bmp b/winboard/bitmaps/n37w.bmp
deleted file mode 100644
index 89d157e..0000000
Binary files a/winboard/bitmaps/n37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n40o.bmp b/winboard/bitmaps/n40o.bmp
deleted file mode 100644
index 9be7534..0000000
Binary files a/winboard/bitmaps/n40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n40s.bmp b/winboard/bitmaps/n40s.bmp
deleted file mode 100644
index 1fa0fce..0000000
Binary files a/winboard/bitmaps/n40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n40w.bmp b/winboard/bitmaps/n40w.bmp
deleted file mode 100644
index 84eeea1..0000000
Binary files a/winboard/bitmaps/n40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n45o.bmp b/winboard/bitmaps/n45o.bmp
deleted file mode 100644
index 81e3ee4..0000000
Binary files a/winboard/bitmaps/n45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n45s.bmp b/winboard/bitmaps/n45s.bmp
deleted file mode 100644
index 67752a1..0000000
Binary files a/winboard/bitmaps/n45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n45w.bmp b/winboard/bitmaps/n45w.bmp
deleted file mode 100644
index e200f89..0000000
Binary files a/winboard/bitmaps/n45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n49o.bmp b/winboard/bitmaps/n49o.bmp
deleted file mode 100644
index 44d9cec..0000000
Binary files a/winboard/bitmaps/n49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n49s.bmp b/winboard/bitmaps/n49s.bmp
deleted file mode 100644
index 7a5200b..0000000
Binary files a/winboard/bitmaps/n49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n49w.bmp b/winboard/bitmaps/n49w.bmp
deleted file mode 100644
index f3f7311..0000000
Binary files a/winboard/bitmaps/n49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n54o.bmp b/winboard/bitmaps/n54o.bmp
deleted file mode 100644
index 738c72b..0000000
Binary files a/winboard/bitmaps/n54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n54s.bmp b/winboard/bitmaps/n54s.bmp
deleted file mode 100644
index 1c3c3fa..0000000
Binary files a/winboard/bitmaps/n54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n54w.bmp b/winboard/bitmaps/n54w.bmp
deleted file mode 100644
index da912e7..0000000
Binary files a/winboard/bitmaps/n54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n58o.bmp b/winboard/bitmaps/n58o.bmp
deleted file mode 100644
index b551c1c..0000000
Binary files a/winboard/bitmaps/n58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n58s.bmp b/winboard/bitmaps/n58s.bmp
deleted file mode 100644
index 39bf412..0000000
Binary files a/winboard/bitmaps/n58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n58w.bmp b/winboard/bitmaps/n58w.bmp
deleted file mode 100644
index b6ba799..0000000
Binary files a/winboard/bitmaps/n58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n64o.bmp b/winboard/bitmaps/n64o.bmp
deleted file mode 100644
index a932bce..0000000
Binary files a/winboard/bitmaps/n64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n64s.bmp b/winboard/bitmaps/n64s.bmp
deleted file mode 100644
index e0a25e1..0000000
Binary files a/winboard/bitmaps/n64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n64w.bmp b/winboard/bitmaps/n64w.bmp
deleted file mode 100644
index 1c20506..0000000
Binary files a/winboard/bitmaps/n64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n72o.bmp b/winboard/bitmaps/n72o.bmp
deleted file mode 100644
index be3f303..0000000
Binary files a/winboard/bitmaps/n72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n72s.bmp b/winboard/bitmaps/n72s.bmp
deleted file mode 100644
index d641b8e..0000000
Binary files a/winboard/bitmaps/n72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n72w.bmp b/winboard/bitmaps/n72w.bmp
deleted file mode 100644
index ba9552b..0000000
Binary files a/winboard/bitmaps/n72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n80o.bmp b/winboard/bitmaps/n80o.bmp
deleted file mode 100644
index 05b1a33..0000000
Binary files a/winboard/bitmaps/n80o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n80s.bmp b/winboard/bitmaps/n80s.bmp
deleted file mode 100644
index 873c833..0000000
Binary files a/winboard/bitmaps/n80s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n80w.bmp b/winboard/bitmaps/n80w.bmp
deleted file mode 100644
index ff874d4..0000000
Binary files a/winboard/bitmaps/n80w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n87o.bmp b/winboard/bitmaps/n87o.bmp
deleted file mode 100644
index 3466d4d..0000000
Binary files a/winboard/bitmaps/n87o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n87s.bmp b/winboard/bitmaps/n87s.bmp
deleted file mode 100644
index 59b715b..0000000
Binary files a/winboard/bitmaps/n87s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n87w.bmp b/winboard/bitmaps/n87w.bmp
deleted file mode 100644
index f63f28f..0000000
Binary files a/winboard/bitmaps/n87w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n95o.bmp b/winboard/bitmaps/n95o.bmp
deleted file mode 100644
index f826a19..0000000
Binary files a/winboard/bitmaps/n95o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n95s.bmp b/winboard/bitmaps/n95s.bmp
deleted file mode 100644
index 6104c31..0000000
Binary files a/winboard/bitmaps/n95s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/n95w.bmp b/winboard/bitmaps/n95w.bmp
deleted file mode 100644
index 68f7488..0000000
Binary files a/winboard/bitmaps/n95w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ni49o.bmp b/winboard/bitmaps/ni49o.bmp
deleted file mode 100644
index 42f9021..0000000
Binary files a/winboard/bitmaps/ni49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ni49s.bmp b/winboard/bitmaps/ni49s.bmp
deleted file mode 100644
index dbb4397..0000000
Binary files a/winboard/bitmaps/ni49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ni49w.bmp b/winboard/bitmaps/ni49w.bmp
deleted file mode 100644
index 7964c14..0000000
Binary files a/winboard/bitmaps/ni49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ni72o.bmp b/winboard/bitmaps/ni72o.bmp
deleted file mode 100644
index fe4bd69..0000000
Binary files a/winboard/bitmaps/ni72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ni72s.bmp b/winboard/bitmaps/ni72s.bmp
deleted file mode 100644
index 644a54b..0000000
Binary files a/winboard/bitmaps/ni72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ni72w.bmp b/winboard/bitmaps/ni72w.bmp
deleted file mode 100644
index 81cc086..0000000
Binary files a/winboard/bitmaps/ni72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o33o.bmp b/winboard/bitmaps/o33o.bmp
deleted file mode 100644
index 667dc83..0000000
Binary files a/winboard/bitmaps/o33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o33s.bmp b/winboard/bitmaps/o33s.bmp
deleted file mode 100644
index a063095..0000000
Binary files a/winboard/bitmaps/o33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o33w.bmp b/winboard/bitmaps/o33w.bmp
deleted file mode 100644
index d782bd5..0000000
Binary files a/winboard/bitmaps/o33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o49o.bmp b/winboard/bitmaps/o49o.bmp
deleted file mode 100644
index 7cefe71..0000000
Binary files a/winboard/bitmaps/o49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o49s.bmp b/winboard/bitmaps/o49s.bmp
deleted file mode 100644
index 61e191f..0000000
Binary files a/winboard/bitmaps/o49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o49w.bmp b/winboard/bitmaps/o49w.bmp
deleted file mode 100644
index a4092ee..0000000
Binary files a/winboard/bitmaps/o49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o72o.bmp b/winboard/bitmaps/o72o.bmp
deleted file mode 100644
index f0d0d52..0000000
Binary files a/winboard/bitmaps/o72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o72s.bmp b/winboard/bitmaps/o72s.bmp
deleted file mode 100644
index f9aa0ff..0000000
Binary files a/winboard/bitmaps/o72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/o72w.bmp b/winboard/bitmaps/o72w.bmp
deleted file mode 100644
index 3e557be..0000000
Binary files a/winboard/bitmaps/o72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p108o.bmp b/winboard/bitmaps/p108o.bmp
deleted file mode 100644
index 08fe730..0000000
Binary files a/winboard/bitmaps/p108o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p108s.bmp b/winboard/bitmaps/p108s.bmp
deleted file mode 100644
index 099f9ee..0000000
Binary files a/winboard/bitmaps/p108s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p108w.bmp b/winboard/bitmaps/p108w.bmp
deleted file mode 100644
index 2e28c9c..0000000
Binary files a/winboard/bitmaps/p108w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p116o.bmp b/winboard/bitmaps/p116o.bmp
deleted file mode 100644
index d9950a3..0000000
Binary files a/winboard/bitmaps/p116o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p116s.bmp b/winboard/bitmaps/p116s.bmp
deleted file mode 100644
index 7fcf7aa..0000000
Binary files a/winboard/bitmaps/p116s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p116w.bmp b/winboard/bitmaps/p116w.bmp
deleted file mode 100644
index b24fc2a..0000000
Binary files a/winboard/bitmaps/p116w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p129o.bmp b/winboard/bitmaps/p129o.bmp
deleted file mode 100644
index 5a3713a..0000000
Binary files a/winboard/bitmaps/p129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p129s.bmp b/winboard/bitmaps/p129s.bmp
deleted file mode 100644
index 83df042..0000000
Binary files a/winboard/bitmaps/p129s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p129w.bmp b/winboard/bitmaps/p129w.bmp
deleted file mode 100644
index 360735a..0000000
Binary files a/winboard/bitmaps/p129w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p21o.bmp b/winboard/bitmaps/p21o.bmp
deleted file mode 100644
index ba739e5..0000000
Binary files a/winboard/bitmaps/p21o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p21s.bmp b/winboard/bitmaps/p21s.bmp
deleted file mode 100644
index 53fb5ab..0000000
Binary files a/winboard/bitmaps/p21s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p21w.bmp b/winboard/bitmaps/p21w.bmp
deleted file mode 100644
index e47cc23..0000000
Binary files a/winboard/bitmaps/p21w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p25o.bmp b/winboard/bitmaps/p25o.bmp
deleted file mode 100644
index 7cf8014..0000000
Binary files a/winboard/bitmaps/p25o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p25s.bmp b/winboard/bitmaps/p25s.bmp
deleted file mode 100644
index 1a59190..0000000
Binary files a/winboard/bitmaps/p25s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p25w.bmp b/winboard/bitmaps/p25w.bmp
deleted file mode 100644
index bd7b65b..0000000
Binary files a/winboard/bitmaps/p25w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p29o.bmp b/winboard/bitmaps/p29o.bmp
deleted file mode 100644
index 49b9985..0000000
Binary files a/winboard/bitmaps/p29o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p29s.bmp b/winboard/bitmaps/p29s.bmp
deleted file mode 100644
index e3f5f87..0000000
Binary files a/winboard/bitmaps/p29s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p29w.bmp b/winboard/bitmaps/p29w.bmp
deleted file mode 100644
index 55169f6..0000000
Binary files a/winboard/bitmaps/p29w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p33o.bmp b/winboard/bitmaps/p33o.bmp
deleted file mode 100644
index 4ebb6f4..0000000
Binary files a/winboard/bitmaps/p33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p33s.bmp b/winboard/bitmaps/p33s.bmp
deleted file mode 100644
index 88c9dd2..0000000
Binary files a/winboard/bitmaps/p33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p33w.bmp b/winboard/bitmaps/p33w.bmp
deleted file mode 100644
index 0de8f7f..0000000
Binary files a/winboard/bitmaps/p33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p37o.bmp b/winboard/bitmaps/p37o.bmp
deleted file mode 100644
index 0d165cf..0000000
Binary files a/winboard/bitmaps/p37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p37s.bmp b/winboard/bitmaps/p37s.bmp
deleted file mode 100644
index dd95792..0000000
Binary files a/winboard/bitmaps/p37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p37w.bmp b/winboard/bitmaps/p37w.bmp
deleted file mode 100644
index 48e0dc7..0000000
Binary files a/winboard/bitmaps/p37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p40o.bmp b/winboard/bitmaps/p40o.bmp
deleted file mode 100644
index 2164542..0000000
Binary files a/winboard/bitmaps/p40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p40s.bmp b/winboard/bitmaps/p40s.bmp
deleted file mode 100644
index 438d142..0000000
Binary files a/winboard/bitmaps/p40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p40w.bmp b/winboard/bitmaps/p40w.bmp
deleted file mode 100644
index 44567d9..0000000
Binary files a/winboard/bitmaps/p40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p45o.bmp b/winboard/bitmaps/p45o.bmp
deleted file mode 100644
index d878adb..0000000
Binary files a/winboard/bitmaps/p45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p45s.bmp b/winboard/bitmaps/p45s.bmp
deleted file mode 100644
index c44efa7..0000000
Binary files a/winboard/bitmaps/p45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p45w.bmp b/winboard/bitmaps/p45w.bmp
deleted file mode 100644
index d1cb668..0000000
Binary files a/winboard/bitmaps/p45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p49o.bmp b/winboard/bitmaps/p49o.bmp
deleted file mode 100644
index 74fb233..0000000
Binary files a/winboard/bitmaps/p49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p49s.bmp b/winboard/bitmaps/p49s.bmp
deleted file mode 100644
index a76357c..0000000
Binary files a/winboard/bitmaps/p49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p49w.bmp b/winboard/bitmaps/p49w.bmp
deleted file mode 100644
index e34cb97..0000000
Binary files a/winboard/bitmaps/p49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p54o.bmp b/winboard/bitmaps/p54o.bmp
deleted file mode 100644
index fc0a928..0000000
Binary files a/winboard/bitmaps/p54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p54s.bmp b/winboard/bitmaps/p54s.bmp
deleted file mode 100644
index 7bd3fba..0000000
Binary files a/winboard/bitmaps/p54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p54w.bmp b/winboard/bitmaps/p54w.bmp
deleted file mode 100644
index ca35eda..0000000
Binary files a/winboard/bitmaps/p54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p58o.bmp b/winboard/bitmaps/p58o.bmp
deleted file mode 100644
index 6f1c81e..0000000
Binary files a/winboard/bitmaps/p58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p58s.bmp b/winboard/bitmaps/p58s.bmp
deleted file mode 100644
index 3336583..0000000
Binary files a/winboard/bitmaps/p58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p58w.bmp b/winboard/bitmaps/p58w.bmp
deleted file mode 100644
index 8a45650..0000000
Binary files a/winboard/bitmaps/p58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p64o.bmp b/winboard/bitmaps/p64o.bmp
deleted file mode 100644
index 336c228..0000000
Binary files a/winboard/bitmaps/p64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p64s.bmp b/winboard/bitmaps/p64s.bmp
deleted file mode 100644
index a134e41..0000000
Binary files a/winboard/bitmaps/p64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p64w.bmp b/winboard/bitmaps/p64w.bmp
deleted file mode 100644
index ebdd7e4..0000000
Binary files a/winboard/bitmaps/p64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p72o.bmp b/winboard/bitmaps/p72o.bmp
deleted file mode 100644
index 7436520..0000000
Binary files a/winboard/bitmaps/p72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p72s.bmp b/winboard/bitmaps/p72s.bmp
deleted file mode 100644
index c155645..0000000
Binary files a/winboard/bitmaps/p72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p72w.bmp b/winboard/bitmaps/p72w.bmp
deleted file mode 100644
index 542a9e0..0000000
Binary files a/winboard/bitmaps/p72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p80o.bmp b/winboard/bitmaps/p80o.bmp
deleted file mode 100644
index 096c445..0000000
Binary files a/winboard/bitmaps/p80o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p80s.bmp b/winboard/bitmaps/p80s.bmp
deleted file mode 100644
index 0883c08..0000000
Binary files a/winboard/bitmaps/p80s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p80w.bmp b/winboard/bitmaps/p80w.bmp
deleted file mode 100644
index 2168385..0000000
Binary files a/winboard/bitmaps/p80w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p87o.bmp b/winboard/bitmaps/p87o.bmp
deleted file mode 100644
index de4374c..0000000
Binary files a/winboard/bitmaps/p87o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p87s.bmp b/winboard/bitmaps/p87s.bmp
deleted file mode 100644
index c8b6e3a..0000000
Binary files a/winboard/bitmaps/p87s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p87w.bmp b/winboard/bitmaps/p87w.bmp
deleted file mode 100644
index 15d9ea8..0000000
Binary files a/winboard/bitmaps/p87w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p95o.bmp b/winboard/bitmaps/p95o.bmp
deleted file mode 100644
index d8d1acd..0000000
Binary files a/winboard/bitmaps/p95o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p95s.bmp b/winboard/bitmaps/p95s.bmp
deleted file mode 100644
index 637365f..0000000
Binary files a/winboard/bitmaps/p95s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/p95w.bmp b/winboard/bitmaps/p95w.bmp
deleted file mode 100644
index 274c521..0000000
Binary files a/winboard/bitmaps/p95w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ponder_14.ico b/winboard/bitmaps/ponder_14.ico
deleted file mode 100644
index 484deaa..0000000
Binary files a/winboard/bitmaps/ponder_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/q108o.bmp b/winboard/bitmaps/q108o.bmp
deleted file mode 100644
index e11a741..0000000
Binary files a/winboard/bitmaps/q108o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q108s.bmp b/winboard/bitmaps/q108s.bmp
deleted file mode 100644
index 0840506..0000000
Binary files a/winboard/bitmaps/q108s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q108w.bmp b/winboard/bitmaps/q108w.bmp
deleted file mode 100644
index 3cfe3fc..0000000
Binary files a/winboard/bitmaps/q108w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q116o.bmp b/winboard/bitmaps/q116o.bmp
deleted file mode 100644
index 8d884cd..0000000
Binary files a/winboard/bitmaps/q116o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q116s.bmp b/winboard/bitmaps/q116s.bmp
deleted file mode 100644
index e526362..0000000
Binary files a/winboard/bitmaps/q116s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q116w.bmp b/winboard/bitmaps/q116w.bmp
deleted file mode 100644
index ea987cc..0000000
Binary files a/winboard/bitmaps/q116w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q129o.bmp b/winboard/bitmaps/q129o.bmp
deleted file mode 100644
index f6393bf..0000000
Binary files a/winboard/bitmaps/q129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q129s.bmp b/winboard/bitmaps/q129s.bmp
deleted file mode 100644
index e058bf6..0000000
Binary files a/winboard/bitmaps/q129s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q129w.bmp b/winboard/bitmaps/q129w.bmp
deleted file mode 100644
index bbb98f5..0000000
Binary files a/winboard/bitmaps/q129w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q21o.bmp b/winboard/bitmaps/q21o.bmp
deleted file mode 100644
index 85f3359..0000000
Binary files a/winboard/bitmaps/q21o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q21s.bmp b/winboard/bitmaps/q21s.bmp
deleted file mode 100644
index ee9ad79..0000000
Binary files a/winboard/bitmaps/q21s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q21w.bmp b/winboard/bitmaps/q21w.bmp
deleted file mode 100644
index e3c9213..0000000
Binary files a/winboard/bitmaps/q21w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q25o.bmp b/winboard/bitmaps/q25o.bmp
deleted file mode 100644
index caf5bee..0000000
Binary files a/winboard/bitmaps/q25o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q25s.bmp b/winboard/bitmaps/q25s.bmp
deleted file mode 100644
index b3dadda..0000000
Binary files a/winboard/bitmaps/q25s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q25w.bmp b/winboard/bitmaps/q25w.bmp
deleted file mode 100644
index 565bab2..0000000
Binary files a/winboard/bitmaps/q25w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q29o.bmp b/winboard/bitmaps/q29o.bmp
deleted file mode 100644
index bd08feb..0000000
Binary files a/winboard/bitmaps/q29o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q29s.bmp b/winboard/bitmaps/q29s.bmp
deleted file mode 100644
index f97f190..0000000
Binary files a/winboard/bitmaps/q29s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q29w.bmp b/winboard/bitmaps/q29w.bmp
deleted file mode 100644
index 929c7d4..0000000
Binary files a/winboard/bitmaps/q29w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q33o.bmp b/winboard/bitmaps/q33o.bmp
deleted file mode 100644
index d1c7e0a..0000000
Binary files a/winboard/bitmaps/q33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q33s.bmp b/winboard/bitmaps/q33s.bmp
deleted file mode 100644
index 34798a2..0000000
Binary files a/winboard/bitmaps/q33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q33w.bmp b/winboard/bitmaps/q33w.bmp
deleted file mode 100644
index 90a18a8..0000000
Binary files a/winboard/bitmaps/q33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q37o.bmp b/winboard/bitmaps/q37o.bmp
deleted file mode 100644
index 972d9b5..0000000
Binary files a/winboard/bitmaps/q37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q37s.bmp b/winboard/bitmaps/q37s.bmp
deleted file mode 100644
index 76f7282..0000000
Binary files a/winboard/bitmaps/q37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q37w.bmp b/winboard/bitmaps/q37w.bmp
deleted file mode 100644
index 4ef25b0..0000000
Binary files a/winboard/bitmaps/q37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q40o.bmp b/winboard/bitmaps/q40o.bmp
deleted file mode 100644
index 2777d46..0000000
Binary files a/winboard/bitmaps/q40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q40s.bmp b/winboard/bitmaps/q40s.bmp
deleted file mode 100644
index 2952764..0000000
Binary files a/winboard/bitmaps/q40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q40w.bmp b/winboard/bitmaps/q40w.bmp
deleted file mode 100644
index 2238f1d..0000000
Binary files a/winboard/bitmaps/q40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q45o.bmp b/winboard/bitmaps/q45o.bmp
deleted file mode 100644
index e04239e..0000000
Binary files a/winboard/bitmaps/q45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q45s.bmp b/winboard/bitmaps/q45s.bmp
deleted file mode 100644
index 4a0b728..0000000
Binary files a/winboard/bitmaps/q45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q45w.bmp b/winboard/bitmaps/q45w.bmp
deleted file mode 100644
index 30b954b..0000000
Binary files a/winboard/bitmaps/q45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q49o.bmp b/winboard/bitmaps/q49o.bmp
deleted file mode 100644
index f0d9395..0000000
Binary files a/winboard/bitmaps/q49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q49s.bmp b/winboard/bitmaps/q49s.bmp
deleted file mode 100644
index a4baae5..0000000
Binary files a/winboard/bitmaps/q49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q49w.bmp b/winboard/bitmaps/q49w.bmp
deleted file mode 100644
index 460f23f..0000000
Binary files a/winboard/bitmaps/q49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q54o.bmp b/winboard/bitmaps/q54o.bmp
deleted file mode 100644
index 7319504..0000000
Binary files a/winboard/bitmaps/q54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q54s.bmp b/winboard/bitmaps/q54s.bmp
deleted file mode 100644
index 62245ff..0000000
Binary files a/winboard/bitmaps/q54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q54w.bmp b/winboard/bitmaps/q54w.bmp
deleted file mode 100644
index 8ecbfff..0000000
Binary files a/winboard/bitmaps/q54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q58o.bmp b/winboard/bitmaps/q58o.bmp
deleted file mode 100644
index 9f9ad7b..0000000
Binary files a/winboard/bitmaps/q58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q58s.bmp b/winboard/bitmaps/q58s.bmp
deleted file mode 100644
index ff10ec8..0000000
Binary files a/winboard/bitmaps/q58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q58w.bmp b/winboard/bitmaps/q58w.bmp
deleted file mode 100644
index 9370ff4..0000000
Binary files a/winboard/bitmaps/q58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q64o.bmp b/winboard/bitmaps/q64o.bmp
deleted file mode 100644
index 0285e9b..0000000
Binary files a/winboard/bitmaps/q64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q64s.bmp b/winboard/bitmaps/q64s.bmp
deleted file mode 100644
index 23408ab..0000000
Binary files a/winboard/bitmaps/q64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q64w.bmp b/winboard/bitmaps/q64w.bmp
deleted file mode 100644
index 4aeba74..0000000
Binary files a/winboard/bitmaps/q64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q72o.bmp b/winboard/bitmaps/q72o.bmp
deleted file mode 100644
index 2349650..0000000
Binary files a/winboard/bitmaps/q72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q72s.bmp b/winboard/bitmaps/q72s.bmp
deleted file mode 100644
index 71ed548..0000000
Binary files a/winboard/bitmaps/q72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q72w.bmp b/winboard/bitmaps/q72w.bmp
deleted file mode 100644
index 8c95eba..0000000
Binary files a/winboard/bitmaps/q72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q80o.bmp b/winboard/bitmaps/q80o.bmp
deleted file mode 100644
index d462bae..0000000
Binary files a/winboard/bitmaps/q80o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q80s.bmp b/winboard/bitmaps/q80s.bmp
deleted file mode 100644
index 456c99a..0000000
Binary files a/winboard/bitmaps/q80s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q80w.bmp b/winboard/bitmaps/q80w.bmp
deleted file mode 100644
index 7004bc8..0000000
Binary files a/winboard/bitmaps/q80w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q87o.bmp b/winboard/bitmaps/q87o.bmp
deleted file mode 100644
index 4c702ac..0000000
Binary files a/winboard/bitmaps/q87o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q87s.bmp b/winboard/bitmaps/q87s.bmp
deleted file mode 100644
index a7f2e6a..0000000
Binary files a/winboard/bitmaps/q87s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q87w.bmp b/winboard/bitmaps/q87w.bmp
deleted file mode 100644
index 9ee8e91..0000000
Binary files a/winboard/bitmaps/q87w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q95o.bmp b/winboard/bitmaps/q95o.bmp
deleted file mode 100644
index 9789e10..0000000
Binary files a/winboard/bitmaps/q95o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q95s.bmp b/winboard/bitmaps/q95s.bmp
deleted file mode 100644
index 69eac49..0000000
Binary files a/winboard/bitmaps/q95s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/q95w.bmp b/winboard/bitmaps/q95w.bmp
deleted file mode 100644
index bb4a847..0000000
Binary files a/winboard/bitmaps/q95w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r108o.bmp b/winboard/bitmaps/r108o.bmp
deleted file mode 100644
index bb23012..0000000
Binary files a/winboard/bitmaps/r108o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r108s.bmp b/winboard/bitmaps/r108s.bmp
deleted file mode 100644
index 809111d..0000000
Binary files a/winboard/bitmaps/r108s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r108w.bmp b/winboard/bitmaps/r108w.bmp
deleted file mode 100644
index 196f913..0000000
Binary files a/winboard/bitmaps/r108w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r116o.bmp b/winboard/bitmaps/r116o.bmp
deleted file mode 100644
index 2207e9b..0000000
Binary files a/winboard/bitmaps/r116o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r116s.bmp b/winboard/bitmaps/r116s.bmp
deleted file mode 100644
index d728062..0000000
Binary files a/winboard/bitmaps/r116s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r116w.bmp b/winboard/bitmaps/r116w.bmp
deleted file mode 100644
index 918d8d7..0000000
Binary files a/winboard/bitmaps/r116w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r129o.bmp b/winboard/bitmaps/r129o.bmp
deleted file mode 100644
index e76cd84..0000000
Binary files a/winboard/bitmaps/r129o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r129s.bmp b/winboard/bitmaps/r129s.bmp
deleted file mode 100644
index 93b2c39..0000000
Binary files a/winboard/bitmaps/r129s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r129w.bmp b/winboard/bitmaps/r129w.bmp
deleted file mode 100644
index cc3ad72..0000000
Binary files a/winboard/bitmaps/r129w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r21o.bmp b/winboard/bitmaps/r21o.bmp
deleted file mode 100644
index 3dd5f09..0000000
Binary files a/winboard/bitmaps/r21o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r21s.bmp b/winboard/bitmaps/r21s.bmp
deleted file mode 100644
index 3e731ea..0000000
Binary files a/winboard/bitmaps/r21s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r21w.bmp b/winboard/bitmaps/r21w.bmp
deleted file mode 100644
index 6f01a85..0000000
Binary files a/winboard/bitmaps/r21w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r25o.bmp b/winboard/bitmaps/r25o.bmp
deleted file mode 100644
index ddde075..0000000
Binary files a/winboard/bitmaps/r25o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r25s.bmp b/winboard/bitmaps/r25s.bmp
deleted file mode 100644
index 91b184e..0000000
Binary files a/winboard/bitmaps/r25s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r25w.bmp b/winboard/bitmaps/r25w.bmp
deleted file mode 100644
index cc4ee6f..0000000
Binary files a/winboard/bitmaps/r25w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r29o.bmp b/winboard/bitmaps/r29o.bmp
deleted file mode 100644
index 6b725f6..0000000
Binary files a/winboard/bitmaps/r29o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r29s.bmp b/winboard/bitmaps/r29s.bmp
deleted file mode 100644
index f8e2a12..0000000
Binary files a/winboard/bitmaps/r29s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r29w.bmp b/winboard/bitmaps/r29w.bmp
deleted file mode 100644
index 49d7640..0000000
Binary files a/winboard/bitmaps/r29w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r33o.bmp b/winboard/bitmaps/r33o.bmp
deleted file mode 100644
index 92e47c3..0000000
Binary files a/winboard/bitmaps/r33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r33s.bmp b/winboard/bitmaps/r33s.bmp
deleted file mode 100644
index da4d221..0000000
Binary files a/winboard/bitmaps/r33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r33w.bmp b/winboard/bitmaps/r33w.bmp
deleted file mode 100644
index 4afebd1..0000000
Binary files a/winboard/bitmaps/r33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r37o.bmp b/winboard/bitmaps/r37o.bmp
deleted file mode 100644
index 58139d7..0000000
Binary files a/winboard/bitmaps/r37o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r37s.bmp b/winboard/bitmaps/r37s.bmp
deleted file mode 100644
index c461384..0000000
Binary files a/winboard/bitmaps/r37s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r37w.bmp b/winboard/bitmaps/r37w.bmp
deleted file mode 100644
index 528e2ff..0000000
Binary files a/winboard/bitmaps/r37w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r40o.bmp b/winboard/bitmaps/r40o.bmp
deleted file mode 100644
index 000fc3e..0000000
Binary files a/winboard/bitmaps/r40o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r40s.bmp b/winboard/bitmaps/r40s.bmp
deleted file mode 100644
index e67094a..0000000
Binary files a/winboard/bitmaps/r40s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r40w.bmp b/winboard/bitmaps/r40w.bmp
deleted file mode 100644
index 1af962c..0000000
Binary files a/winboard/bitmaps/r40w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r45o.bmp b/winboard/bitmaps/r45o.bmp
deleted file mode 100644
index 3a84672..0000000
Binary files a/winboard/bitmaps/r45o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r45s.bmp b/winboard/bitmaps/r45s.bmp
deleted file mode 100644
index 2d8fe11..0000000
Binary files a/winboard/bitmaps/r45s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r45w.bmp b/winboard/bitmaps/r45w.bmp
deleted file mode 100644
index b81d18e..0000000
Binary files a/winboard/bitmaps/r45w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r49o.bmp b/winboard/bitmaps/r49o.bmp
deleted file mode 100644
index e90e522..0000000
Binary files a/winboard/bitmaps/r49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r49s.bmp b/winboard/bitmaps/r49s.bmp
deleted file mode 100644
index 2ad664e..0000000
Binary files a/winboard/bitmaps/r49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r49w.bmp b/winboard/bitmaps/r49w.bmp
deleted file mode 100644
index f9aa784..0000000
Binary files a/winboard/bitmaps/r49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r54o.bmp b/winboard/bitmaps/r54o.bmp
deleted file mode 100644
index 7d26cd7..0000000
Binary files a/winboard/bitmaps/r54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r54s.bmp b/winboard/bitmaps/r54s.bmp
deleted file mode 100644
index 1b25f53..0000000
Binary files a/winboard/bitmaps/r54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r54w.bmp b/winboard/bitmaps/r54w.bmp
deleted file mode 100644
index 44123f0..0000000
Binary files a/winboard/bitmaps/r54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r58o.bmp b/winboard/bitmaps/r58o.bmp
deleted file mode 100644
index 0f8f018..0000000
Binary files a/winboard/bitmaps/r58o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r58s.bmp b/winboard/bitmaps/r58s.bmp
deleted file mode 100644
index eaad170..0000000
Binary files a/winboard/bitmaps/r58s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r58w.bmp b/winboard/bitmaps/r58w.bmp
deleted file mode 100644
index 11f1ac7..0000000
Binary files a/winboard/bitmaps/r58w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r64o.bmp b/winboard/bitmaps/r64o.bmp
deleted file mode 100644
index 38e6ffe..0000000
Binary files a/winboard/bitmaps/r64o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r64s.bmp b/winboard/bitmaps/r64s.bmp
deleted file mode 100644
index 940ebe9..0000000
Binary files a/winboard/bitmaps/r64s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r64w.bmp b/winboard/bitmaps/r64w.bmp
deleted file mode 100644
index 564c882..0000000
Binary files a/winboard/bitmaps/r64w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r72o.bmp b/winboard/bitmaps/r72o.bmp
deleted file mode 100644
index 2a53da7..0000000
Binary files a/winboard/bitmaps/r72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r72s.bmp b/winboard/bitmaps/r72s.bmp
deleted file mode 100644
index b438967..0000000
Binary files a/winboard/bitmaps/r72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r72w.bmp b/winboard/bitmaps/r72w.bmp
deleted file mode 100644
index bc615cc..0000000
Binary files a/winboard/bitmaps/r72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r80o.bmp b/winboard/bitmaps/r80o.bmp
deleted file mode 100644
index 6019342..0000000
Binary files a/winboard/bitmaps/r80o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r80s.bmp b/winboard/bitmaps/r80s.bmp
deleted file mode 100644
index be2a5b6..0000000
Binary files a/winboard/bitmaps/r80s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r80w.bmp b/winboard/bitmaps/r80w.bmp
deleted file mode 100644
index 5964098..0000000
Binary files a/winboard/bitmaps/r80w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r87o.bmp b/winboard/bitmaps/r87o.bmp
deleted file mode 100644
index e331f47..0000000
Binary files a/winboard/bitmaps/r87o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r87s.bmp b/winboard/bitmaps/r87s.bmp
deleted file mode 100644
index 8644fd9..0000000
Binary files a/winboard/bitmaps/r87s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r87w.bmp b/winboard/bitmaps/r87w.bmp
deleted file mode 100644
index bafd3c4..0000000
Binary files a/winboard/bitmaps/r87w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r95o.bmp b/winboard/bitmaps/r95o.bmp
deleted file mode 100644
index 5395cf8..0000000
Binary files a/winboard/bitmaps/r95o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r95s.bmp b/winboard/bitmaps/r95s.bmp
deleted file mode 100644
index adf44a0..0000000
Binary files a/winboard/bitmaps/r95s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/r95w.bmp b/winboard/bitmaps/r95w.bmp
deleted file mode 100644
index cfbd7c7..0000000
Binary files a/winboard/bitmaps/r95w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/s49o.bmp b/winboard/bitmaps/s49o.bmp
deleted file mode 100644
index e6755c9..0000000
Binary files a/winboard/bitmaps/s49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/s49s.bmp b/winboard/bitmaps/s49s.bmp
deleted file mode 100644
index 0f0efbb..0000000
Binary files a/winboard/bitmaps/s49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/s49w.bmp b/winboard/bitmaps/s49w.bmp
deleted file mode 100644
index cc7354a..0000000
Binary files a/winboard/bitmaps/s49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/s72o.bmp b/winboard/bitmaps/s72o.bmp
deleted file mode 100644
index 4df9aa8..0000000
Binary files a/winboard/bitmaps/s72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/s72s.bmp b/winboard/bitmaps/s72s.bmp
deleted file mode 100644
index d5ed119..0000000
Binary files a/winboard/bitmaps/s72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/s72w.bmp b/winboard/bitmaps/s72w.bmp
deleted file mode 100644
index e042e37..0000000
Binary files a/winboard/bitmaps/s72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/tim.bmp b/winboard/bitmaps/tim.bmp
deleted file mode 100644
index 0de2550..0000000
Binary files a/winboard/bitmaps/tim.bmp and /dev/null differ
diff --git a/winboard/bitmaps/trans_14.ico b/winboard/bitmaps/trans_14.ico
deleted file mode 100644
index a096131..0000000
Binary files a/winboard/bitmaps/trans_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/u49o.bmp b/winboard/bitmaps/u49o.bmp
deleted file mode 100644
index 6548a24..0000000
Binary files a/winboard/bitmaps/u49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/u49s.bmp b/winboard/bitmaps/u49s.bmp
deleted file mode 100644
index ca21af0..0000000
Binary files a/winboard/bitmaps/u49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/u49w.bmp b/winboard/bitmaps/u49w.bmp
deleted file mode 100644
index d790963..0000000
Binary files a/winboard/bitmaps/u49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/u72o.bmp b/winboard/bitmaps/u72o.bmp
deleted file mode 100644
index d4ea856..0000000
Binary files a/winboard/bitmaps/u72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/u72s.bmp b/winboard/bitmaps/u72s.bmp
deleted file mode 100644
index ff6f72b..0000000
Binary files a/winboard/bitmaps/u72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/u72w.bmp b/winboard/bitmaps/u72w.bmp
deleted file mode 100644
index d9dbca7..0000000
Binary files a/winboard/bitmaps/u72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/unknown_14.ico b/winboard/bitmaps/unknown_14.ico
deleted file mode 100644
index ea3cef3..0000000
Binary files a/winboard/bitmaps/unknown_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/v33o.bmp b/winboard/bitmaps/v33o.bmp
deleted file mode 100644
index 29edd62..0000000
Binary files a/winboard/bitmaps/v33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v33s.bmp b/winboard/bitmaps/v33s.bmp
deleted file mode 100644
index d28863c..0000000
Binary files a/winboard/bitmaps/v33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v33w.bmp b/winboard/bitmaps/v33w.bmp
deleted file mode 100644
index 718729c..0000000
Binary files a/winboard/bitmaps/v33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v49o.bmp b/winboard/bitmaps/v49o.bmp
deleted file mode 100644
index bd2f8a1..0000000
Binary files a/winboard/bitmaps/v49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v49s.bmp b/winboard/bitmaps/v49s.bmp
deleted file mode 100644
index 9bf4b10..0000000
Binary files a/winboard/bitmaps/v49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v49w.bmp b/winboard/bitmaps/v49w.bmp
deleted file mode 100644
index 076ea0f..0000000
Binary files a/winboard/bitmaps/v49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v54o.bmp b/winboard/bitmaps/v54o.bmp
deleted file mode 100644
index 2499562..0000000
Binary files a/winboard/bitmaps/v54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v54s.bmp b/winboard/bitmaps/v54s.bmp
deleted file mode 100644
index 1c69916..0000000
Binary files a/winboard/bitmaps/v54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v54w.bmp b/winboard/bitmaps/v54w.bmp
deleted file mode 100644
index 57bf8d6..0000000
Binary files a/winboard/bitmaps/v54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v72o.bmp b/winboard/bitmaps/v72o.bmp
deleted file mode 100644
index cd2bbcd..0000000
Binary files a/winboard/bitmaps/v72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v72s.bmp b/winboard/bitmaps/v72s.bmp
deleted file mode 100644
index 3dd30dc..0000000
Binary files a/winboard/bitmaps/v72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/v72w.bmp b/winboard/bitmaps/v72w.bmp
deleted file mode 100644
index 3797c5a..0000000
Binary files a/winboard/bitmaps/v72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w33o.bmp b/winboard/bitmaps/w33o.bmp
deleted file mode 100644
index 5de631d..0000000
Binary files a/winboard/bitmaps/w33o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w33s.bmp b/winboard/bitmaps/w33s.bmp
deleted file mode 100644
index 4defb6a..0000000
Binary files a/winboard/bitmaps/w33s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w33w.bmp b/winboard/bitmaps/w33w.bmp
deleted file mode 100644
index d7a3994..0000000
Binary files a/winboard/bitmaps/w33w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w49o.bmp b/winboard/bitmaps/w49o.bmp
deleted file mode 100644
index 3ff1ce4..0000000
Binary files a/winboard/bitmaps/w49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w49s.bmp b/winboard/bitmaps/w49s.bmp
deleted file mode 100644
index d51a73c..0000000
Binary files a/winboard/bitmaps/w49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w49w.bmp b/winboard/bitmaps/w49w.bmp
deleted file mode 100644
index d8158af..0000000
Binary files a/winboard/bitmaps/w49w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w54o.bmp b/winboard/bitmaps/w54o.bmp
deleted file mode 100644
index ee12647..0000000
Binary files a/winboard/bitmaps/w54o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w54s.bmp b/winboard/bitmaps/w54s.bmp
deleted file mode 100644
index 1984975..0000000
Binary files a/winboard/bitmaps/w54s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w54w.bmp b/winboard/bitmaps/w54w.bmp
deleted file mode 100644
index 8db2f9e..0000000
Binary files a/winboard/bitmaps/w54w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w72o.bmp b/winboard/bitmaps/w72o.bmp
deleted file mode 100644
index c9c8969..0000000
Binary files a/winboard/bitmaps/w72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w72s.bmp b/winboard/bitmaps/w72s.bmp
deleted file mode 100644
index 693e36c..0000000
Binary files a/winboard/bitmaps/w72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/w72w.bmp b/winboard/bitmaps/w72w.bmp
deleted file mode 100644
index b7d0682..0000000
Binary files a/winboard/bitmaps/w72w.bmp and /dev/null differ
diff --git a/winboard/bitmaps/was.gif b/winboard/bitmaps/was.gif
deleted file mode 100644
index bebbc25..0000000
Binary files a/winboard/bitmaps/was.gif and /dev/null differ
diff --git a/winboard/bitmaps/wcv.gif b/winboard/bitmaps/wcv.gif
deleted file mode 100644
index ff56268..0000000
Binary files a/winboard/bitmaps/wcv.gif and /dev/null differ
diff --git a/winboard/bitmaps/white_14.ico b/winboard/bitmaps/white_14.ico
deleted file mode 100644
index 4783e0f..0000000
Binary files a/winboard/bitmaps/white_14.ico and /dev/null differ
diff --git a/winboard/bitmaps/wl49o.bmp b/winboard/bitmaps/wl49o.bmp
deleted file mode 100644
index 9e71d68..0000000
Binary files a/winboard/bitmaps/wl49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wl49s.bmp b/winboard/bitmaps/wl49s.bmp
deleted file mode 100644
index a24a4f4..0000000
Binary files a/winboard/bitmaps/wl49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wl72o.bmp b/winboard/bitmaps/wl72o.bmp
deleted file mode 100644
index 1e07a90..0000000
Binary files a/winboard/bitmaps/wl72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wl72s.bmp b/winboard/bitmaps/wl72s.bmp
deleted file mode 100644
index 4ea254a..0000000
Binary files a/winboard/bitmaps/wl72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wn49o.bmp b/winboard/bitmaps/wn49o.bmp
deleted file mode 100644
index e89eb7a..0000000
Binary files a/winboard/bitmaps/wn49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wn49s.bmp b/winboard/bitmaps/wn49s.bmp
deleted file mode 100644
index 0ab191a..0000000
Binary files a/winboard/bitmaps/wn49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wn72o.bmp b/winboard/bitmaps/wn72o.bmp
deleted file mode 100644
index 24f2a33..0000000
Binary files a/winboard/bitmaps/wn72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wn72s.bmp b/winboard/bitmaps/wn72s.bmp
deleted file mode 100644
index 7a91eff..0000000
Binary files a/winboard/bitmaps/wn72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wp49o.bmp b/winboard/bitmaps/wp49o.bmp
deleted file mode 100644
index f6e90fa..0000000
Binary files a/winboard/bitmaps/wp49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wp49s.bmp b/winboard/bitmaps/wp49s.bmp
deleted file mode 100644
index 88f96aa..0000000
Binary files a/winboard/bitmaps/wp49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wp72o.bmp b/winboard/bitmaps/wp72o.bmp
deleted file mode 100644
index 7c359be..0000000
Binary files a/winboard/bitmaps/wp72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/wp72s.bmp b/winboard/bitmaps/wp72s.bmp
deleted file mode 100644
index 933f377..0000000
Binary files a/winboard/bitmaps/wp72s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ws49o.bmp b/winboard/bitmaps/ws49o.bmp
deleted file mode 100644
index fe77467..0000000
Binary files a/winboard/bitmaps/ws49o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ws49s.bmp b/winboard/bitmaps/ws49s.bmp
deleted file mode 100644
index 5d2ad69..0000000
Binary files a/winboard/bitmaps/ws49s.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ws72o.bmp b/winboard/bitmaps/ws72o.bmp
deleted file mode 100644
index 316da61..0000000
Binary files a/winboard/bitmaps/ws72o.bmp and /dev/null differ
diff --git a/winboard/bitmaps/ws72s.bmp b/winboard/bitmaps/ws72s.bmp
deleted file mode 100644
index 382b4dc..0000000
Binary files a/winboard/bitmaps/ws72s.bmp and /dev/null differ
diff --git a/winboard/config.h b/winboard/config.h
deleted file mode 100644
index 099f415..0000000
--- a/winboard/config.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/* config.h.in.  Generated automatically from configure.in by autoheader.  */
-
-
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
-/*#undef HAVE_SYS_WAIT_H*/
-
-/* Define if you need to in order for stat and other things to work.  */
-/*#undef _POSIX_SOURCE*/
-
-/* Define as the return type of signal handlers (int or void).  */
-/*#undef RETSIGTYPE*/
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-/*#undef TIME_WITH_SYS_TIME*/
-
-/* Define if lex declares yytext as a char * by default, not a char[].  */
-/*#undef YYTEXT_POINTER*/
-
-/*#define FIRST_PTY_LETTER 'p'*/
-
-#define HAVE_FCNTL_H 1
-
-#define HAVE_GETHOSTNAME 0
-
-#define HAVE_GETTIMEOFDAY 0
-
-/* Use our own random() defined in winboard.c. */
-#define HAVE_RANDOM 0
-
-#define HAVE_SYS_SOCKET_H 0
-
-/*#undef IBMRTAIX*/
-
-#define LAST_PTY_LETTER 'q'
-
-/* Name of package */
-#define PACKAGE "WinBoard"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "bug-xboard at gnu.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "WinBoard"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "WinBoard 4.4.0"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "winboard"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.4.0"
-
-#define PTY_ITERATION
-
-#define PTY_NAME_SPRINTF
-
-#define PTY_TTY_NAME_SPRINTF
-
-#define REMOTE_SHELL ""
-
-/*#undef RTU*/
-
-/*#undef UNIPLUS*/
-
-#define USE_PTYS 0
-
-/*#undef X_WCHAR*/
-
-#ifndef __BORLANDC__
-#define WIN32 1
-#else
-#define WIN32
-#endif
-
-#define ZIPPY 1
-
-/* Define if you have the _getpty function.  */
-/*#undef HAVE__GETPTY*/
-
-/* Define if you have the ftime function.  */
-#define HAVE_FTIME 1
-
-/* Define if you have the grantpt function.  */
-/*#undef HAVE_GRANTPT*/
-
-/* Define if you have the rand48 function.  */
-/*#undef HAVE_RAND48*/
-
-/* Define if you have the sysinfo function.  */
-/*#undef HAVE_SYSINFO*/
-
-/* Define if you have the <lan/socket.h> header file.  */
-/*#undef HAVE_LAN_SOCKET_H*/
-
-/* Define if you have the <string.h> header file.  */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <stropts.h> header file.  */
-/*#undef HAVE_STROPTS_H*/
-
-/* Define if you have the <sys/fcntl.h> header file.  */
-#define HAVE_SYS_FCNTL_H 0
-
-/* Define if you have the <sys/systeminfo.h> header file.  */
-/*#undef HAVE_SYS_SYSTEMINFO_H*/
-
-/* Define if you have the <sys/time.h> header file.  */
-/*#undef HAVE_SYS_TIME_H*/
-
-/* Define if you have the <unistd.h> header file.  */
-/*#undef HAVE_UNISTD_H*/
-
-/* Define if you have the i library (-li).  */
-/*#undef HAVE_LIBI*/
-
-/* Define if you have the seq library (-lseq).  */
-/*#undef HAVE_LIBSEQ*/
-
-/*
-  Options
-  -DEMULATE_RSH -DREMOTE_SHELL=\"\" is necessary on Windows 95, because it
-    does not have its own rsh command.  It works better this way on NT too,
-    because the NT rsh does not propagate signals to the remote process.
-  -DATTENTION is included even though I haven't been able to send signals to
-    child processes on Windows, because at least I can send them over rsh to
-    Unix programs.  On Windows I send a newline instead, which wakes up the
-    chess program if it's polling.  On my GNU Chess port the newline actually 
-    works even for Move Now.
-*/
-#define EMULATE_RSH 1
-#define ATTENTION 1
-
-#ifdef __BORLANDC__
-#define _strdup(x) strdup(x)
-#define STRICT
-#define _winmajor 3  /* windows 95 */
-#endif
-
-/* Some definitions required by MSVC 4.1 */ 
-#ifndef WM_MOUSEWHEEL 
-#define WM_MOUSEWHEEL 0x020A 
-#endif 
-#ifndef SCF_DEFAULT 
-#define SCF_DEFAULT 0x0000 
-#define SCF_ALL 0x0004 
-#endif 
-
-#ifdef _MSC_VER
-#define snprintf _snprintf
-#endif
diff --git a/winboard/defaults.h b/winboard/defaults.h
deleted file mode 100644
index aa7246f..0000000
--- a/winboard/defaults.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * defaults.h -- Default settings for Windows NT front end to XBoard
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts.
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-/* Static */
-#define POSITION_FILT "Position files (*.fen,*.epd,*.pos)\0*.fen;*.epd;*.pos\0All files (*.*)\0*.*\0"
-#define GAME_FILT     "Game files (*.pgn,*.gam)\0*.pgn;*.gam\0All files (*.*)\0*.*\0"
-#define DIAGRAM_FILT  "bitmap files (*.bmp)\0*.bmp\0All files (*.*)\0*.*\0"
-#define SOUND_FILT    "Wave files (*.wav)\0*.wav\0All files (*.*)\0*.*\0"
-#define OUTER_MARGIN (tinyLayout ? 0 : 4)
-#define INNER_MARGIN (tinyLayout ? 0 : 2)
-#define MESSAGE_LINE_LEFTMARGIN 2
-#define MESSAGE_TEXT_MAX 256
-/*#define COLOR_ECHOOFF RGB(192,192,192)*/
-#define COLOR_ECHOOFF consoleBackgroundColor
-#define WRAP_INDENT 200
-
-/* Settable */
-#define FIRST_CHESS_PROGRAM	""
-#define FIRST_DIRECTORY		""
-#define SECOND_CHESS_PROGRAM	""
-#define SECOND_DIRECTORY	""
-
-#define CLOCK_FONT_TINY        "Arial:9.0 b"
-#define CLOCK_FONT_TEENY       "Arial:9.0 b"
-#define CLOCK_FONT_DINKY       "Arial:10.0 b"
-#define CLOCK_FONT_PETITE      "Arial:10.0 b"
-#define CLOCK_FONT_SLIM        "Arial:12.0 b"
-#define CLOCK_FONT_SMALL       "Arial:14.0 b"
-#define CLOCK_FONT_MEDIOCRE    "Arial:14.0 b"
-#define CLOCK_FONT_MIDDLING    "Arial:14.0 b"
-#define CLOCK_FONT_AVERAGE     "Arial:15.0 b"
-#define CLOCK_FONT_MODERATE    "Arial:16.0 b"
-#define CLOCK_FONT_MEDIUM      "Arial:16.0 b"
-#define CLOCK_FONT_BULKY       "Arial:17.0 b"
-#define CLOCK_FONT_LARGE       "Arial:19.0 b"
-#define CLOCK_FONT_BIG         "Arial:20.0 b"
-#define CLOCK_FONT_HUGE        "Arial:21.0 b"
-#define CLOCK_FONT_GIANT       "Arial:22.0 b"
-#define CLOCK_FONT_COLOSSAL    "Arial:23.0 b"
-#define CLOCK_FONT_TITANIC     "Arial:24.0 b"
-
-#define MESSAGE_FONT_TINY      "Small Fonts:6.0"
-#define MESSAGE_FONT_TEENY     "Small Fonts:6.0"
-#define MESSAGE_FONT_DINKY     "Small Fonts:7.0"
-#define MESSAGE_FONT_PETITE    "Small Fonts:7.0"
-#define MESSAGE_FONT_SLIM      "Arial:8.0 b"
-#define MESSAGE_FONT_SMALL     "Arial:9.0 b"
-#define MESSAGE_FONT_MEDIOCRE  "Arial:9.0 b"
-#define MESSAGE_FONT_MIDDLING  "Arial:9.0 b"
-#define MESSAGE_FONT_AVERAGE   "Arial:10.0 b"
-#define MESSAGE_FONT_MODERATE  "Arial:10.0 b"
-#define MESSAGE_FONT_MEDIUM    "Arial:10.0 b"
-#define MESSAGE_FONT_BULKY     "Arial:10.0 b"
-#define MESSAGE_FONT_LARGE     "Arial:10.0 b"
-#define MESSAGE_FONT_BIG       "Arial:11.0 b"
-#define MESSAGE_FONT_HUGE      "Arial:11.0 b"
-#define MESSAGE_FONT_GIANT     "Arial:11.0 b"
-#define MESSAGE_FONT_COLOSSAL  "Arial:12.0 b"
-#define MESSAGE_FONT_TITANIC   "Arial:12.0 b"
-
-#define COORD_FONT_TINY        "Small Fonts:4.0"
-#define COORD_FONT_TEENY       "Small Fonts:4.0"
-#define COORD_FONT_DINKY       "Small Fonts:5.0"
-#define COORD_FONT_PETITE      "Small Fonts:5.0"
-#define COORD_FONT_SLIM        "Small Fonts:6.0"
-#define COORD_FONT_SMALL       "Small Fonts:7.0"
-#define COORD_FONT_MEDIOCRE    "Small Fonts:7.0"
-#define COORD_FONT_MIDDLING    "Small Fonts:7.0"
-#define COORD_FONT_AVERAGE     "Arial:7.0 b"
-#define COORD_FONT_MODERATE    "Arial:7.0 b"
-#define COORD_FONT_MEDIUM      "Arial:7.0 b"
-#define COORD_FONT_BULKY       "Arial:7.0 b"
-#define COORD_FONT_LARGE       "Arial:7.0 b"
-#define COORD_FONT_BIG         "Arial:8.0 b"
-#define COORD_FONT_HUGE        "Arial:8.0 b"
-#define COORD_FONT_GIANT       "Arial:8.0 b"
-#define COORD_FONT_COLOSSAL    "Arial:9.0 b"
-#define COORD_FONT_TITANIC     "Arial:9.0 b"
-
-#define CONSOLE_FONT_TINY      "Courier New:8.0"
-#define CONSOLE_FONT_TEENY     "Courier New:8.0"
-#define CONSOLE_FONT_DINKY     "Courier New:8.0"
-#define CONSOLE_FONT_PETITE    "Courier New:8.0"
-#define CONSOLE_FONT_SLIM      "Courier New:8.0"
-#define CONSOLE_FONT_SMALL     "Courier New:8.0"
-#define CONSOLE_FONT_MEDIOCRE  "Courier New:8.0"
-#define CONSOLE_FONT_MIDDLING  "Courier New:8.0"
-#define CONSOLE_FONT_AVERAGE   "Courier New:8.0"
-#define CONSOLE_FONT_MODERATE  "Courier New:8.0"
-#define CONSOLE_FONT_MEDIUM    "Courier New:8.0"
-#define CONSOLE_FONT_BULKY     "Courier New:8.0"
-#define CONSOLE_FONT_LARGE     "Courier New:8.0"
-#define CONSOLE_FONT_BIG       "Courier New:8.0"
-#define CONSOLE_FONT_HUGE      "Courier New:8.0"
-#define CONSOLE_FONT_GIANT     "Courier New:8.0"
-#define CONSOLE_FONT_COLOSSAL  "Courier New:8.0"
-#define CONSOLE_FONT_TITANIC   "Courier New:8.0"
-
-#define COMMENT_FONT_TINY      "Arial:9.0"
-#define COMMENT_FONT_TEENY     "Arial:9.0"
-#define COMMENT_FONT_DINKY     "Arial:9.0"
-#define COMMENT_FONT_PETITE    "Arial:9.0"
-#define COMMENT_FONT_SLIM      "Arial:9.0"
-#define COMMENT_FONT_SMALL     "Arial:9.0"
-#define COMMENT_FONT_MEDIOCRE  "Arial:9.0"
-#define COMMENT_FONT_MIDDLING  "Arial:9.0"
-#define COMMENT_FONT_AVERAGE   "Arial:9.0"
-#define COMMENT_FONT_MODERATE  "Arial:9.0"
-#define COMMENT_FONT_MEDIUM    "Arial:9.0"
-#define COMMENT_FONT_BULKY     "Arial:9.0"
-#define COMMENT_FONT_LARGE     "Arial:9.0"
-#define COMMENT_FONT_BIG       "Arial:9.0"
-#define COMMENT_FONT_HUGE      "Arial:9.0"
-#define COMMENT_FONT_GIANT     "Arial:9.0"
-#define COMMENT_FONT_COLOSSAL  "Arial:9.0"
-#define COMMENT_FONT_TITANIC   "Arial:9.0"
-
-#define EDITTAGS_FONT_TINY     "Courier New:8.0"
-#define EDITTAGS_FONT_TEENY    "Courier New:8.0"
-#define EDITTAGS_FONT_DINKY    "Courier New:8.0"
-#define EDITTAGS_FONT_PETITE   "Courier New:8.0"
-#define EDITTAGS_FONT_SLIM     "Courier New:8.0"
-#define EDITTAGS_FONT_SMALL    "Courier New:8.0"
-#define EDITTAGS_FONT_MEDIUM   "Courier New:8.0"
-#define EDITTAGS_FONT_MEDIOCRE "Courier New:8.0"
-#define EDITTAGS_FONT_MIDDLING "Courier New:8.0"
-#define EDITTAGS_FONT_AVERAGE  "Courier New:8.0"
-#define EDITTAGS_FONT_MODERATE "Courier New:8.0"
-#define EDITTAGS_FONT_BULKY    "Courier New:8.0"
-#define EDITTAGS_FONT_LARGE    "Courier New:8.0"
-#define EDITTAGS_FONT_BIG      "Courier New:8.0"
-#define EDITTAGS_FONT_HUGE     "Courier New:8.0"
-#define EDITTAGS_FONT_GIANT    "Courier New:8.0"
-#define EDITTAGS_FONT_COLOSSAL "Courier New:8.0"
-#define EDITTAGS_FONT_TITANIC  "Courier New:8.0"
-
-#define MOVEHISTORY_FONT_ALL    "MS Sans Serif:8.0"
-
-#define COLOR_SHOUT            "#209000"
-#define COLOR_SSHOUT         "b #289808"
-#define COLOR_CHANNEL1         "#2020E0"
-#define COLOR_CHANNEL        "b #4040FF"
-#define COLOR_KIBITZ         "b #FF00FF"
-#define COLOR_TELL           "b #FF0000"
-#define COLOR_CHALLENGE     "bi #FF0000"
-#define COLOR_REQUEST       "bi #FF0000"
-#define COLOR_SEEK             "#980808"
-#define COLOR_NORMAL           "#000000"
-#define COLOR_NONE             "#000000"
-#define COLOR_BKGD             "#FFFFFF"
-
-#define SOUND_BELL "$"
-
-#define BUILT_IN_SOUND_NAMES {\
-  "Beepbeep", "Ching", "Click", "Cymbal", "Ding", "Drip", \
-  "Gong", "Laser", "Move", "Penalty", "Phone", "Pop", "Pop2", \
-  "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \
-  "Alarm", "Challenge", "Channel", "Channel1", "Draw", "Kibitz", \
-  "Lose", "Request", "Seek", "Shout", "SShout", "Tell", "Unfinished", \
-  "Win", NULL \
-}
-
-#define SETTINGS_FILE         "winboard.ini"
-
-#define ICS_LOGON             "ics.ini"
-
-#define ICS_NAMES "\
-chessclub.com /icsport=5000 /icshelper=timestamp\n\
-freechess.org /icsport=5000 /icshelper=timeseal\n\
-global.chessparlor.com /icsport=6000 /icshelper=timeseal\n\
-chessanytime.com /icsport=5000\n\
-chess.net /icsport=5000\n\
-chess.deepnet.com /icsport=5000 /icshelper=timeseal\n\
-zics.org /icsport=5000\n\
-jogo.cex.org.br /icsport=5000\n\
-ajedrez.cec.uchile.cl /icsport=5000\n\
-fly.cc.fer.hr /icsport=7890\n\
-freechess.nl /icsport=5000 /icshelper=timeseal\n\
-jeu.echecs.com /icsport=5000\n\
-chess.unix-ag.uni-kl.de /icsport=5000 /icshelper=timeseal\n\
-chess.mds.mdh.se /icsport=5000\n\
-"
-
-#define ICS_TEXT_MENU_DEFAULT "\
--\n\
-&Who,who,0,1\n\
-Playe&rs,players,0,1\n\
-&Games,games,0,1\n\
-&Sought,sought,0,1\n\
-|&Tell (name),tell,1,0\n\
-M&essage (name),message,1,0\n\
--\n\
-&Finger (name),finger,1,1\n\
-&Vars (name),vars,1,1\n\
-&Observe (name),observe,1,1\n\
-&Match (name),match,1,1\n\
-Pl&ay (name),play,1,1\n\
-"
-
-#define FCP_NAMES "\
-fmax /fd=Fairy-Max\n\
-GNUChess\n\
-\"GNUChes5 xboard\"\n\
-"
-
-#define SCP_NAMES "\
-fmax /sd=Fairy-Max\n\
-GNUChess\n\
-\"GNUChes5 xboard\"\n\
-"
diff --git a/winboard/help.c b/winboard/help.c
deleted file mode 100644
index d10f9ab..0000000
--- a/winboard/help.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * help.h
- *
- * Copyright 2009 Free Software Foundation, Inc.
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-/* Windows html help function to avoid having to link with the htmlhlp.lib  */
-
-#include <windows.h>
-#include <stdio.h>
-#include "help.h"
-
-FILE *debugFP;
-
-HWND WINAPI
-HtmlHelp( HWND hwnd, LPCSTR helpFile, UINT action, DWORD_PTR data )
-{
-	PROCESS_INFORMATION helpProcInfo;
-	STARTUPINFO siStartInfo;
-	char buf[100];
-	static int status = 0;
-	FILE *f;
-
-	if(status < 0) return NULL;
-
-	if(!status) {
-		f = fopen(helpFile, "r");
-		if(f == NULL) {
-			status = -1;
-			return NULL;
-		}
-		status = 1;
-		fclose(f);
-	}
-
-	siStartInfo.cb = sizeof(STARTUPINFO);
-	siStartInfo.lpReserved = NULL;
-	siStartInfo.lpDesktop = NULL;
-	siStartInfo.lpTitle = NULL;
-	siStartInfo.dwFlags = STARTF_USESTDHANDLES;
-	siStartInfo.cbReserved2 = 0;
-	siStartInfo.lpReserved2 = NULL;
-	siStartInfo.hStdInput = NULL;
-	siStartInfo.hStdOutput = NULL;
-	siStartInfo.hStdError = debugFP;
-
-	sprintf(buf, "Hh.exe %s", helpFile);
-
-	// ignore the other parameters; just start the viewer with the help file
-	if(  CreateProcess(NULL,
-			   buf,		   /* command line */
-			   NULL,	   /* process security attributes */
-			   NULL,	   /* primary thread security attrs */
-			   FALSE,	   /* handles are inherited */
-			   DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP,
-			   NULL,	   /* use parent's environment */
-			   NULL,
-			   &siStartInfo,   /* STARTUPINFO pointer */
-			   &helpProcInfo)  /* receives PROCESS_INFORMATION */
-		) return hwnd; else return NULL;
-}
-
-//HWND WINAPI
-int
-MyHelp(HWND hwnd, LPSTR helpFile, UINT action, DWORD_PTR data)
-{
-	static int status = 0;
-	FILE *f;
-
-	if(status < 0) return 0;
-
-	if(!status) {
-		f = fopen(helpFile, "r");
-		if(f == NULL) {
-			status = -1;
-			return 0;
-		}
-		status = 1;
-		fclose(f);
-	}
-	return WinHelp(hwnd, helpFile, action, data);
-}
diff --git a/winboard/help.h b/winboard/help.h
deleted file mode 100644
index 7216018..0000000
--- a/winboard/help.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifdef VISTA
-#include "htmlhelp.h"
-#else
-  #ifdef _MSC_VER
-    #if _MSC_VER <= 1200
-      #define DWORD_PTR DWORD
-    #endif
-  #endif
-HWND WINAPI HtmlHelp( HWND hwnd, LPCSTR helpFile, UINT action, DWORD_PTR data );
-#endif
-int MyHelp(HWND hwnd, LPSTR helpFile, UINT action, DWORD_PTR data);
diff --git a/winboard/help/contents.hhc b/winboard/help/contents.hhc
deleted file mode 100644
index 26885f3..0000000
--- a/winboard/help/contents.hhc
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-<OBJECT type="text/site properties">
-	<param name="Auto Generated" value="Yes">
-</OBJECT>
-<UL>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="WinBoard: Chessboard for Windows">
-		<param name="Local" value="html/01.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Menus">
-		<param name="Local" value="html/02.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Buttons">
-		<param name="Local" value="html/10.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Command Line Options">
-		<param name="Local" value="html/11.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Initialization Files">
-		<param name="Local" value="html/19.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Installing Chess Engines">
-		<param name="Local" value="html/20.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Firewalls">
-		<param name="Local" value="html/21.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Limitations and Non-Limitations">
-		<param name="Local" value="html/22.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Authors and Contributors">
-		<param name="Local" value="html/23.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Name" value="Copyright">
-		<param name="Local" value="html/24.htm">
-		</OBJECT>
-</UL>
-</BODY></HTML>
diff --git a/winboard/help/html/01.htm b/winboard/help/html/01.htm
deleted file mode 100644
index 8609cb8..0000000
--- a/winboard/help/html/01.htm
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Contents</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<H1><A NAME="contents"></A><I>WinBoard</I>: Chessboard for Windows</H1>
-
-<P><B><font color="#008000">An updated description with the release of version 4.4.0.</font></B></P>
-
-<P><B><font color="#008000">“For the ultimate WinBoard Experience”</font></B></P>
-
-<P><font color="#ff0000">New features since WinBoard 4.2.7 that are implemented in Alessandro Scotti’s Winboard_x are highlighted in red.</font> <font color="#008000">New features in the WinBoard 4.3.xx series by H.G. Muller are highlighted in green,</font> <font color="#3333ff">that in the unified 4.4 series in blue.</font></P>
-
-
-
-<P><B><A NAME="description"></A>Description</B></P>
-
-<P><I>WinBoard</I> is a graphical user interface for chess. It displays a chessboard on the screen, accepts moves made with the mouse, and loads and saves game files in standard chess notation. WinBoard serves as a front-end for many different services, including:
-
-<UL>
-	<LI><B><I>Chess engines</I></B> that run on your PC. You can play a game against an engine, set up arbitrary positions, force variations, or watch a game between two engines. <I><font color="#008000">Fairy-Max</font></I> is supplied with WinBoard <font color="#008000">4.3.14,</font> and over 100 other free chess engines are available separately. Of these, Crafty is the most popular. See <A HREF="20.htm">Installing Chess Engines</A> for instructions on installing additional chess engines.<BR><BR></LI>
-
-	<LI><B><I>Chess servers</I> </B>on the Internet. You can play against other Internet Chess Server (ICS) users, observe games they are playing, review games in the ICS libraries, chat, <font color="#3333ff">analyze observed games with a chess program</font>, and more. WinBoard can also be used to run an automated computer player on the ICS, but this feature is for advanced users only and is subject to some caveats; see the separate file zippy.README for information.<BR><BR></LI>
-
-	<LI><B><I>The Web</I></B> and your own saved games. You can use WinBoard as a helper application to view files in your Web browser or the Explorer. You can use it to keep track of email postal games, browse games off the net, or review games you have saved.</LI>
-</UL>
-
-
-
-<P><B><A NAME="gettingstarted"></A>Getting Started</B></P>
-
-<P>WinBoard starts up in one of three major modes: chess engine mode, ICS client mode, or game viewer mode. You cannot change modes while WinBoard is running, but you can access all the game viewer features directly from the other two modes. Also, you can start WinBoard several times to get multiple chessboard windows running in any combination of modes.</P>
-
-<P>You will usually run WinBoard by choosing an item from the Windows Start menu that runs it in the mode you want. If you just double-click on WinBoard.exe, you get a startup dialog asking which mode you want. If you choose chess engine mode, you can then select from the installed engines; if you choose ICS client mode, you can then select from a list of known chess servers. More advanced users can <A HREF="16.htm#icsnames">customize</A> these lists or type in WinBoard <A HREF="11.htm">command line options</A> directly.</P>
-
-
-
-<P>After starting WinBoard, you can make <A NAME="move"></A>moves in several different ways. To move by dragging, press the left mouse button while the cursor is on one of your pieces, move the cursor to another square, and release the button. You can also move by clicking the left mouse button once (press and release) over one of your pieces, moving the cursor to another square, and clicking again. You drop new pieces on the board (when applicable) by selecting from a context menu. Press the right mouse button over a square to bring up the menu; no menu will come up in modes where dropping a new piece is not permitted. You can also make moves by typing them in standard algebraic chess notation. Either a dialog box will pop up for you to type into, or in ICS mode, your typing will be redirected into the ICS interaction window.</P>
-
-
-
-<P>When WinBoard<I> </I>is iconized, its <A NAME="icon"></A>icon is a white knight if it is White's turn to move, a black knight if it is Black's turn.</P>
-
-<P><B>Additional Information</B></P>
-
-<P><A HREF="02.htm">Menus</A></P>
-
-<P><A HREF="10.htm">Shortcut Buttons</A></P>
-
-<P><A HREF="11.htm">Command Line Options</A></P>
-
-<P><A HREF="19.htm">Initialization Files</A></P>
-
-<P><A HREF="20.htm">Installing Chess Engines</A></P>
-
-<P><A HREF="21.htm">Firewalls</A></P>
-
-<P><A HREF="22.htm">Limitations</A></P>
-
-<P><A HREF="23.htm">Authors</A></P>
-
-<P><A HREF="24.htm">Copyright</A></P>
-
-<P>Frequently Asked Questions</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/02.htm b/winboard/help/html/02.htm
deleted file mode 100644
index 2b1384a..0000000
--- a/winboard/help/html/02.htm
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Menus</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="menus"></A>MENUS</B></P>
-
-<P><A HREF="03.htm">File Menu</A></P>
-
-<P><A HREF="04.htm">Mode Menu</A></P>
-
-<P><A HREF="05.htm">Action Menu</A></P>
-
-<P><A HREF="06.htm">Step Menu</A></P>
-
-<P><A HREF="07.htm">Options Menu</A></P>
-
-<P><A HREF="08.htm">Help Menu</A></P>
-
-<P><A HREF="09.htm">ICS Interaction Context Menu</A></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/03.htm b/winboard/help/html/03.htm
deleted file mode 100644
index 87b0c8a..0000000
--- a/winboard/help/html/03.htm
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>File Menu</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="filemenu"></A>File Menu</B></P>
-
-
-
-<P><B><A NAME="newgame"></A><font color="#ff0000">New Game</font> <font color="#ff0000">(former</font> Reset<font color="#ff0000">)</font></B></P>
-
-<P>Resets WinBoard and the chess engine (if any) to the beginning of a new chess game. In Internet Chess Server mode, clears the current state of WinBoard, then resynchronizes with ICS by sending a <B>refresh </B>command. If you want to stop playing, observing, or examining a game on ICS, use an appropriate command from the <A HREF="05.htm">Action</A> menu, not <font color="#ff0000">New Game</font>.</P>
-
-
-
-<P><B><A NAME="newshufflegame"></A><font color="#008000">New Shuffle Game</font></B></P>
-
-<P><font color="#ff0000">Brings you to a dialog box where you can enter the number of an opening setup for shuffle variants like FRC, or ask for a random number. After pressing OK, a new game is set up, using this position. The chosen position will continue to be used on every subsequent “New Game”,</font> <font color="#008000">even if you are playing a variant that normally is not shuffled, until you select a new variant through the “New Variant…” menu.</font> <font color="#ff0000">If you enter “-1” for the position number,  new random number is drawn before every game.</font></P>
-
-<P><font color="#008000">The type of shuffling that is done in reaction to a given position number obeys restrictions that depend on the selected variant. In variants that allow castling, Kings remain on the central files, Rooks in the corners. In games with FRC-style castlings, the King starts between the Rooks, but apart from that they could be anywhere. In games without castling, there are no restrictions on King and Rook placement. Pairs of color-bound pieces (such as Bishops) will be placed on oppositely colored squares. In ICS mode this feature has no effect, as the ICS determines the starting position.</font></P>
-
-
-
-<P><B><A NAME="newvariant"></A><font color="#008000">New Variant</font></B></P>
-
-<P><font color="#008000">Select a new variant. There are controls to enter a board width, board height and holdings size, but normally you leave them at ‘-1’, which means the default value for the selected variant will be used (e.g. 8x8 for normal Chess, 9x10 for xiangqi, 10x8 for capablanca, holdings for 5 pieces in crazyhouse). You can set a deviating value for each of the three parameters (e.g. to play a crazyhouse version of xiangqi or capablanca you would set the holdings to 6 or 7). If the board width deviates from the default, the game will start with an empty board.</font></P>
-
-<P><font color="#008000">The variant will remain in force until you select a new one; i.e. subsequent “New Game” commands will start a new game of the same variant. In ICS mode this command has no effect, as the ICS determines which variant will be played.</font></P>
-
-
-
-<P><B><A NAME="loadgame"></A>Load Game</B></P>
-
-<P>Plays a game from a record file. A popup dialog prompts you for the filename. If the file contains more than one game, a second popup dialog displays a list of games (with information drawn from their PGN tags, if any), and you can select the one you want.</P>
-
-<P>The game file parser will accept PGN (portable game notation), or in fact almost any file that contains moves in algebraic notation. Notation of the form <I>P at f7</I> is accepted for piece-drops in bughouse games; this is a nonstandard extension to PGN. If the file includes a PGN position (FEN tag), or a WinBoard position diagram bracketed by "[--" and "--]" before the first move, the game starts from that position. Text enclosed in parentheses, square brackets, or curly braces is assumed to be commentary and is displayed in a pop-up window. Any other text in the file is ignored. PGN variations (enclosed in parentheses) are treated as comments; WinBoard is not able to walk variation trees. The nonstandard PGN tag <CODE>[Variant "varname"]</CODE> functions similarly to the <A HREF="18.htm#variant">variant</A> command-line option, allowing games in certain chess variants to be loaded. There is also a heuristic to recognize chess variants from the <CODE>Event</CODE> tag, by looking for the strings that the Internet Chess Servers put there when saving variant ("wild") games.</P>
-
-
-
-<P><B><A NAME="loadnextgame"></A>Load Next Game</B></P>
-
-<P>Loads the next game from the last game record file you loaded.</P>
-
-
-
-<P><B><A NAME="loadpreviousgame"></A>Load Previous Game</B></P>
-
-<P>Loads the previous game from the last game record file you loaded. Not available if the last game was loaded from a pipe.</P>
-
-
-
-<P><B><A NAME="reloadsamegame"></A>Reload Same Game</B></P>
-
-<P>Reloads the last game you loaded. Not available if the last game was loaded from a pipe.</P>
-
-
-
-<P><B><A NAME="savegame"></A>Save Game</B></P>
-
-<P>Appends a record of the current game to a file. A popup dialog prompts you for the filename. If the game did not begin with the standard starting position, the game file includes the starting position used. Game files are saved in the PGN (portable game notation) format, unless the <A HREF="15.htm#oldsavestyle">oldSaveStyle</A> option is True, in which case they are saved in an older format that is specific to WinBoard. Both formats are human-readable, and both can be read back by the Load Game command. Notation of the form <I>P at f7</I> is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN.</P>
-
-
-
-<P><B><A NAME="copygametoclipboard"></A>Copy Game To Clipboard</B></P>
-
-<P>Copies the record of the current game to the Windows clipboard in PGN (portable game notation) format.</P>
-
-
-
-<P><B><A NAME="pastegamefromclipboard"></A>Paste Game From Clipboard</B></P>
-
-<P>Plays a game from the Windows clipboard. See <A HREF="#loadgame">Load Game</A> for a discussion of game file format and parser behavior.</P>
-
-
-
-<P><B><A NAME="loadposition"></A>Load Position</B></P>
-
-<P>Sets up a position from a position file. A popup dialog prompts you for the filename. Position files must be in FEN (Forsythe-Edwards notation), or in the format that the <U>Save Position</U> command writes when <A HREF="15.htm#oldsavestyle">oldSaveStyle</A> is turned on. <font color="#008000">Note that many variants require an extension of the original FEN standard. WinBoard tries to be as universal as possible in understanding FENs when different standards are raound, but has to make a choice when writing them. In FRC is uses Shredder-FEN (Haha castling notation) , but it understands KQkq as the outermost Rook, so it also reads X-FEN. In Crazyhouse / Bughouse it appends the holdings immediately behind the board info between brackets [], but on input it also understands bFEN (which puts it behind a slash / as if it were an extra board rank). It uses a tilde ~ behind a piece to indicate it is really a promoted Pawn (like bFEN). In Shogi the holdings are printed like in Crazyhouse, but promoted pieces are represented by a plus sign + before the letter of the original piece. Letters used for the pieces can be set with the /pieceToCharTable command-line option.</font></P>
-
-
-
-<P><B><A NAME="loadnextposition"></A>Load Next Position</B></P>
-
-<P>Loads the next position from the last position file you loaded.</P>
-
-
-
-<P><B><A NAME="loadpreviousposition"></A>Load Previous Position</B></P>
-
-<P>Loads the previous position from the last position file you loaded. Not available if the last position was loaded from a pipe.</P>
-
-
-
-<P><B><A NAME="reloadsameposition"></A>Reload Same Position</B></P>
-
-<P>Reloads the last position you loaded. Not available if the last position was loaded from a pipe.</P>
-
-
-
-<P><B><A NAME="saveposition"></A>Save Position</B></P>
-
-<P>Appends a diagram of the current position to a file. A popup dialog prompts you for the filename. Positions are saved in FEN (Forsythe-Edwards notation) format, unless the <A HREF="15.htm#oldsavestyle">oldSaveStyle</A> option is True, in which case they are saved in an older, human-readable format that is specific to WinBoard<I>.</I> Both formats can be read back by the Load Position command; however, currently Load Position can load only the first position in a file.</P>
-
-
-
-<P><B><A NAME="save diagram"></A><font color="#008000">Save Diagram</font></B></P>
-
-<P><font color="#008000">Writes the current board display as a bitmap file. With this command you can use WinBoard as a diagram generator.</font></P>
-
-
-
-<P><B><A NAME="copypositiontoclipboard"></A>Copy Position To Clipboard</B></P>
-
-<P>Places a diagram of the current position (in Forsythe-Edwards notation) into the Windows clipboard.</P>
-
-
-
-<P><B><A NAME="pastepositionfromclipboard"></A>Paste Position From Clipboard</B></P>
-
-<P>Sets up a position from the Windows clipboard. Position must be in FEN (Forsythe-Edwards notation). Puts WinBoard into <A HREF="04.htm#editgame">Edit Game</A> mode if it was not there already.</P>
-
-
-
-<P><B><A NAME="exit"></A>Exit</B></P>
-
-<P>Exits from WinBoard.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/04.htm b/winboard/help/html/04.htm
deleted file mode 100644
index f448732..0000000
--- a/winboard/help/html/04.htm
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Mode Menu</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="modemenu"></A>Mode Menu</B></P>
-
-
-
-<P><B><A NAME="machinewhite"></A>Machine White</B></P>
-
-<P>Forces the chess engine to play white.</P>
-
-
-
-<P><B><A NAME="machineblack"></A>Machine Black</B></P>
-
-<P>Forces the chess engine to play black.</P>
-
-
-
-<P><B><A NAME="twomachines"></A>Two Machines</B></P>
-
-<P>Starts a game between two chess engines.</P>
-
-
-
-<P><B><A NAME="machine both"></A><font color="#008000">Machine Both</font></B></P>
-
-<P><font color="#008000">A single chess engine plays itself. Mainly useful for pseudo-engines, that are in fact communication links to another machine, where you want to observe a game that is being played. (E.g. the gothic-chess.com server). This command is not implemented yet (version 4.3.14).</font></P>
-
-
-
-<P><B><A NAME="analysismode"></A>Analysis Mode</B></P>
-
-<P>In this mode, you can make moves for both sides on the board. After each move, the chess engine will think about possible replies and display its analysis in a separate window. Crafty was the first engine to support this feature, but by now there are many others that support it as well.</P>
-
-<P><font color="#3333ff">From WinBoard 4.4 on this function can also be invoked in ‘zippy mode’, i.e. when you are logged on to an ICS with an engine loaded. In that case it is not your own moves that the engine analyzes, but the moves that are played in a game on the ICS that you are observing. You must start observing before you start the analysis mode! See the file zippy.README for how to connect to an ICS and a chess engine running on your local computer at the same time. (Basically this amounts to adding the /zp command-line option in addition to all options you would need for connecting to the ICS, as well as those needed for running the chess engine.)</font></P>
-
-
-
-<P><B><A NAME="analyzefile"></A>Analyze File</B></P>
-
-<P>In this mode, you can load a game from a file, and the chess engine will analyze each move as in Analysis Mode. Crafty was the first engine to support this feature, but by now there are many others that support it as well.</P>
-
-
-
-<P><B><A NAME="icsclient"></A>ICS Client</B></P>
-
-<P>This is the normal mode when WinBoard is connected to a chess server. If you have moved into Edit Game or Edit Position mode, you can select this option to get out.</P>
-
-<P>When you run WinBoard in ICS mode, it starts up a console window in which you can type commands and receive text responses from the chess server. You can use the standard Windows editing keys to edit your command line before pressing Enter. The console window keeps a history of the last few commands you typed. Press the up-arrow key to go back to a previous command; press the down-arrow key to go forward again to a later command. Press the right mouse button in the output area for a <A HREF="09.htm">context menu</A> of editing commands and ICS command shortcuts.</P>
-
-<P>Some useful ICS commands include <B>who</B> to see who is logged on, <B>games</B> to see what games are being played, <B>match</B> to challenge another player to a game, <B>observe</B> to observe an ongoing game, <B>examine</B> or <B>smoves</B> to review a recently completed game, and of course <B>help</B>. </P>
-
-<P>Whenever you ask to observe an ongoing game, review a completed game, or resume an adjourned game, WinBoard retrieves and parses the list of past moves from the ICS, so you can review them with <A HREF="06.htm#forward">Forward</A> and <A HREF="06.htm#backward">Backward</A> or save them with <A HREF="03.htm#savegame">Save Game</A>.</P>
-
-<P>Some special ICS Client features are activated when you are in <B>examine</B> or <B>bsetup </B>mode on ICS. See the descriptions of the menu commands <A HREF="06.htm#forward">Forward</A>, <A HREF="06.htm#backward">Backward</A>, <A HREF="#pause">Pause</A>, and <A HREF="05.htm#stopexamining">Stop Examining</A> below. You can also issue the ICS position-editing commands with the mouse. Move pieces by dragging with the left mouse button, or by left-clicking once on the starting square and once on the ending square. Press the right mouse button over a square for a context menu that lets you drop a new piece, empty the square, or clear the board. Click on the White or Black clock to set the side to play. You cannot set the side to play or drag pieces to arbitrary squares while examining on ICC, but you can do so in bsetup mode on FICS. You can also make moves by typing them into the ICS window; you may have to do this occasionally if you are playing a chess variant whose rules WinBoard does not understand, such as Fischer Random.</P>
-
-<P>If you are playing a bughouse game on the ICS, a list of the offboard pieces that each player holds is shown in the window title bar. To drop an offboard piece, press the right mouse button over an empty square to bring up a context menu. To observe your partner's games, start a second copy of WinBoard, log in as a guest, and use the ICS <B>follow</B> or <B>pfollow</B> command in the new window.</P>
-
-
-
-<P><B><A NAME="editgame"></A>Edit Game</B></P>
-
-<P>Allows you to make moves for both Black and White, and to change moves after backing up with the <A HREF="06.htm#backward">Backward</A> command. The clocks do not run, but you can adjust their reading by clicking on them. A left-click subtracts one minute, a right-click adds one minute.</P>
-
-<P>In chess engine mode, the chess engine continues to check moves for legality but does not participate in the game. You can bring the chess engine back into the game by selecting <A HREF="#machinewhite">Machine White</A>, <A HREF="#machineblack">Machine Black</A>, or <A HREF="#twomachines">Two Machines</A>.</P>
-
-<P>In ICS mode, the moves are not sent to the ICS: Edit Game takes WinBoard out of ICS Client mode and lets you edit games locally. If you want to edit a game on ICS in a way that other ICS users can see, use the ICS <B>examine</B> command or start an ICS match against yourself.</P>
-
-
-
-<P><B><A NAME="editposition"></A>Edit Position</B></P>
-
-<P>Lets you set up an arbitrary board position. Use the left mouse button to drag pieces to new squares, or to delete a piece by dragging it off the board or dragging an empty square on top of it. To drop a new piece on a square, press the right mouse button over the square. This brings up a menu of pieces. Additional menu choices let you empty the square or clear the board. You can set the side to play next by clicking on the White or Black indicator at the top of the screen. <font color="#008000">The pop-up menu also contains options to ‘promote’ or ‘demote’ the piece currently in the square. (In variants like Crazyhouse a piece has a different representation when it is a promoted Pawn rater than an original piece.) This allows you to create some of the not-so-common pieces (e.g. a Unicorn is a promoted King, a Commoner is a demoted King).</font></P>
-
-<P>Selecting Edit Position causes WinBoard<I> </I>to discard all remembered moves in the current game.</P>
-
-<P>In ICS mode, change made to the position by Edit Position are not sent to the ICS: Edit Position takes WinBoard out of ICS Client mode and lets you edit positions locally. If you want to edit positions on ICS in a way that other ICS users can see, use the ICS <B>examine</B> command, or start an ICS match against yourself. (See also <A HREF="#icsclient">ICS Client</A> above.)</P>
-
-
-
-<P><B><A NAME="show engine output"></A><font color="#ff0000">Show Engine Output</font></B></P>
-
-<P><font color="#ff0000">Open a new window dedicated to showing the thinking output of the engine(s), as controlled by “Show Thinking”.</font></P>
-
-
-
-<P><B><A NAME="show evaluation graph"></A><font color="#ff0000">Show Evaluation Graph</font></B></P>
-
-<P><font color="#ff0000">Open a new window dedicated to displaying a graph, representing the development of the engine score(s) from the current game over time. (Needs “show Thinking” to be enabled in order to work.</font></P>
-
-
-
-<P><B><A NAME="showgamelist"></A>Show Game List</B></P>
-
-<P>Shows or hides the list of games generated by the last <A HREF="03.htm#loadgame">Load Game</A> command.</P>
-
-
-
-<P><B><A NAME="show move history"></A><font color="#ff0000">Show Move History</font></B></P>
-
-<P><font color="#ff0000">Open a new window dedicated to showing the game currently in progress.</font></P>
-
-
-
-<P><B><A NAME="training"></A>Training</B></P>
-
-<P>Training mode lets you interactively guess the moves of a game for one of the players. While in Training mode, the navigation buttons are disabled. You guess the next move of the game by playing the move on the board (or using the <A HREF="06.htm#typeinmove">Type In Move</A> command). If the move played matches the next move of the game, the move is accepted and the opponent’s response is autoplayed.  If the move played is incorrect, an error message is displayed. </P>
-
-
-
-<P><B><A NAME="edittags"></A>Edit Tags</B></P>
-
-<P>Lets you edit the PGN (portable game notation) tags for the current game. After editing, the tags must still conform to the PGN tag syntax:</P>
-
-<PRE><CODE>
-&lt;tag-section&gt; ::= &lt;tag-pair&gt; &lt;tag-section&gt;
-                  &lt;empty&gt;
-&lt;tag-pair&gt;    ::= [ &lt;tag-name&gt; &lt;tag-value&gt; ]
-&lt;tag-name&gt;    ::= &lt;identifier&gt;
-&lt;tag-value&gt;   ::= &lt;string&gt;</CODE></PRE>
-
-<P>See the PGN Standard for full details. Here is an example:</P>
-
-<PRE><CODE>
-[Event "Portoroz Interzonal"]
-[Site "Portoroz, Yugoslavia"]
-[Date "1958.08.16"]
-[Round "8"]
-[White "Robert J. Fischer"]
-[Black "Bent Larsen"]
-[Result "1-0"]</CODE></PRE>
-
-<P>Any characters that do not match this syntax are silently ignored. Note that the PGN standard requires all games to have at least the seven tags shown above. Any that you omit will be filled in by WinBoard with <CODE>"?"</CODE> (unknown value) or <CODE>"-"</CODE> (inapplicable value).</P>
-
-
-
-<P><B><A NAME="editcomment"></A>Edit Comment</B></P>
-
-<P>Adds or modifies a comment on the current position. Comments are saved by <A HREF="03.htm#savegame">Save Game</A> and are displayed by <A HREF="03.htm#loadgame">Load Game</A>, <A HREF="06.htm#forward">Forward</A>, and <A HREF="06.htm#backward">Backward</A>.</P>
-
-
-
-<P><B><A NAME="enterusername"></A><font color="#008000">Enter Username</font></B></P>
-
-<P><font color="#008000">Allows you to type the name of the human player, which will appear in the PGN header and in the window title.</font></P>
-
-
-
-<P><B><A NAME="pause"></A>Pause</B></P>
-
-<P>Pauses updates to the board, and if you are playing against a local chess engine, also pauses your clock. To continue, select Pause again, and the display will automatically update to the latest position. The <B>P</B> (or <B>C</B>) button is equivalent to selecting Pause.</P>
-
-<P>If you select Pause when you are playing against a chess engine and it is not your move, the chess engine’s clock will continue to run and it will eventually make a move, at which point both clocks will stop. Since board updates are paused, however, you will not see the move until you exit from Pause mode (or select <A HREF="06.htm#forward">Forward</A>). This behavior is meant to simulate adjournment with a sealed move.</P>
-
-<P>If you select Pause while you are in <B>examine</B> mode on ICS, you can step backward and forward in the current history of the examined game without affecting the other examiners or observers. Select Pause again to reconnect yourself to the current state of the game on ICS.</P>
-
-<P>If you select Pause while you are loading a game, the game stops loading. You can load more moves one at a time by selecting <A HREF="06.htm#forward">Forward</A>, or resume automatic loading by selecting Pause again.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/05.htm b/winboard/help/html/05.htm
deleted file mode 100644
index 4e04f9b..0000000
--- a/winboard/help/html/05.htm
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Action Menu</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="actionmenu"></A>Action Menu</B></P>
-
-<P>Most of these commands are available in chess server mode only.</P>
-
-
-
-<P><B><A NAME="accept"></A>Accept</B></P>
-
-<P>Accepts a pending match offer. If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice.</P>
-
-
-
-<P><B><A NAME="decline"></A>Decline</B></P>
-
-<P>Declines a pending offer (match, draw, etc.). If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice.</P>
-
-
-
-<P><B><A NAME="rematch"></A>Rematch</B></P>
-
-<P>Issues the ICS <B>rematch</B> command, which asks for another game against your last opponent with the same time control and rule set.</P>
-
-
-
-<P><B><A NAME="callflag"></A>Call Flag</B></P>
-
-<P>Calls your opponent's flag, claiming a win on time, or claiming a draw if you are both out of time. You can also call your opponent's flag by clicking on his clock.</P>
-
-
-
-<P><B><A NAME="draw"></A>Draw</B></P>
-
-<P>Offers a draw to your opponent, accepts a pending draw offer from your opponent, or claims a draw by repetition or the 50-move rule, as appropriate.</P>
-
-
-
-<P><B><A NAME="adjourn"></A>Adjourn</B></P>
-
-<P>Asks your opponent to agree to adjourning the current game, or agrees to a pending adjournment offer from your opponent. You continue an adjourned ICS game by challenging the same player again with the ICS <B>match</B> command.</P>
-
-
-
-<P><B><A NAME="abort"></A>Abort</B></P>
-
-<P>Asks your opponent to agree to abort the current game, or agrees to a pending abort offer from your opponent. An aborted ICS game ends immediately without affecting either player's rating.</P>
-
-
-
-<P><B><A NAME="resign"></A>Resign</B></P>
-
-<P>Resigns the game to your opponent.</P>
-
-
-
-<P><B><A NAME="stopobserving"></A>Stop Observing</B></P>
-
-<P>Ends your participation in observing a game, by issuing the ICS <B>unobserve</B> command.</P>
-
-
-
-<P><B><A NAME="stopexamining"></A>Stop Examining</B></P>
-
-<P>Ends your participation in observing a game, by issuing the ICS <B>unobserve</B> command.</P>
-
-
-
-<P><B><A NAME="adjudicatetowhite"></A><font color="#ff0000">Adjudicate To White</font></B></P>
-
-<P><font color="#ff0000">End the current game and stop participating engine. The result will appear in the PGN as a win for white.</font></P>
-
-
-
-<P><B><A NAME="adjudicatetoblack"></A><font color="#ff0000">Adjudicate To Black</font></B></P>
-
-<P><font color="#ff0000">Same as above, but game will appear as a win for black.</font></P>
-
-
-
-<P><B><A NAME="adjudicatedraw"></A><font color="#ff0000">Adjudicate Draw</font></B></P>
-
-<P><font color="#ff0000">Same as above, but game will appear as a draw.</font></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/06.htm b/winboard/help/html/06.htm
deleted file mode 100644
index 23b0a72..0000000
--- a/winboard/help/html/06.htm
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Step Menu</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="stepmenu"></A>Step Menu</B></P>
-
-
-
-<P><B><A NAME="typeinmove"></A>Type In Move</B></P>
-
-<P>Pops up a dialog box, into which you can type moves in standard algebraic chess notation. (You can also get this dialog box by simply starting to type over the chessboard, except in ICS mode, where such typing is redirected into the ICS interaction window.)</P>
-
-
-
-<P><B><A NAME="backward"></A>Backward</B></P>
-
-<P>Steps backward through a series of remembered moves. The <B>&lt;</B> button is equivalent to selecting Backward<font color="#3333ff">, as is turning the mouse wheel towards you</font>. In most modes, Backward only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Backward in any of these situations, you will not be allowed to make a different move. Use <A HREF="#retractmove">Retract Move</A> or <A HREF="04.htm#editgame">Edit Game</A> if you want to change past moves.</P>
-
-<P>If you are examining a game on the ICS, the behavior of Backward depends on whether WinBoard<I> </I>is in <A HREF="04.htm#pause">Pause</A> mode. If Pause mode is off, Backward issues the ICS command<B> backward</B>, which backs up everyone's view of the game and allows you to make a different move. If Pause mode is on, Backward only backs up your local view.</P>
-
-
-
-<P><B><A NAME="forward"></A>Forward</B></P>
-
-<P>Steps forward through a series of remembered moves (undoing the effect of <A HREF="#backward">Backward</A>) or through a game file. The <B>&gt;</B> button is equivalent<font color="#3333ff">, as is turning the mouse wheel away from you</font>.</P>
-
-<P>If you are examining a game on the ICS, the behavior of Forward depends on whether WinBoard<I> </I>is in <A HREF="04.htm#pause">Pause</A> mode. If Pause mode is off, Forward issues the ICS command<B> forward</B>, which moves everyone's view of the game forward along the current line. If Pause mode is on, Forward only moves your local view forward, and it will not go past the position the game was in when you paused.</P>
-
-
-
-<P><B><A NAME="backtostart"></A>Back to Start</B></P>
-
-<P>Jumps backward to the first remembered position in the game. The <B>&lt;&lt; </B>button is equivalent.</P>
-
-<P>In most modes, Back to Start only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Back to Start in any of these situations, you will not be allowed to make a different move. Use <A HREF="#retractmove">Retract Move</A> or <A HREF="04.htm#editgame">Edit Game</A> if you want to change past moves; or use <A HREF="03.htm#newgame">New Game</A> to start a new game.</P>
-
-<P>If you are examining a game on the ICS, the behavior of Back to Start depends on whether WinBoard<I> </I>is in <A HREF="04.htm#pause">Pause</A> mode. If Pause mode is off, Backward issues the ICS command <B>backward 999999</B>, which backs up everyone's view of the game to the start and allows you to make different moves. If Pause mode is on, Back to Start only backs up your local view.</P>
-
-
-
-<P><B><A NAME="forwardtoend"></A>Forward to End</B></P>
-
-<P>Jumps forward to the last position in the game. The <B>&gt;&gt;</B> button is equivalent.</P>
-
-<P>If you are examining a game on the ICS, the behavior of Forward to End depends on whether WinBoard<I> </I>is in <A HREF="04.htm#pause">Pause</A> mode. If Pause mode is off, Forward to End issues the ICS command <B>forward 999999</B>, which moves everyone's view of the game forward to the end of the current line. If Pause mode is on, Forward to End only moves your local view forward, and it will not go past the position the game was in when you paused.</P>
-
-
-
-<P><B><A NAME="revert"></A>Revert</B></P>
-
-<P>If you are examining a game on the ICS, issues the ICS command <B>revert</B>.</P>
-
-
-
-<P><B><A NAME="truncategame"></A>Truncate Game</B></P>
-
-<P>Discards all remembered moves of the game beyond the current position. Puts WinBoard into <A HREF="04.htm#editgame">Edit Game</A> mode if it was not there already.</P>
-
-
-
-<P><B><A NAME="movenow"></A>Move Now</B></P>
-
-<P>Forces the chess engine to move immediately. May not work with all chess engines.</P>
-
-
-
-<P><B><A NAME="retractmove"></A>Retract Move</B></P>
-
-<P>Retracts your last move.</P>
-
-<P>In chess engine mode, you can do this only after the chess engine has replied to your move. If the chess engine is still thinking, use <A HREF="#movenow">Move Now</A> first.</P>
-
-<P>In ICS mode, Retract Move issues the command <B>takeback 1 </B>or <B>takeback 2</B>, depending on whether it is your opponent's move or yours.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/07.htm b/winboard/help/html/07.htm
deleted file mode 100644
index 7d848af..0000000
--- a/winboard/help/html/07.htm
+++ /dev/null
@@ -1,401 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Options Menu</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="optionsmenu"></A>Options Menu</B></P>
-
-
-
-<P><B><A NAME="flipview"></A><U>Flip View</U></B></P>
-
-<P>Inverts your view of the chessboard.</P>
-
-<P>If you are playing a game on the ICS, the board is always oriented at the start of the game so that your pawns move from the bottom of the window towards the top. Otherwise, the starting position is determined by the <A HREF="16.htm#flipviewoption">flipView</A> command line option.</P>
-
-
-
-<P><B><A NAME="swap clocks"></A><font color="#008000"><U>Swap Clocks</U></font></B></P>
-
-<P><font color="#008000">Interchanges the position of the white and black clocks on the screen. Intended for manually-operated computer-computer games, where the monitor is standing to the side of the playing board, to make sure that the operator sees the time of his own machine on his side of the table. Note that it is possible to adjust the clocks in steps of one minute, by left- (decrement) or right-clicking (increment) it with the mouse in “Edit Game” mode. (Clicking the clocks in other modes is interpreted as claiming the flag.)</font></P>
-
-
-
-<P><B><U><A NAME="generaloptions"></A>General</U></B></P>
-
-
-
-<P><B><A NAME="alwaysontop"></A>Always On Top</B></P>
-
-<P>If this option is on, WinBoard sets its chessboard to be a <I>topmost</I> window, meaning that it always appears on top of all ordinary windows on the screen.</P>
-
-
-
-<P><B><A NAME="alwaysqueen"></A>Always Queen</B></P>
-
-<P>If Always Queen is off, WinBoard brings up a dialog box whenever you move a pawn to the last rank, asking what piece you want to promote it to. If the option is on, your pawns are always promoted to queens. Your opponent can still underpromote, however.</P>
-
-
-
-<P><B><A NAME="animatedragging"></A>Animate Dragging</B></P>
-
-<P>If Animate Dragging is on while you are dragging a piece with the mouse, an image of the piece follows the mouse cursor. If Animate Dragging is off, there is no visual feedback while you are</P>
-
-<P>dragging a piece, but if Animate Moving is on, the move will be animated when it is complete.</P>
-
-
-
-<P><B><A NAME="animatemoving"></A>Animate Moving</B></P>
-
-<P>If Animate Moving is on, all piece moves are animated.  An image of the piece is shown moving from the old square to the new square when the move is completed (unless the move was already animated by Animate Dragging). If Animate Moving is off, a moved piece instantly disappears from its old square and reappears on its new square when the move is complete.</P>
-
-
-
-<P><B><A NAME="autoflagcmd"></A>Auto Flag</B></P>
-
-<P>If this option is on and one player runs out of time before the other, WinBoard will automatically call his flag, claiming a win on time. In ICS mode, Auto Flag will only call your opponent's flag, not yours, and the ICS may award you a draw instead of a win if you have insufficient mating material. On most chess servers, you can now do<B> set autoflag 1 </B>instead and have the server call the flag. In local chess engine mode, WinBoard may call either player's flag and will not take material into account.</P>
-
-
-
-<P><B><A NAME="autoflipview"></A>Auto Flip View</B></P>
-
-<P>If this option is on when you start a game, the board will be automatically oriented so that your pawns move from the bottom of the window towards the top.</P>
-
-
-
-<P><B><A NAME="autoraiseboard"></A>Auto Raise Board</B></P>
-
-<P>If this option is on, whenever a new game begins, the chessboard window will be deiconized (if necessary) and raised to the top of the stack of windows on your screen.</P>
-
-
-
-<P><B><A NAME="blindfoldcmd"></A>Blindfold</B></P>
-
-<P>If Blindfold is on, WinBoard displays a blank board. Moves can still be entered with the mouse, either by dragging the (invisible) piece or clicking the starting and ending square. You can also enter your move by typing it on the keyboard.</P>
-
-
-
-<P><B><A NAME="highlightdragging"></A>Highlight Dragging</B></P>
-
-<P>If Highlight Dragging is on while you are dragging a piece with the mouse, the starting square and the square that the mouse cursor is over are highlighted. This option works even if Animate Dragging is off.</P>
-
-
-
-<P><B><A NAME="extendedpgninfo"></A><font color="#ff0000">Extended PGN Info</font></B></P>
-
-<P><font color="#ff0000">The PGN will contain the engine search depth, score and time for each move where the depth is non-zero, as a comment behind the move if this option is on. Works only when “Show Thinking” is enabled. The recorded time is the time reported by the engine.</font></P>
-
-
-
-<P><B><A NAME="extrainfoinmovehistory"></A><font color="#ff0000">Extra Info In Move History</font></B></P>
-
-<P><font color="#ff0000">Same as above, but in move-history window.</font></P>
-
-
-
-<P><B><A NAME="highlightlastmove"></A>Highlight Last Move</B></P>
-
-<P>If Highlight Last Move is on, after a move is made, the starting and ending squares remain highlighted. In addition, after you use <A HREF="06.htm#backward">Backward</A> or <A HREF="06.htm#backtostart">Back to Start</A>, the starting and ending squares of the last move to be <I>unmade</I> are highlighted.</P>
-
-
-
-<P><B><A NAME="periodicupdatescmd"></A>Periodic Updates</B></P>
-
-<P>If Periodic Updates is on, the Analysis window is updated every two seconds. If not, it is updated only when the best move found changes. The Analysis window currently works only with Crafty, and Periodic Updates may not work with all versions of Crafty.</P>
-
-
-
-<P><B><A NAME="pondernextmovecmd"></A>Ponder Next Move</B></P>
-
-<P>If this option is off, the chess engine will think only when it is on move. If the option is on, the engine will also think while waiting for you to make your move.</P>
-
-
-
-<P><B><A NAME="popupexitmessagecmd"></A>Popup Exit Message</B></P>
-
-<P>If this option is on, when WinBoard wants to display a message just before exiting, it brings up a modal dialog box and waits for you to click OK before exiting. If the option is off, WinBoard prints exits immediately without showing the message. If <A HREF="15.htm#debugmode">debugMode</A> is on, however, the message will appear in the debug log.</P>
-
-
-
-<P><B><A NAME="popupmoveerrorscmd"></A>Popup Move Errors</B></P>
-
-<P>If this option is off, when you make an error in moving (such as attempting an illegal move or moving the wrong color piece), the error message is displayed in the message area. If the option is on, move errors are displayed in small popup windows like other errors. You can dismiss an error popup either by clicking its OK button or by clicking anywhere on the board, including downclicking to start a move.</P>
-
-
-
-<P><B><A NAME="showbuttonbarcmd"></A>Show Button Bar</B></P>
-
-<P>If Show Button Bar is on, WinBoard displays on-screen <A HREF="10.htm">buttons</A> to step forward, backward, or pause the game. If it is off, the buttons are hidden, making the message line wider.</P>
-
-
-
-<P><B><A NAME="showcoordscmd"></A>Show Coords</B></P>
-
-<P>If Show Coords is on, WinBoard displays algebraic coordinates along the board's left and bottom edges. </P>
-
-
-
-<P><B><A NAME="showthinkingcmd"></A>Show Thinking</B></P>
-
-<P>If this option is set, WinBoard displays the chess engine’s current search depth and its notion of the score and best line of play from the current position as it is thinking. The score indicates how many pawns ahead (or if negative, behind) the engine thinks it is. In matches between two machines, the score is prefixed by W or B to indicate whether it is showing White's thinking or Black's.</P>
-
-
-
-<P><B><A NAME="testlegalitycmd"></A>Test Legality</B></P>
-
-<P>If Test Legality is on, WinBoard tests whether the moves you enter with the mouse or read from game files are legal, and displays an error if they are not. Turn this option off if you are playing a chess variant that WinBoard does not understand. (Bughouse, suicide, and wild variants where the king may castle after starting on the <B>d</B> file are generally supported with Test Legality on. <font color="#008000">The same holds for variants with non-FIDE pieces, like shatranj, xangqi, shogi, gothic, capablanca, courier, knightmate: WinBoard knows how all pieces occurring in those variants move. Falcon, cylinder and berolina are only partly supported, though, and the latter two should definitely be played with legality testing off, and falcon uses a wildcard piece for the Falcons, so it considers any move of them legal, but might miss checkmates that involve a Falcon. So you should not play it with claim verification switched on.)</font></P>
-
-
-
-<P><B><A NAME="hidethinkingfromhuman"></A><font color="#ff0000">Hide Thinking From Human</font></B></P>
-
-<P><font color="#ff0000">An alternative to suppressing the Thinking Output in the display above the board by switching “Show Thinking” off, but doing it in a way that still allows the extended PGN info to be recorded.</font></P>
-
-
-
-<P><B><A NAME="highlightmovewitharrow"></A><font color="#ff0000">Highlight Move With Arrow</font></B></P>
-
-<P><font color="#ff0000">A big, fat arrow is drawn between the start and target field of the last move, so you cannot possibly miss it.</font></P>
-
-
-
-<P><B><U><A NAME="boardoptions"></A>Board</U></B></P>
-
-
-
-<P><B><A NAME="boardsizecmd"></A>Board Size</B></P>
-
-<P>Determines how large the board will be and what fonts and piece bitmaps will be used. On a Titanic board the piece bitmaps are 129x129 pixels, on Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72, Medium 64x64, Moderate 58x58, Average 54x54, Middling 49x49, Mediocre 45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25, and Tiny 21x21. The smaller boards have no system menu, but you can minimize or close them from the File menu.</P>
-
-<P>You can also change the board size by dragging the window edges or corners with the mouse. The board will snap to the largest size that fits into the area you outline.</P>
-
-<P><font color="#008000">Note that only sizes Bulky, Middling and to a lesser extent Petite have built-in bitmaps for the non-FIDE- pieces. Archbishop, Chancellor and the wildcard Lance exist in all sizes from Petite to Bulky, though. In size Moderate, variant shogi uses the traditional Japanese piece representation.</font></P>
-
-
-
-<P><B><A NAME="boardcolors"></A>Board Colors</B></P>
-
-<P>Lets you change the colors WinBoard is using to draw the board and pieces.</P>
-
-
-
-<P><B><A NAME="allwhite"></A><font color="#008000">All White</font></B></P>
-
-<P><font color="#008000">Uses the representation of the white pieces (a filled-in black outline) also for the black pieces (where you can fill them with another color to distinguish them). If you do not choose a very dark color for the black pieces, they look very ugly without outline, and using this option can fix that.</font></P>
-
-
-
-<P><B><A NAME="flipblack"></A><font color="#008000">Flip Black</font></B></P>
-
-<P><font color="#008000">Displays the black pieces upside down (or the white pieces in “Flip View”). This is useful in Shogi, when you want to use the traditional Japanese representation of the pieces.</font></P>
-
-
-
-<P><B><font color="#ff0000"><U><A NAME="adjudications"></A>Adjudications</U></font></B></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="pondernextmove"></A>Ponder Next Move,<SUP> <A NAME="showthinking"></A></SUP>Show Thinking, <A NAME="hidethinkingfromhuman"></A>Hide Thinking from Human and <A NAME="periodicupdates"></A>Periodic Updates</B></font></P>
-
-<P><font color="#ff0000">Duplicates of the controls in the “General” option menu.</font></P>
-
-
-
-<P><B><A NAME="adjudicatedrawmoves"></A><font color="#ff0000">Adjudicate Draw Moves</font></B></P>
-
-<P><font color="#ff0000">Adjudicate a draw after the given number of moves, to prevent games from dragging on forever if two engines in a dead-drawn position, conspire to avoid 50-move draws. This and the folowing options are only active in “Two Machines” mode.</font></P>
-
-
-
-<P><B><A NAME="adjudicatelossthreshold"></A><font color="#ff0000">Adjudicate Loss Threshold</font></B></P>
-
-<P><font color="#ff0000">Adjudicate the game as a loss when both engines agree that the (negative) score is  below the given threshold for the duration of 6 consecutive plies.</font></P>
-
-
-
-<P><B><A NAME="verifyclaims"></A><font color="#008000">Verify Claims</font></B></P>
-
-<P><font color="#008000">Verify result claims made by engines when they terminate the game. If needed, correct the results to a loss for the engine making the false claim. Needs “Test Legality” to be on in order to work.</font></P>
-
-
-
-<P><B><A NAME="detectmates"></A><font color="#008000">Detect Mates</font></B></P>
-
-<P><font color="#008000">Let WinBoard detect checkmate and stalemate, even before the engine gets the chance to claim it. Useful with buggy engines, that exit without a claim, or just hang. Needs “Test Legality” to be on in order to work.</font></P>
-
-
-
-<P><B><A NAME="drawifinsufficientmaterial"></A><font color="#008000">Draw If Insufficient Material</font></B></P>
-
-<P><font color="#008000">If this option is on, WinBoard will recognize KBKB positions with equally colored Bishops, KBK, KNK, and KK positions as draws, even before the engine can claim them. Needs “Test Legality” to be on in order to work.</font></P>
-
-
-
-<P><B><A NAME="adjudicatetrivialdraws"></A><font color="#008000">Adjudicate Trivial Draws</font></B></P>
-
-<P><font color="#008000">If this option is on, KBKB (with B on unlike color), KBKN, KNKN, KNNK, KRKR and KQKQ positions will be adjudicated draw after 6 ply. For KQKQ this is not really sound, and in the future it might be taken out of this option. But as long as tablebase adjudications are not implemented, it seems best to group this end-game with the trivial draws. Needs “Test Legality” to be on in order to work.</font></P>
-
-
-
-<P><B><A NAME="n-moverule"></A><font color="#008000">N-Move Rule</font></B></P>
-
-<P><font color="#008000">Here you can set the number of reversible moves (non-pawn, non-capture) after which WinBoard should adjudicate a game as draw. Engine draw claims are always consider ed valid after 50 moves (in the context of “Verify Claims”), but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to a smaller value if you are impatient.</font></P>
-
-
-
-<P><B><A NAME="n-foldrepetitionrule"></A><font color="#008000">N-Fold Repetition Rule</font></B></P>
-
-<P><font color="#008000">Here you can set the number of repetitions of the same position that should occur in order for WinBoard to adjudicate the game as draw. Engine draw claims are always consider ed valid after 3 repetitions (in the context of “Verify Claims”) , but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to 2 if you are impatient. (Do not set it to 1!)</font></P>
-
-
-
-<P><B><font color="#ff0000"><U><A NAME="engine settings"></A>Engine Settings</U></font></B></P>
-
-
-
-<P><B><A NAME="polyglotdirectory"></A><font color="#ff0000">Polyglot Directory</font></B></P>
-
-<P><font color="#ff0000">If WinBoard knows where to find Polyglot, you can install UCI engines as if they were WinBoard engines, and WinBoard will automatically invoke Polyglot as an adapter to run them.</font></P>
-
-
-
-<P><B><A NAME="hashsize"></A><font color="#ff0000">Hash Size, <A NAME="egtbpath"></A>EGTB Path, <A NAME="egtbcachesize"></A>EGTB Cache Size, <A NAME="openingbook"></A>Opening Book, <A NAME="number of cpus"></A>Number of CPUs</B></font></P>
-
-<P><font color="#ff0000">These are options that UCI engines expect to be specified.</font> <font color="#3333ff">WinBoard protocol now also allows native WinBoard engines to request similar information, so it might be used for these engines as well. The memory size specified by the WinBoard-protocol ‘memory’ command is the sum of the hash and EGTB cache sizes. The specified opening book, when enabled through the ‘Use Book’ check box, will be used as GUI book for engines that do not have their own book (as indicated by the check boxes). It must be a book in Polyglot format.</font></P>
-
-
-
-<P><B><U><A NAME="icsoptions"></A>ICS</U></B></P>
-
-
-
-<P><B><A NAME="autocommentcmd"></A>Auto Comment</B></P>
-
-<P>If Auto Comment is on, any remarks made on ICS while you are observing or playing a game are recorded as a comment on the current move. This includes remarks made with the ICS commands <B>say, tell, whisper, </B>and <B>kibitz</B>. Limitation: remarks that you type yourself are not </P>
-
-<P>recognized; WinBoard scans only the output from ICS, not the input you type to it.</P>
-
-
-
-<P><B><A NAME="autobscmd"></A>Auto Observe</B></P>
-
-<P>If Auto Observe is on and you add a player to your <B>gnotify</B> list on ICS, WinBoard will automatically observe all of that player's games, unless you are doing something else (such as observing or playing a game of your own) when one starts. On most chess servers, you can now do <B>follow <I>player</I></B> instead, and the server will automatically observe all of <B><I>player’s</I></B> games.</P>
-
-
-
-<P><B><A NAME="getmovelistcmd"></A>Get Move List</B></P>
-
-<P>If Get Move List is on, whenever WinBoard<I> </I>receives the first board of a new ICS game (or a different ICS game from the one it is currently displaying), it retrieves the list of past moves from the server. You can then review the moves with the Forward and Backward commands or save them with Save Game. You might want to turn off this option if you are observing several blitz games at once, to keep from wasting time and network bandwidth fetching the move lists over and over. If you turn this option on while a game is in progress, WinBoard<I> </I>immediately fetches the current move list.</P>
-
-
-
-<P><B><A NAME="locallineediting"></A>Local Line Editing</B></P>
-
-<P>If Local Line Editing is <B>on</B>, your machine handles echoing, backspacing, etc., for the characters that you type into the ICS Interaction window. Output is forwarded to the ICS only when you hit Enter.The Enter key produces a newline character, also known as Ctrl+J, \n, LF, linefeed, or decimal ASCII code 10. In this mode you can force a control character into the edit buffer by preceding it with Ctrl+Q (“quote”); however, the edit buffer will not accept certain control characters even when they are quoted in this way. You can force a control character to be sent immediately to ICS, bypassing the edit buffer, by preceding it with Ctrl+S (“send”).</P>
-
-<P>WinBoard keeps a history of lines you recently typed in Local Line Editing mode. You can bring back old lines by pressing the cursor up key in the text entry box. Press the cursor down key to go back down to newer lines.</P>
-
-<P>If Local Line Editing is <B>off</B>, all characters are sent to ICS as you type them. The Enter key produces a carriage return character, also known as Ctrl+M, \r, CR, or decimal ASCII code 13. Use Ctrl+Backspace if you need the ASCII DEL character. You can enter any character code by holding down the Alt key and typing its decimal value (always beginning with 0) on the numeric keypad; this is a little-known standard feature of Windows.</P>
-
-<P>In both modes, if WinBoard<I>’s </I>internal telnet protocol implementation is active, it translates all \n characters to the standard telnet end-of-line sequence \r\n just before sending them out to ICS; see <A HREF="14.htm#telnetprogram">telnetProgram</A>.</P>
-
-<P>It is generally not a good idea to turn off this option while connected to ICS. If you are tempted to do so because everything you type is being echoed an extra time, see the paragraph about extra echoes under <A HREF="22.htm">LIMITATIONS</A> below.</P>
-
-
-
-<P><B><A NAME="quietplaycmd"></A>Quiet Play</B></P>
-
-<P>If Quiet Play is on, WinBoard will automatically issue an ICS <B>set shout 0</B> command whenever you start a game and a <B>set shout 1</B> command whenever you finish one. Thus you will not be distracted by shouts from other ICS users while playing.</P>
-
-
-
-<P><B><A NAME="premovecmd"></A>Premove</B></P>
-
-<P>Premove allows you to play a move on the board before you have received your opponent’s move.  This move is highlighted on the board using the <A HREF="16.htm#premovehighlightcolor">Premove Highlight</A> color, and is sent to the ICS as soon as your opponent’s move is received. To cancel a premove, either click twice on the piece that was premoved or premove an illegal move.</P>
-
-<P>This group of controls allows you to set the following options: <A HREF="14.htm#premove">premove</A>, <A HREF="14.htm#premovewhite">premoveWhite</A>, <A HREF="14.htm#premovewhitetext">premoveWhiteText</A>, <A HREF="14.htm#premoveblack">premoveBlack</A>, <A HREF="14.htm#premoveblacktext">premoveBlackText</A>.</P>
-
-
-
-<P><B><A NAME="icsalarm"></A>ICS Alarm</B></P>
-
-<P>When <B>icsAlarm</B> is set to True, the <A HREF="16.htm#soundicsalarm">alarm sound</A> is played when your clock counts down to <A HREF="14.htm#icsalarmtime">icsAlarmTime</A> seconds.  For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the <A HREF="14.htm#icsalarmtime">icsAlarmTime</A>.</P>
-
-
-
-<P><B><A NAME="icsinteractioncolors"></A>ICS Interaction Colors</B></P>
-
-<P>Lets you change the colors and type styles that WinBoard uses to distinguish between different types of messages in the ICS Interaction window. The types distinguished are: shout, sshout, channel 1 tell, other channel tell, kibitz (or whisper), personal tell (or new message notification), challenge, request (including abort, adjourn, draw, pause, and takeback), seek, and normal (all other messages).</P>
-
-
-
-<P><B><A NAME="fonts"></A><U>Fonts</U></B></P>
-
-<P>Lets you change the fonts WinBoard is using.  The clock font, message font and coordinates font are specific to each board size.  The tags font, comments font and ICS Interaction font are not dependent on the current size of the board.  The “Revert to Defaults” button will reset the clock font, message font and coordinates font for the current board size, and will set the tags font, message font and Ics Interaction font for all board sizes.</P>
-
-
-
-<P><B><A NAME="sounds"></A><U>Sounds</U></B></P>
-
-<P>Lets you change the sounds that WinBoard plays for various events.</P>
-
-
-
-<P><A NAME="movesound"></A>If the Move sound is on, WinBoard alerts you by playing a sound after each of your opponent's moves (or after every move if you are observing a game on the Internet Chess Server). The sound is not played after moves you make or moves read from a saved game file. If you turn on the Move sound when using WinBoard with the Internet Chess Server, you will probably want to give the <B>set bell 0</B> command to the ICS. Otherwise the ICS will send a bell character after every move (not just yours), causing WinBoard to play the ICS Bell sound too. Alternatively, you could turn off the ICS Bell sound in WinBoard, but that might cause you to miss ICS alerts for other interesting events.</P>
-
-<P>The other sound events correspond directly to the types of messages that the <A HREF="#icsinteractioncolors">ICS Interaction Colors</A> option knows how to colorize.</P>
-
-
-
-<P><B><A NAME="sounds"></A><U>Game List</U></B></P>
-
-<P>Lets you select which information is displayed in the Game List window.</P>
-
-
-
-<P><B><A NAME="communications"></A><U>Communications</U></B></P>
-
-<P>Lets you change the communication port parameters when the <A HREF="14.htm#internetchessservercomport">internetChessServerComPort</A> option is in use.</P>
-
-
-
-<P><B><A NAME="loadgameoptns"></A><U>Load Game</U></B></P>
-
-<P>Lets you change options used while loading games (<A HREF="15.htm#timedelay">timeDelay</A> option).</P>
-
-
-
-<P><B><A NAME="savegameoptns"></A><U>Save Game</U></B></P>
-
-<P>Lets you change options used for saving games (<A HREF="15.htm#autosavegames">autoSaveGames</A>, <A HREF="15.htm#oldsavestyle">oldSaveStyle</A>, and <A HREF="15.htm#savegamefile">saveGameFile</A> options).</P>
-
-
-
-<P><B><A NAME="timecontrolcmd"></A><U>Time Control</U></B></P>
-
-<P>Lets you change the time control to be used in games against a chess engine. Two types of timing are available.</P>
-
-<P>With conventional chess clocks, each player begins with his clock set to the <A HREF="12.htm#timecontrol">timeControl</A> period. When both players have made <A HREF="12.htm#movespersession">movesPerSession</A> moves, a new time control period begins. The time in the new period is added to whatever time the players have left on their clocks.</P>
-
-<P>With incremental clocks, each player is given an initial time allotment, and a <A HREF="12.htm#timeincrement">timeIncrement</A> is added to his clock after every move. The increment may be zero, in which case the entire game must be finished within the initial time allotment.</P>
-
-
-
-<P><B><A NAME="savesettings"></A><U>Save Settings Now</U></B></P>
-
-<P>Save the current option settings to a file, along with the current window sizes and positions, to be automatically reloaded next time WinBoard is run. See <A HREF="19.htm#settings">Settings</A> for the fine points.</P>
-
-
-
-<P><B><A NAME="savesettingsonexit"></A><U>Save Settings on Exit</U></B></P>
-
-<P>If this option is on, the current settings are automatically saved when WinBoard exits, as with Save Settings Now.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/08.htm b/winboard/help/html/08.htm
deleted file mode 100644
index bcf3b5c..0000000
--- a/winboard/help/html/08.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Help Menu</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="helpmenu"></A><SUP></SUP>Help Menu</B></P>
-
-
-
-<P><B><A NAME="helpcontents"></A>Help Contents</B></P>
-
-<P>Brings up this help file, starting at the Contents page.</P>
-
-
-
-<P><B><A NAME="searchhelp"></A>Help Index</B></P>
-
-<P>Brings up this help file, starting at the Index/Find dialog.</P>
-
-
-
-<P><B><A NAME="helphelp"></A>How to Use Help</B></P>
-
-<P>Brings up the standard help file that explains how to use Windows Help.</P>
-
-
-
-<P><B><A NAME="hint"></A>Hint</B></P>
-
-<P>Displays a move hint from the chess engine.</P>
-
-
-
-<P><B><A NAME="book"></A>Book</B></P>
-
-<P>Displays a list of possible moves from the chess engine’s opening book. The first column gives moves, the second column gives one possible response for each move, and the third column shows the number of lines in the book that include the move from the first column. If you select this option and nothing happens, the engine is out of its book or does not support the book command.</P>
-
-
-
-<P><B><A NAME="aboutwinboard"></A>About WinBoard</B></P>
-
-<P>Displays the WinBoard version number.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/09.htm b/winboard/help/html/09.htm
deleted file mode 100644
index ee390e6..0000000
--- a/winboard/help/html/09.htm
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>ICS Interaction Context Menu</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="icsinteractioncontextmenu"></A><SUP></SUP>ICS Interaction Context Menu</B></P>
-
-<P>To see this menu, press the right mouse button anywhere in the output (upper) pane of the ICS Interaction window. Pressing the right mouse button in the input (lower) pane gives a standard editing context menu, not described here. Use the <B>help</B> command on ICS to learn what these commands mean.</P>
-
-<P>You can customize the lower part of this menu (below the Paste option) by setting the <A HREF="16.htm#icsmenu">icsMenu</A> option. The easiest way to accomplish this is to edit your <A HREF="19.htm#settings">settings file</A> with Notepad or another plain text editor. Sorry, there is no graphical user interface for customizing the menu.</P>
-
-
-
-<P><B><A NAME="copyandpaste"></A>Copy and Paste</B></P>
-
-<P>Copies the current selection to the clipboard, then pastes it to the input box. As a shortcut to this function, you can press the middle mouse button (if you have one), or Shift plus the right mouse button.</P>
-
-
-
-<P><B><A NAME="copy"></A>Copy</B></P>
-
-<P>Copies the current selection to the clipboard.</P>
-
-
-
-<P><B><A NAME="paste"></A>Paste</B></P>
-
-<P>Pastes the clipboard contents to the input box.</P>
-
-
-
-<P><B><A NAME="who"></A>Who</B></P>
-
-<P>Sends the command “who”<B><I> </I></B>to ICS.</P>
-
-
-
-<P><B><A NAME="players"></A>Players</B></P>
-
-<P>Sends the command “players”<B><I> </I></B>to ICS.</P>
-
-
-
-<P><B><A NAME="games"></A>Games</B></P>
-
-<P>Sends the command “games”<B><I> </I></B>to ICS.</P>
-
-
-
-<P><B><A NAME="sought"></A>Sought</B></P>
-
-<P>Sends the command “sought”<B><I> </I></B>to ICS.</P>
-
-
-
-<P><B><A NAME="tell"></A>Tell (name)</B></P>
-
-<P>Inserts “tell <I>name </I>”<B><I> </I></B>into the input box. The string <I>name </I>is the current selection if it is not empty. Otherwise <I>name </I>is the word surrounding the mouse position, where a “word” is a string of letters, digits, or hyphens (-), such as an ICS user handle or game number.</P>
-
-
-
-<P><B><A NAME="message"></A>Message (name)</B></P>
-
-<P>Inserts “message <I>name </I>”<B><I> </I></B>into the input box, where <I>name</I> is as defined above.</P>
-
-
-
-<P><B><A NAME="finger"></A>Finger (name)</B></P>
-
-<P>Sends the command “finger <I>name</I>”<B><I> </I></B>to ICS, where <I>name</I> is as defined above. </P>
-
-
-
-<P><B><A NAME="vars"></A>Vars (name)</B></P>
-
-<P>Sends the command “vars <I>name</I>”<B><I> </I></B>to ICS, where <I>name</I> is as defined above. </P>
-
-
-
-<P><B><A NAME="observe"></A>Observe (name)</B></P>
-
-<P>Sends the command “observe <I>name</I>”<B><I> </I></B>to ICS, where <I>name</I> is as defined above. Here <I>name</I> can be either a user handle or a game number.</P>
-
-
-
-<P><B><A NAME="match"></A>Match (name)</B></P>
-
-<P>Sends the command “match <I>name</I>”<B><I> </I></B>to ICS, where <I>name</I> is as defined above. </P>
-
-
-
-<P><B><A NAME="play"></A>Play (name)</B></P>
-
-<P>Sends the command “play <I>name</I>”<B><I> </I></B>to ICS, where <I>name</I> is as defined above. Here <I>name</I> can be either a user handle or a seek ad number.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/10.htm b/winboard/help/html/10.htm
deleted file mode 100644
index d333d20..0000000
--- a/winboard/help/html/10.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Buttons</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="buttons"></A>BUTTONS</B></P>
-
-
-
-<P><B>&lt;&lt;</B></P>
-
-<P>Same as <A HREF="06.htm#backtostart">Back to Start</A>.</P>
-
-
-
-<P><B>&lt;</B></P>
-
-<P>Same as <A HREF="06.htm#backward">Backward</A>.</P>
-
-
-
-<P><B>P</B></P>
-
-<P>Same as <A HREF="04.htm#pause">Pause</A>. The button label changes to <B>C</B> while WinBoard is pausing.</P>
-
-
-
-<P><B>&gt;</B></P>
-
-<P>Same as <A HREF="06.htm#forward">Forward</A>.</P>
-
-
-
-<P><B>&gt;&gt;</B></P>
-
-<P>Same as <A HREF="06.htm#forwardtoend">Forward to End</A>.</P>
-
-<P><font color="#3333ff">Note that using the mouse wheel has the same effect as using the &lt; or &gt; button.</font></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/11.htm b/winboard/help/html/11.htm
deleted file mode 100644
index dcc4d4b..0000000
--- a/winboard/help/html/11.htm
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Command Line Options</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="options"></A><SUP></SUP>COMMAND LINE OPTIONS</B></P>
-
-<P>All WinBoard options can be set either on the command line (if you start WinBoard by typing into an MSDOS Prompt box), in the Properties/Shortcut/Target box of a Windows shortcut, in a <A HREF="19.htm#settings">settings file</A>, or in the Additional Options box of the WinBoard startup dialog. Exactly the same syntax is used in all four places. Most options can also be set from the menus and saved using <A HREF="07.htm#savesettings">Save Settings Now</A> or <A HREF="07.htm#savesettingsonexit">Save Settings on Exit</A>, so most people will not need to read this section.</P>
-
-<P>Most options have two names, a long one that is easy to read and a short one that is easy to type. To turn on a boolean (true/false) option <I>opt</I>, you can just give its short name preceded by a minus sign or slash (-<I>opt</I> or /<I>opt</I>); to turn one off, prefix the short name by an “x” or an extra minus sign (-x<I>opt</I> or /-<I>opt</I>). To set any other kind of option, or to set a boolean option using its long name, give the value after the name, separated by a space, colon, or equal sign. (-<I>opt</I> 23 or /<I>option</I>:true). If a string option contains spaces or special characters, enclose it in double quotes and use the \ quoting convention of C to name the special characters. Alternatively, you can enclose a string value in curly braces (/opt={string}), as long as the value does not contain a closing curly brace. If a filename option contains spaces, enclose it in either single or double quotes. In filename options, the \ character is not treated specially, so use single quotes around the outside of the value if it has double quotes inside (and vice versa).</P>
-
-<P>When you start WinBoard, it will pop up the Startup dialog box unless you provide sufficient options on the command line for WinBoard to determine which major mode to be in and what engines to use or chess server to connect to. To bypass this box, you must at minimum give one of the three options <A HREF="12.htm#cp">/cp</A>, <A HREF="14.htm#ics">/ics</A>, or <A HREF="18.htm#ncp">/ncp</A>.  If you give the /cp option, you must also give the <A HREF="12.htm#fcp">/fcp</A> and <A HREF="12.htm#scp">/scp</A> options. If you give the /ics option, you must also give the <A HREF="14.htm#icshost">/icshost</A> option.</P>
-
-<P><A HREF="12.htm">Chess Engine Options</A></P>
-
-<P><A HREF="13.htm">UCI Engine Support                  !NEW!</A></P>
-
-<P><A HREF="14.htm">Internet Chess Server Options</A></P>
-
-<P><A HREF="15.htm">Load and Save Options</A></P>
-
-<P><A HREF="16.htm">User Interface Options</A></P>
-
-<P><A HREF="17.htm">Adjudication Options                   !NEW!</A></P>
-
-<P><A HREF="18.htm">Other Options</A></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/12.htm b/winboard/help/html/12.htm
deleted file mode 100644
index 014f013..0000000
--- a/winboard/help/html/12.htm
+++ /dev/null
@@ -1,221 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Chess Engine Options</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="chessengineoptions"></A>Chess Engine Options</B></P>
-
-
-
-<P><B><A NAME="cp"></A>/cp</B> or<B> /xcp</B>,<B> </B>or<B> <A NAME="chessprogram"></A>/chessProgram <I>true|false</I></B></P>
-
-<P>If true, puts WinBoard in chess engine mode. In this mode, you can play against a chess program running on your PC or use it as an analysis partner.</P>
-
-
-
-<P><B><A NAME="tc"></A>/tc </B>or<B> <A NAME="timecontrol"></A>/timeControl <I>minutes[:seconds]</I></B></P>
-
-<P>Each player begins with his clock set to the timeControl period. Default: 5 minutes. The additional options movesPerSession and timeIncrement are mutually exclusive.</P>
-
-
-
-<P><B><A NAME="mps"></A>/mps </B>or<B> <A NAME="movespersession"></A>/movesPerSession <I>moves</I></B></P>
-
-<P>When both players have made movesPerSession moves, a new timeControl period is added to both clocks. Default: 40 moves.</P>
-
-
-
-<P><B><A NAME="inc"></A>/inc </B>or<B> <A NAME="timeincrement"></A>/timeIncrement <I>seconds</I></B></P>
-
-<P>If this option is specified, movesPerSession is ignored. Instead, after each player's move, timeIncrement seconds are added to his clock. Use -timeIncrement 0 if you want to require the entire game to be played in one timeControl period, with no increment. Default: -1, which specifies movesPerSession mode.</P>
-
-
-
-<P><B><A NAME="clock"></A>/clock </B>or <B>/xclock</B>, or<B> <A NAME="clockmode"></A>/clockMode <I>true|false</I></B></P>
-
-<P>Determines whether or not to display the chess clocks. If clockMode is False, the clocks are not shown, but the side that is to play next is still highlighted. Also, unless searchTime is set, the chess engine still keeps track of the clock time and uses it to determine how fast to make its moves.</P>
-
-
-
-<P><B><A NAME="st"></A>/st </B>or<B> <A NAME="searchtime"></A>/searchTime <I>minutes[:seconds]</I></B></P>
-
-<P>Tells the chess engine to spend at most the given amount of time searching for each of its moves. Without this option, the engine chooses its search time based on the number of moves and amount of time remaining until the next time control. Setting this option also sets clockMode to False.</P>
-
-
-
-<P><B><A NAME="sd"></A>/depth </B>or<B> <A NAME="searchdepth"></A>/searchDepth <I>number</I></B></P>
-
-<P>Tells the chess engine to look ahead at most the given number of moves when searching for a move to make. Without this option, the engine chooses its search depth based on the number of moves and amount of time remaining until the next time control. With the option, the engine will cut off its search early if it reaches the specified depth.</P>
-
-
-
-<P><B><A NAME="firstnps"></A><font color="#008000">/firstNPS <I>number</I></font></B></P>
-
-
-
-<P><B><A NAME="secondnps"></A><font color="#008000">/secondNPS <I>number</I></font></B></P>
-
-<P><font color="#008000">Tells the chess engine to use an internal time standard based on its node count, rather then wall-clock time, to make its timing decisions. The time in virtual seconds should be obtained by dividing the node count through the given <I>number</I>, like the number was a rate in nodes per second. WinBoard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If <I>number</I> equals zero, it can obviously not be used to convert nodes to seconds, and the time reported by the engine is used to decrement the WinBoard clock. The engine is supposed to report in CPU time it uses, rather than wall-clock time in this mode. This option can provide fairer conditions for engine-engine matches on heavily loaded machines, or with very fast games (where the wall clock is too inaccurate). “Show Thinking” must be on for this option to work. Not many engines might support this yet!</font></P>
-
-
-
-<P><B><A NAME="firsttimeodds"></A><font color="#008000">/firstTimeOdds <I>factor</I></font></B></P>
-
-
-
-<P><B><A NAME="secondtimeodds"></A><font color="#008000">/secondTimeOdds <I>factor</I></font></B></P>
-
-<P><font color="#008000">Reduces the time given to the mentioned engine by the given <I>factor</I>. If pondering is off, the effect is indistinguishable from what would happen if the engine was running on a <I>factor</I> times slower machine.</font></P>
-
-
-
-<P><B><A NAME="timeoddsmode"></A><font color="#008000">/timeOddsMode <I>mode</I></font></B></P>
-
-<P><font color="#008000">This option determines how the case is handled when both engines have a time-odds handicap. If mode=1, the engine that gets the most time will always get the nominal time, as specified by the time-control options, and its opponent’s time is normalized similarly. If mode=0, both play with reduced time.</font></P>
-
-
-
-<P><B><A NAME="ponder"></A>/ponder</B> or <B>/xponder</B>,<B> </B>or<B> <A NAME="pondernextmove"></A>/ponderNextMove <I>true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#pondernextmovecmd">Ponder Next Move</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="thinking"></A>/thinking</B> or <B>/xthinking</B>,<B> </B>or<B> <A NAME="showthinking"></A>/showThinking <I>true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#showthinkingcmd">Show Thinking</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="periodic"></A>/periodic </B>or <B>/xperiodic</B>, or<B> <A NAME="periodicupdates"></A>/periodicUpdates <I>true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#periodicupdatescmd">Periodic Updates</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="mg"></A>/mg </B>or<B> <A NAME="matchgames"></A>/matchGames <I>n</I></B></P>
-
-<P>Automatically runs an <I><B>n</B>-</I>game match between two chess engines, with alternating colors. If the <A HREF="15.htm#loadgamefile">loadGameFile</A> or <A HREF="15.htm#loadpositionfile">loadPositionFile</A> option is set, WinBoard will start each game with the given opening moves or the given position; otherwise, the games will start with the standard initial chess position. If the <A HREF="15.htm#savegamefile">saveGameFile</A> option is set, a move record for the match will be appended to the specified file. If the <A HREF="15.htm#savepositionfile">savePositionFile</A> option is set, the final position reached in each game of the match will be appended to the specified file. When the match is over, WinBoard will display the match score and exit. Default: 0 (do not run a match).</P>
-
-
-
-<P><B><A NAME="mm"></A>/mm </B>or <B>/xmm</B>, or<B> <A NAME="matchmode"></A>/matchMode <I>true|false</I></B></P>
-
-<P>Provided for backward compatibility. If true and matchGames=0, sets matchGames=1.</P>
-
-
-
-<P><B><A NAME="matchpause"></A><font color="#008000">/matchPause <I>number</I></font></B></P>
-
-<P><font color="#008000">Sets the length of the pause between games in match mode to <I>number</I> msec. Default value is 10000, i.e. 10 sec. (If this pause is too short, engines not implementing ‘ping’ will sometimes send the last move of their previous game only when a new game has started, at which time the move is illegal, and causes them to forfeit the game.)</font></P>
-
-
-
-<P><B><A NAME="fd"></A>/fd </B>or<B> <A NAME="firstdirectory"></A>/firstDirectory <I>dir<BR>
-</I><A NAME="sd"></A>/sd </B>or<B> <A NAME="seconddirectory"></A>/secondDirectory <I>dir</I><SUP> </SUP><BR>
-<A NAME="fcp"></A>/fcp </B>or<B> <A NAME="firstchessprogram"></A>/firstChessProgram <I>command<BR>
-</I><A NAME="scp"></A>/scp </B>or<B> <A NAME="secondchessprogram"></A>/secondChessProgram <I>command</I><SUP> </SUP></B></P>
-
-<P>Names of the chess engines and working directories in which they are to be run. The second chess engine is started only in Two Machines (match) mode. These arguments are parsed as filenames; that is, the \ character is interpreted literally, not as a C-style escape.</P>
-
-<P>The <I>dir</I> argument specifies the initial working directory for the chess engine. It should usually be the directory where the engine and its working files are installed. If <I>dir</I> is not an absolute pathname, it is interpreted relative to the directory from which WinBoard.exe itself was loaded. The <I>dir</I> argument is ignored if the chess engine is being run on a remote machine (see firstHost and secondHost below). The default value for <I>dir </I>"", meaning that the chess engine is expected to be installed in the same directory as WinBoard.</P>
-
-<P>The <I>command</I> argument is actually the command line to the chess engine, so if the engine itself needs command line arguments, you can include them by enclosing <I>command</I> in single or double quotes. If the engine name or an engine argument has a space in it, use single quotes around the whole <I>command, </I>and inside them use double quotes around each item that contains spaces. If the engine name has more than one period in it (for example, <CODE>QChess1.5.exe</CODE>), you must include the "<CODE>.exe</CODE>" extension; otherwise you can leave it out. The default value for <I>command</I> is "", which brings up the startup dialog to ask which engines you want.</P>
-
-<P>Examples:</P>
-
-<PRE><CODE>WinBoard /cp /fd="C:\Program Files\Crafty" /fcp=WCrafty-15.12.exe /scp=GNUChess
-WinBoard /cp /fd="C:\Miracle Games" /fcp='"Miracle Chess.exe" /wow' /scp=GNUChess</CODE></PRE>
-
-<P><font color="#008000">The basic rule is thus that what is inside the quotes delimiting the argument to /fcp and /scp, all goes to the engine, and is ignored by WinBoard. WinBoard 4.3.13 and later, however, knows an exception to this: If, within the quotes, the word WBopt appears, everything that follows this word will be interpreted as a WinBoard argument, in stead of being passed to the engine on startup of the latter. (The WBopt itself is also not passed to the engine.) This possibility of hiding WinBoard arguments in the engine command is provided in order to create options that follow the engine in a tournament, when a tournament manager like PSWBTM is used to invoke WinBoard. Because, in order to apply to a given engine, some options need to know if they apply to first or second engine, which might vary during the tournament, options hidden inside the engine command-line can contain ‘%s’ which will be replaced at the time the option is used by ‘first’ or ‘second’, as applicable.</font></P>
-
-<P><font color="#008000">Examples:</font></P>
-
-<font color="#008000"><PRE><CODE>WinBoard /cp /fd="C:\Engines\Crafty" /fcp=”WCrafty-15.12 WBopt /%sTimeOdds=2” /scp=GNUChess</CODE></PRE></font>
-
-<P><font color="#008000">Meaning that Crafty will have to play with half the time GNUChess will get.</font></P>
-
-<PRE></PRE>
-
-
-
-<P><B><A NAME="fh"></A>/fh </B>or<B> <A NAME="firsthost"></A>/firstHost <I>host<BR>
-</I><A NAME="sh"></A>/sh </B>or<B> <A NAME="secondhost"></A>/secondHost <I>host</I></B></P>
-
-<P>Hosts on which the chess engines are to run. The default for each is "localhost". If you specify another host, WinBoard<I> </I>uses <A HREF="18.htm#rsh">rsh</A> to run the chess program there. The /fd and /sd flags do not work in conjunction with these flags; if you need a remote chess engine to run somewhere other than your default login directory on the remote machine, you will have to include a "cd" command in the argument to /fcp or /scp.</P>
-
-
-
-<P><B><A NAME="initstring"></A>/firstInitString </B>or <B>/initString <I>string<BR>
-</I><A NAME="secondinitstring"></A>/secondInitString <I>string</I></B></P>
-
-<P>The strings that are sent to initialize the chess engines. Default: "new\nrandom\n". The "\n" sequences represent newlines. You can type "\n" on the command line or in a <A HREF="19.htm#settings">settings file</A>, and WinBoard will convert it to a newline.</P>
-
-<P>All chess engines require the "new" command to start a new game.</P>
-
-<P>You can remove the "random" command if you like; including it causes GNU Chess to randomize its move selection slightly so that it doesn't play the same moves in every game. Even without "random", GNU Chess randomizes its choice of moves from its opening book. You can also try adding other commands to the initString; see the GNU Chess documentation (gnuchess.txt) for details. Crafty ignores the "random" command; see its documentation for the commands it accepts.</P>
-
-
-
-<P><B><A NAME="initstring"></A>/firstComputerString <I>string<BR>
-</I><A NAME="secondinitstring"></A>/secondComputerString <I>string</I></B></P>
-
-<P>If the chess engine is playing against another computer program (whether locally or on a chess server), by default the command "computer\n" is sent to it. Some chess engines change their playing style when they receive this command. If you do not want the engine to know when it is playing another computer, you can set the string to "".</P>
-
-<P><font color="#008000">Note that the computer string is sent to the engine after most other initialization commands, and is thus ideal for hiding a WinBoard-protocol command in that should be sent only to one engine, when the WinBoard option that normally specifies this command cannot be differentiated by engine, but s always sent to both engines. E.g. if you want one of the engines to ponder, and the other not. Because it is sent last, in can overrule earlier commands.</font></P>
-
-
-
-<P><B><A NAME="fb"></A>/fb </B>or <B>/xfb</B>, or<B> <A NAME="firstplaysblack"></A>/firstPlaysBlack <I>true|false</I></B></P>
-
-<P>In games between two chess programs, the firstChessProgram normally plays white. (This is a change from earlier versions of WinBoard.) If this option is True, firstChessProgram plays black. In a multi-game match, this option affects the colors only for the first game; they still alternate in subsequent games.</P>
-
-
-
-<P><B><A NAME="reuse"></A>/reuse<SUP> </SUP></B>or <B>/xreuse</B>, or <B><A NAME="reusefirst"></A>/reuseFirst<I> true|false<BR>
-</I><A NAME="reuse2"></A>/reuse2<SUP> </SUP></B>or <B>/xreuse2</B>, or <B><A NAME="reusesecond"></A>/reuseSecond<I> true|false</I></B></P>
-
-<P>If this option is True (the default), WinBoard<I> </I>uses the same chess engine process repeatedly when playing multiple games. If the option is False, WinBoard kills off the chess engine after every game and starts a fresh one for the next game. Starting a fresh chess engine can be slow, so it is not recommended. However, some chess engines may not work properly when reused, such as versions of Crafty earlier than 12.0.</P>
-
-
-
-<P><B><A NAME="firstprotocolversion"></A>/firstProtocolVersion <I>ver<BR>
-</I><A NAME="secondprotocolversion"></A>/secondProtocolVersion <I>ver</I></B></P>
-
-<P>This option specifies which version of the chess engine communication protocol to use. By default, version-number is 2. In version 1, the "protover" command is not sent to the engine; since version 1 is a subset of version 2, nothing else changes. Other values for version-number are not supported.</P>
-
-
-
-<P><B><A NAME="firstscoreabs"></A><font color="#ff0000">/firstScoreAbs<I> true|false<BR>
-</I></font><A NAME="secondscoreabs"></A><font color="#ff0000">/secondScoreAbs<I> true|false</I></font></B></P>
-
-<P><font color="#ff0000">If this option is true, the score reported by the engine is taken to be that in favor of white, even when the engine plays black. Important when winboard uses the score for adjudications, or in PGN reporting. This can be a useful option in combination with WBopt in the engine command-line, see under /fcp.</font></P>
-
-
-
-<P><B><A NAME="niceengines"></A><font color="#3333ff">/niceEngines<I> priority</I></font></B></P>
-
-<P><font color="#3333ff">This option allows you to lower the priority of the engine processes, so that the generally insatiable hunger for CPU time of chess engines does not interfere so much with smooth operation of WinBoard (or the rest of your system). Try priority = 10 or even 20 to lower the priority of the engines. Negative values could increase the engine priority, which is not recommended.</font></P>
-
-
-
-<P><B><A NAME="firstoptions"></A><font color="#3333ff">/firstOptions<I> string</font><BR>
-</I><A NAME="secondoptions"></A><font color="#3333ff">/secondOptions<I> string</I></font></B></P>
-
-<P><font color="#3333ff">The given string is a comma-separated list of (option name, option value) pairs, like the following example: “style=Karpov,blunder rate=0”. If the options announced by the engine at startup through the feature commands of WinBoard protocol matches one of the option names (i.e. “style” or “blunder rate”), it would be set to the given value (i.e. “Karpov” or 0) through a corresponding option command to the engine. This provided that the type of the value (text or numeric) matches as well.</font></P>
-
-
-
-<P><B><A NAME="firstneedsnoncompliantfen"></A><font color="#3333ff">/firstNeedsNoncompliantFEN<I> string</font><BR>
-</I><A NAME="secondneedsnoncompliantfen"></A><font color="#3333ff">/secondNeedsNoncompliantFEN<I> string</I></font></B></P>
-
-<P><font color="#3333ff">The castling rights and e.p. fields of the FEN sent to the mentioned engine with the setboard command will be replaced by the given string. This can for instance be used to run engines that do not understand Chess960 FENs in variant fischerandom, to make them at least understand the opening position, through setting the string to “KQkq -”. (Note you also have to give the e.p. field!) Other possible applications are to provide work-arounds for engines that want to see castling and e.p. fields in variants that do not have castling or e.p. (shatranj, courier, xiangqi, shogi) so that WinBoard would normally omit them (string = “- -“, or to add variant-specific fields that are not yet supported by WinBoard (e.g. to indicate the number of checks in 3check).</font></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/13.htm b/winboard/help/html/13.htm
deleted file mode 100644
index eb1471f..0000000
--- a/winboard/help/html/13.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>UCI Engine Support</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="ucienginesupport"></A><font color="#ff0000">UCI Engine Support</font></B></P>
-
-
-
-<P><B><A NAME="fuci"></A><font color="#ff0000">/fUCI </B>or<B> <A NAME="firstisuci"></A>/firstIsUCI<I> true|false</I></font></B></P>
-
-
-
-<P><B><font color="#ff0000"><A NAME="suci"></A>/sUCI </B>or<B> <A NAME="secondisuci"></A>/secondIsUCI<I> true|false</I></B></font></P>
-
-<P><font color="#ff0000">Indicates if the mentioned engine executable file is an UCI engine, and should be run with the aid of the Polyglot adapter rather than directly. WinBoard will then pass the other UCI options and engine name to Polyglot through a .ini temporary file ceated for the purpose.</font></P>
-
-
-
-<P><B><A NAME="polyglotdir"></A><font color="#ff0000">/PolyglotDir <I>filename</I></font></B></P>
-
-<P><font color="#ff0000">Gives the name of the folder in which Polyglot is installed.</font></P>
-
-
-
-<P><B><A NAME="usepolyglotbook"></A><font color="#ff0000">/usePolyglotBook <I>true|false</I></font></B></P>
-
-<P><font color="#ff0000">Specifies if the Polygot book should be used.</font></P>
-
-
-
-<P><B><A NAME="polyglotbook"></A><font color="#ff0000">/PolyglotBook <I>filename</I></font></B></P>
-
-<P><font color="#ff0000">Gives the filename of the opening book that Polyglot should use.</font></P>
-
-
-
-<P><B><A NAME="fnoownbookuci"></A><font color="#ff0000">/fNoOwnBookUCI </B>or<B> <A NAME="firstxbook"></A>/firstXBook </B>or<B> <A NAME="firsthasownbookuci"></A>/firstHasOwnBookUCI<I> true|false</I></font></B></P>
-
-
-
-<P><B><A NAME="snoownbookuci"></A><font color="#ff0000">/sNoOwnBookUCI </B>or<B> <A NAME="secondxbook"></A>/secondXBook </B>or<B> <A NAME="secondhasownbookuci"></A>/secondHasOwnBookUCI<I> true|false</I></B></font></P>
-
-<P><font color="#ff0000">Indicates if the mentioned engine lacks an opening book or not.</font> <font color="#3333ff">Engines that have an own opening book will not use the GUI book (as given by /polyglotBook) even if /usePolyglotBook is set to true.</font></P>
-
-
-
-<P><B><A NAME="defaulthashsize"></A><font color="#ff0000">/defaultHashSize <I>number</I></font></B></P>
-
-<P><font color="#ff0000">Sets the size of the hash table to <I>number</I> MegaBytes.</font></P>
-
-
-
-<P><B><A NAME="defaultcachesizeegtb"></A><font color="#ff0000">/defaultCacheSizeEGTB <I>number</I></font></B></P>
-
-<P><font color="#ff0000">Sets the size of the EGTB cache to <I>number</I> MegaBytes.</font></P>
-
-
-
-<P><B><A NAME="defaultpathegtb"></A><font color="#ff0000">/defaultPathEGTB <I>filename</I></font></B></P>
-
-<P><font color="#ff0000">Gives the name of the folder where the end-game tablebases are installed.</font></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/14.htm b/winboard/help/html/14.htm
deleted file mode 100644
index 5801ca8..0000000
--- a/winboard/help/html/14.htm
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Internet Chess Server Options</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="internetchessserveroptions"></A>Internet Chess Server Options</B></P>
-
-
-
-<P><B><A NAME="ics"></A>/ics </B>or <B>/xics</B>, or<B> <A NAME="internetchessservermode"></A>/internetChessServerMode<I> true|false</I></B></P>
-
-<P>Connect with an Internet Chess Server to play chess against its other users, observe games they are playing, or review games that have recently finished. See <A HREF="04.htm#icsclient">ICS Client</A> Default: False.</P>
-
-<P>You can create a script file containing ICS commands that WinBoard will type in for you whenever you connect to the ICS. See <A HREF="#icslogon">ICS Logon</A>.</P>
-
-
-
-<P><B><A NAME="icshost"></A>/icshost </B>or<B> <A NAME="internetchessserverhost"></A>/internetChessServerHost <I>hostname</I></B></P>
-
-<P>The host name or numeric address of the Internet Chess Server to connect to when in ICS mode. The default is the empty string, which causes WinBoard to pop up a menu of known ICS sites. The file ics-addresses.txt in the WinBoard distribution gives slightly more information on these sites. It includes their numeric addresses, which you can use if your site does not have a working name server.</P>
-
-
-
-<P><B><A NAME="icsport"></A>/icsport </B>or<B> <A NAME="internetchessserverport"></A>/internetChessServerPort <I>portnumber</I></B></P>
-
-<P>The port number to use when connecting to a chess server in ICS mode. Default: 5000.</P>
-
-
-
-<P><B><A NAME="via"></A>/icshelper <I>program</I></B></P>
-
-
-
-<P>An external helper program used to communicate with the chess server. Typically <I>timestamp</I> for the ICC (chessclub.com) or <I>timeseal</I> for FICS (freechess.org, eics.daimi.aau.dk, etc.). This option is shorthand for “/useTelnet /telnetProgram <I>program</I>”<B>.</B></P>
-
-
-
-<P><B><A NAME="telnet"></A>/telnet</B> or <B>/xtelnet</B>,<B> </B>or<B> <A NAME="usetelnet"></A>/useTelnet<I> true|false</I></B></P>
-
-<P>This option is poorly named; it should be called <B>/useHelper</B>. If set to True, it instructs WinBoard to use an external helper program to communicate with the ICS, as specified by the telnetProgram option. The external program must be a pure console application that can communicate with WinBoard through pipes; the Windows telnet application is not suitable. If the option is False (the default), WinBoard communicates with the ICS by opening a Winsock TCP socket and using its own internal implementation of the telnet protocol.</P>
-
-
-
-<P><B><A NAME="gateway"></A>/gateway <I>hostname</I></B></P>
-
-<P>If this option is set to a host name, WinBoard uses <A HREF="18.htm#rsh">rsh</A> to run the telnetProgram remotely on the given host to communicate with the Internet Chess Server instead of using its own internal implementation of the telnet protocol. See the <A HREF="21.htm">FIREWALLS</A> section below for an explanation of when this option is useful.</P>
-
-
-
-<P><B><A NAME="telnetprogram"></A>/telnetProgram <I>program</I></B></P>
-
-<P>This option is poorly named; it should be called <B>/helperProgram</B>. It gives the name of the remote or external helper program to be used with the gateway or useTelnet option. The default is "telnet". The telnet program is invoked with the value of internetChessServer as the first argument and the value of internetChessServerPort as the second argument on its command line.</P>
-
-
-
-<P><B><A NAME="icscom"></A>/icscom </B>or<B> <A NAME="internetchessservercomport"></A>/internetChessServerComPort <I>name</I></B></P>
-
-<P>If this option is set, WinBoard communicates with the Internet Chess Server using a serial communication port instead of a network connection. Use this option if your machine is not connected to a network (not even via SLIP or PPP), but you do have Internet access through another machine by dialing in using a modem or by connecting directly to a serial terminal port. Example:</P>
-
-<PRE><CODE>WinBoard /ics /icscom:com1</CODE></PRE>
-
-<P>After you start WinBoard in this way, type whatever modem commands are necessary to dial out to your Internet provider and log in. You may need to turn off <A HREF="07.htm#locallineediting">Local Line Editing</A> on the Options menu while typing commands to the modem, but turn it on again afterwards. Then telnet to the ICS, using a command like "telnet chessclub.com 5000". Important: See the paragraph in the <A HREF="22.htm">LIMITATIONS</A> section below about extra echoes.</P>
-
-
-
-<P><B><A NAME="comportsettings"></A>/comPortSettings</B> <B><I>“dataRate,dataBits,parity,stopBits,flow”</I></B></P>
-
-<P>This option allows serial port parameters to be set from the command line or a settings file. The values are simply filled in to the <A HREF="07.htm#communications">Communications</A> dialog.</P>
-
-
-
-<P><B><A NAME="icslogon"></A>/icslogon </B>or<B> <A NAME="internetchessserverlogonscript"></A>/internetChessServerLogonScript <I>filename</I></B></P>
-
-<P>This option lets you change the name used for the <A HREF="#icslogon">ICS Logon</A> file. Default: "ICS.ini". The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).</P>
-
-
-
-<P><B><A NAME="autocomm"></A>/autocomm </B>or <B>/xautocomm</B>, or<B> <A NAME="autocomment"></A>/autoComment<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#autocommentcmd">Auto Comment</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="autoflag"></A>/autoflag</B> or <B>/xautoflag</B>,<B> </B>or<B> <A NAME="autocallflag"></A>/autoCallFlag<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="#autoflag">Auto Flag</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="autobs"></A>/autobs</B> or <B>/xautobs</B>,<B> </B>or<B> <A NAME="autoobservecmd"></A>/autoObserve<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="#autoobservecmd">Auto Observe</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="autokibitz"></A><font color="#008000">/autoKibitz</font></B></P>
-
-<P><font color="#008000">Kibitzes the engines last thinking output (depth, score, time, speed, PV) to the ICS in zippy mode. Show Thinking must be on for this option to work.</font> <font color="#3333ff">Also diverts similar kibitz information of an opponent engine that is playing you through the ICS to the engine-output window, as if the engine was playing locally.</font></P>
-
-
-
-<P><B><A NAME="moves"></A>/moves</B> or <B>/xmoves</B>,<B> </B>or<B> <A NAME="getmovelist"></A>/getMoveList<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#getmovelistcmd">Get Move List</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="edit"></A>/edit<SUP> </SUP></B> or <B>/xedit</B>,<B> </B>or<B> <A NAME="locallineeditingoption"></A>/localLineEditing<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#locallineediting">Local Line Editing</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="quiet"></A>/quiet </B>or <B>/xquiet</B>, or<B> <A NAME="quietplay"></A>/quietPlay<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#quietplaycmd">Quiet Play</A> option. Default: False</P>
-
-
-
-<P><B><A NAME="opt_blindfold"></A>/blindfold <I>true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#blindfoldcmd">Blindfold</A> option. Default: False</P>
-
-
-
-<P><B><A NAME="pre"></A>/pre </B>or<B> <A NAME="xpre"></A>/xpre</B>, or<B> <A NAME="premove"></A>/premove<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#premovecmd">Premove</A> option. If set to True, the premove feature is enabled. If set to False, premove is disabled and the other <A HREF="07.htm#premovecmd">Premove</A> settings are ignored. Default: False.</P>
-
-
-
-<P><B><A NAME="prewhite"></A>/prewhite </B>or<B> <A NAME="xprewhite"></A>/xprewhite</B>, or <B><A NAME="premovewhite"></A>/premoveWhite<I> true|false</I></B></P>
-
-
-
-<P><B><A NAME="premovewhitetext"></A>/premoveWhiteText<I> movetext</I></B></P>
-
-<P>If <B>premoveWhite</B> is set to True and you are playing white in an ICS game, the text specified by the <B>premoveWhiteText</B> option is sent to the ICS as soon as the game starts.  These options can be set from the <A HREF="07.htm#premovecmd">Premove</A> section of the <A HREF="07.htm#icsoptions">ICS Options</A> dialog box. The default for <B>premoveWhite</B> is False.</P>
-
-
-
-<P><B><A NAME="preblack"></A>/preblack </B>or<B> <A NAME="xpreblack"></A>/xpreblack</B>, or <B><A NAME="premoveblack"></A>/premoveBlack<I> true|false</I></B></P>
-
-
-
-<P><B><A NAME="premoveblacktext"></A>/premoveBlackText<I> movetext</I></B></P>
-
-<P>If <B>premoveBlack</B> is set to True and you are playing black in an ICS game, the text specified by the <B>premoveBlackText</B> option is sent to the ICS as soon as the first move is received from your opponent, even if you make a different premove on the board before the first white move is received. These options can be set from the <A HREF="07.htm#premovecmd">Premove</A> section of the <A HREF="07.htm#icsoptions">ICS Options</A> dialog box. The default for <B>premoveBlack</B> is False.</P>
-
-
-
-<P><B><A NAME="alarm"></A>/alarm </B>or<B> <A NAME="xalarm"></A>/xalarm</B>, or <B><A NAME="icsalarm"></A>/icsAlarm <I>true|false</I></B></P>
-
-
-
-<P><B><A NAME="icsalarmtime"></A>/icsAlarmTime <I>milliseconds</I></B></P>
-
-<P>When <B>icsAlarm</B> is set to True, the <A HREF="16.htm#soundicsalarm">alarm sound</A> is played when your clock counts down to <B>icsAlarmTime</B> seconds.  For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the <B>icsAlarmTime</B>.  The <B>icsAlarmTime</B> can be set by selecting <A HREF="07.htm#icsalarm">ICS Alarm</A> from the <A HREF="07.htm#icsoptions">ICS options</A> dialog. The default is 5 seconds.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/15.htm b/winboard/help/html/15.htm
deleted file mode 100644
index cf9a52b..0000000
--- a/winboard/help/html/15.htm
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Load and Save Options</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="loadandsaveoptions"></A>Load and Save Options</B></P>
-
-
-
-<P><B><A NAME="lgf"></A>/lgf </B>or<B> <A NAME="loadgamefile"></A>/loadGameFile <I>filename</I><BR>
-<A NAME="lgi"></A>/lgi </B>or<B> <A NAME="loadgameindex"></A>/loadGameIndex <I>N</I></B></P>
-
-<P>If loadGameFile is set, WinBoard reads the specified game file at startup. You can leave out the name of this option and give just the file name, which is handy if you want to configure WinBoard as a game viewer with a browser such as the Windows Explorer or Netscape. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If there is more than one game in the file, WinBoard pops up a menu of the available games, with entries based on their PGN tags. If loadGameIndex is set to <I>N, </I>the menu is suppressed and the <I>N</I>th game found in the file is loaded immediately.</P>
-
-
-
-<P><B><A NAME="td"></A>/td </B>or<B> <A NAME="timedelay"></A>/timeDelay <I>seconds</I></B></P>
-
-<P>Time delay between moves during <A HREF="03.htm#loadgame">Load Game</A>. Fractional seconds are allowed; try 0.4. A time delay value of -1 tells WinBoard not to step through game files automatically. Default: 1 second.</P>
-
-
-
-<P><B><A NAME="sgf"></A>/sgf </B>or<B> <A NAME="savegamefile"></A>/saveGameFile <I>filename</I></B></P>
-
-<P>If this option is set, WinBoard appends a record of every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard output.</P>
-
-
-
-<P><B><A NAME="autosave"></A>/autosave</B> or <B>/xautosave</B>,<B> </B>or<B> <A NAME="autosavegames"></A>/autoSaveGames<I> true|false</I></B></P>
-
-<P>If this option is True, at the end of every game WinBoard prompts you for a filename and appends a record of the game to the file you specify. Ignored if saveGameFile is set. Default: False.</P>
-
-
-
-<P><B><A NAME="lpf"></A>/lpf </B>or<B> <A NAME="loadpositionfile"></A>/loadPositionFile <I>filename</I><BR>
-<A NAME="lpi"></A>/lpi </B>or<B> <A NAME="loadpositionindex"></A>/loadPositionIndex <I>N</I></B></P>
-
-<P>If loadPositionFile is set, WinBoard loads the specified position file at startup. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If loadPositionIndex is set to <I>N</I>, the <I>N</I>th position found in the file is loaded; otherwise the first is loaded.</P>
-
-
-
-<P><B><A NAME="spf"></A>/spf </B>or<B> <A NAME="savepositionfile"></A>/savePositionFile <I>filename</I></B></P>
-
-<P>If this option is set, WinBoard appends the final position reached in every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The file name "-" specifies the standard output.</P>
-
-
-
-<P><B><A NAME="pgnextendedinfo"></A><font color="#ff0000">/pgnExtendedInfo <I>true|false</I></font></B></P>
-
-<P><font color="#ff0000">If this option is set, WinBoard saves depth, score and time used for each move that the engine found as a comment in the PGN file.</font></P>
-
-
-
-<P><B><A NAME="pgneventheader"></A><font color="#ff0000">/pgnEventHeader <I>string</I></font></B></P>
-
-<P><font color="#ff0000">Sets the name used in the PGN event tag to <I>string</I>.</font></P>
-
-
-
-<P><B><A NAME="saveoutofbookinfo"></A><font color="#ff0000">/saveOutOfBookInfo <I>true|false</I></font></B></P>
-
-<P><font color="#ff0000">Include the information on how the engine(s) game out of its opening book in a special ‘annotator’ tag with the PGN file.</font></P>
-
-
-
-<P><B><A NAME="oldsave"></A>/oldsave </B>or <B>/xoldsave</B>, or<B> <A NAME="oldsavestyle"></A>/oldSaveStyle<I> true|false</I></B></P>
-
-<P>If this option is False (the default), WinBoard saves games in PGN (portable game notation) and positions in FEN (Forsythe-Edwards notation). If the option is True, a save style that is compatible with older versions of WinBoard (and of xboard) is used instead.</P>
-
-
-
-<P><B><A NAME="debug"></A>/debug</B> or <B>/xdebug</B>,<B> </B>or<B> <A NAME="debugmode"></A>/debugMode<I> true|false</I></B></P>
-
-<P>Writes debugging information to the file “WinBoard.debug”, including all commands sent to the chess engine, all output received from it, and all commands sent to ICS. You can press Ctrl+Alt+F12 to turn this option on or off while WinBoard is running. Each time you turn it on, any existing debug file is overwritten.</P>
-
-
-
-<P><B><A NAME="debugfile"></A><font color="#ff0000">/debugFile<SUP> </SUP> <I>filename</I> </B>or<B> <A NAME="nameofdebugfile"></A>/nameOfDebugFile<I> filename</I></B></font></P>
-
-<P><font color="#ff0000">Sets the name of the file to which WinBoard saves debug information (including all communication to and from the engines).</font></P>
-
-
-
-<P><B><A NAME="enginedebugoutput"></A><font color="#008000">/engineDebugOutput<SUP> </SUP> <I>number</I></font></B></P>
-
-<P><font color="#008000">Specifies how WinBoard should handle unsollicited output from the engine, with respect to saving it in the debug file. The output is further (hopefully) ignored. If <I>number</I>=0, WinBoard refrains from writing such spurious output to the debug file. If<I> number</I>=1, all engine output is written faithfully to the debug file. If <I> number</I>=2, any protocol-violating line is prefixed with a ‘#’ character, as the engine itself should have done if it wanted to submit info for inclusion in the debug file.</font></P>
-
-<P><font color="#008000">This option is provided for the benefit of applications that use the debug file as a source of information, such as the broadcaster of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them.</font></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/16.htm b/winboard/help/html/16.htm
deleted file mode 100644
index 47bd778..0000000
--- a/winboard/help/html/16.htm
+++ /dev/null
@@ -1,493 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>User Interface Options</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="userinterfaceoptions"></A>User Interface Options</B></P>
-
-
-
-<P><B><A NAME="firstlogo"></A><font color="#3333ff">/firstLogo <I>filename</I></font></B></P>
-
-
-
-<P><B><A NAME="secondlogo"></A><font color="#3333ff">/secondLogo <I>filename</I></font></B></P>
-
-<P><font color="#3333ff">The appearance of either of these options causes WinBoard to reserve space for displaying logos on both sides of the clocks. Normally the first logo goes left, the second right, unless the option ‘swap clocks’ is in effect. The <I>filename</I> must refer to a bitmap file (.bmp) containing a logo for the particular player (usually a 130x65 or 100x50 bitmap, which will be scaled to the height of two clock lines.)</font></P>
-
-
-
-<P><B><A NAME="autologo"></A><font color="#3333ff">/autoLogo<I> true|false</I></font></B></P>
-
-<P><font color="#3333ff">When true, causes WinBoard to automatically supply a logo for the first and second chess program, by looking for a fie named logo.bmp in the engine directory (as specified by the /fd or /sd option), and then displays it like this file was given as an argument to the /firstLogo or /secondLogo option. In this mode it will also look in a sub-folder of its installation folder called “logos”, for finding logos with names corresponding to the ICS (e.g. “chessclub.com.bmp”) or to the human user, should they be involved in a game.</font></P>
-
-
-
-<P><B><A NAME="hidethinkingfromhuman"></A><font color="#ff0000">/hideThinkingFromHuman<I> true|false</I></font></B></P>
-
-<P><font color="#ff0000">Prevents the engine thinking output to appear in the display, without necessitating to suppress the sending of this information altogether (so it can still appear in the PGN).</font></P>
-
-
-
-<P><B><A NAME="nogui"></A><font color="#3333ff">/noGUI</font></B></P>
-
-<P><font color="#3333ff">Suppresses all GUI functions of WinBoard (to speed up automated ultra-fast engine-engine games, which you don’t want to watch). There will be no board or clock updates, no printing of moves, and no update of the icon on the task bar in this mode.</font></P>
-
-
-
-<P><B><A NAME="top"></A>/top </B>or <B>/xtop</B>, or<B> <A NAME="alwaysontopopt"></A>/alwaysOnTop<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#alwaysontop">Always On Top</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="queen"></A>/queen</B> or <B>/xqueen</B>,<B> </B>or<B> <A NAME="alwayspromotetoqueen"></A>/alwaysPromoteToQueen<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#alwaysqueen">Always Queen</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="drag"></A>/drag</B> or <B>/xdrag</B>,<B> </B>or<B> <A NAME="animatedraggingopt"></A>/animateDragging<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#animatedragging">Animate Dragging</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="animate"></A>/animate </B>or <B>/xanimate</B>, or<B> <A NAME="animatemovingopt"></A>/animateMoving<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#animatemoving">Animate Moving</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="flip"></A>/flip </B>or <B>/xflip</B>, or<B> <A NAME="flipviewoption"></A>/flipView<I> true|false</I></B></P>
-
-<P>If Auto Flip View is not set, or if you are observing but not participating in a game, then the positioning of the board at the start of each game depends on the flipView option.  If flipView is False (the default), the board is positioned so that the white pawns move from the bottom to the top; if True, the black pawns move from the bottom to the top. In any case, the <A HREF="07.htm#flipview">Flip View</A> menu command can be used to flip the board after the game starts</P>
-
-
-
-<P><B><A NAME="autoflip"></A>/autoflip</B> or <B>/xautoflip</B>, or <A NAME="autoflipviewoption"></A><B>/autoFlipView <I>true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#autoflipview">Auto Flip View</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="autoraise"></A>/autoraise</B> or <B>/xautoraise</B>, or <A NAME="autoraiseboardoption"></A><B>/autoRaiseBoard <I>true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#autoflipview">Auto Raise Board</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="highdrag"></A>/highdrag </B>or <B>/xhighdrag</B>, or<B> <A NAME="highlightdraggingopt"></A>/highlightDragging <I>true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#highlightdragging">Highlight Dragging</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="highlight"></A>/highlight </B>or <B>/xhighlight</B>, or<B> <A NAME="highlightlastmoveopt"></A>/highlightLastMove<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="#highlightlastmoveopt">Highlight Last Move</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="popup"></A>/exit</B> or <B>/xexit</B>,<B> </B>or<B> <A NAME="popupmoveerrorsopt"></A>/popupExitMessage<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#popupexitmessagecmd">Popup Exit Message</A> menu option. Default: False.</P>
-
-
-
-<P><B><A NAME="popup"></A>/popup</B> or <B>/xpopup</B>,<B> </B>or<B> <A NAME="popupmoveerrorsopt"></A>/popupMoveErrors<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#popupmoveerrorscmd">Popup Move Errors</A> menu option. Default: False.</P>
-
-
-
-<P><B><A NAME="coords"></A>/coords </B>or <B>/xcoords</B>, or<B> <A NAME="showcoords"></A>/showCoords<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="#showcoords">Show Coords</A> option. Default: False.</P>
-
-
-
-<P><B><A NAME="legal"></A>/legal </B>or <B>/xlegal</B>, or<B> <A NAME="testlegality"></A>/testLegality<I> true|false</I></B></P>
-
-<P>Sets the <A HREF="07.htm#testlegalitycmd">Test Legality</A> option. Default: True.</P>
-
-
-
-<P><B><A NAME="size"></A>/size </B>or<B> <A NAME="boardsize"></A>/boardSize <I>sizename</I></B></P>
-
-<P>Sets the <A HREF="07.htm#boardsizecmd">Board Size</A> option. Also chooses which board size any following Font options will affect. The default is the largest size that will fit on your screen.</P>
-
-
-
-<P><B><A NAME="wpc"></A>/wpc</B> or <B><A NAME="whitepiececolor"></A>/whitePieceColor <I>color<BR>
-</I><A NAME="bpc"></A>/bpc </B>or <B><A NAME="blackpiececolor"></A>/blackPieceColor <I>color<BR>
-</I><A NAME="lsc"></A>/lsc </B>or<B><I> </I><A NAME="lightsquarecolor"></A>/lightSquareColor <I>color</I><SUP> </SUP><BR>
-<A NAME="dsc"></A>/dsc </B>or<B> <A NAME="darksquarecolor"></A>/darkSquareColor <I>color</I><SUP> </SUP></B></P>
-
-<P>Color specifications for white pieces, black pieces, light squares, and dark squares. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as <I>#rrggbb</I>) or in decimal (as <I>rrr,ggg,bbb</I>). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFFCC, #202020, #C8C365, and #77A26D. Available on the <A HREF="07.htm#boardcolors">Board Colors</A> section of the <A HREF="07.htm#boardoptions">Board Options</A> dialog.</P>
-
-
-
-<P>If you are using a <A NAME="grayscale"></A>grayscale monitor, try setting the colors to:</P>
-
-<PRE><CODE>-whitePieceColor:#FFFFFF
--blackPieceColor:#000000
--lightSquareColor:#CCCCCC
--darkSquareColor:#999999</CODE></PRE>
-
-
-
-<P><B><A NAME="hsc"></A>/hsc </B>or<B> <A NAME="highlightsquarecolor"></A>/highlightSquareColor <I>color</I><SUP> </SUP><BR>
-<A NAME="phc"></A>/phc </B>or <B><A NAME="premovehighlightcolor"></A>/premoveHighlightColor <I>color</I><SUP> </SUP></B></P>
-
-<P>Color specifications for the <A HREF="07.htm#highlightlastmove">Highlight Last Move</A> and <A HREF="07.htm#premovecmd">Premove</A> options, respectively. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as <I>#rrggbb</I>) or in decimal (as <I>rrr,ggg,bbb</I>). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFF00 and #FF0000, respectively.</P>
-
-
-
-<P><B><A NAME="mono"></A>/mono</B> or <B>/xmono</B>,<B> </B>or<B> <A NAME="monomode"></A>/monoMode<I> true|false</I></B></P>
-
-<P>Determines whether WinBoard displays its pieces and squares in black and white (True) or color (False, the default). Available in the <A HREF="07.htm#boardcolors">Board Colors</A> section of the <A HREF="07.htm#boardoptions">Board Options</A> dialog.</P>
-
-
-
-<P><B><A NAME="flipblack"></A><font color="#008000">/flipBlack<I> true|false</I></font></B></P>
-
-<P><font color="#008000">Determines whether WinBoard displays the black pieces upside down (or the white pieces in Flip View). Useful with Shogi with the traditional Japanese pieces, which are not distinguished by color but by orientation.</font></P>
-
-
-
-<P><B><A NAME="allwhite"></A><font color="#008000">/allWhite<I> true|false</I></font></B></P>
-
-<P><font color="#008000">Determines whether the white piece bitmaps will be used to display black pieces. The white pieces have a dark outline, which the black pieces lack. This makes the latter look vague if the color you give them is not very dark.</font></P>
-
-
-
-<P><B><A NAME="renderpieceswithfont"></A><font color="#ff0000">/renderPiecesWithFont <I>fontname</I></font></B></P>
-
-<P><font color="#ff0000">Uses the named true-type font to render the pieces, rather than the built-in bitmaps. The font must be installed on your computer. If the name starts with a *  it is ignored, allowing you to easily disable a font temporarily in the whinboard.ini file.</font></P>
-
-
-
-<P><B><A NAME="fontpiecetochartable"></A><font color="#ff0000">/fontPieceToCharTable <I>characterstring</I></font></B></P>
-
-<P><font color="#ff0000">If font-based rendering of the pieces is used, this table specifies which character of the font alphabet should be used for which piece. The format of the character strings is the same as that of the argument of /pieceToCharTable.</font></P>
-
-
-
-<P><B><A NAME="fontpiecesize"></A><font color="#ff0000">/fontPieceSize <I>number</I></font></B></P>
-
-<P><font color="#ff0000">The number gives the size of the piece, as a percentage of the square size.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="fontpiecebackcolorwhite"></A>/fontPieceBackColorWhite <I>color<BR>
-</I><A NAME="fontpieceforecolorwhite"></A>/fontPieceForeColorWhite <I>color<BR>
-</I><A NAME="fontpiecebackcolorblack"></A>/fontPieceBackColorBlack <I>color<BR>
-</I><A NAME="fontpieceforecolorblack"></A>/fontPieceForeColorBlack <I>color</I><SUP> </SUP></B></font></P>
-
-<P><font color="#ff0000">Color specifications for white pieces, black pieces that are generated with font-based rendering.</font></P>
-
-
-
-<P><B><A NAME="litebacktexturefile"></A><font color="#ff0000">/liteBackTextureFile <I>filename</I></font></B></P>
-
-
-
-<P><B><A NAME="darkbacktexturefile"></A><font color="#ff0000">/darkBackTextureFile <I>filename</I></font></B></P>
-
-<P><font color="#ff0000">The filename indicates a bitmap file that should be used to display the light or dark squares, allowing you to make boards that look like wood, marble, etc. A filename starting with * is ignored.</font></P>
-
-
-
-<P><B><A NAME="litebacktexturemode"></A><font color="#ff0000">/liteBackTextureMode <I>number</I></font></B></P>
-
-
-
-<P><B><A NAME="darkbacktexturemode"></A><font color="#ff0000">/darkBackTextureMode <I>number</I></font></B></P>
-
-<P><font color="#ff0000">The number indicates the way the files given in the background-texture options should be used to fill in the squares. Valid texture modes are 1 (default) and 2. In mode 1 the squares are taken from portions of the texture bitmap and copied without further processing. In mode 2, squares can also be rotated, mirrored and so on in order to provide a little more variety to the texture. The operations are selected at random so the board will look slightly different every time the program is run.</font><BR>
-</P>
-
-
-
-<P><B><A NAME="overidelinegap"></A><font color="#ff0000">/overideLineGap <I>number</I></font></B></P>
-
-<P><font color="#ff0000">The number specifies the width, in pixels, of the grid lines used to separate the squares. If it is very small (like a single pixel), it becomes vey hard to see which squares are highlighted (to indicate the last move), as this highlighting is a color change of these grid lines. Highlighting the moves with an arrow is then recommended.</font></P>
-
-
-
-<P><B><A NAME="highlightmoveswitharrow"></A><font color="#ff0000">/highlightMovesWithArrow <I>true|false</I></font></B></P>
-
-<P><font color="#ff0000">If this option is true, a big, fat arrow is drawn to indicate the last move.</font></P>
-
-
-
-<P><B><A NAME="highlightarrowcolor"></A><font color="#ff0000">/highlightArrowColor <I>color</I></font></B></P>
-
-<P><font color="#ff0000">Specifies the color of the arrow that highlights the moves.</font></P>
-
-
-
-<P><B><A NAME="evalhistocolorwhite"></A><font color="#ff0000">/evalHistoColorWhite <I>color</I></font></B></P>
-
-
-
-<P><B><A NAME="evalhistocolorblack"></A><font color="#ff0000">/evalHistoColorBlack <I>color</I></font></B></P>
-
-<P><font color="#ff0000">Specifies the colors to be used to plot the white and black scores in the evaluation graph.</font><BR>
-</P>
-
-
-
-<P><B><A NAME="colorshout"></A>/colorShout<I> “effects color”<BR>
-</I><A NAME="colorsshout"></A>/colorSShout <I>“effects color”<BR>
-</I><A NAME="colorchannel1"></A>/colorChannel1 <I>“effects color”</I><BR>
-<A NAME="colorchannel"></A>/colorChannel <I>“effects color”</I><BR>
-<A NAME="colorkibitz"></A>/colorKibitz <I>“effects color”</I><BR>
-<A NAME="colortell"></A>/colorTell <I>“effects color”</I><BR>
-<A NAME="colorchallenge"></A>/colorChallenge <I>“effects color”</I><BR>
-<A NAME="colorrequest"></A>/colorRequest <I>“effects color”</I><BR>
-<A NAME="colorseek"></A>/colorSeek <I>“effects color”</I><BR>
-<A NAME="colornormal"></A>/colorNormal <I>“effects color”</I></B></P>
-
-<P>Select colors and effects to colorize messages in the ICS Interaction window. The effects may be any combination of <B>b</B>old, <B>i</B>talic, <B>u</B>nderline, and <B>s</B>trikeout. Colors are specified as for squares and pieces. Available on the <A HREF="07.htm#icsinteractioncolors">ICS Interaction Colors</A> section of the <A HREF="07.htm#icsoptions">ICS Options</A> dialog. Limitation: On 256 color displays, Windows chooses the nearest solid color from the system palette, which will not always be close to the color you selected.</P>
-
-
-
-<P><B><A NAME="colorbackground"></A>/colorBackground <I>color</I></B></P>
-
-<P>Sets the background color for the ICS Interaction window. Available on the <A HREF="07.htm#icsinteractioncolors">ICS Interaction Colors</A> section of the <A HREF="07.htm#icsoptions">ICS Options</A> dialog.</P>
-
-
-
-<P><B><A NAME="colorize"></A>/colorize<SUP> </SUP></B>or <B>/xcolorize</B>, or<B> <A NAME="colorizemessages"></A>/colorizeMessages<I> true|false</I></B></P>
-
-<P>If True, WinBoard colorizes messages in the ICS Interaction window with the colors listed above. Default: True. Available in the <A HREF="07.htm#icsinteractioncolors">ICS Interaction Colors</A> section of the <A HREF="07.htm#icsoptions">ICS Options</A> dialog.</P>
-
-
-
-<P><B><A NAME="clockfont"></A>/clockFont “<I>fontname:size effects</I>”<BR>
-<A NAME="messagefont"></A>/messageFont “<I>fontname:size effects</I>”<BR>
-<A NAME="coordfont"></A>/coordFont “<I>fontname:size effects</I>”<BR>
-<A NAME="tagsfont"></A>/tagsFont “<I>fontname:size effects</I>”<BR>
-<A NAME="commentfont"></A>/commentFont “<I>fontname:size effects</I>”<BR>
-<A NAME="icsfont"></A>/icsFont “<I>fontname:size effects</I>”</B></P>
-
-<P>The fonts used respectively for the clocks, the message display line, rank and file coordinate labels, the Edit Tags dialog, the Edit Comment dialog, and the ICS Interaction window. These options may be given more than once. Each occurrence affects the fonts for the current board size; that is, the size given in the last preceding /boardSize option, if any, or else the default size. The font size may contain a decimal point, and the effects may be any combination of <B>b</B>old, <B>i</B>talic, <B>u</B>nderline, and <B>s</B>trikeout. Example: <CODE>/clockFont="Arial:20.0 bi".</CODE> Available on the <A HREF="07.htm#fonts">Fonts</A> menu.</P>
-
-
-
-<P><B><A NAME="soundshout"></A>/soundShout<I> sound<BR>
-</I><A NAME="soundsshout"></A>/soundSShout <I>sound<BR>
-</I><A NAME="soundchannel1"></A>/soundChannel1 <I>sound</I><BR>
-<A NAME="soundchannel"></A>/soundChannel <I>sound</I><BR>
-<A NAME="soundkibitz"></A>/soundKibitz <I>sound</I><BR>
-<A NAME="soundtell"></A>/soundTell <I>sound</I><BR>
-<A NAME="soundchallenge"></A>/soundChallenge <I>sound</I><BR>
-<A NAME="soundrequest"></A>/soundRequest <I>sound</I><BR>
-<A NAME="soundmove"></A>/soundMove <I>sound</I><SUP> </SUP><BR>
-<A NAME="soundbell"></A>/soundBell <I>sound</I><SUP> </SUP></B></P>
-
-
-
-<P><B><A NAME="soundicswin"></A>/soundIcsWin <I>sound</I><BR>
-<A NAME="soundicsloss"></A>/soundIcsLoss <I>sound</I><SUP> </SUP><BR>
-<A NAME="soundicsdraw"></A>/soundIcsDraw <I>sound</I><SUP> </SUP><BR>
-<A NAME="soundicsunfinished"></A>/soundIcsUnfinished <I>sound</I><SUP> </SUP></B></P>
-
-
-
-<P><B><A NAME="soundicsalarm"></A>/soundIcsAlarm <I>sound</I><SUP> </SUP></B></P>
-
-<P>Associate sounds with WinBoard events. Most of the events are the same ones that cause text colorization. In addition, <B>soundMove</B> is played if a chess engine or another player makes a move. <B>SoundBell</B> is played if the chess server sends an ASCII BEL character (Ctrl+G). Available on the <A HREF="07.htm#sounds">Sounds</A> menu.</P>
-
-<P><B>SoundIcsWin</B>, <B>soundIcsLoss</B>, <B>soundIcsDraw</B> and <B>soundIcsUnfinished</B> are played at the conclusion of an ICS game.  The result of the game determines which sound is played.</P>
-
-<P><B>SoundIcsAlarm</B> is played when your game clock counts down to <A HREF="14.htm#icsalarmtime">icsAlarmTime</A>. </P>
-
-<P>The <I>sound</I> argument may be one of the following:
-
-<UL>
-	<LI>The name of a <CODE>.wav</CODE> file. The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).<BR><BR></LI>
-
-	<LI><CODE>$</CODE>, indicating the default system sound.<BR><BR></LI>
-
-	<LI><CODE>!</CODE> followed by the name of a built-in WinBoard wave resource.<BR><BR></LI>
-
-	<LI><CODE>!</CODE> alone, or “” (empty string), indicating silence.</LI>
-</UL>
-
-<P>The default for soundMove and soundBell is <CODE>$</CODE>, while the others default to silence.</P>
-
-
-
-<P><B><A NAME="icsmenu"></A>/icsMenu={<I>entries</I>} </B>or <B>/icsMenu=@<I>filename</I></B></P>
-
-<P>This option lets you customize the right-button <A HREF="09.htm">context menu</A> that is available in the upper (output) pane of the ICS Interaction window. It consists of a list of menu entries, one per line. If the option value starts with an @ sign, it is the name of a file that contains the entries. Each entry contains either four fields separated by commas or the single character <CODE>"-"</CODE>. The fields are:
-
-<OL>
-	<LI>The menu text. If this field begins with <CODE>"|"</CODE>, the item begins a new column in the menu and the <CODE>"|"</CODE> is not shown. If this field contains an <CODE>"&amp;"</CODE>, the character after the ampersand is underlined in the menu and acts as a keyboard shortcut for the item when the menu is displayed. Do not assign the same shortcut key to two different menu items.<BR><BR></LI>
-
-	<LI>Text to insert into the input pane. The text cannot include a comma. You can use ICS aliases to get around this limitation.<BR><BR></LI>
-
-	<LI>A flag (1 or 0) saying whether to insert a space and <I>name </I>(see <A HREF="09.htm#tell">above</A>) after the text. If you set this flag, you might also want to put "(name)" into the menu text as a memory aid.<BR><BR></LI>
-
-	<LI>A flag (1 or 0) saying whether the result should be sent immediately to ICS or left in the input pane for further editing.</LI>
-</OL>
-
-<P>The entry <CODE>"-"</CODE> produces a separator line in the menu. The top three menu entries are always <B>Copy and Paste</B>, <B>Copy</B>, and <B>Paste</B>, but you have full control over the rest of the menu.</P>
-
-<P>The default menu is:</P>
-
-<PRE><CODE>–
-&amp;Who,who,0,1
-Playe&amp;rs,players,0,1
-&amp;Games,games,0,1
-&amp;Sought,sought,0,1
-|&amp;Tell (name),tell,1,0
-M&amp;essage (name),message,1,0
-–
-&amp;Finger (name),finger,1,1
-&amp;Vars (name),vars,1,1
-&amp;Observe (name),observe,1,1
-&amp;Match (name),match,1,1
-Pl&amp;ay (name),play,1,1</CODE></PRE>
-
-<P>There is no graphical user interface to set this option. To change it, edit your <A HREF="19.htm#settings">settings</A> file with a plain text editor such as Notepad.</P>
-
-
-
-<P><B><A NAME="icsnames"></A>/icsNames={<I>names</I>} </B>or <B>/icsNames=@<I>filename</I></B></P>
-
-<P>This option lets you customize the drop-down list of ICS names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text ”/ics /icsHost=” and adds the result to the command-line options. There is no graphical user interface to set this option. To change it, edit your <A HREF="19.htm#settings">settings</A> file with a plain text editor such as Notepad.</P>
-
-
-
-<P><B><A NAME="firstchessprogramnames"></A>/firstChessProgramNames={<I>names</I>} </B>or <B>/firstChessProgramNames="@<I>filename</I>"</B></P>
-
-<P>This option lets you customize the first drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text ”/cp /firstChessProgram=” and adds the result to the command-line options. </P>
-
-<P>There is no graphical user interface to set this option. To change it, edit your <A HREF="19.htm#settings">settings</A> file with a plain text editor such as Notepad. Example:</P>
-
-<PRE><CODE>/firstChessProgramNames={GNUChess
-WCrafty-15_11 /fd="C:\Program Files\Crafty"
-ArasanX /fd="C:\Program Files\Arasan\Arasan 4.1"
-"EXchess xb" /fd=C:\EXchess
-Comet-WB /fd=C:\Comet
-}</CODE></PRE>
-
-
-
-<P><B><A NAME="secondchessprogramnames"></A>/secondChessProgramNames={<I>names</I>}</B> or <B>/secondChessProgramNames="@<I>filename</I>"</B></P>
-
-<P>This option lets you customize the second drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text ”/cp /secondChessProgram=” and adds the result to the command-line options.</P>
-
-<P>There is no graphical user interface to set this option. To change it, edit your <A HREF="19.htm#settings">settings</A> file with a plain text editor such as Notepad. Example:</P>
-
-<P><CODE>/secondChessProgramNames={GNUChess<BR>
-WCrafty-15_11 /sd="C:\\Program Files\\Crafty\"<BR>
-ArasanX /sd="C:\Program Files\Arasan\Arasan 4.1"<BR>
-"EXchess xb" /sd=C:\EXchess<BR>
-Comet-WB /sd=C:\Comet<BR>
-}</CODE></P>
-
-
-
-<P><B><A NAME="xy"></A>/x=<I>xcoord  </I>/y=<I>ycoord</I></B></P>
-
-<P>Sets the initial location of the board window, giving the screen coordinates of the upper left-hand corner. Both arguments must be given together.</P>
-
-
-
-<P><B><A NAME="xywh"></A>/analysisX=<I>xcoord  </I>/analysisY=<I>ycoord</I>  /analysisW=<I>width</I>  /analysisH=<I>height</I></B></P>
-
-<P><font color="#3333ff">These options have been deprecated, as the analysis window is replaced by the more general engine-output window. They are recognized, but ignored, and no longer saved in the winboard.ini file.</font></P>
-
-
-
-<P><B><A NAME="xywh"></A>/commentX=<I>xcoord  </I>/commentY=<I>ycoord</I>  /commentW=<I>width</I>  /commentH=<I>height</I></B></P>
-
-<P>Sets the initial location and size of the Comment window, giving the screen coordinates of the upper left-hand corner <font color="#3333ff">(relative to the main window)</font>, the width, and the height. All four arguments must be given together.</P>
-
-
-
-<P><B><A NAME="xywh"></A>/gameListX=<I>xcoord  </I>/gameListY=<I>ycoord</I>  /gameListW=<I>width</I>  /gameListH=<I>height</I></B></P>
-
-<P>Sets the initial location and size of the Game List window, giving the screen coordinates of the upper left-hand corner <font color="#3333ff">(relative to the main window)</font>, the width, and the height. All four arguments must be given together.</P>
-
-
-
-<P><B><A NAME="xywh"></A>/icsX=<I>xcoord  </I>/icsY=<I>ycoord</I>  /icsW=<I>width</I>  /icsH=<I>height</I></B></P>
-
-<P>Sets the initial location and size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner <font color="#3333ff">(relative to the main window)</font>, the width, and the height. All four arguments must be given together.</P>
-
-
-
-<P><B><A NAME="xywh"></A>/tagsX=<I>xcoord  </I>/tagsY=<I>ycoord</I>  /tagsW=<I>width</I>  /tagsH=<I>height</I></B></P>
-
-<P>Sets the initial location and size of the Tags window, giving the screen coordinates of the upper left-hand corner <font color="#3333ff">(relative to the main window)</font>, the width, and the height. All four arguments must be given together.</P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="xywh"></A>/moveHistoryX=<I>xcoord  </I>moveHistoryY=<I>ycoord</I>  /moveHistoryW=<I>width</I>  /moveHistoryH=<I>height</I></B></font></P>
-
-<P><font color="#ff0000">Sets the initial location and size of the move-history window, giving the screen coordinates of the upper left-hand corner</font> <font color="#3333ff">(relative to the main window)</font><font color="#ff0000">, the width, and the height. All four arguments must be given together.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="xywh"></A>/evalGraphX=<I>xcoord  </I>/evalGraphY=<I>ycoord</I>  /evalGraphW=<I>width</I>  /evalGraphH=<I>height</I></B></font></P>
-
-<P><font color="#ff0000">Sets the initial location and size of the evaluation-graph window, giving the screen coordinates of the upper left-hand corner</font> <font color="#3333ff">(relative to the main window)</font><font color="#ff0000">, the width, and the height. All four arguments must be given together.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="xywh"></A>/engineOutputX=<I>xcoord  </I>/engineOutputY=<I>ycoord</I>  </B></font></P>
-
-<P><font color="#ff0000"><B>/engineOutputW=<I>width</I>  /engineOutputH=<I>height</I></B></font></P>
-
-<P><font color="#ff0000">Sets the initial location and size of the engine-output window, giving the screen coordinates of the upper left-hand corner</font> <font color="#3333ff">(relative to the main window)</font><font color="#ff0000">, the width, and the height. All four arguments must be given together.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="windowup"></A>/engineOutputUp <I>true|false </I></B></font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="windowup"></A>/evalGraphUp <I>true|false</I></B></font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="windowup"></A>/moveHistoryUp <I>true|false</I></B></font></P>
-
-<P><font color="#ff0000">If set to True, the corresponding window is displayed, if False, the window is absent.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="stickywindows"></A>/stickyWindows <I>true|false</I></B></font></P>
-
-<P><font color="#ff0000">Auxiliary windows touching the main window will stay attached to the latter when you move it.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="autodisplaycomment"></A>/autoDisplayComment <I>true|false</I></B></font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="autodisplaytags"></A>/autoDisplayTags <I>true|false</I></B></font></P>
-
-<P><font color="#ff0000">If set to True, these options cause the window with the move comments, and the window with PGN tags, respectively, to pop up automatically when such tags or comments are encountered during the replaying a stored or loaded game.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="gamelisttags"></A>/gameListTags <I>string</I></B></font></P>
-
-<P><font color="#ff0000">The <I>string</I> contains single-character codes specifying the PGN tags that have to be listed for each game in the game-list window, and their order. The meaning of the characters is a=out-of-book info, b=black Elo, e=event, d=date, o=round, p=players, r=result, w=white Elo, s=site, t=time control and v=variant, Default: “eprd”.</font></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/17.htm b/winboard/help/html/17.htm
deleted file mode 100644
index c1f77cb..0000000
--- a/winboard/help/html/17.htm
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Adjudication Options</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><font color="#ff0000"><B><A NAME="adjudicationoptions"></A>Adjudication Options</B></font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="adjudicatelossthreshold"></A>/adjudicateLossThreshold <I>scorethreshold</I></B></font></P>
-
-<P><font color="#ff0000">If the given value is non-zero, WinBoard adjudicates the game as a loss if both engines agree for a duration of 6 consecutive ply that the score is below the given score threshold for that engine. Make sure the score is interpreted properly by WinBoard, using /firstScoreAbs and /secondScoreAbs if needed.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="adjudicatedrawmoves"></A>/adjudicateDrawMoves <I>number</I></B></font></P>
-
-<P><font color="#ff0000">If the given value is non-zero, WinBoard adjudicates the game as a draw if after the given <I>number</I> of moves it was not yet decided.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="checkmates"></A>/checkMates<I> true|false</I></B></font></P>
-
-<P><font color="#008000">If this option is True, WinBoard detects all checkmates and stalemates, and ends the game as soon as they occur. Legality-testing must be on for this option to work.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="testclaims"></A>/testClaims<I> true|false</I></B></font></P>
-
-<P><font color="#008000">If this option is True, WinBoard verifies all result claims made by engines, and those who send false claims will forfeit the game because of it. Legality-testing must be on for this option to work.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="materialdraws"></A>/materialDraws<I> true|false</I></B></font></P>
-
-<P><font color="#008000">If this option is True, WinBoard adjudicates games as draws when there is no sufficient material left to create a checkmate. This applies to KBKB with like bishops, and to KBK, KNK and KK. Legality-testing must be on for this option to work.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="trivialdraws"></A>/trivialDraws<I> true|false</I></B></font></P>
-
-<P><font color="#008000">If this option is True, WinBoard adjudicates games as draws that cannot be usualy won without opponent assistance. This applies to KBKB with unlike bishops, and to KBKN, KNKN, KNNK, KRKR and KQKQ. The draw is called after 6 ply into these end-games, to allow quick mates that can occur in some positions. KQKQ does not really belong in this category, and might be taken out in the future. (When bitbase-based adjudications are implemented.) Legality-testing must be on for this option to work.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="rulemoves"></A>/ruleMoves <I>number</I></B></font></P>
-
-<P><font color="#008000">If the given value is non-zero, WinBoard adjudicates the game as a draw after the given <I>number</I> of consecutive reversible moves. Engines can claim draws after 50 moves, irrespective of the value of <I>number</I>.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="repeatstodraw"></A>/repeatsToDraw <I>number</I></B></font></P>
-
-<P><font color="#008000">If the given value is non-zero, WinBoard adjudicates the game as a draw if a position is repeated the given <I>number</I> of times. Engines can claim draws after 3 repeats, (on the 3rd occurrence, actually), irrespective of the value of <I>number</I>. Beware that positions that have different castling or en-passant rights do not count as repeats, WinBoard is fully e.p. and castling aware!</font></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/18.htm b/winboard/help/html/18.htm
deleted file mode 100644
index 81a8f79..0000000
--- a/winboard/help/html/18.htm
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Other Options</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="otheroptions"></A>Other Options</B></P>
-
-
-
-<P><B><A NAME="ncp"></A>/ncp</B> or <B>/xncp</B>,<B> </B>or<B> <A NAME="nochessprogram"></A>/noChessProgram<I> true|false</I></B></P>
-
-<P>If this option is True, WinBoard acts as a passive chessboard; it does not start a chess program or connect to ICS. This option also sets clockMode to False. Default: False.</P>
-
-
-
-<P><B><A NAME="mode"></A>/mode</B> or <B><A NAME="initialmode"></A>/initialMode <I>modename</I></B></P>
-
-<P>If this option is given, WinBoard selects the given <I>modename</I> from the <A HREF="04.htm">Mode menu</A> after starting and (if applicable) processing the <A HREF="15.htm#loadgamefile">loadGameFile</A> or <A HREF="15.htm#loadpositionfile">loadPositionFile</A> option. Default: "". Other supported values are TwoMachines, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training.</P>
-
-
-
-<P><B><A NAME="variant"></A>/variant</B> <B><I> varname</I></B></P>
-
-<P>Activates preliminary, partial support for playing chess variants against a local engine or editing variant games. This flag is not needed in ICS mode. Recognized variant names are:</P>
-
-<table><tr><td>
-normal</td><td>Normal chess
-</td></tr><tr><td>
-wildcastle</td><td>Shuffle chess, king can castle from d file
-</td></tr><tr><td>
-nocastle</td><td>Shuffle chess, no castling allowed
-</td></tr><tr><td>
-fischerandom</td><td>Fischer Random shuffle chess
-</td></tr><tr><td>
-bughouse</td><td>Bughouse, ICC/FICS rules
-</td></tr><tr><td>
-crazyhouse</td><td>Crazyhouse, ICC/FICS rules
-</td></tr><tr><td>
-losers</td><td>Lose all pieces or get mated (ICC wild 17)
-</td></tr><tr><td>
-suicide</td><td>Lose all pieces including king (FICS)
-</td></tr><tr><td>
-giveaway</td><td>Try to have no legal moves (ICC wild 26)
-</td></tr><tr><td>
-twokings</td><td>Weird ICC wild 9
-</td></tr><tr><td>
-kriegspiel</td><td>Opponent's pieces are invisible
-</td></tr><tr><td>
-atomic</td><td>Capturing piece explodes (ICC wild 27)
-</td></tr><tr><td>
-3check</td><td>Win by giving check 3 times (ICC wild 25)
-</td></tr><tr><td>
-<font color="#008000">xiangqi</font></td><td><font color="#008000">Chinese Chess (on a 9x10 board)</font>
-</td></tr><tr><td>
-<font color="#008000">shogi</font></td><td><font color="#008000">Japanese Chess (on a 9x9 board, with piece drops)</font>
-</td></tr><tr><td>
-<font color="#008000">capablanca</font></td><td><font color="#008000">Capablanca Chess (10x8 board, with Archbishop and Chancellor pieces)</font>
-</td></tr><tr><td>
-<font color="#008000">gothic</font></td><td><font color="#008000">similar, with a better initial position</font>
-</td></tr><tr><td>
-<font color="#008000">caparandom</font></td><td><font color="#008000">An FRC-like version of Capablanca Chess (10x8 board)</font>
-</td></tr><tr><td>
-<font color="#008000">janus</font></td><td><font color="#008000">A game with two Archbishops (10x8 board)</font>
-</td></tr><tr><td>
-<font color="#008000">shatranj</font></td><td><font color="#008000">Ancient Arabic Chess, with Elephants and General replacing B and Q.</font>
-</td></tr><tr><td>
-<font color="#008000">courier</font></td><td><font color="#008000">Medieval intermedite between shatranj and modern Chess (on 12x8 board)</font>
-</td></tr><tr><td>
-<font color="#008000">falcon</font></td><td><font color="#008000">A patented Chess variant with two Falcon pieces (10x8) board</font>
-</td></tr><tr><td>
-<font color="#008000">berolina</font></td><td><font color="#008000">Pawns capture straight ahead, and move diagonal (legality testing off!)</font>
-</td></tr><tr><td>
-<font color="#008000">cylinder</font></td><td><font color="#008000">Pieces wrap around the board, as if it were a cylinder (legality testing off!)</font> 
-</td></tr><tr><td>
-<font color="#008000">fairy</font></td><td><font color="#008000">A variant in which all pieces known to WinBoard can participate</font>
-</td></tr><tr><td>
-<font color="#008000">knightmate</font></td><td><font color="#008000">King moves a Knight, and vice versa</font>
-</td></tr><tr><td>
-<font color="#3333ff">super</font></td><td><font color="#3333ff">Superchess, a shuffle variant with B+N, R+N, K+N and Q+N compound</font>
-</td></tr><tr><td>
-<font color="#3333ff">great</font></td><td><font color="#3333ff">Great Shatranj, whithout sliders, on 10x8 board (legality testing off!)</font>
-</td></tr></table>
-
-<P><font color="#008000">In the shuffle variants, WinBoard does now shuffle the pieces, although you can still do it by hand using Edit Position.</font> 
-Some variants are supported only in ICS mode, including bughouse, and kriegspiel. 
-The winning/drawing conditions in crazyhouse (offboard interposition on mate) is not fully understood, 
-<font color="#3333ff">but losers, suicide, giveaway, atomic, and 3check should be OK.</font> 
-In crazyhouse, <font color="#3333ff">WinBoard now does keep track of offboard pieces.
-In shatranj it does implement the baring rule when mate detection is switched on.
-In xiangqi it does implement the rules for perpetual checking and chasing (in Two-Machines mode)</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="boardheight"></A>/boardHeight <I>height</I></B></font></P>
-
-<P><font color="#008000">Allows you to set a non-standard number of board ranks in any variant. If the height is given as ‘-1’, the default height for the variant is used.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="boardwidth"></A>/boardWidth <I>width</I></B></font></P>
-
-<P><font color="#008000">Allows you to set a non-standard number of board files in any variant. If the width is given as ‘-1’, the default width for the variant is used. Width a non-standard width, the initial position will always be an empty board, as the usual opening array will not fit.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="holdingssize"></A>/holdingsSize <I>size</I></B></font></P>
-
-<P><font color="#008000">Allows you to set a non-standard size for the holdings in any variant. If the size is given as ‘-1’, the default holdings size for the variant is used. The first <I>size</I> piece types will go into the holdings on capture, and you will be able to drop them on the board in stead of making a normal move. If <I>size</I> equals 0, there will be no holdings.</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="defaultfrcposition"></A>/defaultFrcPosition <I>number</I></B></font></P>
-
-<P><font color="#ff0000">Specifies the number of the opening position in shuffle games like FRC. A value of ‘-1’ means the position is randomly generated by WinBoard.</font></P>
-
-
-
-<P><font color="#008000"><B><A NAME="piecetosquaretable"></A>/pieceToSquareTable <I>characterstring</I></B></font></P>
-
-<P><font color="#008000">The characters that are used to represent the piece types WinBoard knows in FEN diagrams and SAN moves. The string argument has to have an even length (or it will be ignored), as white and black pieces have to be given separately (in that order). The last letter for each color will be the King. The letters before that will be PNBRQ and then a whole host of fairy pieces in an order that has not fully crystallized yet (currently FEACWMOHIJGDVSLU, F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, H=Nightrider). You should list at least all pieces that occur in the variant you are playing. If you have less than 44 characters in the string, the pieces not mentioned will get assigned a period, and you will not be able to distinguish them in FENs. You can also explicitly assign pieces a period, in which case they will not be counted in deciding which captured pieces can go into the holdings.</font></P>
-
-<P><font color="#008000">A tilde as a piece name does mean this piece is used to represent a promoted Pawn in Crazyhouse-like games, i.e. on capture it turns back onto a Pawn. A + similarly indicate the piece is a Shogi-style promoted piece, that should revert to its non-promoted version on capture (rather than to a Pawn).</font></P>
-
-<P><font color="#008000">Note that promoted pieces are represented by pieces 11 further in the list.</font></P>
-
-<P><font color="#008000">You should not have to use this option often: each variant has its own default setting for the piece representation in FEN, which should be sufficient in normal use.</font></P>
-
-
-
-<P><B><A NAME="rsh"></A>/rsh </B>or<B> <A NAME="remoteshell"></A>/remoteShell <I>shellname</I></B></P>
-
-<P>Name of the command used to run programs remotely. If this option is not given, WinBoard<I> </I>uses its own built-in implementation of the Unix <I>rcmd</I> protocol (the protocol used by <I>rsh</I>).</P>
-
-
-
-<P><B><A NAME="ruser"></A>/ruser </B>or<B> <A NAME="remoteuser"></A>/remoteUser <I>username</I></B></P>
-
-<P>User name on the remote system when running programs with the remoteShell. The default is your local user name.</P>
-
-
-
-<P><font color="#008000"><B><A NAME="username"></A>/userName <I>username</I></B></font></P>
-
-<P><font color="#008000">Name under which the Human player will be listed in the PGN file. (Default is the login name on your local computer.)</font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="delaybeforequit"></A>/delayBeforeQuit <I>number</I></B></font></P>
-
-
-
-<P><font color="#ff0000"><B><A NAME="delayafterquit"></A>/delayAfterQuit <I>number</I></B></font></P>
-
-<P><font color="#ff0000">These options specify how long WinBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the ‘quit’ command. The second one determines the pause after killing the engine, to make sure it dies.</font></P>
-
-
-
-<P><B><A NAME="ini"></A>/ini </B>or<B> <A NAME="settingsfile"></A>/settingsFile <I>filename<BR>
-</I><A NAME="atsign"></A>@ <I>file-name</I></B></P>
-
-<P>See <A HREF="19.htm#settings">Settings</A>.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/19.htm b/winboard/help/html/19.htm
deleted file mode 100644
index 6440fc6..0000000
--- a/winboard/help/html/19.htm
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Files</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="files"></A>INITIALIZATION FILES</B></P>
-
-
-
-<P><B><A NAME="settings"></A>Settings</B></P>
-
-<P>When WinBoard starts up, it reads option settings from a file named <I>WinBoard.ini </I>in its installation directory (the directory containing WinBoard.exe). Options in this file have the same format as <A HREF="11.htm">command line options</A>, except that they do not all have to be on a single line. You can put a comment in a settings file by preceding it with a semicolon (<CODE>;</CODE>).</P>
-
-<P>The WinBoard.ini file is read before the command line is processed, so any options you give on the command line override options in the file.</P>
-
-<P>If WinBoard encounters a <A HREF="18.htm#settingsfile">/settingsFile</A> <I>filename </I>or <A HREF="18.htm#atsign">@</A><I>filename </I>option while reading settings (whether from the command line or a file), it reads more settings from the given file before reading the next option.</P>
-
-<P>The <A HREF="07.htm#savesettings">Save Settings Now</A> menu command writes the current values of most options to a file. In addition, settings are saved automatically when WinBoard exits if <A HREF="07.htm#savesettingsonexit">Save Settings on Exit</A> is checked. The settings are written to the last file named in a /settingsFile command, if any; otherwise to WinBoard.ini<I>.</I> The @ option does not affect which file settings are saved to.</P>
-
-<P>Warning: Because Save Settings overwrites the last settings file (usually WinBoard.ini) and only saves a subset of WinBoard's options, you should not add settings of more options to such a file with a text editor. If you do this, your additional options will be lost on the next Save Settings. You can change the values of existing settings freely, using Notepad or any plain text editor. Be careful not to do this while WinBoard is running, however, unless you know that Save Settings on Exit is off. Otherwise all your changes will be overwritten and lost when WinBoard exits.</P>
-
-<P><font color="#008000">Notice that tournament managers, like PSWBTM, usually call WinBoard with the option not to save settings on exit, so that the entire tournament uses the same settings. So it does make sense to edit ‘volatile’ options, such as /variant, into the settings file.</font></P>
-
-
-
-<P><B><A NAME="icslogon"></A>ICS Logon</B></P>
-
-<P>Whenever WinBoard connects to the Internet Chess Server, if it finds a file called <I>ICS.ini </I>in its installation directory<I>,</I> it feeds the file's contents to the ICS as commands. Usually the first two lines of the file should be your ICS user name and password. You can specify a different name instead of <I>ICS.ini</I> by using the <A HREF="14.htm#icslogon">icslogon</A> command line option.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/20.htm b/winboard/help/html/20.htm
deleted file mode 100644
index 025c8b2..0000000
--- a/winboard/help/html/20.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Installing Chess Engines</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="installingchessengines"></A>INSTALLING CHESS ENGINES</B></P>
-
-<P><B>Introduction</B></P>
-
-<P>WinBoard is capable of operating with many different chess engines. You can play chess against a compatible engine, set up matches between two engines, or (advanced users only) run an automated computer player on an ICS.</P>
-
-<P>Typically, the main difficulty in installing a new chess engine for use by WinBoard comes in getting the engine itself running and setting its options appropriately. The connection to WinBoard is relatively straightforward.</P>
-
-<P>WinBoard-compatible chess engines are Win32 command line programs that you can run by hand in an MS-DOS Prompt box and type human-readable commands to. WinBoard connects to an engine simply by starting the engine up in the background and communicating with it through a pair of pipes. Therefore the basic procedure for installing an engine is:</P>
-
-<P>1. Get a copy of the engine and any supporting files it needs.</P>
-
-<P>2. Install and configure the engine as a command-line program by following the instructions that come with it. Try it out by running it from the command line in an MS-DOS Prompt box and make sure it works.</P>
-
-<P>3. Optional, but recommended: Try out the WinBoard plus engine combination by running WinBoard with the proper command line arguments in an MS-DOS Prompt box.</P>
-
-<P>4. Create a shortcut on your desktop or Start menu to run the engine with WinBoard.</P>
-
-<P>5. Optionally edit your WinBoard.ini file to add the engine to the drop-down lists on WinBoard's startup dialog.</P>
-
-<P>This document cannot explain steps 1 and 2 in detail for all engines, but we will take you through all five steps in outline, using Crafty as an example.</P>
-
-<P><B>Example: Crafty</B></P>
-
-<P>1. Choose a directory to put Crafty in. We'll use <CODE>C:\Program Files\Crafty</CODE> in this example. Download your copy of Crafty into this directory from its author's FTP site, <CODE>ftp://ftp.cis.uab.edu/pub/hyatt</CODE>. At this writing, you will need at least the following files:</P>
-
-<P><CODE>read.me<BR>
-v15/crafty.doc<BR>
-v15/crafty.faq<BR>
-v15/wcrafty-15.*.exe</CODE> (where * is replaced by the largest number there)<BR>
-<CODE>common/start.zip<BR>
-common/medium.zip </CODE>(or another book).</P>
-
-<P>2. The first three files are documentation that you can read with a text editor. Read the read.me file first and follow the instructions carefully. This will take some time. Do not write to the author of WinBoard if you have trouble with the instructions in the Crafty read.me. Try running Crafty from an MS-DOS Prompt box and make sure it works before you go on.</P>
-
-<P>3. Optional, but recommended: In an MS-DOS Prompt box, <CODE>cd </CODE>to the directory where WinBoard is installed, typically <CODE>"C:\Program Files\WinBoard"</CODE>. Then type the following command line. Use the actual name of the wcrafty file you downloaded, not an <CODE>*</CODE>, and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.</P>
-
-<PRE><CODE>WinBoard /cp /fcp=WCrafty-15.* /fd="C:\Program Files\Crafty" /scp=WCrafty-15.* /sd="C:\Program Files\Crafty"</CODE></PRE>
-
-<P>WinBoard should start up, with Crafty running as its chess engine. Check that you can play chess against Crafty.</P>
-
-<P>4. To make a shortcut or Start menu entry for Crafty: Right-click on the desktop and select New/Shortcut. Use the Browse button to find your winboard.exe file and get its name into the Command Line box. (It usually will be "C:\Program Files\WinBoard\winboard.exe".) Click in the Command Line box and hit the End key to go to the end. Add the following to the end of the command line, <I>after</I> the closing quotation mark. Use the actual name of the wcrafty file you downloaded, not an <CODE>*</CODE>, and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.</P>
-
-<PRE><CODE>/cp /fcp=WCrafty-15.* /fd="C:\Program Files\Crafty" 
-/scp=WCrafty-15.* /sd="C:\Program Files\Crafty"</CODE></PRE>
-
-<P>Press Next, choose a name for the shortcut, and press Finish. You can now use this shortcut to run WinBoard with Crafty. Double-click it to check that it works. You can drag or copy the shortcut into your Start menu if you like.</P>
-
-<P>5. To add Crafty as an option in the WinBoard Startup dialog, edit your <A HREF="19.htm#settings">WinBoard.ini file</A> with Notepad or another plain text editor, carefully following the example shown under <A HREF="16.htm#firstchessprogramnames">/firstChessProgramNames</A> above.</P>
-
-<P><B>For more information</B></P>
-
-<P>If you would like to run an automated computer player on the ICS, see the separate file <CODE>zippy.README</CODE>. If you would like to write your own engine to interface to WinBoard, see the separate file <CODE>engine-intf.html</CODE>, and join the mailing list mentioned there. Both files are included in the WinBoard distribution. You might also want to get the source code for WinBoard. It is available from the author's Web page, http://www.tim-mann.org/chess.html<CODE>.</CODE></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/21.htm b/winboard/help/html/21.htm
deleted file mode 100644
index c970da5..0000000
--- a/winboard/help/html/21.htm
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Firewalls</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="firewalls"></A>FIREWALLS</B></P>
-
-<P>By default, "WinBoard /ics"<I> </I>communicates with an Internet Chess Server by opening a TCP socket directly from the machine it is running on to the ICS. If there is a firewall between your machine and the ICS, this won't work. Here are some recipes for getting around common kinds of firewalls using special options to WinBoard<I>.</I> Important: See the paragraph in the <A HREF="22.htm">LIMITATIONS</A> section below about extra echoes.</P>
-
-<P>Suppose that you can't telnet directly to ICS, but you can telnet to a firewall host, log in, and then telnet from there to ICS. Let's say the firewall is called fire.wall.com. Set command-line options as follows: </P>
-
-<PRE><CODE>WinBoard -ics -icshost fire.wall.com -icsport 23</CODE></PRE>
-
-<P>Then when you run WinBoard<I> </I>in ICS mode, you will be prompted to log in to the firewall host. (This works because port 23 is the standard telnet login service.) Do so, then telnet to ICS, using a command like "telnet chessclub.com 5000", or whatever command the firewall provides for telnetting to port 5000.</P>
-
-<P>If your firewall lets you telnet (or rlogin) to remote hosts, but doesn't let you telnet to port 5000, you will have to find some other host outside the firewall that does let you do this, and hop through it. For instance, suppose you have an account at foo.edu. Follow the recipe above, but instead of typing "telnet chessclub.com 5000" to the firewall, type "telnet foo.edu" (or "rlogin foo.edu"), log in there, and then type "telnet chessclub.com 5000".</P>
-
-<P>Exception: chessclub.com itself lets you connect to the chess server on the default telnet port (23), which is what you get if you don’t specify a port to the telnet program. But the other chess servers don’t allow this.</P>
-
-<P>Suppose that you can't telnet directly to ICS, but you can use rsh to run programs on a firewall host, and that host can telnet to ICS. Let's say the firewall is called rsh.wall.com. Set command-line options as follows: </P>
-
-<PRE><CODE>WinBoard -ics -gateway rsh.wall.com -icshost chessclub.com</CODE></PRE>
-
-<P>Then when you run WinBoard<I> </I>in ICS mode, it will connect to the ICS by using rsh to run the command "telnet chessclub.com 5000" on host rsh.wall.com.</P>
-
-<P>ICC timestamp and FICS timeseal do not work through many<B> </B>firewalls. You can use them only if your firewall gives a clean TCP connection with a full 8-bit wide path. If your firewall allows you to get out only by running a special telnet program, you can't use timestamp or timeseal across it. But if you have access to a computer just outside your firewall, and you have much lower netlag when talking to that computer than to the ICS, it might be worthwhile running timestamp there. Follow the instructions above for hopping through a host outside the firewall (foo.edu in the example), but run timestamp or timeseal on that host instead of telnet.</P>
-
-<P>Suppose that you have a SOCKS firewall that requires you to go through some extra level of authentication, but after that will give you a clean 8-bit wide TCP connection to the chess server. In that case, if you are using timestamp or timeseal, you need to somehow socksify it; if not, you need to socksify WinBoard itself. Socksification is beyond the scope of this document, but see the SOCKS Web site at http://www.socks.nec.com/how2socksify.html.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/22.htm b/winboard/help/html/22.htm
deleted file mode 100644
index 5d5255f..0000000
--- a/winboard/help/html/22.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Limitations</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="limitations"></A>LIMITATIONS <font color="#008000">AND NON-LIMITATIONS</font></B></P>
-
-<P>WinBoard<I> </I>is a Win32 application. It runs only on Windows NT and Windows 95. It does not work on Windows 3.11 or earlier, even with the Win32s compatibility package.</P>
-
-<P><I>CMail, </I>the companion program to xboard for playing electronic mail correspondence chess, has not been ported to Win32.</P>
-
-<P>There is no way for two people running copies of WinBoard<I> </I>to play each other without going through the Internet Chess Server.</P>
-
-<P>Under some circumstances, your ICS password may be echoed when you log on.</P>
-
-<P>If you are connecting to the ICS by running telnet, timestamp, or timeseal on an Internet provider host, you may find that each line you type is echoed back an extra time after you hit Enter. You can probably turn this echo off. If your Internet provider is a Unix system, type "<CODE>stty -echo</CODE>" after you log in to the provider but before you run telnet, timestamp, or timeseal. In addition, you may need to type the sequence “<CODE>Ctrl+Q Ctrl+E Enter</CODE>“ after you have finished logging in to ICS. On VMS, type “<CODE>set terminal /noecho /nowrap</CODE>”, and after you telnet to the ICS, type “<CODE>Ctrl+Q Ctrl+] Enter set mode char Enter Enter</CODE>”. It is a good idea to turn off the extra remote echo if you can, because otherwise it can get interleaved with output from the ICS and confuse WinBoard's parsing routines. Don’t just turn off <A HREF="07.htm#locallineediting">Local Line Editing</A> so that you see only the remote echo and not the local one; that will make the interleaving problem worse.</P>
-
-<P>The game parser recognizes only algebraic notation (SAN).</P>
-
-<P>The <A HREF="14.htm#icslogon">ICS logon</A> file does not work properly when you connect to ICS through a Unix gateway host by setting <A HREF="14.htm#icsport">icsPort</A> to 23. The Unix login process apparently discards type-ahead.</P>
-
-<P>Some WinBoard functions may not work with versions of GNU Chess earlier than 4.0, patchlevel 77. The current version of WinBoard<I> </I>works best with Crafty version 15.11 or later.</P>
-
-<P><font color="#008000">Many of the following points used to be limitations in WinBoard 4.2.7 and earlier, but are now fixed:</font></P>
-
-<P><font color="#008000">The internal move legality tester in WinBoard 4.3.xx does look at the game history, and is fully aware of castling or en passant-capture rights.</font> It permits castling with the king on the <B>d</B> file because this is possible in some "wild 1" games on ICS. The piece-drop menu does not check piece drops in bughouse to see if you actually hold the piece you are trying to drop. <font color="#008000">But this way of dropping pieces should be considered an obsolete feature, now that pieces can be dropped by dragging them from the holdings to the board.</font> Anyway, if you would attempt an illegal move when using a chess engine or the ICS, WinBoard will accept the error message that comes back, undo the move, and let you try another.</P>
-
-<P><font color="#008000">FEN positions saved by WinBoard<I> </I>do include correct information about whether castling or en passant are legal, and also handle the 50-move counter.</font></P>
-
-<P>The mate detector does not understand that non-contact mate is not really mate in bughouse. The only problem this causes while playing is minor: a "#" (mate indicator) character will show up after a non-contact mating move in the move list. WinBoard will not assume the game is over at that point, <font color="#008000">not even when the option Detect Mates is on.</font></P>
-
-<P><font color="#008000">Edit Game mode always uses the rules of the selected variant, which can be a variant that uses piece drops.  You can load and edit games that contain piece drops. The (obsolete) piece menus are not active, but you can perform piece drops by dragging pieces from the holdings.</font></P>
-
-<P><font color="#008000">Edit Position mode does not allow you to edit the Crazyhouse holdings properly. You cannot drag pieces to the holding, and using the popup menu to put pieces there does not adapt the holding counts and leads to an inconsistent state. Set up Crazyhouse positions by loading / pasting a bFEN, from there you can set the holdings.</font></P>
-
-<P><font color="#008000">Fischer Random castling is fully understood. You can enter castlings by dragging the King on top of your Rook. You can probably also play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window.</font></P>
-
-<P>Also see the ToDo file included with the distribution for many other possible bugs, limitations, and ideas for improvement that have been suggested.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/23.htm b/winboard/help/html/23.htm
deleted file mode 100644
index ba29478..0000000
--- a/winboard/help/html/23.htm
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Authors</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="authors"></A>AUTHORS AND CONTRIBUTORS</B></P>
-
-<P>WinBoard is partly based on <I>xboard</I>, a chessboard program for Unix and the X Window System. Tim Mann has been responsible for all versions of WinBoard,<I> </I>and for xboard versions 1.3 and beyond. <font color="#008000">H.G.Muller is responsible for version 4.3.</font></P>
-
-<P>Mark Williams added many features to WinBoard 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mode, auto raise, and blindfold. Hugh Fischer added piece animation to xboard, and Henrik Gram added it to WinBoard. Frank McIngvale contributed many xboard<I> </I>user interface improvements and improved Crafty support. Jochen Wiedmann ported xboard<I> </I>to the Amiga, creating <I>AmyBoard</I>, and converted the documentation to texinfo. Elmar Bartel contributed the new piece bitmaps for version 3.2. Evan Welsh wrote <I>CMail. </I>John Chanak contributed the initial implementation of ICS mode. The default color scheme was adapted from Wayne Christopher's <I>XChess </I>program. Chris Sears and Dan Sears wrote the original xboard<I>. </I>They were responsible for xboard<I> </I>versions 1.0 through 1.2. <font color="#ff0000">Alessandro Scotti added many elements to the user interface, including the board textures and font-based rendering, the evaluation-graph, move-history and engine-output window. He was also responsible for adding the UCI support.</font> <font color="#008000">H.G. Muller made WinBoard castling- and e.p.-aware, added variant support with adjustable board sizes, the Crazyhouse holdings, and the fairy pieces. In addition he added most of the adjudication options, made WinBoard ore robust in dealing with buggy and crashing engines, and extended time control with a time-odds and node-count-based modes.</font></P>
-
-<P>Send bug reports to &lt;bug-xboard at gnu.org&gt;. Please run WinBoard with the /debug option and include the output from the resulting WinBoard.debug file in your message.</P>
-
-<P><font color="#008000">The WinBoard 4.3.xx line is being developed by H.G. Muller independently of the GNU Savannah xboard project. Bug reports on this version, and suggestions for improvements and additions, are best posted in the WinBoard forum, development section</font> <font color="#3333ff">(<u>www.open-aurec.com/wbforum/</u>)</font><font color="#008000">.</font></P>
-
-<P><font color="#3333ff">Michel van den Bergh provided the code for reading Polyglot opening books.</a></P>
-
-<P><font color="#3333ff">Arun Persaud worked with H.G. Muller to combine all the features of the never-released WinBoard 4.2.8 of the Savannah project (mainly by Daniel Mehrmann), and the never-released 4.3.16 into a unified WinBoard 4.4, which is now available both from the Savannah web site and the WinBoard forum.</a></P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/html/24.htm b/winboard/help/html/24.htm
deleted file mode 100644
index f0dbfcc..0000000
--- a/winboard/help/html/24.htm
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
-<TITLE>Copyright</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
-
-
-
-<P><B><A NAME="copyright"></A>COPYRIGHT</B></P>
-
-<P>Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. <BR>
-Enhancements Copyright 1992-2009 Free Software Foundation, Inc.</P>
-
-<P>The following terms apply to Digital Equipment Corporation's copyright interest in WinBoard:</P>
-
-<P>All Rights Reserved</P>
-
-<P>Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.</P>
-
-<P>DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</P>
-
-<P>The following terms apply to the enhanced version of WinBoard distributed by the Free Software Foundation:</P>
-
-<P>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.</P>
-
-<P>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.</P>
-
-<P>You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</P>
-
-</BODY>
-</HTML>
diff --git a/winboard/help/winboard b/winboard/help/winboard
deleted file mode 100644
index 5328dc9..0000000
--- a/winboard/help/winboard
+++ /dev/null
@@ -1,38 +0,0 @@
-[OPTIONS]
-Compatibility=1.1 or later
-Compiled file=..\..\..\xboard-4.4.0.chm
-Contents file=Table of Contents.hhc
-Default topic=html\winb3mnn.htm
-Display compile progress=No
-Index file=winboard.hhk
-Language=0x413 Nederlands (Nederland)
-
-
-[FILES]
-html\winb3mnn.htm
-html\winb31o3.htm
-html\winb54vp.htm
-html\winb5lkl.htm
-html\winb9gqd.htm
-html\winb0nlh.htm
-html\winb85it.htm
-html\winb3j3p.htm
-html\winb4h6d.htm
-html\winb87ar.htm
-html\winb5qpf.htm
-html\winb75yr.htm
-html\winb3i0k.htm
-html\winb701f.htm
-html\winb1v8z.htm
-html\winb8ws3.htm
-html\winb55yr.htm
-html\winb8n03.htm
-html\winb85yr.htm
-html\winb2tv7.htm
-html\winb381f.htm
-html\winb1hir.htm
-html\winb3wmr.htm
-html\winb1ks4.htm
-
-[INFOTYPES]
-
diff --git a/winboard/help/winboard.chm b/winboard/help/winboard.chm
deleted file mode 100644
index bafdeee..0000000
Binary files a/winboard/help/winboard.chm and /dev/null differ
diff --git a/winboard/help/winboard.hhk b/winboard/help/winboard.hhk
deleted file mode 100644
index d4fd092..0000000
--- a/winboard/help/winboard.hhk
+++ /dev/null
@@ -1,2370 +0,0 @@
-<HTML>
-<!-- Sitemap 1.0 -->
-<OBJECT type="text/site properties">
-</OBJECT>
-<UL>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Abort">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#abort">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="About WinBoard">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm#aboutwinboard">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Accept">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#accept">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Action Menu">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjourn">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#adjourn">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudicate Draw">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#adjudicatedraw">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudicate Draw Moves">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#adjudicatedrawmoves">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudicate Loss Threshold">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#adjudicatelossthreshold">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudicate To Black">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#adjudicatetoblack">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudicate To White">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#adjudicatetowhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudicate Trivial Draws">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#adjudicatetrivialdraws">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="adjudicateDrawMoves">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm#checkmates">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="adjudicateLossThreshold">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudication Options">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Adjudications">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#adjudications">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="alarm">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#alarm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="All White">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#allwhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="allWhite">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#renderpieceswithfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Always On Top">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#alwaysontop">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Always Queen">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#alwaysqueen">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="alwaysOnTop">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#top">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="alwaysPromoteToQueen">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#queen">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Analysis Mode">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#analysismode">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Analyze File">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#analyzefile">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="animate">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#animate">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Animate Dragging">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#animatedragging">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Animate Moving">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#animatemoving">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="animateDragging">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#drag">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="animateMoving">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#animate">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="at sign">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#ini">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Authors">
-		<param name="Name" value="Authors">
-		<param name="Local" value="html/23.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Auto Comment">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#autocommentcmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Auto Flag">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#autoflagcmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Auto Flip View">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#autoflipview">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Auto Observe">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#autobscmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Auto Raise Board">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#autoraiseboard">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autobs">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#autobs">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoCallFlag">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#autoflag">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autocomm">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#autocomm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoComment">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#autocomm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoDisplayComment">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#autodisplaycomment">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoDisplayTags">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#autodisplaytags">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoflag">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#autoflag">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoflip">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#autoflip">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoFlipView">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#autoflip">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoKibitz">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#autokibitz">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoLogo">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#autologo">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoObserve">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#autobs">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoraise">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#autoraise">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoRaiseBoardOption">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#autoraise">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autosave">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#autosave">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="autoSaveGames">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#autosave">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Back to Start">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#backtostart">
-		<param name="Name" value="Buttons">
-		<param name="Local" value="html/10.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Backward">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#backward">
-		<param name="Name" value="Buttons">
-		<param name="Local" value="html/10.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="blackPieceColor">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Blindfold">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#blindfoldcmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="blindfold (option)">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#opt_blindfold">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Board Colors">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#boardcolors">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Board Options">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#boardoptions">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Board Size">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#boardsizecmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="boardHeight">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#boardheight">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="boardSize">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#size">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="boardWidth">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#boardwidth">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Book">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm#book">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="bpc">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Buttons">
-		<param name="Name" value="Buttons">
-		<param name="Local" value="html/10.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Call Flag">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#callflag">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="checkMates">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm#checkmates">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Chess Engine Options">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="chessProgram">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#cp">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="clock">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#clock">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="clockFont">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#clockfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="clockMode">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#clock">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorBackground">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorbackground">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorChallenge">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorChannel">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorChannel1">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorize">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorizeMessages">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorKibitz">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorNormal">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorRequest">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorSeek">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorShout">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorSShout">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="colorTell">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#colorshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Command Line Options">
-		<param name="Name" value="Command Line Options">
-		<param name="Local" value="html/11.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="commentFont">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#clockfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Communications">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#communications">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="comPortSettings">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#comportsettings">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Contents">
-		<param name="Name" value="Contents">
-		<param name="Local" value="html/01.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="coordFont">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#clockfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="coords">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#coords">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Copy">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#copy">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Copy and Paste">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#copyandpaste">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Copy Game To Clipboard">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#copygametoclipboard">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Copy Position Clipboard">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#copypositiontoclipboard">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Copyright">
-		<param name="Name" value="Copyright">
-		<param name="Local" value="html/24.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="cp">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#cp">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="darkBackTextureFile">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#darkbacktexturefile">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="darkBackTextureMode">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#darkbacktexturemode">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="darkSquareColor">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="debug">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#debug">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="debugFile">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#debugfile">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="debugMode">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#debug">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Decline">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#decline">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="defaultCacheSizeEGTB">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#defaultcachesizeegtb">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="defaultFrcPosition">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#defaultfrcposition">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="defaultHashSize">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#defaulthashsize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="defaultPathEGTB">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#defaultpathegtb">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="delayAfterQuit">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#delayafterquit">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="delayBeforeQuit">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#delaybeforequit">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Description">
-		<param name="Name" value="Contents">
-		<param name="Local" value="html/01.htm#description">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Detect Mates">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#detectmates">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="drag">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#drag">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Draw">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#draw">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Draw If Insufficient Material">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#drawifinsufficientmaterial">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="dsc">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="edit">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#edit">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Edit Comment">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#editcomment">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Edit Game">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#editgame">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Edit Position">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#editposition">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Edit Tags">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#edittags">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="EGTB Cache Size">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#hashsize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="EGTB Path">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#hashsize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Engine Settings">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#engine settings">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="engineDebugOutput">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#enginedebugoutput">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="engineOutputUp">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#windowup">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Enter Username">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#enterusername">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="evalGraphUp">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#windowup">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="evalHistoColorBlack">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#evalhistocolorblack">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="evalHistoColorWhite">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#evalhistocolorwhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Exit">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#exit">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Extended PGN Info">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#extendedpgninfo">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Extra Info In Move History">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#extrainfoinmovehistory">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fb">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fb">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fcp">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fd">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fh">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="File Menu">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Files">
-		<param name="Name" value="Files">
-		<param name="Local" value="html/19.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Finger">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#finger">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Firewalls">
-		<param name="Name" value="Firewalls">
-		<param name="Local" value="html/21.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstChessProgram">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstChessProgramNames">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#firstchessprogramnames">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstDirectory">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstHasOwnBookUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#fnoownbookuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstHost">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstIsUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#fuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstLogo">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#firstlogo">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstNeedsNoncompliantFEN">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstneedsnoncompliantfen">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstNPS">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstnps">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstOptions">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstoptions">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstPlaysBlack">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fb">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstProtocolVersion">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstprotocolversion">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstScoreAbs">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstscoreabs">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstTimeOdds">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firsttimeodds">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="firstXBook">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#fnoownbookuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="flip">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#flip">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Flip Black">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#flipblack">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Flip View">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#flipview">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="flipBlack">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#monomode">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="flipView">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#flip">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fNoOwnBookUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#fnoownbookuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fontPieceBackColorBlack">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#fontpiecebackcolorwhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fontPieceBackColorWhite">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#fontpiecebackcolorwhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fontPieceForeColorBlack">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#fontpiecebackcolorwhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fontPieceForeColorWhite">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#fontpiecebackcolorwhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fontPieceSize">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#fontpiecesize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fontPieceToCharTable">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#fontpiecetochartable">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Fonts">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#fonts">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Forward">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#forward">
-		<param name="Name" value="Buttons">
-		<param name="Local" value="html/10.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Forward to End">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#forwardtoend">
-		<param name="Name" value="Buttons">
-		<param name="Local" value="html/10.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="fUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#fuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="gameListTags">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#gamelisttags">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Games">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#games">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="gateway">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#gateway">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="General Options">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#generaloptions">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Get Move List">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#getmovelistcmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="getMoveList">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#moves">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Getting Started">
-		<param name="Name" value="Contents">
-		<param name="Local" value="html/01.htm#gettingstarted">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="grayscale">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#grayscale">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Hash Size">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#hashsize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Help Contents">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm#helpcontents">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Help Menu">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Hide Thinking From Human">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#hidethinkingfromhuman">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#pondernextmove">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="hideThinkingFromHuman">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#nogui">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="highdrag">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#highdrag">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="highlight">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#highlight">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Highlight Dragging">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#highlightdragging">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Highlight Last Move">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#highlightlastmove">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Highlight Move With Arrow">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#highlightmovewitharrow">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="highlightArrowColor">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#highlightarrowcolor">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="highlightDragging">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#highdrag">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="highlightLastMove">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#highlight">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="highlightMovesWithArrow">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#highlightmoveswitharrow">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="highlightSquareColor">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#hsc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Hint">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm#hint">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="holdingsSize">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#holdingssize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="How to Use Help">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm#helphelp">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="hsc">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#hsc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icon">
-		<param name="Name" value="Contents">
-		<param name="Local" value="html/01.htm#icon">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ics">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#ics">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ICS Alarm">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#icsalarm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ICS Client">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#icsclient">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ICS Interaction Colors">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#icsinteractioncolors">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ICS Interaction Context Menu">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ICS Logon">
-		<param name="Name" value="Files">
-		<param name="Local" value="html/19.htm#settings">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ICS Options">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#icsoptions">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icsAlarm">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#alarm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icsAlarmTime">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icsalarmtime">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icscom">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icscom">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icsFont">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#clockfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icshost">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icshost">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icslogon">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icslogon">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icsMenu">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#icsmenu">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icsNames">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#icsnames">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="icsport">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icsport">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="inc">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#inc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ini">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#ini">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Initialization files">
-		<param name="Name" value="Files">
-		<param name="Local" value="html/19.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="initialMode">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#mode">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="initString">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#initstring">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#secondinitstring">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Installing Chess Engines">
-		<param name="Name" value="Installing Chess Engines">
-		<param name="Local" value="html/20.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Internet Chess Server Options">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="internetChessServerComPort">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icscom">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="internetChessServerHost">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icshost">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="internetChessServerLogonScript">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icslogon">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="internetChessServerMode">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#ics">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="internetChessServerPort">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#icsport">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="legal">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#legal">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="lgf">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lgf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="lgi">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lgf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="lightSquareColor">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Limitations">
-		<param name="Name" value="Limitations">
-		<param name="Local" value="html/22.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="liteBackTextureFile">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#litebacktexturefile">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="liteBackTextureMode">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#litebacktexturemode">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Load and Save Options">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Load Game">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#loadgame">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#loadgameoptns">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Load Next Game">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#loadnextgame">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Load Next Position">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#loadnextposition">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Load Position">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#loadposition">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Load Previous Game">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#loadpreviousgame">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Load Previous Position">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#loadpreviousposition">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="loadGameFile">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lgf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="loadGameIndex">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lgf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="loadPositionFile">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lpf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="loadPositionIndex">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lpf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Local Line Editing">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#locallineediting">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="localLineEditing">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#edit">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="lpf">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lpf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="lpi">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#lpf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="lsc">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Machine Black">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#machineblack">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Machine Both">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#machine both">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Machine White">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#machinewhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Match">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#match">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="matchGames">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#mg">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="matchMode">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#mm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="matchPause">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#matchpause">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="materialDraws">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm#materialdraws">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Menus">
-		<param name="Name" value="Menus">
-		<param name="Local" value="html/02.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Message">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#message">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="messageFont">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#clockfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="mg">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#mg">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="mm">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#mm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="mode">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#mode">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Mode Menu">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="mono">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#mono">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="monoMode">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#mono">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="move">
-		<param name="Name" value="Contents">
-		<param name="Local" value="html/01.htm#move">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Move Now">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#movenow">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Move Sound">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#movesound">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="moveHistoryUp">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#windowup">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="moves">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#moves">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="movesPerSession">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#mps">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="mps">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#mps">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="N-Fold Repetition Rule">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#n-foldrepetitionrule">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="N-Move Rule">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#n-moverule">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="nameOfDebugFile">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#debugfile">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ncp">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#ncp">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="New Game">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#newgame">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="New Shuffle Game">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#newshufflegame">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="New Variant">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#newvariant">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="niceEngines">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#niceengines">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="noChessProgram">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#ncp">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="noGUI">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#nogui">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Number of CPUs">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#hashsize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Observe">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#observe">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="oldsave">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#oldsave">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="oldSaveStyle">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#oldsave">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Opening Book">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#hashsize">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Options">
-		<param name="Name" value="Command Line Options">
-		<param name="Local" value="html/11.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Options Menu">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Other Options">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="overideLineGap">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#overidelinegap">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Paste">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#paste">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Paste Game From Clipboard">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#pastegamefromclipboard">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Paste Position Clipboard">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#pastepositionfromclipboard">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Pause">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#pause">
-		<param name="Name" value="Buttons">
-		<param name="Local" value="html/10.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="periodic">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#periodic">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Periodic Updates">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#periodicupdatescmd">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#pondernextmove">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="periodicUpdates">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#periodic">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="pgnEventHeader">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#pgneventheader">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="pgnExtendedInfo">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#pgnextendedinfo">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="phc">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#hsc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="pieceToSquareTable">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#piecetosquaretable">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Play">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#play">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Players">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#players">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Polyglot Directory">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#polyglotdirectory">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="PolyglotBook">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#polyglotbook">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="PolyglotDir">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#polyglotdir">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ponder">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#ponder">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Ponder Next Move">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#pondernextmovecmd">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#pondernextmove">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ponderNextMove">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#ponder">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="popup">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#popup">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#popupmoveerrorsopt">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Popup Exit Message">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#popupexitmessagecmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Popup Move Errors">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#popupmoveerrorscmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="popupMoveErrors">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#popup">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#popupmoveerrorsopt">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="pre">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#pre">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="preBlack">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#preblack">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Premove">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#premovecmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="premove (option)">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#pre">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="premoveBlack">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#preblack">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="premoveBlackText">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#premoveblacktext">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="premoveHighlightColor">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#hsc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="premoveWhite">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#prewhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="premoveWhiteText">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#premovewhitetext">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="preWhite">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#prewhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="queen">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#queen">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="quiet">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#quiet">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Quiet Play">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#quietplaycmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="quietPlay">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#quiet">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Reload Same Game">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#reloadsamegame">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Reload Same Position">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#reloadsameposition">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Rematch">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#rematch">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="remoteShell">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#rsh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="remoteUser">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#ruser">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="renderPiecesWithFont">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#renderpieceswithfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="repeatsToDraw">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm#repeatstodraw">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Resign">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#resign">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Retract Move">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#retractmove">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="reuse">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#reuse">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="reuse2">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#reuse">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="reuseFirst">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#reuse">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="reuseSecond">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#reuse">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Revert">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#revert">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="rsh">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#rsh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ruleMoves">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm#rulemoves">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="ruser">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#ruser">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Save Diagram">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#save diagram">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Save Game">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#savegame">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#savegameoptns">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Save Position">
-		<param name="Name" value="File Menu">
-		<param name="Local" value="html/03.htm#saveposition">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Save Settings Now">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#savesettings">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Save Settings on Exit">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#savesettingsonexit">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="saveGameFile">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#sgf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="saveOutOfBookInfo">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#saveoutofbookinfo">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="savePositionFile">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#spf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="scp">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="sd">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#sd">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Search for Help on">
-		<param name="Name" value="Help Menu">
-		<param name="Local" value="html/08.htm#searchhelp">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="searchDepth">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#sd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="searchTime">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#st">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondChessProgram">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondChessProgramNames">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#secondchessprogramnames">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondDirectory">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondHasOwnBookUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#snoownbookuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondHost">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondInitString">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#initstring">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#secondinitstring">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondIsUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#suci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondLogo">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#secondlogo">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondNeedsNoncompliantFEN">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstneedsnoncompliantfen">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondNPS">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#secondnps">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondOptions">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstoptions">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondProtocolVersion">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstprotocolversion">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondScoreAbs">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#firstscoreabs">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondTimeOdds">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#secondtimeodds">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="secondXBook">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#snoownbookuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Settings">
-		<param name="Name" value="Files">
-		<param name="Local" value="html/19.htm#settings">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="settingsFile">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#ini">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="sgf">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#sgf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="sh">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#fh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Show Button Bar">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#showbuttonbarcmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Show Coords">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#showcoordscmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Show Engine Output">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#show engine output">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Show Evaluation Graph">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#show evaluation graph">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Show Game List">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#showgamelist">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Show Move History">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#show move history">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Show Thinking">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#showthinkingcmd">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#pondernextmove">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="showCoords">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#coords">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="showThinking">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#thinking">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="size">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#size">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="sNoOwnBookUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#snoownbookuci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Sought">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#sought">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundBell">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundChallenge">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundChannel">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundChannel1">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundIcsAlarm">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundicsalarm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundIcsDraw">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundicswin">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundIcsLoss">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundicswin">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundIcsUnfinished">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundicswin">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundIcsWin">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundicswin">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundKibitz">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundMove">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundRequest">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Sounds">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#sounds">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#communications">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundShout">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundSShout">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="soundTell">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#soundshout">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="spf">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#spf">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="st">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#st">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Step Menu">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="stickyWindows">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#stickywindows">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Stop Examining">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#stopexamining">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Stop Observing">
-		<param name="Name" value="Action Menu">
-		<param name="Local" value="html/05.htm#stopobserving">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="sUCI">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#suci">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Swap Clocks">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#swap clocks">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="tagsFont">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#clockfont">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="tc">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#tc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="td">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#td">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Tell">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#tell">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="telnet">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#telnet">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="telnetProgram">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#telnetprogram">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Test Legality">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#testlegalitycmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="testClaims">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm#testclaims">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="testLegality">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#legal">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="thinking">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#thinking">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Time Control">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#timecontrolcmd">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="timeControl">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#tc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="timeDelay">
-		<param name="Name" value="Load and Save Options">
-		<param name="Local" value="html/15.htm#td">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="timeIncrement">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#inc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="timeOddsMode">
-		<param name="Name" value="Chess Engine Options">
-		<param name="Local" value="html/12.htm#timeoddsmode">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="timeseal">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#via">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="timestamp">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#via">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="top">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#top">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Training">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#training">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="trivialDraws">
-		<param name="Name" value="Adjudication Options">
-		<param name="Local" value="html/17.htm#trivialdraws">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Truncate Game">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#truncategame">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Two Machines">
-		<param name="Name" value="Mode Menu">
-		<param name="Local" value="html/04.htm#twomachines">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Type In Move">
-		<param name="Name" value="Step Menu">
-		<param name="Local" value="html/06.htm#typeinmove">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="UCI Engine Support">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="usePolyglotBook">
-		<param name="Name" value="UCI Engine Support">
-		<param name="Local" value="html/13.htm#usepolyglotbook">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="User Interface Options">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="userName">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#username">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="useTelnet">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#telnet">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="variant">
-		<param name="Name" value="Other Options">
-		<param name="Local" value="html/18.htm#variant">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Vars">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#vars">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Verify Claims">
-		<param name="Name" value="Options Menu">
-		<param name="Local" value="html/07.htm#verifyclaims">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="via">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#via">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="whitePieceColor">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="Who">
-		<param name="Name" value="ICS Interaction Context Menu">
-		<param name="Local" value="html/09.htm#who">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="wpc">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#wpc">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xalarm">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#alarm">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xpre">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#pre">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xpreBlack">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#preblack">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xpreWhite">
-		<param name="Name" value="Internet Chess Server Options">
-		<param name="Local" value="html/14.htm#prewhite">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xy coordinates of board">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#xy">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of Analysis window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#xywh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of Comment window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#xywh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of Engine Output window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#windowup">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of Evaluation Graph window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#windowup">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of Game List window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#xywh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of ICS Interaction window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#xywh">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of Move History window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#windowup">
-		</OBJECT>
-	<LI> <OBJECT type="text/sitemap">
-		<param name="Keyword" value="xywh coordinates of Tags window">
-		<param name="Name" value="User Interface Options">
-		<param name="Local" value="html/16.htm#xywh">
-		</OBJECT>
-</UL></HTML>
diff --git a/winboard/help/winboard.hhp b/winboard/help/winboard.hhp
deleted file mode 100644
index c4a22d3..0000000
--- a/winboard/help/winboard.hhp
+++ /dev/null
@@ -1,29 +0,0 @@
-[OPTIONS]
-Contents file=C:\Chess\WinBoard\help\contents.hhc
-Index file=C:\Chess\WinBoard\help\winboard.hhk
-
-[FILES]
-html\01.htm
-html\02.htm
-html\03.htm
-html\04.htm
-html\05.htm
-html\06.htm
-html\07.htm
-html\08.htm
-html\09.htm
-html\10.htm
-html\11.htm
-html\12.htm
-html\13.htm
-html\14.htm
-html\15.htm
-html\16.htm
-html\17.htm
-html\18.htm
-html\19.htm
-html\20.htm
-html\21.htm
-html\22.htm
-html\23.htm
-html\24.htm
diff --git a/winboard/jaws.c b/winboard/jaws.c
deleted file mode 100644
index 1891f07..0000000
--- a/winboard/jaws.c
+++ /dev/null
@@ -1,1358 +0,0 @@
-/*
- * JAWS.c -- Code for Windows front end to XBoard to use it with JAWS
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts.
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
- *
- * XBoard borrows its colors and the bitmaps.xchess bitmap set from XChess,
- * which was written and is copyrighted by Wayne Christopher.
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-// This file collects all patches for the JAWS version, so they can all be included in winboard.c
-// in one big swoop. At the bottom of this file you can read instructions for how to patch
-// WinBoard to work with JAWS with the aid of this file. Note that the code in this file
-// is for WinBoard 4.3 and later; for older WB versions you would have to throw out the
-// piece names for all pieces from Guard to Unicorn, #define ONE as '1', AAA as 'a',
-// BOARD_LEFT as 0, BOARD_RGHT and BOARD_HEIGHT as 8, and set holdingssizes to 0.
-// You will need to build with jaws.rc in stead of winboard.rc.
-
-// from resource.h
-
-#define IDM_PossibleAttackMove          1800
-#define IDM_PossibleAttacked            1801
-#define IDM_SayMachineMove              1802
-#define IDM_ReadRow                     1803
-#define IDM_ReadColumn                  1804
-#define IDM_SayCurrentPos               1805
-#define IDM_SayAllBoard                 1806
-#define IDM_SayUpperDiagnols            1807
-#define IDM_SayLowerDiagnols            1808
-#define IDM_SayClockTime                1810
-#define IDM_SayWhosTurn                 1811
-#define IDM_SayKnightMoves              1812
-#define ID_SHITTY_HI                    1813
-#define IDM_SayWhitePieces              1816
-#define IDM_SayBlackPieces              1817
-
-
-// from common.h, but 'extern' added to it, so the actual declaraton can remain in backend.c
-
-extern long whiteTimeRemaining, blackTimeRemaining, timeControl, timeIncrement;
-
-#if 0
-// from moves.h, but no longer needed, as the new routines are all moved to winboard.c
-
-extern char* PieceToName P((ChessSquare p, int i));
-extern char* SquareToChar P((int Xpos)); 
-extern char* SquareToNum P((int Ypos));
-extern int CoordToNum P((char c));
-
-#endif
-
-// from moves.c, added WinBoard_F piece types and ranks / files
-
-char *squareToChar[] = { "ay", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l" };
-
-char *squareToNum[] = {"naught", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
-
-char *ordinals[] = {"zeroth", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "nineth"};
-
-char *pieceToName[] = {
-		"White Pawn", "White Knight", "White Bishop", "White Rook", "White Queen", 
-		"White Guard", "White Elephant", "White Arch Bishop", "White Chancellor",
-		"White General", "White Man", "White Cannon", "White Night Rider",
-		"White Crowned Bishop", "White Crowned Rook", "White Grass Hopper", "White Veteran",
-		"White Falcon", "White Amazon", "White Snake", "White Unicorn",
-		"White King",
-		"Black Pawn", "Black Knight", "Black Bishop", "Black Rook", "Black Queen",
-		"Black Guard", "Black Elephant", "Black Arch Bishop", "Black Chancellor",
-		"Black General", "Black Man", "Black Cannon", "Black Night Rider",
-		"Black Crowned Bishop", "Black Crowned Rook", "Black Grass Hopper", "Black Veteran",
-		"Black Falcon", "Black Amazon", "Black Snake", "Black Unicorn",
-		"Black King",
-		"Empty"
-	};
-
-int CoordToNum(c)
-		char c;
-{
-	if(isdigit(c)) return c - ONE;
-	if(c >= 'a') return c - AAA;
-	return 0;
-}
-
-char* PieceToName(p, i)
-	ChessSquare p;
-	int i;
-{
-	if(i) return pieceToName[(int) p];
-		return pieceToName[(int) p]+6;
-}
-
-char* SquareToChar(x)
-			int x;
-{
-		return squareToChar[x - BOARD_LEFT];
-}
-
-char* SquareToNum(y)
-			int y;
-{
-		return squareToNum[y + (gameInfo.boardHeight < 10)];
-}
-
-
-// from winboard.c: all new routines
-#define JFWAPI __declspec(dllimport)
-JFWAPI BOOL WINAPI JFWSayString (LPCTSTR lpszStrinToSpeak, BOOL bInterrupt);
-
-typedef JFWAPI BOOL (WINAPI *PSAYSTRING)(LPCTSTR lpszStrinToSpeak, BOOL bInterrupt);
-
-PSAYSTRING RealSayString;
-
-VOID SayString(char *mess, BOOL flag)
-{ // for debug file
-	char buf[MSG_SIZ], *p;
-	if(appData.debugMode) fprintf(debugFP, "SAY '%s'\n", mess);
-	strcpy(buf, mess);
-	if(p = StrCaseStr(buf, "Xboard adjudication:")) {
-		int i;
-		for(i=19; i>1; i--) p[i] = p[i-1];
-		p[1] = ' ';
-	}
-	RealSayString(buf, flag);
-}
-
-//static int fromX = 0, fromY = 0;
-static int oldFromX, oldFromY;
-static int timeflag;
-static int suppressClocks = 0;
-static int suppressOneKey = 0;
-static HANDLE hAccelJAWS;
-
-typedef struct { char *name; int code; } MenuItemDesc;
-
-MenuItemDesc menuItemJAWS[] = {
-{"Say Clock &Time\tAlt+T",      IDM_SayClockTime },
-{"-", 0 },
-{"Say Last &Move\tAlt+M",       IDM_SayMachineMove },
-{"Say W&ho's Turn\tAlt+X",      IDM_SayWhosTurn },
-{"-", 0 },
-{"Say Complete &Position\tAlt+P",IDM_SayAllBoard },
-{"Say &White Pieces\tAlt+W",    IDM_SayWhitePieces },
-{"Say &Black Pieces\tAlt+B",    IDM_SayBlackPieces },
-{"Say Board &Rank\tAlt+R",      IDM_ReadRow },
-{"Say Board &File\tAlt+F",      IDM_ReadColumn },
-{"-", 0 },
-{"Say &Upper Diagonals\tAlt+U",  IDM_SayUpperDiagnols },
-{"Say &Lower Diagonals\tAlt+L",  IDM_SayLowerDiagnols },
-{"Say K&night Moves\tAlt+N",    IDM_SayKnightMoves },
-{"Say Current &Square\tAlt+S",  IDM_SayCurrentPos },
-{"Say &Attacks\tAlt+A",         IDM_PossibleAttackMove },
-{"Say Attacke&d\tAlt+D",        IDM_PossibleAttacked },
-{NULL, 0}
-};
-
-ACCEL acceleratorsJAWS[] = {
-{FVIRTKEY|FALT, 'T', IDM_SayClockTime },
-{FVIRTKEY|FALT, 'M', IDM_SayMachineMove },
-{FVIRTKEY|FALT, 'X', IDM_SayWhosTurn },
-{FVIRTKEY|FALT, 'P', IDM_SayAllBoard },
-{FVIRTKEY|FALT, 'W', IDM_SayWhitePieces },
-{FVIRTKEY|FALT, 'B', IDM_SayBlackPieces },
-{FVIRTKEY|FALT, 'R', IDM_ReadRow },
-{FVIRTKEY|FALT, 'F', IDM_ReadColumn },
-{FVIRTKEY|FALT, 'U', IDM_SayUpperDiagnols },
-{FVIRTKEY|FALT, 'L', IDM_SayLowerDiagnols },
-{FVIRTKEY|FALT, 'N', IDM_SayKnightMoves },
-{FVIRTKEY|FALT, 'S', IDM_SayCurrentPos },
-{FVIRTKEY|FALT, 'A', IDM_PossibleAttackMove },
-{FVIRTKEY|FALT, 'D', IDM_PossibleAttacked }
-};
-
-void
-AdaptMenu()
-{
-	HMENU menuMain, menuJAWS;
-	MENUBARINFO helpMenuInfo;
-	int e, i;
-
-	helpMenuInfo.cbSize = sizeof(helpMenuInfo);
-	menuMain = GetMenu(hwndMain);
-	if(appData.debugMode) fprintf(debugFP, "hwndMain: %8x %8x\n", hwndMain, menuMain);
-	menuJAWS = CreatePopupMenu();
-	
-	for(i=0; menuItemJAWS[i].name; i++) {
-	    if(menuItemJAWS[i].name[0] == '-') 
-		 AppendMenu(menuJAWS, MF_SEPARATOR, (UINT_PTR) 0, NULL);
-	    else AppendMenu(menuJAWS, MF_ENABLED|MF_STRING, 
-			(UINT_PTR) menuItemJAWS[i].code, (LPCTSTR) menuItemJAWS[i].name);
-	}
-	InsertMenu(menuMain, 5, MF_BYPOSITION|MF_POPUP|MF_ENABLED|MF_STRING, 
-		(UINT_PTR) menuJAWS, "&JAWS");
-	oldMenuItemState[6] = oldMenuItemState[5];
-	DrawMenuBar(hwndMain);
-}
-
-BOOL
-InitJAWS()
-{	// to be called at beginning of WinMain, after InitApplication and InitInstance
-	HINSTANCE hApi = LoadLibrary("jfwapi32.dll");
-	if(!hApi) {
-		DisplayInformation("Missing jfwapi32.dll");	   
-		return (FALSE);
-	}
-
-	RealSayString = (PSAYSTRING)GetProcAddress(hApi, "JFWSayString");
-	if(!RealSayString) {
-		DisplayInformation("SayString returned a null pointer");
-		return (FALSE);
-	}
-
-	{
-		// [HGM] kludge to reduce need for modification of winboard.c: make tinyLayout menu identical
-		// to standard layout, so that code for switching between them does not have to be deleted
-		int i;
-
-		AdaptMenu();
-		menuBarText[0][5] = "&JAWS";
-		for(i=0; i<7; i++) menuBarText[1][i] = menuBarText[0][i];
-	}
-
-	hAccelJAWS = CreateAcceleratorTable(acceleratorsJAWS, 14);
-
-	/* initialize cursor position */
-	fromX = fromY = 0;
-	SetHighlights(fromX, fromY, -1, -1);
-	DrawPosition(FALSE, NULL);
-	oldFromX = oldFromY = -1;
-
-	if(hwndConsole) SetFocus(hwndConsole);
-	return TRUE;
-}
-
-VOID
-KeyboardEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-	ChessSquare currentPiece;
-	char *piece, *xchar, *ynum ;
-	int n;
-
-	if(fromX == -1 || fromY == -1) {
-		fromX = BOARD_LEFT; fromY = 0;
-        }
-	switch(wParam) {
-	case VK_LEFT:
-		if(fromX == BOARD_RGHT+1) fromX -= 2; else
-		if(fromX == BOARD_LEFT) { if(fromY >= BOARD_HEIGHT - gameInfo.holdingsSize) fromX -= 2; } else
-		if(fromX > BOARD_LEFT) fromX--;
-		break;
-	case VK_RIGHT:
-		if(fromX == BOARD_LEFT-2) fromX += 2; else
-		if(fromX == BOARD_RGHT-1) { if(fromY < gameInfo.holdingsSize) fromX += 2; } else
-		if(fromX < BOARD_RGHT-1) fromX++;
-		break;
-	case VK_UP:
-		if(fromX == BOARD_RGHT+1) { if(fromY < gameInfo.holdingsSize - 1) fromY++; } else
-		if(fromY < BOARD_HEIGHT-1) fromY++;
-		break;
-	case VK_DOWN:
-		if(fromX == BOARD_LEFT-2) { if(fromY > BOARD_HEIGHT - gameInfo.holdingsSize) fromY--; } else
-		if(fromY > 0) fromY--;
-		break;
-	}
-	SetHighlights(fromX, fromY, -1, -1);
-	DrawPosition(FALSE, NULL);
-	currentPiece = boards[currentMove][fromY][fromX];
-	piece = PieceToName(currentPiece,1);
-	if(currentPiece != EmptySquare) MessageBeep(currentPiece < (int)BlackPawn ? MB_OK : MB_ICONEXCLAMATION);
-	if(fromX == BOARD_LEFT - 2) {
-		SayString("black holdings", FALSE);
-		if(currentPiece != EmptySquare) {
-			char buf[MSG_SIZ];
-			n = boards[currentMove][fromY][1];
-			sprintf(buf, "%d %s%s", n, piece+6, n == 1 ? "" : "s");
-			SayString(buf, TRUE);
-		}
-	} else
-	if(fromX == BOARD_RGHT + 1) {
-		SayString("white holdings", FALSE);
-		if(currentPiece != EmptySquare) {
-			char buf[MSG_SIZ];
-			n = boards[currentMove][fromY][BOARD_WIDTH-2];
-			sprintf(buf, "%d %s%s", n, piece+6, n == 1 ? "" : "s");
-			SayString(buf, TRUE);
-		}
-	} else
-	if(fromX >= BOARD_LEFT && fromX < BOARD_RGHT) {
-		char buf[MSG_SIZ];
-		xchar = SquareToChar(fromX);
-		ynum = SquareToNum(fromY);
-		if(currentPiece != EmptySquare) {
-//			SayString(piece[0] == 'W' ? "white" : "black", TRUE);
-			sprintf(buf, "%s %s %s", piece, xchar, ynum);
-		} else sprintf(buf, "%s %s", xchar, ynum);
-		SayString(buf, TRUE);
-	}
-	return;
-}
-
-extern char castlingRights[MAX_MOVES][BOARD_SIZE];
-int PosFlags(int nr);
-
-typedef struct {
-    int rf, ff, rt, ft;
-    int onlyCaptures;
-    int count;
-} ReadClosure;
-
-extern void ReadCallback P((Board board, int flags, ChessMove kind,
-				int rf, int ff, int rt, int ft,
-				VOIDSTAR closure));
-
-void ReadCallback(board, flags, kind, rf, ff, rt, ft, closure)
-     Board board;
-     int flags;
-     ChessMove kind;
-     int rf, ff, rt, ft;
-     VOIDSTAR closure;
-{
-    register ReadClosure *cl = (ReadClosure *) closure;
-    ChessSquare possiblepiece;
-    char *piece, *xchar, *ynum ;
-
-//if(appData.debugMode) fprintf(debugFP, "%c%c%c%c\n", ff+AAA, rf+ONE, ft+AAA, rt+ONE);
-    if(cl->ff == ff && cl->rf == rf) {
-	possiblepiece = board[rt][ft];
-	if(possiblepiece != EmptySquare) {
-		piece = PieceToName(possiblepiece,1);
-		xchar = SquareToChar(ft);
-		ynum  = SquareToNum(rt);
-		SayString(xchar , FALSE);
-		SayString(ynum, FALSE);
-		SayString(piece, FALSE);
-		cl->count++;
-	}
-    }
-    if(cl->ft == ft && cl->rt == rt) {
-	possiblepiece = board[rf][ff];
-		piece = PieceToName(possiblepiece,1);
-		xchar = SquareToChar(ff);
-		ynum  = SquareToNum(rf);
-		SayString(xchar , FALSE);
-		SayString(ynum, FALSE);
-		SayString(piece, FALSE);
-		cl->count++;
-    }
-}
-
-VOID
-PossibleAttackMove()
-{
-	ReadClosure cl;
-	ChessSquare piece, victim;
-	int removedSelectedPiece = 0, swapColor;
-
-//if(appData.debugMode) fprintf(debugFP, "PossibleAttackMove %d %d %d %d\n", fromX, fromY, oldFromX, oldFromY);
-	if(fromY < 0 || fromY >= BOARD_HEIGHT) return;
-	if(fromX < BOARD_LEFT || fromX >= BOARD_RGHT) { SayString("holdings",FALSE); return; }
-
-	piece = boards[currentMove][fromY][fromX];
-	if(piece == EmptySquare) { // if square is empty, try to substitute selected piece
-	    if(oldFromX >= 0 && oldFromY >= 0) {
-		piece = boards[currentMove][oldFromY][oldFromX];
-		boards[currentMove][oldFromY][oldFromX] = EmptySquare;
-		removedSelectedPiece = 1;
-		SayString("Your", FALSE);
-		SayString(PieceToName(piece, 0), FALSE);
-		SayString("would have", FALSE);
-	    } else { SayString("You must select a piece first", FALSE); return; }
-	}
-
-	victim = boards[currentMove][fromY][fromX];
-	boards[currentMove][fromY][fromX] = piece; // make sure piece is actally there
-	SayString("possible captures from here are", FALSE);
-
-	swapColor = piece <  (int)BlackPawn && !WhiteOnMove(currentMove) ||
-		    piece >= (int)BlackPawn &&  WhiteOnMove(currentMove);
-	cl.count = 0; cl.rf = fromY; cl.ff = fromX; cl.rt = cl.ft = -1;
-	GenLegal(boards[currentMove], PosFlags(currentMove + swapColor), EP_NONE, 
-						castlingRights[currentMove], ReadCallback, (VOIDSTAR) &cl);
-	if(cl.count == 0) SayString("None", FALSE);
-	boards[currentMove][fromY][fromX] = victim; // repair
-
-	if( removedSelectedPiece ) boards[currentMove][oldFromY][oldFromX] = piece;
-}
-
-
-VOID
-PossibleAttacked()
-{
-	ReadClosure cl;
-	ChessSquare piece = EmptySquare, victim;
-
-	if(fromY < 0 || fromY >= BOARD_HEIGHT) return;
-	if(fromX < BOARD_LEFT || fromX >= BOARD_RGHT) { SayString("holdings",FALSE); return; }
-
-	if(oldFromX >= 0 && oldFromY >= 0) { // if piece is selected, remove it
-		piece = boards[currentMove][oldFromY][oldFromX];
-		boards[currentMove][oldFromY][oldFromX] = EmptySquare;
-	}
-
-	SayString("Pieces that can capture you are", FALSE);
-
-	victim = boards[currentMove][fromY][fromX]; // put dummy piece on target square, to activate Pawn captures
-	boards[currentMove][fromY][fromX] = WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen;
-	cl.count = 0; cl.rt = fromY; cl.ft = fromX; cl.rf = cl.ff = -1;
-	GenLegal(boards[currentMove], PosFlags(currentMove+1), EP_NONE, 
-						castlingRights[currentMove], ReadCallback, (VOIDSTAR) &cl);
-	if(cl.count == 0) SayString("None", FALSE);
-
-	SayString("You are defended by", FALSE);
-
-	boards[currentMove][fromY][fromX] = WhiteOnMove(currentMove) ? BlackQueen : WhiteQueen;
-	cl.count = 0; cl.rt = fromY; cl.ft = fromX; cl.rf = cl.ff = -1;
-	GenLegal(boards[currentMove], PosFlags(currentMove), EP_NONE, 
-						castlingRights[currentMove], ReadCallback, (VOIDSTAR) &cl);
-	if(cl.count == 0) SayString("None", FALSE);
-	boards[currentMove][fromY][fromX] = victim; // put back original occupant
-
-	if(oldFromX >= 0 && oldFromY >= 0) { // put back possibl selected piece
-		boards[currentMove][oldFromY][oldFromX] = piece;
-	}
-}
-
-VOID
-ReadRow()
-{
-	ChessSquare currentpiece; 
-	char *piece, *xchar, *ynum ;
-	int xPos, count=0;
-	ynum = SquareToNum(fromY);
-	
-	if(fromY < 0) return;
-
-	for (xPos=BOARD_LEFT; xPos<BOARD_RGHT; xPos++) {
-		currentpiece = boards[currentMove][fromY][xPos];	
-		if(currentpiece != EmptySquare) {
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(xPos);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-			count++;
-		}
-	}
-	if(count == 0) {
-		SayString("rank", FALSE);
-		SayString(ynum, FALSE);
-		SayString("empty", FALSE);
-	}
-}
-
-VOID
-ReadColumn()
-{
-	ChessSquare currentpiece; 
-	char *piece, *xchar, *ynum ;
-	int yPos, count=0;
-	xchar = SquareToChar(fromX);
-	
-	if(fromX < 0) return;
-
-	for (yPos=0; yPos<BOARD_HEIGHT; yPos++) {
-		currentpiece = boards[currentMove][yPos][fromX];	
-		if(currentpiece != EmptySquare) {
-			piece = PieceToName(currentpiece,1);
-			ynum = SquareToNum(yPos);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-			count++;
-		}
-	}
-	if(count == 0) {
-		SayString(xchar, FALSE);
-		SayString("file empty", FALSE);
-	}
-}
-
-VOID
-SayUpperDiagnols()
-{
-	ChessSquare currentpiece; 
-	char *piece, *xchar, *ynum ;
-	int yPos, xPos;
-	
-	if(fromX < 0 || fromY < 0) return;
-
-	if(fromX < BOARD_RGHT-1 && fromY < BOARD_HEIGHT-1) {
-		SayString("The diagnol squares to your upper right contain", FALSE);
-		yPos = fromY+1;
-		xPos = fromX+1;
-		while(yPos<BOARD_HEIGHT && xPos<BOARD_RGHT) {
-			currentpiece = boards[currentMove][yPos][xPos];	
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(xPos);
-			ynum = SquareToNum(yPos);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-			yPos++;
-			xPos++;
-		}
-	}
-	else SayString("There is no squares to your upper right", FALSE);
-
-	if(fromX > BOARD_LEFT && fromY < BOARD_HEIGHT-1) {
-		SayString("The diagnol squares to your upper left contain", FALSE);
-		yPos = fromY+1;
-		xPos = fromX-1;
-		while(yPos<BOARD_HEIGHT && xPos>=BOARD_LEFT) {
-			currentpiece = boards[currentMove][yPos][xPos];	
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(xPos);
-			ynum = SquareToNum(yPos);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-			yPos++;
-			xPos--;
-		}
-	}
-	else SayString("There is no squares to your upper left", FALSE);
-}
-
-VOID
-SayLowerDiagnols()
-{
-	ChessSquare currentpiece; 
-	char *piece, *xchar, *ynum ;
-	int yPos, xPos;
-	
-	if(fromX < 0 || fromY < 0) return;
-
-	if(fromX < BOARD_RGHT-1 && fromY > 0) {
-		SayString("The diagnol squares to your lower right contain", FALSE);
-		yPos = fromY-1;
-		xPos = fromX+1;
-		while(yPos>=0 && xPos<BOARD_RGHT) {
-			currentpiece = boards[currentMove][yPos][xPos];	
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(xPos);
-			ynum = SquareToNum(yPos);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-			yPos--;
-			xPos++;
-		}
-	}
-	else SayString("There is no squares to your lower right", FALSE);
-
-	if(fromX > BOARD_LEFT && fromY > 0) {
-		SayString("The diagnol squares to your lower left contain", FALSE);
-		yPos = fromY-1;
-		xPos = fromX-1;
-		while(yPos>=0 && xPos>=BOARD_LEFT) {
-			currentpiece = boards[currentMove][yPos][xPos];	
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(xPos);
-			ynum = SquareToNum(yPos);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-			yPos--;
-			xPos--;
-		}
-	}
-	else SayString("There is no squares to your lower left", FALSE);
-}
-
-VOID
-SayKnightMoves()
-{
-	ChessSquare currentpiece, oldpiece; 
-	char *piece, *xchar, *ynum ;
-
-	oldpiece = boards[currentMove][fromY][fromX];
-	if(oldpiece == WhiteKnight || oldpiece == BlackKnight) 
-		SayString("The possible squares a Knight could move to are", FALSE);
-	else
-		SayString("The squares a Knight could possibly attack from are", FALSE);
-
-	if (fromY+2 < BOARD_HEIGHT && fromX-1 >= BOARD_LEFT) {
-		currentpiece = boards[currentMove][fromY+2][fromX-1];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX-1);
-			ynum = SquareToNum(fromY+2);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-
-	if (fromY+2 < BOARD_HEIGHT && fromX+1 < BOARD_RGHT) {
-		currentpiece = boards[currentMove][fromY+2][fromX+1];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX+1);
-			ynum = SquareToNum(fromY+2);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-	
-	if (fromY+1 < BOARD_HEIGHT && fromX+2 < BOARD_RGHT) {
-		currentpiece = boards[currentMove][fromY+1][fromX+2];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX+2);
-			ynum = SquareToNum(fromY+1);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-	
-	if (fromY-1 >= 0 && fromX+2 < BOARD_RGHT) {
-		currentpiece = boards[currentMove][fromY-1][fromX+2];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX+2);
-			ynum = SquareToNum(fromY-1);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-	
-	if (fromY-2 >= 0 && fromX+1 < BOARD_RGHT) {
-		currentpiece = boards[currentMove][fromY-2][fromX+1];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX+1);
-			ynum = SquareToNum(fromY-2);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-	
-	if (fromY-2 >= 0 && fromX-1 >= BOARD_LEFT) {
-		currentpiece = boards[currentMove][fromY-2][fromX-1];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX-1);
-			ynum = SquareToNum(fromY-2);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-	
-	if (fromY-1 >= 0 && fromX-2 >= BOARD_LEFT) {
-		currentpiece = boards[currentMove][fromY-1][fromX-2];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX-2);
-			ynum = SquareToNum(fromY-1);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-	
-	if (fromY+1 < BOARD_HEIGHT && fromX-2 >= BOARD_LEFT) {
-		currentpiece = boards[currentMove][fromY+1][fromX-2];
-		if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))
-			|| ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))
-			|| (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))
-		{
-			piece = PieceToName(currentpiece,1);
-			xchar = SquareToChar(fromX-2);
-			ynum = SquareToNum(fromY+1);
-			SayString(xchar , FALSE);
-			SayString(ynum, FALSE);
-			SayString(piece, FALSE);
-		}
-	}
-}
-
-VOID
-SayPieces(ChessSquare p)
-{
-	ChessSquare currentpiece;  
-	char *piece, *xchar, *ynum ;
-	int yPos, xPos, count = 0;
-	char buf[50];
-
-	if(p == WhitePlay)   SayString("White pieces", FALSE); else
-	if(p == BlackPlay)   SayString("Black pieces", FALSE); else
-	if(p == EmptySquare) SayString("Pieces", FALSE); else {
-		sprintf(buf, "%ss", PieceToName(p,1));
-		SayString(buf, FALSE);
-	}
-	SayString("are located", FALSE);
-	for(yPos=0; yPos<BOARD_HEIGHT; yPos++) {
-		for(xPos=BOARD_LEFT; xPos<BOARD_RGHT; xPos++) {
-			currentpiece = boards[currentMove][yPos][xPos];	
-			if(p == BlackPlay && currentpiece >= BlackPawn && currentpiece <= BlackKing ||
-			   p == WhitePlay && currentpiece >= WhitePawn && currentpiece <= WhiteKing   )
-				piece = PieceToName(currentpiece,0);
-			else if(p == EmptySquare && currentpiece != EmptySquare)
-				piece = PieceToName(currentpiece,1);
-			else if(p == currentpiece)
-				piece = NULL;
-			else continue;
-				
-				if(count == 0) SayString("at", FALSE);
-				xchar = SquareToChar(xPos);
-				ynum = SquareToNum(yPos);
-				SayString(xchar , FALSE);
-				SayString(ynum, FALSE);
-				if(piece) SayString(piece, FALSE);
-				count++;
-		}
-	}
-	if(count == 0) SayString("nowhere", FALSE);
-}
-
-VOID
-SayCurrentPos()
-{
-	ChessSquare currentpiece;
-	char *piece, *xchar, *ynum ;
-	if(fromX <  BOARD_LEFT) { SayString("You strayed into the white holdings", FALSE); return; }
-	if(fromX >= BOARD_RGHT) { SayString("You strayed into the black holdings", FALSE); return; }
-	currentpiece = boards[currentMove][fromY][fromX];	
-	piece = PieceToName(currentpiece,1);
-	ynum = SquareToNum(fromY);
-	xchar = SquareToChar(fromX);
-	SayString("Your current position is", FALSE);
-	SayString(xchar, FALSE);
-	SayString(ynum, FALSE);
-	SayString(piece, FALSE);
-	if(((fromX-BOARD_LEFT) ^ fromY)&1)
-		SayString("on a light square",FALSE);
-	else 
-		SayString("on a dark square",FALSE);
-
-	PossibleAttacked();
-	return;
-}
-
-VOID
-SayAllBoard()
-{
-	int Xpos, Ypos;
-	ChessSquare currentpiece;
-	char *piece, *xchar, *ynum ;
-	
-	if(gameInfo.holdingsWidth) {
-		int first = 0;
-		for(Ypos=0; Ypos<gameInfo.holdingsSize; Ypos++) {
-			int n = boards[currentMove][Ypos][BOARD_WIDTH-2];
-			if(n) {  char buf[MSG_SIZ];
-				if(!first++) SayString("white holds", FALSE);
-				currentpiece = boards[currentMove][Ypos][BOARD_WIDTH-1];	
-				piece = PieceToName(currentpiece,0);
-				sprintf(buf, "%d %s%s", n, piece, (n==1 ? "" : "s") );
-				SayString(buf, FALSE);
-			}
-		}
-		first = 0;
-		for(Ypos=BOARD_HEIGHT-1; Ypos>=BOARD_HEIGHT - gameInfo.holdingsSize; Ypos--) {
-			int n = boards[currentMove][Ypos][1];
-			if(n) {  char buf[MSG_SIZ];
-				if(!first++) SayString("black holds", FALSE);
-				currentpiece = boards[currentMove][Ypos][0];	
-				piece = PieceToName(currentpiece,0);
-				sprintf(buf, "%d %s%s", n, piece, (n==1 ? "" : "s") );
-				SayString(buf, FALSE);
-			}
-		}
-	}
-
-	for(Ypos=BOARD_HEIGHT-1; Ypos>=0; Ypos--) {
-		ynum = ordinals[Ypos + (gameInfo.boardHeight < 10)];
-		SayString(ynum, FALSE);
-		SayString("rank", FALSE);
-		for(Xpos=BOARD_LEFT; Xpos<BOARD_RGHT; Xpos++) {
-			currentpiece = boards[currentMove][Ypos][Xpos];	
-			if(currentpiece != EmptySquare) {
-				int count = 0, oldX = Xpos;
-				char buf[50];
-				piece = PieceToName(currentpiece,1);
-				while(Xpos < BOARD_RGHT && boards[currentMove][Ypos][Xpos] == currentpiece)
-					Xpos++, count++;
-				if(count > 1) { 
-					sprintf(buf, "%d %ss", count, piece);
-				} else	sprintf(buf, "%s", piece);
-				Xpos--;
-				SayString(buf, FALSE);
-			} else {
-				int count = 0, oldX = Xpos;
-				while(Xpos < BOARD_RGHT && boards[currentMove][Ypos][Xpos] == EmptySquare)
-					Xpos++, count++;
-				if(Xpos == BOARD_RGHT && oldX == BOARD_LEFT)
-					SayString("all", FALSE);
-				else{
-				    if(count > 1) { 
-					char buf[10];
-					sprintf(buf, "%d", count);
-					SayString(buf, FALSE);
-				    }
-				    Xpos--;
-				}
-				SayString("empty", FALSE);
-			}
-		}
-	}
-	
-}
-
-VOID
-SayWhosTurn()
-{
-	if(gameMode == MachinePlaysBlack || gameMode == IcsPlayingBlack) {
-		if(WhiteOnMove(currentMove))
-			SayString("It is your turn", FALSE);
-		else	SayString("It is your opponents turn", FALSE);
-	} else if(gameMode == MachinePlaysWhite || gameMode == IcsPlayingWhite) {
-		if(WhiteOnMove(currentMove))
-			SayString("It is your opponents turn", FALSE);
-		else	SayString("It is your turn", FALSE);
-	} else {
-		if(WhiteOnMove(currentMove)) 
-			SayString("White is on move here", FALSE);
-		else	SayString("Black is on move here", FALSE);
-	}
-}
-	
-
-VOID
-SayMachineMove(int evenIfDuplicate)
-{
-	int len, xPos, yPos, moveNr, secondSpace = 0, castle = 0, n;
-	ChessSquare currentpiece;
-	char *piece, *xchar, *ynum, *p;
-	char c, buf[MSG_SIZ], comment[MSG_SIZ];
-	static char disambiguation[2];
-	static int previousMove = 0;
-
-	if(appData.debugMode) fprintf(debugFP, "Message = '%s'\n", messageText);
-	if(gameMode == BeginningOfGame) return;
-	if(messageText[0] == '[') return;
-	comment[0]= 0;
-	    if(isdigit(messageText[0])) { // message is move, possibly with thinking output
-		int dotCount = 0, spaceCount = 0;
-		sscanf(messageText, "%d", &moveNr);
-		len = 0;
-		// [HGM] show: better extraction of move
-		while (messageText[len] != NULLCHAR) {
-		    if(messageText[len] == '.' && spaceCount == 0) dotCount++;
-		    if(messageText[len] == ' ') { if(++spaceCount == 2) secondSpace = len; }
-		    if(messageText[len] == '{') { // we detected a comment
-			if(isalpha(messageText[len+1]) ) sscanf(messageText+len, "{%[^}]}", comment);
-			break;
-		    }
-		    if(messageText[len] == '[') { // we detected thinking output
-			int depth; float score=0; char c, lastMover = (dotCount == 3 ? 'B' : 'W');
-			if(sscanf(messageText+len+1, "%d]%c%f", &depth, &c, &score) > 1) {
-			    if(c == ' ') { // if not explicitly specified, figure out source of thinking output
-				switch(gameMode) {
-				  case MachinePlaysWhite:
-				  case IcsPlayingWhite:
-				    c = 'W'; break;
-				  case IcsPlayingBlack:
-				  case MachinePlaysBlack:
-				    c = 'B'; 
-				  default:
-				    break;
-				}
-			    }
-			    if(c != lastMover) return; // line is thinking output of future move, ignore.
-			    if(2*moveNr - (dotCount < 2) == previousMove)
-				return; // do not repeat same move; likely ponder output
-			    sprintf(buf, "score %s %d at %d ply", 
-					score > 0 ? "plus" : score < 0 ? "minus" : "",
-					(int) (fabs(score)*100+0.5),
-					depth );
-			    SayString(buf, FALSE); // move + thinking output describing it; say it.
-			}
-			while(messageText[len-1] == ' ') len--; // position just behind move;
-			break;
-		    }
-		    if(messageText[len] == '(') { // ICS time printed behind move
-			while(messageText[len+1] && messageText[len] != ')') len++; // skip it
-		    }
-		    len++;
-		}
-		if(secondSpace) len = secondSpace; // position behind move
-		if(messageText[len-1] == '+' || messageText[len-1] == '#') {  /* you are in checkmate */
-			len--; // strip off check or mate indicator
-		}
-		if(messageText[len-2] == '=') {  /* promotion */
-			len-=2; // strip off promotion piece
-			SayString("promotion", FALSE);
-		}
-
-		n = 2*moveNr - (dotCount < 2);
-
-		if(previousMove != 2*moveNr + (dotCount > 1) || evenIfDuplicate) { 
-		    char number[20];
-		    previousMove = 2*moveNr + (dotCount > 1); // remember move nr of move last spoken
-		    sprintf(number, "%d", moveNr);
-
-		    yPos = CoordToNum(messageText[len-1]);  /* turn char coords to ints */
-		    xPos = CoordToNum(messageText[len-2]);
-		    if(xPos < 0 || xPos > 11) return; // prevent crashes if no coord string available to speak
-		    if(yPos < 0 || yPos > 9)  return;
-		    currentpiece = boards[n][yPos][xPos];	
-		    piece = PieceToName(currentpiece,0);
-		    ynum = SquareToNum(yPos);
-		    xchar = SquareToChar(xPos);
-		    c = messageText[len-3];
-		    if(c == 'x') c = messageText[len-4];
-		    if(!isdigit(c) && c < 'a' && c != '@') c = 0;
-		    disambiguation[0] = c;
-		    SayString(WhiteOnMove(n) ? "Black" : "White", FALSE);
-		    SayString("move", FALSE);
-		    SayString(number, FALSE);
-//		    if(c==0 || c=='@') SayString("a", FALSE);
-		    // intercept castling moves
-		    p = StrStr(messageText, "O-O-O");
-		    if(p && p-messageText < len) {
-			SayString("queen side castling",FALSE);
-			castle = 1;
-		    } else {
-			p = StrStr(messageText, "O-O");
-			if(p && p-messageText < len) {
-			    SayString("king side castling",FALSE);
-			    castle = 1;
-			}
-		    }
-		    if(!castle) {
-			SayString(piece, FALSE);
-			if(c == '@') SayString("dropped on", FALSE); else
-			if(c) SayString(disambiguation, FALSE);
-			SayString("to", FALSE);
-			SayString(xchar, FALSE);
-			SayString(ynum, FALSE);
-			if(messageText[len-3] == 'x') {
-				currentpiece = boards[n-1][yPos][xPos];
-				if(currentpiece != EmptySquare) {
-					piece = PieceToName(currentpiece,0);
-					SayString("Capturing a",FALSE);
-					SayString(piece, FALSE);
-				} else SayString("Capturing onn passann",FALSE);
-			}
-			if(messageText[len] == '+') SayString("check", FALSE); else
-			if(messageText[len] == '#') {
-				SayString("finishing off", FALSE);
-				SayString(WhiteOnMove(n) ? "White" : "Black", FALSE);
-			}
-		    }
-		}
-
-	        /* say comment after move, possibly with result */
-		p = NULL;
-	        if(StrStr(messageText, " 1-0")) p = "white wins"; else
-	        if(StrStr(messageText, " 0-1")) p = "black wins"; else
-	        if(StrStr(messageText, " 1/2-1/2")) p = "game ends in a draw";
-	        if(comment[0]) {
-		    if(p) {
-			if(!StrCaseStr(comment, "draw") && 
-			   !StrCaseStr(comment, "white") && 
-			   !StrCaseStr(comment, "black") ) {
-				SayString(p, FALSE);
-				SayString("due to", FALSE);
-			}
-		    }
-		    SayString(comment, FALSE); // alphabetic comment (usually game end)
-	        } else if(p) SayString(p, FALSE);
-
-	    } else {
-		/* starts not with digit */
-		if(StrCaseStr(messageText, "illegal")) PlayIcsUnfinishedSound();
-		SayString(messageText, FALSE);
-	    }
-
-}
-
-VOID
-SayClockTime()
-{
-	char buf1[50], buf2[50];
-	char *str1, *str2;
-	static long int lastWhiteTime, lastBlackTime;
-
-	suppressClocks = 1; // if user is using alt+T command, no reason to display them
-	if(abs(lastWhiteTime - whiteTimeRemaining) < 1000 && abs(lastBlackTime - blackTimeRemaining) < 1000)
-		suppressClocks = 0; // back on after two requests in rapid succession
-	sprintf(buf1, "%s", TimeString(whiteTimeRemaining));
-	str1 = buf1;
-	SayString("White's remaining time is", FALSE);
-	SayString(str1, FALSE);
-	sprintf(buf2, "%s", TimeString(blackTimeRemaining));
-	str2 = buf2;
-	SayString("Black's remaining time is", FALSE);
-	SayString(str2, FALSE);
-	lastWhiteTime = whiteTimeRemaining;
-	lastBlackTime = blackTimeRemaining;
-}
-
-VOID
-Toggle(Boolean *b, char *mess)
-{
-	*b = !*b;
-	SayString(mess, FALSE);
-	SayString("is now", FALSE);
-	SayString(*b ? "on" : "off", FALSE);
-}
-
-/* handles keyboard moves in a click-click fashion */
-VOID
-KeyboardMove(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-	ChessSquare currentpiece;
-	char *piece;
-	
-	static BOOLEAN sameAgain = FALSE;
-	switch (message) {
-	case WM_KEYDOWN:
-		sameAgain = FALSE;
-		if(oldFromX == fromX && oldFromY == fromY) {
-			sameAgain = TRUE;
-			/* click on same square */
-			break;
-		}
-		else if(oldFromX != -1) {
-			
-			ChessSquare pdown, pup;
-      pdown = boards[currentMove][oldFromY][oldFromX];
-      pup = boards[currentMove][fromY][fromX];
-		
-		if (gameMode == EditPosition ||
-			!((WhitePawn <= pdown && pdown <= WhiteKing &&
-				 WhitePawn <= pup && pup <= WhiteKing) ||
-				(BlackPawn <= pdown && pdown <= BlackKing &&
-				 BlackPawn <= pup && pup <= BlackKing))) {
-			/* EditPosition, empty square, or different color piece;
-			click-click move is possible */
-		
-			if (IsPromotion(oldFromX, oldFromY, fromX, fromY)) {
-				if (appData.alwaysPromoteToQueen) {
-					UserMoveEvent(oldFromX, oldFromY, fromX, fromY, 'q');
-				}
-				else {
-					toX = fromX; toY = fromY; fromX = oldFromX; fromY = oldFromY;
-					PromotionPopup(hwnd);
-					fromX = toX; fromY = toY;
-				}	
-			}
-			else {
-				UserMoveEvent(oldFromX, oldFromY, fromX, fromY, NULLCHAR);
-			}
-		oldFromX = oldFromY = -1;
-		break;
-		}
-		
-		}
-		/* First downclick, or restart on a square with same color piece */
-		if (OKToStartUserMove(fromX, fromY)) {
-		oldFromX = fromX;
-		oldFromY = fromY;
-		currentpiece = boards[currentMove][fromY][fromX];	
-		piece = PieceToName(currentpiece,1);
-		SayString(piece, FALSE);
-		SayString("selected", FALSE);
-		}
-		else {
-		oldFromX = oldFromY = -1;
-		}
-		break;
-
-	case WM_KEYUP:
-		if (oldFromX == fromX && oldFromY == fromY) {
-      /* Upclick on same square */
-      if (sameAgain) {
-	/* Clicked same square twice: abort click-click move */
-			oldFromX = oldFromY = -1;
-			currentpiece = boards[currentMove][fromY][fromX];	
-			piece = PieceToName(currentpiece,0);
-			SayString(piece, FALSE);
-			SayString("unselected", FALSE);
-			}
-		}
-	}
-}
-
-int
-NiceTime(int x)
-{	// return TRUE for times we want to announce
-	if(x<0) return 0;
-	x = (x+50)/100;   // tenth of seconds
-	if(x <= 100) return (x%10 == 0);
-	if(x <= 600) return (x%100 == 0);
-	if(x <= 6000) return (x%600 == 0);
-	return (x%3000 == 0);
-}
-
-#if 0
-	    if(isalpha((char)wParam)) {
-		/* capitals of any ind are intercepted and distinguished by left and right shift */
-		int mine = GetKeyState(VK_RSHIFT) < 0;
-		if(mine || GetKeyState(VK_LSHIFT) < 0) {
-#endif
-
-#define JAWS_ALT_INTERCEPT \
-	    if(suppressOneKey) {\
-		suppressOneKey = 0;\
-		if(GetKeyState(VK_MENU) < 0 && GetKeyState(VK_CONTROL) < 0) break;\
-	    }\
-	    if ((char)wParam == 022 && gameMode == EditPosition) { /* <Ctl R>. Pop up piece menu */\
-		POINT pt; int x, y;\
-		SquareToPos(fromY, fromX, &x, &y);\
-		pt.x = x; pt.y = y;\
-        	if(gameInfo.variant != VariantShogi)\
-		    MenuPopup(hwnd, pt, LoadMenu(hInst, "PieceMenu"), -1);\
-	        else\
-		    MenuPopup(hwnd, pt, LoadMenu(hInst, "ShogiPieceMenu"), -1);\
-		break;\
-	    }\
-
-#define JAWS_REPLAY \
-    case '\020': /* ctrl P */\
-      { char buf[MSG_SIZ];\
-	if(GetWindowText(hwnd, buf, MSG_SIZ-1))\
-		SayString(buf, FALSE);\
-      }\
-      return 0;\
-
-#define JAWS_KB_NAVIGATION \
-\
-	case WM_KEYDOWN:\
-\
-		if(GetKeyState(VK_MENU) < 0 && GetKeyState(VK_CONTROL) < 0) {\
-		    /* Control + Alt + letter used for speaking piece positions */\
-		    static int lastTime; static char lastChar;\
-		    int mine = 0, time = GetTickCount(); char c;\
-\
-		    if((char)wParam == lastChar && time-lastTime < 250) mine = 1;\
-		    lastChar = wParam; lastTime = time;\
-		    c = wParam;\
-\
-		    if(gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) mine = !mine;\
-\
-		    if(ToLower(c) == 'x') {\
-			SayPieces(mine ? WhitePlay : BlackPlay);\
-			suppressOneKey = 1;\
-			break;\
-		    } else\
-		    if(CharToPiece(c) != EmptySquare) {\
-			SayPieces(CharToPiece(mine ? ToUpper(c) : ToLower(c)));\
-			suppressOneKey = 1;\
-			break;\
-		    }\
-		}\
-\
-		switch (wParam) {\
-		case VK_LEFT:\
-		case VK_RIGHT:\
-		case VK_UP:\
-		case VK_DOWN:\
-			KeyboardEvent(hwnd, message, wParam, lParam);\
-			break;\
-		case VK_SPACE:\
-			KeyboardMove(hwnd, message, wParam, lParam);\
-			break;\
-		}\
-		break;\
-	case WM_KEYUP:\
-		switch (wParam) {\
-		case VK_SPACE:\
-			KeyboardMove(hwnd, message, wParam, lParam);\
-			break;\
-		}\
-		break;\
-
-#define JAWS_MENU_ITEMS \
-		case IDM_PossibleAttackMove:  /*What can I possible attack from here */\
-			PossibleAttackMove();\
-			break;\
-\
-		case IDM_PossibleAttacked:  /*what can possible attack this square*/\
-			PossibleAttacked();\
-			break;\
-\
-		case IDM_ReadRow:   /* Read the current row of pieces */\
-			ReadRow();\
-			break;\
-\
-		case IDM_ReadColumn:   /* Read the current column of pieces */\
-			ReadColumn();\
-			break;\
-\
-		case IDM_SayCurrentPos: /* Say current position including color */\
-			SayCurrentPos();\
-			break;\
-\
-		case IDM_SayAllBoard:  /* Say the whole board from bottom to top */\
-			SayAllBoard();\
-			break;\
-\
-		case IDM_SayMachineMove:  /* Say the last move made */\
-			timeflag = 1;\
-			SayMachineMove(1);\
-			break;\
-\
-		case IDM_SayUpperDiagnols:  /* Says the diagnol positions above you */\
-			SayUpperDiagnols();\
-			break;\
-\
-		case IDM_SayLowerDiagnols:  /* Say the diagnol positions below you */\
-			SayLowerDiagnols();\
-			break;\
-\
-		case IDM_SayBlackPieces: /*Say the opponents pieces */\
-			SayPieces(BlackPlay);\
-			break;\
-\
-		case IDM_SayWhitePieces: /*Say the opponents pieces */\
-			SayPieces(WhitePlay);\
-			break;\
-\
-		case IDM_SayClockTime:  /*Say the clock time */\
-			SayClockTime();\
-			break;\
-\
-		case IDM_SayWhosTurn:   /* Say whos turn it its */\
-			SayWhosTurn();\
-			break;\
-\
-		case IDM_SayKnightMoves:  /* Say Knights (L-shaped) move */\
-			SayKnightMoves();\
-			break;\
-\
-		case OPT_PonderNextMove:  /* Toggle option setting */\
-			Toggle(&appData.ponderNextMove, "ponder");\
-			break;\
-\
-		case OPT_AnimateMoving:  /* Toggle option setting */\
-			Toggle(&appData.animate, "animate moving");\
-			break;\
-\
-		case OPT_AutoFlag:  /* Toggle option setting */\
-			Toggle(&appData.autoCallFlag, "auto flag");\
-			break;\
-\
-		case OPT_AlwaysQueen:  /* Toggle option setting */\
-			Toggle(&appData.alwaysPromoteToQueen, "always promote to queen");\
-			break;\
-\
-		case OPT_TestLegality:  /* Toggle option setting */\
-			Toggle(&appData.testLegality, "legality testing");\
-			break;\
-\
-		case OPT_HideThinkFromHuman:  /* Toggle option setting */\
-			Toggle(&appData.hideThinkingFromHuman, "hide thinking");\
-			ShowThinkingEvent();\
-			break;\
-\
-		case OPT_SaveExtPGN:  /* Toggle option setting */\
-			Toggle(&appData.saveExtendedInfoInPGN, "extended P G N info");\
-			break;\
-\
-		case OPT_ExtraInfoInMoveHistory:  /* Toggle option setting */\
-			Toggle(&appData.showEvalInMoveHistory, "extra info in move histoty");\
-			break;\
-\
-
-
-#define JAWS_ACCEL \
-	!(!frozen && TranslateAccelerator(hwndMain, hAccelJAWS, &msg)) &&
-
-#define JAWS_INIT if (!InitJAWS()) return (FALSE);
-
-#define JAWS_DELETE(X)
-
-#define JAWS_SILENCE if(suppressClocks) return;
-
-#define JAWS_COPYRIGHT \
-	SetDlgItemText(hDlg, OPT_MESS, "Auditory/Keyboard Enhancements  By:  Ed Rodriguez (sort of)");
-
-#define SAY(S) SayString((S), FALSE)
-
-#define SAYMACHINEMOVE() SayMachineMove(0)
-
-// After inclusion of this file somewhere early in winboard.c, the remaining part of the patch
-// is scattered over winboard.c for actually calling the routines.
diff --git a/winboard/makefile.gcc b/winboard/makefile.gcc
deleted file mode 100644
index 83dde19..0000000
--- a/winboard/makefile.gcc
+++ /dev/null
@@ -1,170 +0,0 @@
-# WinBoard makefile using gcc
-
-
-PROJ=winboard
-
-
-OBJS=backend.o book.o gamelist.o lists.o moves.o pgntags.o uci.o zippy.o\
- parser.o wbres.o wclipbrd.o wedittags.o wengineo.o wevalgraph.o\
- wgamelist.o whistory.o winboard.o wlayout.o woptions.o wsnap.o\
- wsockerr.o help.o wsettings.o
-
-
-# make compiling less spammy
-compile = @echo "$1"; $(CC) $(CFLAGS) $1
-
-
-# Debugging?
-USE_DEBUG=0
-
-
-# JAWS support?
-JAWS=0
-
-
-# set this to 1 unless you don't mind linking with cygwin1.dll
-USE_MINGW=1
-
-
-# set up for cygwin or not
-ifeq ($(USE_MINGW),1)
-CFCYG = -mno-cygwin
-LFCYG = -mno-cygwin -lmsvcrt
-endif
-
-CC = gcc
-FLEX = "flex.exe" # we need version 2.5.4 or later, cygwin's is 2.5.35
-#      "c:/mingw/mingw32/bin/flex.exe"
-HC="C:/Program Files/Help Workshop/hcrtf" -xn
-DEFS = -D_WIN32_IE=0x0300 -DWIN32
-ifeq ($(JAWS),1)
-  DEFS += -DJAWS
-endif
-WARN = -Wall -Wno-char-subscripts -Wno-parentheses
-ARCH =
-ifeq ($(USE_DEBUG),0)
-  CFDEBUG = -DNDEBUG
-  OPTS = -Os -frename-registers -funit-at-a-time -fstrict-aliasing -fstrength-reduce
-else
-  CFDEBUG = -D_DEBUG -DDEBUG -g
-endif
-CF = -c $(WARN) -pipe $(CFDEBUG) $(DEFS) -I. -I..
-CFLAGS = $(CF) $(ARCH) $(OPTS) $(CFCYG)
-LFLAGS = $(LFCYG) $(CFDEBUG) -fpic -s -mwindows -lwsock32 -lwinmm -lcomctl32
-
-all: $(PROJ).exe
-
-
-clean:
-	rm -f *~ $(PROJ).exe $(PROJ).err $(PROJ).rbj $(PROJ).RES $(PROJ).res\
-	*.sbr *.bsc *.o *.obj *.plg *.opt *.ncb *.debug *.bak *.gid *.GID\
-	*.map *.pdb *.tmp $(PROJ).ini
-
-
-# Update the help file if necessary
-$(PROJ).hlp : $(PROJ).rtf
-	$(HC) $(PROJ).hpj
-	@cat $(PROJ).err
-	@mv $(PROJ).hlp tmp.hlp
-	@mv tmp.hlp $(PROJ).hlp # these moves to get the case right
-
-
-# Update the resource if necessary
-wbres.o: $(PROJ).rc $(PROJ).h resource.h
-	windres $(DEFS) --use-temp-file --include-dir .. $< -O coff -o $@
-
-
-# note: cygwin flex needs m4 package.  cygwin-setup forgets this dependency
-# note2: use mingw flex instead... although I got cygwin's flex working (with m4),
-#        it didn't produce a useable parser.c (1000's of errors)
-parser.c: ../parser.l
-	$(FLEX) -oparser.c -L ../parser.l
-
-
-$(PROJ).exe: $(OBJS) $(PROJ).hlp
-	$(CC) $(guiflags) $(OBJS) $(LFLAGS) -o $(PROJ).exe
-
-
-winboard.o: winboard.c config.h winboard.h ../common.h ../frontend.h ../backend.h \
-	../moves.h wgamelist.h defaults.h resource.h wclipbrd.h \
-	wedittags.h wsockerr.h woptions.h wsnap.h ../lists.h help.h
-	$(call compile, $<)
-
-backend.o: ../backend.c config.h ../common.h ../frontend.h ../backend.h \
-	../parser.h ../moves.h ../zippy.h ../backendz.h ../gettext.h ../lists.h
-	$(call compile, $<)
-
-parser.o: parser.c config.h ../common.h ../backend.h ../parser.h \
-	../frontend.h ../moves.h ../lists.h
-	$(call compile, $<)
-
-moves.o: ../moves.c config.h ../backend.h ../common.h ../parser.h \
-	../moves.h ../lists.h
-	$(call compile, $<)
-
-lists.o: ../lists.c config.h ../lists.h ../common.h
-	$(call compile, $<)
-
-gamelist.o: ../gamelist.c config.h ../lists.h ../common.h ../frontend.h \
-	../backend.h ../parser.h
-	$(call compile, $<)
-
-wclipbrd.o: wclipbrd.c config.h ../common.h ../frontend.h ../backend.h \
-	winboard.h resource.h wclipbrd.h ../lists.h
-	$(call compile, $<)
-
-wedittags.o: wedittags.c config.h ../common.h winboard.h resource.h ../frontend.h \
-	../backend.h ../lists.h wedittags.h
-	$(call compile, $<)
-
-wgamelist.o: wgamelist.c config.h. ../common.h winboard.h resource.h ../frontend.h \
-	../backend.h wgamelist.h ../lists.h
-	$(call compile, $<)
-
-woptions.o: woptions.c config.h ../common.h ../frontend.h ../backend.h ../lists.h \
-	defaults.h winboard.h resource.h
-	$(call compile, $<)
-
-wengineo.o: wengineo.c config.h ../common.h ../frontend.h ../backend.h \
-	../lists.h winboard.h resource.h wsnap.h
-	$(call compile, $<)
-
-whistory.o: whistory.c config.h ../common.h ../frontend.h ../backend.h \
-	../lists.h winboard.h resource.h wsnap.h
-	$(call compile, $<)
-
-wevalgraph.o: wevalgraph.c config.h ../common.h ../frontend.h ../backend.h \
-	../lists.h winboard.h resource.h wsnap.h
-	$(call compile, $<)
-
-wlayout.o: wlayout.c config.h ../common.h winboard.h resource.h
-	$(call compile, $<)
-
-wsockerr.o: wsockerr.c wsockerr.h
-	$(call compile, $<)
-
-help.o: help.c help.h
-	$(call compile, $<)
-
-wsnap.o: wsnap.c wsnap.h
-	$(call compile, $<)
-
-pgntags.o: ../pgntags.c config.h ../common.h ../frontend.h ../backend.h \
-	../parser.h ../lists.h
-	$(call compile, $<)
-
-zippy.o: ../zippy.c config.h ../common.h ../zippy.h ../frontend.h \
-	../backend.h ../backendz.h ../lists.h
-	$(call compile, $<)
-
-book.o: ../book.c ../common.h ../backend.h ../lists.h
-	$(call compile, $<)
-
-uci.o: ../uci.c ..//common.h ../backend.h ../frontend.h ../lists.h
-	$(call compile, $<)
-
-wsettings.o: wsettings.c ..//common.h ../backend.h ../frontend.h ../lists.h
-	$(call compile, $<)
-
-%.o: %.c
-	$(call compile, $<)
diff --git a/winboard/makefile.ms b/winboard/makefile.ms
deleted file mode 100644
index c78bbb4..0000000
--- a/winboard/makefile.ms
+++ /dev/null
@@ -1,183 +0,0 @@
-# Command line: nmake /f makefile.ms
-# Set VCVER=6 for MSVC 4.x through 7.0(aka 2002 aka .NET).
-# For MSVC 8 (aka 2005) set VCVER=8.  Beyond that try 8 first.
-VCVER=6
-
-# If using MSVC 6.0 or earlier, you will need the latest platform SDK supported.
-# Set SDK_INC to the include directory after you install it.
-# See: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
-#SDK_INC="C:\Program Files\Microsoft SDK\include"
-
-
-PROJ = winboard
-
-
-OBJS=backend.obj book.obj gamelist.obj lists.obj moves.obj pgntags.obj uci.obj\
- zippy.obj parser.obj wclipbrd.obj wedittags.obj wengineo.obj wevalgraph.obj\
- wgamelist.obj whistory.obj winboard.obj wlayout.obj woptions.obj wsnap.obj\
- wsockerr.obj help.obj wsettings.obj
-
-
-# Debugging?
-USE_DEBUG=0
-
-
-# JAWS support?
-JAWS=0
-
-
-CC = @cl
-RC = @rc
-LINK = link
-HC="c:\program files\help workshop\hcrtf.exe" -xn
-FLEX = "c:/mingw/mingw32/bin/flex.exe"
-DEFS = -D_WIN32_IE=0x300 -DWIN32 -DWINVER=0x0500 -D_WIN32_WINDOWS=0x500
-!if $(JAWS) == 1
-DEFS = -DJAWS $(DEFS)
-!endif
-#WARN = -W3
-ARCH =
-
-
-!if $(VCVER) >= 8
-CLIB= libcmt
-LIBF= -MT
-DEPRECATE=-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_USE_32BIT_TIME_T
-!else
-VSO = -Gf -Og
-CLIB = msvcrt
-LIBF = -MD
-!endif
-
-
-!if $(USE_DEBUG) == 0
-CFDEBUG = -DNDEBUG
-OPTS = -Os -Oy -Gs -GA -Zl $(VSO) $(LIBF)
-LFDEBUG = $(CLIB).lib
-!else
-CFDEBUG = -D_DEBUG -DDEBUG
-OPTS = -Od -Zi -Fd$(PROJ).pdb $(LIBF)d
-LFDEBUG = -DEBUG -PDB:$(PROJ).pdb -MAP:$(PROJ).map $(CLIB)d.lib
-!endif
-CF = $(CFDEBUG) $(DEFS) $(DEPRECATE) -I. -I..
-!if DEFINED(SDK_INC)
-CF = $(CF) -I$(SDK_INC)
-!endif
-CFLAGS = -c -nologo $(WARN) $(CF) $(ARCH) $(OPTS)
-LFLAGS = -nologo $(LFDEBUG)
-
-
-all: $(PROJ).exe
-
-
-clean:
-        -erase *~ $(PROJ).exe $(PROJ).err $(PROJ).rbj $(PROJ).res *.sbr *.bsc\
-        *.o *.obj *.plg *.opt *.ncb *.debug *.bak *.gid *.map *.pdb *.ini
-
-
-# Update the help file if necessary
-$(PROJ).hlp : $(PROJ).rtf
-        $(HC) $(PROJ).hpj
-        - at type $(PROJ).err
-        - at rename $(PROJ).hlp $(PROJ).hlp.tmp
-        - at rename $(PROJ).hlp.tmp $(PROJ).hlp
-
-
-# Update the resource if necessary
-$(PROJ).res: $(PROJ).rc $(PROJ).h resource.h
-    $(RC) $(CF) -r -fo $(PROJ).res $(PROJ).rc
-
-parser.c: ../parser.l
-    $(FLEX) -oparser.c -L ../parser.l
-
-winboard.obj: winboard.c config.h winboard.h ../common.h ../frontend.h \
-        ../backend.h ../moves.h wgamelist.h defaults.h resource.h wclipbrd.h \
-        wedittags.h wsockerr.h woptions.h wsnap.h ../lists.h help.h
-        $(CC) $(CFLAGS) winboard.c
-
-backend.obj: ../backend.c config.h ../common.h ../frontend.h ../backend.h \
-        ../parser.h ../moves.h ../zippy.h ../backendz.h ../gettext.h ../lists.h
-        $(CC) $(CFLAGS) ../backend.c
-
-parser.obj: parser.c config.h ../common.h ../backend.h ../parser.h \
-        ../frontend.h ../moves.h ../lists.h
-        $(CC) $(CFLAGS) parser.c
-
-book.obj: ../book.c ../common.h ../backend.h ../lists.h
-        $(CC) $(CFLAGS) ../book.c
-
-gamelist.obj: ../gamelist.c config.h ../lists.h ../common.h ../frontend.h \
-        ../backend.h ../parser.h
-        $(CC) $(CFLAGS) ../gamelist.c
-
-lists.obj: ../lists.c config.h ../lists.h ../common.h
-        $(CC) $(CFLAGS) ../lists.c
-
-moves.obj: ../moves.c config.h ../backend.h ../common.h ../parser.h \
-        ../moves.h ../lists.h
-        $(CC) $(CFLAGS) ../moves.c
-
-wclipbrd.obj: wclipbrd.c config.h ../common.h ../frontend.h ../backend.h \
-        winboard.h resource.h wclipbrd.h ../lists.h
-        $(CC) $(CFLAGS) wclipbrd.c
-
-wedittags.obj: wedittags.c config.h ../common.h winboard.h resource.h ../frontend.h \
-        ../backend.h ../lists.h wedittags.h
-        $(CC) $(CFLAGS) wedittags.c
-
-wgamelist.obj: wgamelist.c config.h. ../common.h winboard.h resource.h ../frontend.h \
-        ../backend.h wgamelist.h ../lists.h
-        $(CC) $(CFLAGS) wgamelist.c
-
-woptions.obj: woptions.c config.h ../common.h ../frontend.h ../backend.h \
-	../lists.h defaults.h winboard.h resource.h
-        $(CC) $(CFLAGS) woptions.c
-
-wengineo.obj: wengineo.c config.h ../common.h ../frontend.h ../backend.h \
-	../lists.h winboard.h resource.h wsnap.h
-        $(CC) $(CFLAGS) wengineo.c
-
-whistory.obj: whistory.c config.h ../common.h ../frontend.h ../backend.h \
-	../lists.h winboard.h resource.h wsnap.h
-        $(CC) $(CFLAGS) whistory.c
-
-wevalgraph.obj: wevalgraph.c config.h ../common.h ../frontend.h ../backend.h \
-	../lists.h winboard.h resource.h wsnap.h
-        $(CC) $(CFLAGS) wevalgraph.c
-
-wlayout.obj: wlayout.c config.h ../common.h winboard.h resource.h
-        $(CC) $(CFLAGS) wlayout.c
-
-wsockerr.obj: wsockerr.c wsockerr.h
-        $(CC) $(CFLAGS) wsockerr.c
-
-help.obj: help.c help.h
-        $(CC) $(CFLAGS) help.c
-
-wsnap.obj: wsnap.c wsnap.h
-        $(CC) $(CFLAGS) wsnap.c
-
-pgntags.obj: ../pgntags.c config.h ../common.h ../frontend.h ../backend.h \
-        ../parser.h ../lists.h
-        $(CC) $(CFLAGS) ../pgntags.c
-
-zippy.obj: ../zippy.c config.h ../common.h ../zippy.h ../frontend.h \
-	../backend.h ../backendz.h ../lists.h
-        $(CC) $(CFLAGS) ../zippy.c
-
-uci.obj: ../uci.c ..//common.h ../backend.h ../frontend.h ../lists.h
-        $(CC) $(CFLAGS) ../uci.c
-
-
-wsettings.obj: wsettings.c ..//common.h ../backend.h ../frontend.h ../lists.h
-        $(CC) $(CFLAGS) wsettings.c
-
-
-$(PROJ).exe: $(OBJS) $(PROJ).res $(PROJ).hlp
-    $(LINK) $(LFLAGS) $(OBJS) wsock32.lib comctl32.lib winmm.lib shell32.lib\
- oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib\
- $(PROJ).res -out:$(PROJ).exe
-
-
-.c.obj:
-        $(CC) $(CFLAGS) $< 
diff --git a/winboard/parser.c b/winboard/parser.c
deleted file mode 100644
index 08d0755..0000000
--- a/winboard/parser.c
+++ /dev/null
@@ -1,4057 +0,0 @@
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-#include <unistd.h>
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif	/* __STDC__ */
-#endif	/* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- * 	if ( condition_holds )
- *		yyless( 5 );
- *	else
- *		do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-		*yy_cp = yy_hold_char; \
-		YY_RESTORE_YY_MORE_OFFSET \
-		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via yyrestart()), so that the user can continue scanning by
-	 * just pointing yyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-	};
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-
-#define YY_USES_REJECT
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	yytext_ptr = yy_bp; \
-	yyleng = (int) (yy_cp - yy_bp); \
-	yy_hold_char = *yy_cp; \
-	*yy_cp = '\0'; \
-	yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 42
-#define YY_END_OF_BUFFER 43
-static yyconst short int yy_acclist[650] =
-    {   0,
-       43,   41,   42,   41,   42,   41,   42,   40,   41,   42,
-       41,   42,   25,   41,   42,   41,   42,   40,   41,   42,
-       40,   41,   42,16410,   40,   41,   42,16410,   41,   42,
-       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
-       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
-       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
-       40,   41,   42,   41,   42,   40,   41,   42,   40,   41,
-       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
-       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
-       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
-
-       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
-       40,   41,   42,   40,   41,   42,   41,   42,   41,   42,
-       40,   41,   42,   40,   41,   42,   40,   41,   42,16410,
-       40,   41,   42,16410,   41,   42,   40,   41,   42,   40,
-       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
-       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
-       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
-       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
-       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
-       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
-
-       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
-       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
-       41,   42,   33,   40,   17,   40,    9,   40,   40,   40,
-    16410, 8218,   40,   35,   40,   40,   40,   40,   40,   40,
-       40,   40,   40,   40,   40,    9,   40,   40,   40,   40,
-       40,   40,   36,   40,    3,   40,   40,    4,   40,   40,
-       40,   40,   40,   40,    9,   40,   40,   40,   34,   40,
-       40,    9,   40,   40,   40,16410, 8218,   40,   40,   40,
-       40,   40,   40,   40,   40,   40,   40,   40,   40,    9,
-       40,   40,   40,   40,   40,   40,   40,    3,   40,   40,
-
-        4,   40,   40,   40,   40,   40,   40,    9,   40,   40,
-       40,   15,    9,   40,   23,   40,   23,    8,   40, 8218,
-       22,   40,   22,   24,   40,   40,   40,    6,   40,   40,
-       40,   40,   40,   40,   40,    9,   40,   40,   40,   40,
-       20,   40,    4,   40,   40,    3,    3,   40,    3,   40,
-       40,    4,    5,   40,    4,    4,   40,   40,   40,   40,
-        9,   40,   40,   34,   39,    9,   40,   23,   40,    8,
-       40,   22,   40,   35,   40,   40,   40,    6,   40,   40,
-       40,   40,   40,   40,   40,    9,   40,   40,   40,   40,
-       20,   40,    4,   40,   40,    3,   40,    3,   40,   40,
-
-        5,   40,    4,   40,   40,   40,   40,    9,   40,   40,
-       38,   38,   37,   25,   25,    6,   40,   10,    6,   40,
-        7,   40,    6,   40,    6,   40,   40,   40,   19,   40,
-       40,   21,   40,   16,   40,   40,   40,   40,   40,   20,
-       20,   40,   20,   40,   36,    3,    3,    2,   40,    5,
-        4,    5,    5,   40,   40,    4,    4,   40,   40,   25,
-       39,   40,    6,   40,    7,   40,   40,   40,   40,   40,
-       19,   40,   40,   21,   40,   16,   40,   40,   40,   40,
-       40,   20,   40,   20,   20,   40,    2,   40,    5,   40,
-       40,    4,   40,   40,    7,    7,    1,   40,   40,   40,
-
-       19,   40,   40,   40,   21,   21,   40,   21,   40,   40,
-       40,   40,   30,   36,    2,    2,    2,   40,    5,    5,
-        5,   40,   39,    1,   40,   40,   40,   19,   40,   40,
-       40,   21,   40,   21,   21,   40,   40,   40,   40,   20,
-       39,    2,   40,    5,   40,   27,   38,    1,   23,   23,
-       22,   22,   24,   24,    1,    1,   40,   20,   21,   40,
-       40,   40,   11,   40,   40,   28,   36,   30,    2,    2,
-       27,   34,   39,   39,    1,   40,   40,   40,   40,   21,
-       39,   11,   40,   40,   20,   39,   18,    1,   24,    1,
-       20,   21,   19,   40,   40,   40,   11,   40,   40,   40,
-
-       40,   21,   39,   40,   11,   40,   40,   12,   40,   40,
-       40,   40,   12,   40,   40,   14,   40,   40,   40,   14,
-       40,   40,   40,   39,   40,   40,   40,   40,   39,   39,
-       40,   40,   31,   40,   39,   39,   31,   40,   13,   31,
-       32,   32,   35,   39,   39,   31,   39,   34,   29
-    } ;
-
-static yyconst short int yy_accept[698] =
-    {   0,
-        1,    1,    1,    2,    4,    6,    8,   11,   13,   16,
-       18,   21,   25,   29,   31,   34,   37,   40,   43,   46,
-       49,   52,   55,   58,   61,   64,   66,   69,   72,   75,
-       78,   81,   84,   87,   90,   93,   96,   99,  102,  105,
-      108,  111,  114,  117,  119,  121,  124,  127,  131,  135,
-      137,  140,  143,  146,  149,  152,  155,  158,  161,  164,
-      167,  170,  173,  176,  179,  182,  185,  188,  191,  194,
-      197,  200,  203,  206,  209,  212,  215,  218,  221,  223,
-      223,  224,  225,  225,  225,  225,  225,  226,  226,  226,
-      226,  227,  227,  229,  229,  229,  229,  230,  230,  230,
-
-      232,  232,  234,  234,  235,  235,  236,  236,  237,  237,
-      238,  238,  239,  240,  241,  242,  243,  244,  245,  246,
-      248,  249,  250,  251,  252,  253,  253,  253,  253,  253,
-      254,  255,  257,  257,  258,  260,  261,  262,  263,  264,
-      265,  267,  268,  269,  269,  269,  269,  270,  270,  271,
-      271,  272,  274,  274,  275,  277,  277,  279,  279,  280,
-      281,  281,  282,  283,  284,  285,  286,  287,  288,  289,
-      290,  292,  293,  294,  295,  296,  297,  298,  300,  300,
-      301,  303,  304,  305,  306,  307,  308,  310,  311,  312,
-      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
-
-      312,  313,  313,  313,  313,  313,  313,  315,  317,  318,
-      320,  321,  321,  321,  321,  323,  324,  325,  325,  326,
-      326,  327,  327,  328,  328,  330,  330,  330,  330,  330,
-      331,  332,  333,  334,  335,  336,  338,  339,  340,  341,
-      343,  343,  343,  343,  343,  345,  345,  346,  346,  347,
-      349,  351,  352,  353,  353,  355,  356,  358,  359,  360,
-      361,  363,  364,  365,  365,  365,  365,  365,  366,  368,
-      370,  372,  374,  374,  375,  375,  376,  377,  377,  378,
-      380,  381,  382,  383,  384,  385,  386,  388,  389,  390,
-      391,  393,  395,  396,  396,  398,  400,  401,  403,  405,
-
-      406,  407,  408,  410,  411,  411,  411,  412,  413,  413,
-      413,  414,  414,  414,  415,  415,  416,  416,  417,  417,
-      417,  417,  418,  418,  418,  418,  418,  418,  418,  418,
-      419,  421,  421,  423,  424,  425,  425,  426,  427,  427,
-      427,  427,  427,  428,  429,  431,  431,  432,  434,  436,
-      437,  438,  439,  440,  441,  443,  445,  445,  445,  445,
-      445,  446,  447,  447,  448,  450,  451,  452,  452,  452,
-      453,  455,  456,  457,  457,  459,  460,  460,  461,  461,
-      461,  461,  461,  462,  462,  463,  463,  463,  465,  467,
-      468,  468,  469,  470,  471,  473,  474,  476,  478,  479,
-
-      480,  481,  482,  484,  485,  487,  489,  491,  492,  494,
-      495,  495,  495,  495,  495,  496,  496,  496,  496,  496,
-      496,  496,  496,  496,  496,  497,  499,  499,  499,  499,
-      499,  500,  501,  501,  503,  503,  504,  505,  506,  508,
-      510,  511,  512,  513,  513,  513,  515,  515,  515,  516,
-      516,  517,  519,  520,  520,  521,  521,  523,  523,  523,
-      523,  523,  523,  523,  523,  524,  524,  524,  526,  527,
-      528,  530,  531,  532,  534,  535,  537,  538,  539,  540,
-      542,  544,  546,  546,  546,  548,  548,  549,  549,  550,
-      550,  551,  551,  552,  552,  553,  553,  554,  554,  555,
-
-      555,  555,  555,  556,  558,  558,  558,  560,  560,  561,
-      561,  561,  561,  561,  561,  562,  563,  565,  566,  568,
-      568,  569,  570,  571,  571,  571,  573,  573,  573,  574,
-      575,  575,  575,  577,  578,  579,  580,  582,  584,  585,
-      587,  587,  588,  588,  588,  589,  589,  590,  591,  591,
-      591,  591,  593,  593,  593,  594,  594,  594,  594,  594,
-      595,  596,  597,  599,  600,  600,  600,  600,  600,  600,
-      601,  602,  604,  605,  607,  608,  608,  608,  608,  608,
-      608,  608,  609,  609,  609,  609,  609,  610,  611,  611,
-      611,  611,  611,  612,  613,  613,  613,  613,  613,  614,
-
-      614,  614,  614,  615,  616,  618,  618,  618,  618,  618,
-      619,  619,  620,  622,  622,  622,  622,  622,  623,  624,
-      624,  624,  624,  624,  625,  626,  627,  627,  627,  627,
-      627,  627,  628,  629,  629,  629,  629,  629,  630,  631,
-      632,  633,  633,  633,  633,  633,  633,  635,  635,  635,
-      635,  635,  636,  637,  639,  639,  639,  640,  640,  641,
-      641,  642,  642,  642,  644,  644,  645,  646,  646,  646,
-      646,  646,  648,  648,  648,  648,  648,  648,  648,  648,
-      648,  648,  648,  648,  648,  648,  648,  648,  648,  648,
-      648,  648,  648,  648,  649,  650,  650
-
-    } ;
-
-static yyconst int yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    4,    1,    5,    6,    7,    8,    1,    9,   10,
-       11,   12,   13,    1,   14,   15,   16,   17,   18,   19,
-       20,   20,   20,   20,   20,   20,   20,   21,   22,    1,
-       23,    1,    1,   24,   25,   26,   27,   28,   29,   30,
-       31,   32,   33,   33,   34,   35,   36,   37,   38,   34,
-       34,   39,   40,   33,   41,   33,   42,   43,   33,   33,
-       44,    1,   45,    1,   46,    1,   47,   48,   49,   50,
-
-       51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
-       61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
-       71,   68,   72,    1,   73,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst int yy_meta[74] =
-    {   0,
-        1,    2,    3,    2,    1,    1,    1,    1,    4,    5,
-        6,    1,    7,    8,    1,    1,    9,    9,    9,    9,
-       10,    1,   11,    1,   12,   12,   12,   12,   12,   12,
-       12,   12,   13,   12,   13,   13,   12,   12,   12,   13,
-       13,   12,   14,    1,    1,    1,   15,   15,   15,   15,
-       16,   15,   15,   15,   15,   15,   15,   15,   17,   18,
-       18,   18,   18,   18,   17,   17,   17,   17,   17,   19,
-       17,    1,    1
-    } ;
-
-static yyconst short int yy_base[784] =
-    {   0,
-        0,   73, 2729, 4517,  122,  131,    0,  142, 2724,  140,
-      151,  171,  162, 2724,  231,  159, 2672, 2661,  119, 2660,
-     2673,  143, 2668, 2652,  211,  301,  361,  212,  209,  279,
-      243,  284,  301,  286,  221,  303,  309,  329, 2670,  239,
-     2665, 2649,  338,  403, 2710,  149,  380,  475,  348,  190,
-      538,  240, 2659, 2648,  236, 2650, 2663,  157, 2658, 2642,
-      379,  600,  314,  353,  377,  395,  401,  413,  382,  408,
-      513,  424,  516,  423,  562,  448,  544,  607,  612, 2654,
-      468,    0, 2696,  309,  617,  174, 4517, 2692,  672,  246,
-      353, 2686, 2686, 2680,  517,  661, 2680,  576,  280,  655,
-
-     2679,    0, 2692, 4517,    0,  696,    0,  741,    0,  580,
-      644,  586,  622, 2645, 2640, 2592, 2592,  692, 2617, 2616,
-      714, 2606,  680,  720, 2592, 2606,  811,  537,  884, 4517,
-      911,  961,    0,  986, 1035,  687,  753,  757, 2584, 2588,
-     2587, 2582, 2591,  318, 2568,  825, 2636, 2635,  430, 2634,
-      747,  820,  253,  830, 1085,  160,  563,  455, 1148, 1193,
-     2633,  784,  843,  850,  760,  603,  692,  844,  854, 2596,
-      657,  858,  893,  862,  893,  658, 1217, 1267, 2629, 1292,
-     1342,  913,  926, 1157,  831,  894,  915,  918,  895,  845,
-     2568,  464,  487,  538, 2620,  556, 1162, 1073, 2619, 2556,
-
-     4517, 1146, 1209, 2624, 2623, 2622, 2611, 2620, 2619,    0,
-     4517, 2618, 2616, 2615, 2614, 2613,  384, 1029, 1062, 1078,
-     1367, 1147, 1145, 1167, 1412, 2558, 2551, 2564, 2559, 1240,
-     1422, 2540,  756,  651, 2557, 2593, 2551, 2547, 1214, 1482,
-      722, 1208,  761, 1555, 1619,    0, 1624,    0, 2594, 2592,
-     2591, 1174, 1426, 1490, 1673, 2591, 2589,  560, 2550, 2549,
-     2583, 2530, 4517, 1499, 1039, 2591,  725, 2587,  928,  845,
-      592,  917,  642, 2585, 1156, 1503, 1716, 2584, 1516, 1761,
-     1531, 1564, 1470, 1565, 1464, 1429, 1580, 1490, 1566, 1598,
-     1831, 1896, 1901, 2583, 1582, 2573, 1613, 1950, 1587, 1676,
-
-     1588, 1614, 1581, 1149, 1539, 2528, 4517,  775,  799, 2562,
-     4517, 1709, 2557, 2556, 2493, 2492, 1202, 1709, 2546, 2545,
-     2544, 2544,  615, 2543,  744, 2542, 1099, 1674,  832, 4517,
-     2535, 1719, 2534, 2533, 1955, 1622, 4517, 1410, 2490, 2490,
-     2487, 2487, 2494, 2493,  778,  892,  920, 2013,    0, 2511,
-     2495, 2496, 2495,    0, 2086, 2159,  940, 1210, 1233, 1309,
-     2540, 2533, 1434, 4517, 1776, 1424, 2529,  910, 1615, 1616,
-     2528, 1173, 4517, 2476,    0, 2476, 1842, 2532, 1727, 1735,
-     2488, 2473, 2530, 1003, 1736,  904,  599, 1216, 1523, 2186,
-     2528, 1847, 1726, 1767, 1880, 1771, 2244, 1522, 1813, 1849,
-
-     1848, 1862, 2317, 2527, 2390, 2029, 1869, 1879, 1713, 2021,
-     1747, 2479, 2517, 1595, 2500, 1809, 2511, 2443, 2504, 2441,
-     2500, 2433, 2460, 1869, 4517, 2454, 2427, 2423, 2423, 2418,
-     2468, 1049, 2006, 2467, 1075, 2440, 2410,    0, 2497, 2570,
-     2400, 2394, 2448, 1341, 1756, 4517, 2446, 1803, 1343, 1491,
-     1768, 2439, 2438, 1416, 4517, 2386,    0, 2425, 1871, 2421,
-     1240, 2416, 2373, 2366, 1454, 1718, 1473, 2635, 1888, 2044,
-     1889, 2042, 2023, 2678, 2425, 1990, 1886, 2052, 2063, 2425,
-     1870, 1899, 1958, 1000, 4517, 2095, 1777, 2416, 2415, 2351,
-     2350, 2411, 2410, 2347, 2346, 2407, 2406, 2343, 2342, 2393,
-
-     2388, 1840, 2017, 2382, 2320, 2326, 2011, 2298, 2303, 2338,
-     2296, 2275, 2316, 2293, 2302, 2270, 2018, 2264, 4517, 2117,
-     4517, 2296, 4517, 2290, 2119, 2300, 2251, 2231, 2282, 1960,
-     1445,  289, 2107, 2108, 2114, 2068, 2281, 2125, 2131, 2280,
-     2139, 4517, 2227, 2176, 2262, 2267, 2258, 4517, 2187, 2173,
-     2177, 4517, 2166, 2214, 2211, 2157, 2198, 2148, 2103, 2111,
-     2085, 2098,    0, 2077, 2196, 2071, 2002,  827, 1575, 2168,
-     2135, 2063, 2170, 2136, 2164, 2203, 2000, 2014, 1683, 1939,
-     1931, 2030, 1944, 1630, 1954, 1906, 2751, 1919, 1917, 1913,
-     1385, 1565, 2824, 2249, 2204, 1850, 1863, 1832, 4517, 1806,
-
-     1637, 1912, 2897, 1920,    0, 1775, 1762, 1585,  945, 2970,
-     2096, 1949, 2188, 2207, 1772, 1743, 2250, 1745, 1677, 1563,
-     1551, 1686,  681, 2260, 1568, 1502, 2258, 1408, 1406, 2243,
-     2170, 1358, 1313, 1240, 1258, 1751, 1127, 2261, 2312, 1072,
-      926, 2279, 2133,  809, 1969, 2073,    0,  855,  705,  711,
-     1429, 2317, 2305,    0, 2284,  631, 4517,  546, 2094,  480,
-     4517,  413,  392, 4517, 1794, 2351, 2357, 2298,  325,  206,
-     1884, 2303, 2352,  203, 1915,  365, 2138, 2221, 2364, 2365,
-     2369, 2370, 2371, 2372, 2373, 2427, 2444, 2451, 2452, 2453,
-     2454, 2456, 2296,  179, 4517, 4517, 3040, 3059, 3072, 3086,
-
-     3105, 3124, 3140, 3159, 3178, 3196, 1267, 1342, 1671, 3214,
-     3233, 1702, 3252, 3271, 3290, 3309, 3328, 3347, 3366, 3385,
-     3404, 3416, 3435, 3454, 3473, 3492, 3511, 3519, 1896, 3529,
-     3545, 3564, 3580, 3599, 3618, 3637, 3656, 3675, 3694, 3713,
-     3732, 3744, 3763, 3782, 3801, 3820, 3839, 3858, 3877, 3893,
-     3908, 3924, 3943, 3962, 3981, 3997, 4016, 4035, 4054, 4073,
-     4092, 4111, 4130, 4149, 4168, 4187, 4206, 4225, 4244, 4259,
-     4278, 4297, 4316, 4331, 4345, 4364, 4383, 4402, 4421, 4440,
-     4459, 4478, 4497
-    } ;
-
-static yyconst short int yy_def[784] =
-    {   0,
-      696,  696,  696,  696,  696,  696,  697,  698,  696,  699,
-      697,  696,   12,  700,  697,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,  701,  697,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,  697,  697,
-      697,  697,  697,  702,  696,  703,  703,  696,   48,  700,
-      703,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,  703,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,  703,  703,  703,  703,  703,  702,  696,
-      696,  697,  704,  705,  704,  696,  696,  696,  696,  696,
-      697,  696,  697,  696,  706,  706,  697,  706,  696,   12,
-
-      696,  697,  700,  696,  707,  697,  708,  697,  709,  108,
-      696,  108,  108,  697,  697,  697,  697,  108,  106,  697,
-      108,  697,  108,  108,  697,  710,  701,  710,  711,  696,
-      697,  696,  712,  697,  697,  697,  697,  697,  697,  697,
-      697,  697,  697,  702,  713,  702,  696,  714,  703,  696,
-      703,  703,  696,  703,  696,  696,  703,  715,  703,  159,
-      709,  160,  160,  160,  703,  703,  703,  703,  160,  159,
-      703,  160,  703,  160,  160,  703,  159,  696,  712,  159,
-      696,  703,  703,  703,  703,  703,  703,  703,  703,  702,
-      696,  716,  717,  717,  718,  719,  716,  716,  720,  721,
-
-      696,  722,  722,  696,  696,  696,  697,  697,  696,  697,
-      696,  696,  696,  696,  697,  696,  696,  696,  697,  696,
-      697,  722,  697,  696,  697,  696,  696,  696,  696,  697,
-      697,  697,  697,  697,  697,  697,  697,  697,  697,  723,
-      724,  725,  726,  727,  697,  728,  697,  729,  728,  697,
-      247,  697,  730,  730,  697,  254,  697,  697,  697,  697,
-      697,  697,  696,  702,  696,  731,  696,  732,  733,  733,
-      733,  733,  734,  731,  735,  733,  733,  222,  733,  277,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      736,  733,  277,  729,  733,  293,  733,  292,  733,  733,
-
-      733,  733,  733,  733,  702,  696,  696,  737,  737,  738,
-      696,  739,  740,  740,  741,  741,  696,  742,  696,  696,
-      696,  697,  696,  696,  696,  696,  696,  696,  696,  696,
-      697,  742,  697,  696,  697,  332,  696,  697,  696,  696,
-      696,  696,  697,  697,  697,  696,  697,  743,  697,  697,
-      697,  697,  697,  744,  745,  745,  746,  746,  747,  748,
-      749,  696,  696,  696,  750,  751,  696,  696,  751,  751,
-      697,  697,  696,  696,  697,  697,  702,  696,  696,  696,
-      696,  696,  752,  696,  733,  753,  753,  733,  733,  293,
-      336,  733,  733,  733,  733,  733,  754,  733,  733,  733,
-
-      733,  733,  755,  744,  755,  756,  733,  733,  733,  733,
-      702,  696,  757,  758,  696,  696,  759,  760,  761,  762,
-      763,  764,  696,  696,  696,  697,  696,  696,  696,  696,
-      697,  697,  696,  697,  696,  697,  697,  765,  766,  766,
-      697,  697,  697,  767,  768,  696,  769,  696,  770,  770,
-      770,  697,  696,  696,  696,  696,  697,  696,  702,  696,
-      696,  696,  696,  696,  771,  772,  772,  733,  733,  733,
-      733,  733,  733,  754,  765,  474,  733,  733,  733,  773,
-      733,  733,  702,  696,  696,  758,  774,  759,  759,  760,
-      760,  761,  761,  762,  762,  763,  763,  764,  764,  696,
-
-      696,  774,  774,  697,  696,  696,  696,  696,  697,  775,
-      696,  696,  696,  696,  697,  697,  697,  697,  696,  696,
-      696,  696,  696,  696,  702,  696,  696,  696,  771,  771,
-      772,  772,  733,  733,  733,  733,  776,  733,  733,  773,
-      702,  696,  696,  758,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  775,  775,  696,  696,  696,  696,  697,
-      697,  697,  697,  697,  702,  696,  696,  772,  772,  733,
-      733,  776,  733,  733,  733,  702,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  777,  697,  696,  696,
-      772,  772,  778,  733,  702,  696,  696,  696,  696,  696,
-
-      779,  779,  777,  603,  697,  696,  696,  772,  772,  778,
-      779,  610,  733,  702,  696,  696,  779,  603,  603,  696,
-      696,  772,  772,  780,  610,  610,  702,  696,  696,  779,
-      779,  603,  603,  696,  696,  772,  772,  780,  780,  610,
-      610,  702,  696,  696,  779,  779,  603,  781,  696,  782,
-      772,  780,  780,  610,  702,  696,  696,  696,  779,  781,
-      696,  696,  782,  696,  772,  780,  780,  702,  696,  696,
-      772,  780,  702,  696,  772,  702,  783,  783,  783,  783,
-      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
-      783,  783,  783,  696,  696,    0,  696,  696,  696,  696,
-
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696
-    } ;
-
-static yyconst short int yy_nxt[4591] =
-    {   0,
-        4,    4,    4,    5,    4,    4,    6,    4,    7,    8,
-        4,    9,   10,    7,    4,    4,   11,   12,   13,   13,
-        4,   14,    4,    4,   15,   16,   17,   18,   15,   15,
-       19,   15,   15,   15,   20,   21,   15,   22,   23,   24,
-       15,   25,   15,   26,    4,    4,   27,   28,   29,   30,
-       31,   32,   33,   34,   35,   36,   37,   38,   39,    7,
-       40,    7,    7,   41,   42,    7,    7,    7,   43,    7,
-        7,   44,    4,    4,    4,    4,    5,    4,   45,    6,
-       45,    7,    8,    4,    9,   10,   46,    4,    4,   47,
-       48,   49,   49,    4,   50,    4,    4,   51,   52,   53,
-
-       54,   51,   51,   55,   51,   51,   51,   56,   57,   51,
-       58,   59,   60,   51,   61,   51,   26,    4,    4,   62,
-       63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
-       73,   74,   46,   75,   46,   46,   76,   77,   46,   46,
-       46,   78,   46,   46,   79,    4,   80,   81,   81,   81,
-       81,   84,   87,   88,   90,  115,  119,   82,   85,   85,
-       85,   85,  111,  268,   91,   95,   92,   93,   80,  150,
-      170,   94,   95,   95,   96,   82,  216,  696,  116,   82,
-      120,  695,  696,  199,   97,   98,   99,  100,  100,  100,
-      100,  101,  104,  158,  171,  102,  102,  102,  102,  102,
-
-      102,  102,  102,   82,  102,   82,   82,  102,  102,  102,
-       82,   82,  102,   82,  111,  111,  112,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,   82,
-      102,  102,  102,  102,  102,   82,   82,   82,   82,   82,
-       82,   82,  105,  111,  106,  200,  107,  108,  108,  108,
-      108,  109,  140,  648,  105,  136,  268,  135,  135,  204,
-      135,  205,  138,  674,  123,  124,  206,  136,  136,  137,
-      209,  125,  166,  106,  135,  135,  135,  110,  110,  110,
-      110,  110,  110,  110,  110,  110,  110,  110,  110,  136,
-      136,  104,  135,  135,  135,  167,  216,  163,  217,  141,
-
-      106,  126,  127,  127,  127,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  128,  126,  126,  111,  195,  196,
-      145,  126,  126,  126,  126,  136,  136,  135,  135,  135,
-      136,  136,  136,  136,  135,  135,  135,  115,  135,  135,
-      135,  111,  114,  569,  126,  130,  126,  136,  136,  136,
-      136,   95,  135,  135,  135,  136,  136,  135,  135,  135,
-      116,  149,  181,  696,  135,  135,  135,  677,  150,  207,
-      208,  183,  126,  126,  131,  136,  136,  132,  132,  132,
-      132,  133,  111,   90,  542,  135,  135,  328,   82,  117,
-      147,  143,  125,  151,  664,   92,  152,  329,  125,  182,
-
-      153,  181,  181,  134,  329,  145,  184,  135,  135,  136,
-      136,  136,  136,  136,  136,  136,  136,  136,  136,  146,
-      146,  146,  146,  182,  182,  181,  181,  181,  182,  182,
-      134,   82,  174,  175,  181,  181,  181,  147,   82,  176,
-      165,  182,  182,  150,  181,  181,  181,  182,  182,  166,
-      150,  181,  181,  181,  182,  182,   82,  274,  275,  182,
-      182,  181,  181,  181,  181,  181,  181,  670,  150,  185,
-      182,  182,  167,  193,  307,  147,   95,   95,   96,  181,
-      181,  181,  661,   82,   81,   81,   81,   81,  154,   98,
-       99,  155,  155,  155,  155,  156,  195,  308,  188,  157,
-
-      157,  157,  157,  157,  157,  157,  157,  149,  157,  149,
-      149,  157,  157,  157,  149,  149,  157,  149,   95,   95,
-       95,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  149,  157,  157,  157,  157,  157,  149,
-      149,  149,  149,  149,  149,  149,   82,  195,  308,  105,
-      241,  159,   82,  107,  160,  160,  160,  160,  161,  182,
-      182,  105,  182,  182,  150,  310,  311,  181,  181,  181,
-       82,   82,  181,  181,  374,  186,  168,   95,   95,   95,
-      159,  130,  150,  150,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  225,  225,  225,  225,
-
-       82,  104,  225,  225,  225,  225,  669,  159,   82,  173,
-      111,   82,  150,  177,  145,   82,  178,  178,  178,  178,
-      179,  375,  187,  150,  417,  190,  193,  150,  146,  146,
-      146,  146,  230,  197,  197,  197,  197,  198,  225,  225,
-      225,  225,  180,  284,  274,  275,  181,  181,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,   95,  467,
-      189,  176,   95,   95,   95,   82,   82,  176,   82,  180,
-      696,  226,  231,  227,  212,  696,  213,  150,  150,  228,
-      657,  214,  229,  104,  147,  109,  418,  107,  202,  202,
-      202,  202,  109,  226,  271,  227,  225,  225,  225,  225,
-
-       82,  348,  228,  255,  255,  255,  255,  229,  225,  225,
-      225,  225,  150,  664,  109,  348,  348,  291,  203,  203,
-      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
-      225,  225,  225,  225,  239,  358,  225,  225,  225,  225,
-      637,  109,  219,  219,  219,  219,  219,  219,  219,  219,
-      219,  219,  219,  219,  221,   82,  662,  235,  284,  346,
-      216,  222,  217,  269,  270,  360,  130,  150,   82,  255,
-      255,  255,  255,  255,  255,  255,  255,  381,  237,  240,
-      150,  433,  347,  221,  310,  311,  382,  223,  223,  223,
-      223,  223,  223,  223,  223,  223,  223,  223,  223,  259,
-
-      280,  280,  280,  280,  347,  361,  283,  260,  310,  311,
-      221,  126,  127,  127,  127,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  145,   82,  104,
-      591,  126,  126,  126,  126,  423,  271,  434,   82,   82,
-      150,  146,  146,  146,  146,  264,  272,  145,  323,  424,
-      150,  150,   82,   82,  126,  130,  126,  661,  305,  280,
-      280,  280,  280,  658,  150,  150,  280,  280,  280,  280,
-      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
-      280,  280,  126,  126,  126,  242,  242,  242,  243,  281,
-      126,  126,  126,  126,  126,  126,  286,  147,  126,  126,
-
-      282,   82,   82,   82,  126,  126,  104,  126,  285,  280,
-      280,  280,  280,  150,  150,  150,  290,  147,  435,  286,
-      327,   82,  288,   82,  374,   82,   82,  126,  130,  298,
-      298,  298,  298,  150,   82,  150,   82,  150,  150,  289,
-      435,  385,  298,  298,  298,  298,  150,  104,  150,  304,
-      466,  436,  291,  358,  303,  126,  126,  245,  245,  245,
-      245,  245,  245,  245,  245,  245,  245,  245,  245,   82,
-      246,  373,  301,  437,  247,  271,  654,   82,   82,   82,
-       82,  248,  288,  249,  130,  250,  250,  250,  250,  250,
-      250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-
-      250,  250,  250,  251,  465,  623,  465,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,   82,
-       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
-      247,   82,  135,  135,  135,  135,  135,  135,  135,  135,
-      135,  135,  135,  135,  254,  330,  330,  330,  330,  542,
-      378,  255,  255,  255,  255,  379,  380,  256,  543,  257,
-      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
-      257,  257,  257,  257,  257,  257,  257,  257,  331,  331,
-      331,  331,  193,  307,  509,  258,   95,   95,   95,  312,
-      312,  312,  312,   82,  332,  332,  332,  332,  149,   98,
-
-      654,  155,  155,  155,  155,  150,  513,  509,  419,  157,
-      157,  157,  157,  157,  157,  157,  157,  149,  157,  149,
-      149,  157,  157,  157,  149,  149,  157,  149,  514,  104,
-      651,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  149,  157,  157,  157,  157,  157,  149,
-      149,  149,  149,  149,  149,  149,   82,   82,  104,  222,
-      696,  333,  333,  333,  333,   82,  222,  696,  150,  150,
-      420,  193,  307,  298,  298,  298,  298,  150,  197,  197,
-      197,  197,  198,  334,  334,  334,  334,  456,  222,  696,
-      365,  365,  365,  365,  276,  276,  276,  276,  276,  276,
-
-      276,  276,  276,  276,  276,  276,  277,  302,  386,  242,
-      242,  242,  243,  278,  402,  222,  696,  387,  415,  415,
-      415,  415,  222,  444,   82,  318,  318,  318,  318,  222,
-      333,  333,  333,  333,  457,  277,  150,  360,  337,  279,
-      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
-      279,  222,  130,  212,  130,  213,  333,  333,  333,  333,
-      214,  649,  277,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,   82,  246,  361,  222,  353,
-      293,  218,  218,  149,  149,  149,  149,  294,  343,  249,
-      648,  295,  295,  295,  295,  295,  295,  295,  295,  295,
-
-      295,  295,  295,  295,  295,  295,  295,  295,  295,  296,
-      445,  445,  445,  297,  297,  297,  297,  297,  297,  297,
-      297,  297,  297,  297,  297,  149,  149,  149,  149,  149,
-      149,  149,  149,  149,  149,  149,  293,  149,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-       82,  254,  450,  446,  444,  149,  220,  220,  298,  298,
-      298,  298,  150,  647,  256,  451,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  519,  647,  104,  149,  149,
-      149,  149,  300,  149,  149,  149,  149,  149,  149,  149,
-
-      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
-      149,  149,  149,  223,  223,  223,  223,  223,  223,  223,
-      223,  223,  223,  223,  223,  335,  426,  426,  426,  426,
-      456,  104,  336,  369,  337,  254,  608,   82,  333,  333,
-      333,  333,  366,  366,  366,  366,  370,  104,  256,  150,
-      449,  449,  449,  449,  335,  530,  384,  530,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      344,  644,   82,  643,  454,  104,  368,  455,   82,  398,
-      665,  335,  354,  354,  150,  354,  354,  354,  354,  354,
-      150,  354,  354,  354,  354,  568,  354,  354,   82,  696,
-
-      696,  145,  354,  354,  354,  354,  696,  696,  696,  696,
-      150,   82,  696,  696,  397,  377,  377,  377,  377,  388,
-      388,  388,  388,  150,   82,  354,  354,  354,  397,  397,
-       82,   82,  389,  389,  389,  389,  150,  532,  395,   82,
-      696,  145,  150,  150,  400,  425,  356,  389,  389,  389,
-      389,  150,  411,  354,  354,  126,  242,  242,  242,  243,
-      641,  126,  126,  126,  126,  126,  126,  104,  346,  126,
-      126,  147,   82,   82,   82,  126,  126,  104,  126,  393,
-      389,  389,  389,  389,  150,  150,  150,  104,   82,   82,
-       82,  396,  364,  399,  410,   82,   82,  373,  126,  130,
-
-      150,  150,  150,  640,  193,  485,   82,  150,  150,  486,
-      635,  147,  394,  396,  389,  389,  389,  389,  150,  609,
-      634,   82,   82,  401,  696,  369,  126,  126,  254,  406,
-      406,  406,  406,  150,  150,  696,  393,  696,  696,  622,
-      592,  256,  696,  257,  257,  257,  257,  257,  257,  257,
-      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
-      257,  257,  394,  402,  696,  696,  696,  617,  511,  258,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  369,  421,   82,  224,  224,  329,  104,  617,
-      374,  696,  421,  511,  329,  370,  150,  371,  371,  371,
-
-      371,  371,  371,  371,  371,  371,  371,  371,  371,  371,
-      371,  371,  371,  371,  371,  371,  253,  253,  193,  307,
-      104,   82,  336,  372,   82,  414,  414,  414,  414,  336,
-       90,  337,  336,  150,   82,  633,  150,  409,  461,  336,
-      460,  696,   92,  636,   82,  422,  150,   94,  462,  145,
-       99,  336,  271,  104,  422,  101,  150,  445,  445,  445,
-      483,  336,  279,  279,  279,  279,  279,  279,  279,  279,
-      279,  279,  279,  279,  390,   82,  531,  450,  336,   82,
-      632,  391,  469,  337,   82,  450,  502,  150,  336,   82,
-      696,  150,   82,   82,   82,   82,  104,  629,  451,  503,
-
-      446,  650,  472,  390,  520,  520,  520,  392,  392,  392,
-      392,  392,  392,  392,  392,  392,  392,  392,  392,  147,
-      628,   82,  621,  470,  473,  487,  487,  487,  487,  620,
-      390,  354,  354,  150,  354,  354,  354,  354,  354,  355,
-      354,  354,  354,  354,  145,  354,  354,  521,  671,  696,
-      271,  404,  354,  354,  354,   82,   82,   82,  459,  459,
-      459,  459,  696,  468,  468,  468,  468,  150,  150,  150,
-       82,  616,  500,  145,  354,  354,  354,   82,   82,  455,
-      523,  599,  150,  433,  501,  525,  104,   82,   82,  150,
-      150,  111,  433,  456,   82,  405,   82,   82,  478,  150,
-
-      150,  477,  354,  354,   82,  254,  150,   82,  150,  150,
-      363,  363,  479,  615,  147,  542,  150,  104,  256,  150,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  471,
-      482,  675,  617,  526,  618,  538,  300,  297,  297,  297,
-      297,  297,  297,  297,  297,  297,  297,  297,  297,  369,
-      145,  530,  384,  530,  617,  650,  619,  607,  606,  605,
-      601,  541,  370,  625,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  601,  600,  626,  582,  659,  597,  617,
-
-      408,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  438,  438,  510,  438,  438,  438,  438,
-      438,  617,  438,  438,  438,  438,  502,  438,  438,   82,
-      147,   82,  547,  438,  438,  438,  438,   82,  450,  696,
-      476,  150,  149,  150,  511,  149,  149,  149,  149,  150,
-       82,  451,   82,  512,  476,  476,  438,  438,  438,  596,
-       82,  551,  150,  440,  150,  384,  111,  590,  562,  511,
-      535,   82,  150,  536,  589,  552,   82,  440,  440,  534,
-      598,  271,  563,  150,  438,  438,  354,  354,  150,  354,
-      354,  354,  354,  354,  599,  354,  354,  354,  354,  624,
-
-      354,  354,  534,  617,  193,  307,  354,  354,  354,  354,
-      539,  544,  544,  544,  544,   82,   82,  548,  520,  520,
-      520,  145,   82,  659,  617,  617,  617,  150,  150,  354,
-      354,  354,  571,   82,  150,  565,  565,  565,  565,   82,
-      679,  145,  588,   82,   82,  150,  617,  563,  617,  587,
-      587,  150,  576,  570,  185,  150,  150,  354,  354,  354,
-      354,  521,  354,  354,  354,  354,  354,  586,  354,  354,
-      354,  354,   82,  354,  354,  573,   82,  575,   82,  354,
-      354,  354,  354,  656,  150,  193,  485,  585,  150,  574,
-      150,  147,  544,  544,  544,  544,   82,  657,  145,  593,
-
-      617,  584,  354,  354,  354,  145,  145,  593,  150,  145,
-      263,  147,  565,  565,  565,  565,  595,  614,  583,  574,
-      627,  555,  617,  679,  555,  582,  552,  581,  646,  594,
-      354,  354,  392,  392,  392,  392,  392,  392,  392,  392,
-      392,  392,  392,  392,  438,  438,  580,  438,  438,  438,
-      438,  438,  439,  438,  438,  438,  438,   82,  438,  438,
-      145,  579,  384,  384,  475,  438,  438,  438,  526,  150,
-      578,  642,  548,  617,  630,  147,  147,  577,  645,  147,
-      617,  145,  384,  384,  384,  567,  145,  438,  438,  438,
-      639,  639,  655,  263,  476,  617,  631,  668,  679,  613,
-
-      145,  566,  617,  265,  455,  384,  523,  384,  476,  476,
-      564,  673,  639,  639,  384,  438,  438,  354,  354,  384,
-      354,  354,  354,  354,  354,  355,  354,  354,  354,  354,
-      147,  354,  354,  639,  561,  639,  652,  404,  354,  354,
-      354,  560,  639,  559,  558,  557,  556,  639,  555,  139,
-      553,  147,  666,  384,  145,  639,  147,  639,  653,  384,
-      354,  354,  354,  667,  639,  676,  679,  679,  694,  639,
-      147,  679,  679,  679,  679,  679,  550,  680,  681,  672,
-      549,  639,  682,  683,  684,  685,  686,  639,  354,  354,
-      354,  354,  548,  354,  354,  354,  354,  354,  355,  354,
-
-      354,  354,  354,  639,  354,  354,  547,  672,  546,  639,
-      404,  354,  354,  354,  499,  499,  497,  497,  495,  495,
-      493,  493,  491,  491,  147,  489,  489,  384,  537,  679,
-      528,  527,  216,  354,  354,  354,  263,  263,  209,  373,
-      687,  263,  263,  263,  263,  263,  679,  524,  455,  523,
-      448,  111,  518,  679,  679,  679,  679,  688,  679,  517,
-      516,  354,  354,  502,  689,  690,  691,  692,  515,  693,
-      433,  111,  508,  507,  506,  505,  503,  424,  504,  504,
-      504,  504,  504,  504,  504,  504,  504,  504,  504,  504,
-      504,  504,  504,  504,  504,  504,  504,  438,  438,  263,
-
-      438,  438,  438,  438,  438,  499,  438,  438,  438,  438,
-      497,  438,  438,  495,  493,  491,  263,  438,  438,  438,
-      438,  489,  425,  263,  263,  263,  263,  196,  263,  484,
-      480,  268,  384,  464,  463,   86,  210,  458,  455,  373,
-      438,  438,  438,  364,  448,  443,  442,  441,  210,  432,
-      431,  430,  429,  428,  427,  337,  425,  337,  216,  216,
-      210,  209,  209,  209,  316,  316,  314,  314,  438,  438,
-      438,  438,  196,  438,  438,  438,  438,  438,  412,  438,
-      438,  438,  438,  364,  438,  438,  268,  268,  267,  384,
-      438,  438,  438,  438,  267,  353,  376,  344,  343,  373,
-
-      254,  364,  364,  246,  352,  351,  350,  349,  345,  342,
-      341,  340,  339,  438,  438,  438,  327,  327,  326,  325,
-      440,  324,  323,  323,  322,  321,  320,  319,  316,  314,
-      307,  306,  268,  287,  440,  440,  268,  268,  267,  265,
-      263,  438,  438,   82,  502,  262,  237,  210,  261,  235,
-      130,  240,  238,  210,  236,  150,  234,  503,  233,  533,
-      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
-      533,  533,  533,  533,  533,  533,  533,  533,  438,  438,
-      233,  438,  438,  438,  438,  438,  439,  438,  438,  438,
-      438,  232,  438,  438,  104,  216,  215,  209,  475,  438,
-
-      438,  438,  210,  209,  201,  193,  191,  173,  172,  169,
-      168,  165,  164,  148,  122,  142,  139,  122,  121,  118,
-      117,  438,  438,  438,  114,  113,  104,   86,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  438,
-      438,  602,  602,  696,  602,  602,  602,  602,  602,  696,
-      602,  602,  602,  602,  696,  602,  602,  696,  696,  696,
-      696,  602,  602,  602,  602,  696,  696,  696,  696,  696,
-      696,  604,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  602,  602,  602,  696,  696,  696,
-
-      696,  696,  696,  604,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  602,  602,  602,  602,  696,  602,  602,  602,
-      602,  602,  603,  602,  602,  602,  602,  696,  602,  602,
-      696,  696,  696,  696,  611,  602,  602,  602,  696,  696,
-      696,  696,  696,  696,  612,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  602,  602,  602,
-      696,  696,  696,  696,  696,  696,  612,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  602,  602,  602,  602,  696,
-
-      602,  602,  602,  602,  602,  696,  602,  602,  602,  602,
-      696,  602,  602,  696,  696,  696,  696,  602,  602,  602,
-      602,  696,  696,  696,  696,  696,  696,  604,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      602,  602,  602,  696,  696,  696,  696,  696,  696,  604,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  602,  602,
-      602,  602,  696,  602,  602,  602,  602,  602,  603,  602,
-      602,  602,  602,  696,  602,  602,  696,  696,  696,  696,
-      611,  602,  602,  602,  696,  696,  696,  696,  696,  696,
-
-      612,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  602,  602,  602,  696,  696,  696,  696,
-      696,  696,  612,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  602,  602,   82,  696,  696,  696,   82,   82,  696,
-      696,   82,   82,   82,   82,   82,   82,   82,   82,   83,
-       83,   83,   83,   83,  696,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   89,   89,
-      696,  696,  696,   89,   89,   89,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-
-      103,  103,  103,  103,  103,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  144,  144,  144,  144,  144,  144,
-      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
-      144,  144,  144,  149,  696,  696,  696,  149,  149,  149,
-      696,  149,  149,  149,  149,  149,  149,  149,  149,  192,
-      192,  192,  192,  192,  696,  192,  192,  192,  192,  192,
-      192,  192,  192,  192,  192,  192,  192,  192,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  211,  211,  696,
-
-      696,  696,  696,  696,  696,  696,  696,  211,  696,  696,
-      211,  211,  696,  211,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  244,  244,  244,  244,  244,  244,  244,
-      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
-      244,  244,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  266,  266,  266,  266,  266,  266,  266,  266,  266,
-      266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  192,
-      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
-      192,  192,  192,  192,  192,  192,  192,  192,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  195,  195,  195,
-      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
-      195,  195,  195,  195,  195,  195,  309,  309,  309,  309,
-      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
-      309,  309,  309,  309,  309,  313,  313,  696,  313,  313,
-      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
-
-      313,  313,  313,  313,  315,  315,  696,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  317,  696,  317,  696,  696,  696,  317,
-      317,  317,  696,  696,  317,  355,  355,  696,  355,  355,
-      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
-      355,  355,  355,  355,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  244,  244,  244,  244,  244,  244,  244,  244,  244,
-      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
-      362,  362,  362,  367,  696,  696,  696,  367,  696,  367,
-      367,  367,  367,  696,  367,  266,  266,  266,  266,  266,
-      266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
-      266,  266,  266,  266,  383,  383,  383,  383,  383,  383,
-      383,  383,  383,  383,  383,  383,  383,  383,  383,  383,
-      383,  383,  383,  149,  696,  696,  696,  149,  149,  149,
-      696,  149,  149,  149,  149,  149,  149,  149,  149,  273,
-
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  403,  403,  696,
-      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
-      403,  403,  403,  403,  403,  403,  309,  309,  309,  309,
-      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
-      309,  309,  309,  309,  309,  413,  413,  413,  413,  696,
-      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
-      413,  413,  413,  413,  192,  192,  192,  192,  192,  192,
-
-      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
-      192,  192,  192,  313,  313,  696,  313,  313,  313,  313,
-      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
-      313,  313,  315,  315,  696,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  416,  696,  416,  416,  696,  696,  416,  416,  416,
-      696,  696,  416,  439,  439,  696,  439,  439,  439,  439,
-      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
-      439,  439,  354,  354,  696,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  355,  355,  696,  355,  355,  355,  355,  355,  355,
-      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  447,  447,  447,
-      447,  447,  447,  447,  447,  447,  447,  447,  447,  447,
-      447,  447,  447,  447,  447,  447,  452,  452,  696,  696,
-
-      452,  452,  696,  452,  452,  452,  452,  452,  452,  452,
-      452,  452,  453,  696,  696,  696,  696,  696,  453,  453,
-      453,  453,  696,  453,  383,  383,  383,  383,  383,  383,
-      383,  383,  383,  383,  383,  383,  383,  383,  383,  383,
-      383,  383,  383,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  474,  474,  696,  474,  474,  474,  474,  474,
-      474,  474,  474,  474,  474,  474,  474,  474,  474,  474,
-      474,  403,  403,  696,  403,  403,  403,  403,  403,  403,
-      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
-
-      481,  481,  696,  696,  481,  481,  481,  481,  481,  481,
-      481,  481,  481,  481,  481,  481,  413,  413,  413,  413,
-      696,  413,  413,  413,  413,  413,  413,  413,  413,  413,
-      413,  413,  413,  413,  413,  192,  192,  192,  192,  192,
-      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
-      192,  192,  192,  192,  488,  488,  696,  488,  488,  488,
-      488,  488,  488,  488,  488,  488,  488,  488,  488,  488,
-      488,  488,  488,  490,  490,  696,  490,  490,  490,  490,
-      490,  490,  490,  490,  490,  490,  490,  490,  490,  490,
-      490,  490,  492,  492,  696,  492,  492,  492,  492,  492,
-
-      492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
-      492,  494,  494,  696,  494,  494,  494,  494,  494,  494,
-      494,  494,  494,  494,  494,  494,  494,  494,  494,  494,
-      496,  496,  696,  496,  496,  496,  496,  496,  496,  496,
-      496,  496,  496,  496,  496,  496,  496,  496,  496,  498,
-      498,  696,  498,  498,  498,  498,  498,  498,  498,  498,
-      498,  498,  498,  498,  498,  498,  498,  498,  438,  438,
-      696,  438,  438,  438,  438,  438,  438,  438,  438,  438,
-      438,  438,  438,  438,  438,  438,  438,  439,  439,  696,
-      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
-
-      439,  439,  439,  439,  439,  439,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  447,  447,  447,  447,  447,  447,
-      447,  447,  447,  447,  447,  447,  447,  447,  447,  447,
-      447,  447,  447,  522,  696,  696,  696,  696,  696,  522,
-      522,  522,  522,  522,  522,  522,  522,  522,  529,  529,
-      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
-      529,  529,  529,  529,  529,  529,  529,  103,  103,  103,
-
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  545,  696,  696,  696,  696,
-      696,  545,  545,  545,  545,  554,  554,  696,  554,  554,
-      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
-      554,  554,  554,  554,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  603,  603,  696,  603,  603,  603,  603,
-      603,  603,  603,  603,  603,  603,  603,  603,  603,  603,
-
-      603,  603,  610,  610,  696,  610,  610,  610,  610,  610,
-      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
-      610,  602,  602,  696,  602,  602,  602,  602,  602,  602,
-      602,  602,  602,  602,  602,  602,  602,  602,  602,  602,
-      638,  638,  638,  638,  638,  638,  638,  638,  638,  638,
-      638,  638,  638,  638,  638,  638,  638,  638,  638,  660,
-      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
-      660,  660,  660,  660,  660,  660,  660,  660,  663,  663,
-      663,  663,  663,  663,  663,  663,  663,  663,  663,  663,
-      663,  663,  663,  663,  663,  663,  663,  678,  678,  678,
-
-      678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
-      678,  678,  678,  678,  678,  678,    3,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696
-    } ;
-
-static yyconst short int yy_chk[4591] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    5,    6,    6,    6,
-        6,    8,   10,   10,   11,   19,   22,   46,    8,    8,
-        8,    8,   16,  156,   11,   13,   11,   11,    5,   46,
-       58,   11,   12,   12,   12,   13,  156,   13,   19,   12,
-       22,  694,   13,   86,   12,   12,   12,   12,   12,   12,
-       12,   12,   50,   50,   58,   12,   12,   12,   12,   12,
-
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   25,   28,   16,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   15,   52,   15,   86,   15,   15,   15,   15,
-       15,   15,   40,  674,   15,   29,  153,   29,   29,   90,
-       28,   90,   29,  670,   25,   25,   90,   35,   35,   28,
-      153,   25,   55,   15,   35,   35,   35,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   31,
-       31,  532,   31,   31,   31,   55,   99,   52,   99,   40,
-
-       15,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   63,   84,   84,
-      144,   26,   26,   26,   26,   30,   30,   30,   30,   30,
-       32,   32,   34,   34,   32,   32,   32,   33,   34,   34,
-       34,   43,   30,  532,   26,   26,   26,   33,   33,   36,
-       36,   49,   33,   33,   33,   37,   37,   36,   36,   36,
-       33,   49,   63,   49,   37,   37,   37,  676,   49,   91,
-       91,   63,   26,   26,   27,   38,   38,   27,   27,   27,
-       27,   27,   61,   47,  669,   38,   38,  217,   47,   38,
-      144,   43,   43,   47,  663,   47,   47,  217,   43,   64,
-
-       47,   64,   64,   27,  217,   44,   64,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   44,
-       44,   44,   44,   65,   65,   65,   65,   65,   69,   69,
-       27,   74,   61,   61,   69,   69,   69,  676,  149,   61,
-       65,   66,   66,   74,   66,   66,   66,   67,   67,   68,
-      149,   67,   67,   67,   70,   70,   76,  158,  158,   68,
-       68,   70,   70,   70,   68,   68,   68,  662,   76,   74,
-       72,   72,   68,  192,  192,   44,   48,   48,   48,   72,
-       72,   72,  660,   48,   81,   81,   81,   81,   48,   48,
-       48,   48,   48,   48,   48,   48,  193,  193,   76,   48,
-
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   95,   95,
-       95,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   51,  194,  194,   51,
-      128,   51,   77,   51,   51,   51,   51,   51,   51,   71,
-       71,   51,   73,   73,   77,  196,  196,   71,   71,   71,
-       75,  157,   73,   73,  258,   75,   73,   98,   98,   98,
-       51,  128,   75,  157,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,  110,  110,  110,  110,
-
-      271,  387,  112,  112,  112,  112,  658,   51,   62,   77,
-       78,  166,  271,   62,   79,   78,   62,   62,   62,   62,
-       62,  258,   75,  166,  323,   79,   85,   78,   79,   79,
-       79,   79,  112,   85,   85,   85,   85,   85,  113,  113,
-      113,  113,   62,  166,  273,  273,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,  100,  387,
-       78,   78,   96,   96,   96,  171,  176,   78,  100,   62,
-      100,  111,  113,  111,   96,  100,   96,  171,  176,  111,
-      656,   96,  111,  623,   79,   89,  323,   89,   89,   89,
-       89,   89,   89,  111,  171,  111,  123,  123,  123,  123,
-
-      167,  234,  111,  136,  136,  136,  136,  111,  118,  118,
-      118,  118,  167,  650,   89,  234,  234,  176,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-      121,  121,  121,  121,  123,  241,  124,  124,  124,  124,
-      623,   89,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  108,  151,  649,  118,  167,  233,
-      325,  108,  325,  151,  151,  243,  241,  151,  165,  137,
-      137,  137,  137,  138,  138,  138,  138,  267,  121,  124,
-      165,  345,  233,  108,  308,  308,  267,  108,  108,  108,
-      108,  108,  108,  108,  108,  108,  108,  108,  108,  137,
-
-      162,  162,  162,  162,  233,  243,  165,  138,  309,  309,
-      108,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  146,  152,  568,
-      568,  127,  127,  127,  127,  329,  152,  345,  154,  185,
-      152,  146,  146,  146,  146,  146,  154,  190,  270,  329,
-      154,  185,  168,  270,  127,  127,  127,  648,  190,  163,
-      163,  163,  163,  644,  168,  270,  164,  164,  164,  164,
-      169,  169,  169,  169,  172,  172,  172,  172,  174,  174,
-      174,  174,  127,  127,  129,  129,  129,  129,  129,  163,
-      129,  129,  129,  129,  129,  129,  185,  146,  129,  129,
-
-      164,  173,  186,  189,  129,  129,  386,  129,  168,  175,
-      175,  175,  175,  173,  186,  189,  174,  190,  346,  169,
-      272,  182,  172,  187,  368,  272,  188,  129,  129,  182,
-      182,  182,  182,  182,  183,  187,  269,  272,  188,  173,
-      346,  269,  183,  183,  183,  183,  183,  609,  269,  189,
-      386,  347,  175,  357,  186,  129,  129,  131,  131,  131,
-      131,  131,  131,  131,  131,  131,  131,  131,  131,  132,
-      132,  368,  183,  347,  132,  187,  641,  132,  132,  132,
-      132,  132,  188,  132,  357,  132,  132,  132,  132,  132,
-      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
-
-      132,  132,  132,  132,  384,  609,  384,  132,  132,  132,
-      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
-      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
-      132,  132,  134,  134,  134,  134,  134,  134,  134,  134,
-      134,  134,  134,  134,  135,  218,  218,  218,  218,  484,
-      265,  135,  135,  135,  135,  265,  265,  135,  484,  135,
-      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
-      135,  135,  135,  135,  135,  135,  135,  135,  219,  219,
-      219,  219,  198,  198,  432,  135,  155,  155,  155,  198,
-      198,  198,  198,  155,  220,  220,  220,  220,  155,  155,
-
-      640,  155,  155,  155,  155,  155,  435,  432,  327,  155,
-      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155,  155,  155,  155,  435,  637,
-      637,  155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155,  155,  159,  304,  275,  202,
-      222,  223,  223,  223,  223,  184,  202,  222,  159,  304,
-      327,  197,  197,  184,  184,  184,  184,  184,  197,  197,
-      197,  197,  197,  224,  224,  224,  224,  372,  202,  222,
-      252,  252,  252,  252,  159,  159,  159,  159,  159,  159,
-
-      159,  159,  159,  159,  159,  159,  160,  184,  275,  242,
-      242,  242,  242,  160,  304,  202,  222,  275,  317,  317,
-      317,  317,  203,  358,  388,  203,  203,  203,  203,  203,
-      239,  239,  239,  239,  372,  160,  388,  359,  388,  160,
-      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
-      160,  203,  242,  461,  358,  461,  230,  230,  230,  230,
-      461,  635,  160,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  178,  178,  359,  203,  239,
-      178,  707,  707,  178,  178,  178,  178,  178,  230,  178,
-      634,  178,  178,  178,  178,  178,  178,  178,  178,  178,
-
-      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
-      360,  360,  360,  178,  178,  178,  178,  178,  178,  178,
-      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
-      178,  178,  178,  178,  178,  178,  178,  178,  180,  180,
-      180,  180,  180,  180,  180,  180,  180,  180,  180,  180,
-      181,  181,  449,  360,  444,  181,  708,  708,  181,  181,
-      181,  181,  181,  633,  181,  449,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  444,  632,  591,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  225,  338,  338,  338,  338,
-      454,  651,  225,  366,  225,  253,  591,  286,  231,  231,
-      231,  231,  253,  253,  253,  253,  366,  531,  253,  286,
-      363,  363,  363,  363,  225,  465,  465,  465,  225,  225,
-      225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
-      231,  629,  285,  628,  366,  467,  253,  454,  283,  286,
-      651,  225,  240,  240,  285,  240,  240,  240,  240,  240,
-      283,  240,  240,  240,  240,  531,  240,  240,  288,  254,
-
-      450,  264,  240,  240,  240,  240,  254,  254,  254,  254,
-      288,  276,  254,  450,  285,  264,  264,  264,  264,  276,
-      276,  276,  276,  276,  279,  240,  240,  240,  285,  285,
-      398,  389,  279,  279,  279,  279,  279,  467,  283,  281,
-      254,  305,  398,  389,  288,  389,  240,  281,  281,  281,
-      281,  281,  305,  240,  240,  244,  244,  244,  244,  244,
-      626,  244,  244,  244,  244,  244,  244,  592,  284,  244,
-      244,  264,  282,  284,  289,  244,  244,  569,  244,  281,
-      282,  282,  282,  282,  282,  284,  289,  608,  287,  303,
-      295,  284,  295,  287,  303,  299,  301,  299,  244,  244,
-
-      287,  303,  295,  625,  414,  414,  290,  299,  301,  414,
-      621,  305,  282,  284,  290,  290,  290,  290,  290,  592,
-      620,  297,  302,  289,  369,  370,  244,  244,  245,  297,
-      297,  297,  297,  297,  302,  336,  301,  369,  370,  608,
-      569,  245,  336,  245,  245,  245,  245,  245,  245,  245,
-      245,  245,  245,  245,  245,  245,  245,  245,  245,  245,
-      245,  245,  302,  290,  336,  369,  370,  601,  584,  245,
-      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
-      247,  247,  255,  328,  300,  709,  709,  328,  622,  601,
-      300,  336,  579,  584,  328,  255,  300,  255,  255,  255,
-
-      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  712,  712,  312,  312,
-      466,  409,  318,  255,  277,  312,  312,  312,  312,  318,
-      379,  318,  332,  409,  393,  619,  277,  300,  380,  332,
-      379,  332,  379,  622,  385,  328,  393,  379,  380,  411,
-      380,  318,  385,  636,  579,  380,  385,  445,  445,  445,
-      411,  332,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  280,  394,  466,  451,  318,  396,
-      618,  280,  393,  280,  365,  365,  487,  394,  332,  365,
-      451,  396,  365,  365,  365,  365,  665,  616,  365,  487,
-
-      445,  636,  396,  280,  448,  448,  448,  280,  280,  280,
-      280,  280,  280,  280,  280,  280,  280,  280,  280,  411,
-      615,  399,  607,  394,  396,  416,  416,  416,  416,  606,
-      280,  291,  291,  399,  291,  291,  291,  291,  291,  291,
-      291,  291,  291,  291,  377,  291,  291,  448,  665,  502,
-      399,  291,  291,  291,  291,  392,  401,  400,  377,  377,
-      377,  377,  502,  392,  392,  392,  392,  392,  401,  400,
-      402,  600,  424,  459,  291,  291,  291,  407,  481,  407,
-      481,  598,  402,  395,  424,  459,  671,  408,  395,  407,
-      481,  469,  471,  408,  477,  291,  469,  471,  401,  408,
-
-      395,  400,  291,  291,  292,  292,  477,  482,  469,  471,
-      729,  729,  402,  597,  377,  596,  292,  675,  292,  482,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  395,
-      408,  671,  602,  459,  604,  477,  292,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  298,
-      483,  530,  530,  530,  602,  675,  604,  590,  589,  588,
-      586,  483,  298,  612,  298,  298,  298,  298,  298,  298,
-      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
-      298,  298,  298,  585,  583,  612,  581,  645,  580,  645,
-
-      298,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  348,  348,  433,  348,  348,  348,  348,
-      348,  645,  348,  348,  348,  348,  503,  348,  348,  410,
-      483,  473,  578,  348,  348,  348,  348,  406,  406,  503,
-      476,  410,  406,  473,  433,  406,  406,  406,  406,  406,
-      472,  406,  470,  433,  476,  476,  348,  348,  348,  577,
-      478,  507,  472,  348,  470,  572,  479,  567,  517,  433,
-      472,  479,  478,  473,  566,  507,  536,  348,  348,  470,
-      582,  410,  517,  479,  348,  348,  355,  355,  536,  355,
-      355,  355,  355,  355,  582,  355,  355,  355,  355,  611,
-
-      355,  355,  470,  646,  486,  486,  355,  355,  355,  355,
-      478,  486,  486,  486,  486,  533,  534,  533,  520,  520,
-      520,  525,  535,  646,  659,  646,  611,  533,  534,  355,
-      355,  355,  536,  538,  535,  525,  525,  525,  525,  539,
-      677,  541,  564,  571,  574,  538,  659,  562,  611,  561,
-      560,  539,  541,  535,  534,  571,  574,  355,  355,  356,
-      356,  520,  356,  356,  356,  356,  356,  559,  356,  356,
-      356,  356,  575,  356,  356,  538,  570,  539,  573,  356,
-      356,  356,  356,  643,  575,  544,  544,  558,  570,  538,
-      573,  525,  544,  544,  544,  544,  613,  643,  565,  571,
-
-      631,  557,  356,  356,  356,  576,  595,  570,  613,  614,
-      677,  541,  565,  565,  565,  565,  576,  595,  556,  573,
-      614,  555,  631,  678,  554,  553,  551,  550,  631,  575,
-      356,  356,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  397,  397,  549,  397,  397,  397,
-      397,  397,  397,  397,  397,  397,  397,  594,  397,  397,
-      627,  547,  624,  638,  397,  397,  397,  397,  565,  594,
-      546,  627,  545,  630,  617,  576,  595,  543,  630,  614,
-      617,  642,  540,  537,  529,  528,  655,  397,  397,  397,
-      624,  638,  642,  678,  397,  630,  617,  655,  693,  594,
-
-      668,  527,  617,  526,  524,  672,  522,  653,  397,  397,
-      518,  668,  624,  638,  639,  397,  397,  403,  403,  652,
-      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
-      627,  403,  403,  672,  516,  653,  639,  403,  403,  403,
-      403,  515,  639,  514,  513,  512,  511,  652,  510,  509,
-      508,  642,  652,  666,  673,  672,  655,  653,  639,  667,
-      403,  403,  403,  653,  639,  673,  679,  680,  693,  652,
-      668,  681,  682,  683,  684,  685,  506,  679,  680,  666,
-      505,  666,  681,  682,  683,  684,  685,  667,  403,  403,
-      405,  405,  504,  405,  405,  405,  405,  405,  405,  405,
-
-      405,  405,  405,  666,  405,  405,  501,  667,  500,  667,
-      405,  405,  405,  405,  499,  498,  497,  496,  495,  494,
-      493,  492,  491,  490,  673,  489,  488,  480,  475,  686,
-      464,  463,  462,  405,  405,  405,  679,  680,  460,  458,
-      686,  681,  682,  683,  684,  685,  687,  456,  453,  452,
-      447,  443,  442,  688,  689,  690,  691,  687,  692,  441,
-      437,  405,  405,  426,  688,  689,  690,  691,  436,  692,
-      434,  431,  430,  429,  428,  427,  426,  423,  426,  426,
-      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
-      426,  426,  426,  426,  426,  426,  426,  439,  439,  686,
-
-      439,  439,  439,  439,  439,  422,  439,  439,  439,  439,
-      421,  439,  439,  420,  419,  418,  687,  439,  439,  439,
-      439,  417,  415,  688,  689,  690,  691,  413,  692,  412,
-      404,  391,  383,  382,  381,  378,  376,  374,  371,  367,
-      439,  439,  439,  362,  361,  353,  352,  351,  350,  344,
-      343,  342,  341,  340,  339,  334,  333,  331,  326,  324,
-      322,  321,  320,  319,  316,  315,  314,  313,  439,  439,
-      440,  440,  310,  440,  440,  440,  440,  440,  306,  440,
-      440,  440,  440,  296,  440,  440,  294,  278,  274,  268,
-      440,  440,  440,  440,  266,  262,  261,  260,  259,  257,
-
-      256,  251,  250,  249,  238,  237,  236,  235,  232,  229,
-      228,  227,  226,  440,  440,  440,  216,  215,  214,  213,
-      440,  212,  209,  208,  207,  206,  205,  204,  200,  199,
-      195,  191,  179,  170,  440,  440,  161,  150,  148,  147,
-      145,  440,  440,  468,  468,  143,  142,  141,  140,  139,
-      126,  125,  122,  120,  119,  468,  117,  468,  116,  468,
-      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      468,  468,  468,  468,  468,  468,  468,  468,  474,  474,
-      115,  474,  474,  474,  474,  474,  474,  474,  474,  474,
-      474,  114,  474,  474,  103,  101,   97,   94,  474,  474,
-
-      474,  474,   93,   92,   88,   83,   80,   60,   59,   57,
-       56,   54,   53,   45,   42,   41,   39,   24,   23,   21,
-       20,  474,  474,  474,   18,   17,   14,    9,    3,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  474,
-      474,  587,  587,    0,  587,  587,  587,  587,  587,    0,
-      587,  587,  587,  587,    0,  587,  587,    0,    0,    0,
-        0,  587,  587,  587,  587,    0,    0,    0,    0,    0,
-        0,  587,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  587,  587,  587,    0,    0,    0,
-
-        0,    0,    0,  587,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  587,  587,  593,  593,    0,  593,  593,  593,
-      593,  593,  593,  593,  593,  593,  593,    0,  593,  593,
-        0,    0,    0,    0,  593,  593,  593,  593,    0,    0,
-        0,    0,    0,    0,  593,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  593,  593,  593,
-        0,    0,    0,    0,    0,    0,  593,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  593,  593,  603,  603,    0,
-
-      603,  603,  603,  603,  603,    0,  603,  603,  603,  603,
-        0,  603,  603,    0,    0,    0,    0,  603,  603,  603,
-      603,    0,    0,    0,    0,    0,    0,  603,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      603,  603,  603,    0,    0,    0,    0,    0,    0,  603,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  603,  603,
-      610,  610,    0,  610,  610,  610,  610,  610,  610,  610,
-      610,  610,  610,    0,  610,  610,    0,    0,    0,    0,
-      610,  610,  610,  610,    0,    0,    0,    0,    0,    0,
-
-      610,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  610,  610,  610,    0,    0,    0,    0,
-        0,    0,  610,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  610,  610,  697,    0,    0,    0,  697,  697,    0,
-        0,  697,  697,  697,  697,  697,  697,  697,  697,  698,
-      698,  698,  698,  698,    0,  698,  698,  698,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  698,  699,  699,
-        0,    0,    0,  699,  699,  699,  700,  700,  700,  700,
-      700,  700,  700,  700,  700,  700,  700,  700,  700,  700,
-
-      700,  700,  700,  700,  700,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  702,  702,  702,  702,  702,  702,
-      702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
-      702,  702,  702,  703,    0,    0,    0,  703,  703,  703,
-        0,  703,  703,  703,  703,  703,  703,  703,  703,  704,
-      704,  704,  704,  704,    0,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  706,  706,    0,
-
-        0,    0,    0,    0,    0,    0,    0,  706,    0,    0,
-      706,  706,    0,  706,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  720,  720,    0,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-
-      720,  720,  720,  720,  721,  721,    0,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  722,    0,  722,    0,    0,    0,  722,
-      722,  722,    0,    0,  722,  723,  723,    0,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      728,  728,  728,  730,    0,    0,    0,  730,    0,  730,
-      730,  730,  730,    0,  730,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  732,  732,  732,  732,  732,  732,
-      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  732,  733,    0,    0,    0,  733,  733,  733,
-        0,  733,  733,  733,  733,  733,  733,  733,  733,  734,
-
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  735,  735,
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,  735,  735,  735,  735,  735,  735,  736,  736,    0,
-      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
-      736,  736,  736,  736,  736,  736,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  738,  738,  738,  738,    0,
-      738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
-      738,  738,  738,  738,  739,  739,  739,  739,  739,  739,
-
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  740,  740,    0,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  741,  741,    0,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  742,    0,  742,  742,    0,    0,  742,  742,  742,
-        0,    0,  742,  743,  743,    0,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  744,  744,    0,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-
-      744,  745,  745,    0,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
-      746,  746,  746,  746,  746,  746,  746,  746,  746,  747,
-      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  747,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  750,  750,    0,    0,
-
-      750,  750,    0,  750,  750,  750,  750,  750,  750,  750,
-      750,  750,  751,    0,    0,    0,    0,    0,  751,  751,
-      751,  751,    0,  751,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  753,  753,  753,  753,  753,  753,  753,
-      753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
-      753,  753,  754,  754,    0,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  755,  755,    0,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-
-      756,  756,    0,    0,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  757,  757,  757,  757,
-        0,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  758,  758,  758,  758,  758,
-      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
-      758,  758,  758,  758,  759,  759,    0,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  760,  760,    0,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  761,  761,    0,  761,  761,  761,  761,  761,
-
-      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
-      761,  762,  762,    0,  762,  762,  762,  762,  762,  762,
-      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
-      763,  763,    0,  763,  763,  763,  763,  763,  763,  763,
-      763,  763,  763,  763,  763,  763,  763,  763,  763,  764,
-      764,    0,  764,  764,  764,  764,  764,  764,  764,  764,
-      764,  764,  764,  764,  764,  764,  764,  764,  765,  765,
-        0,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  766,  766,    0,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-
-      766,  766,  766,  766,  766,  766,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  768,  768,  768,  768,  768,
-      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
-      768,  768,  768,  768,  769,  769,  769,  769,  769,  769,
-      769,  769,  769,  769,  769,  769,  769,  769,  769,  769,
-      769,  769,  769,  770,    0,    0,    0,    0,    0,  770,
-      770,  770,  770,  770,  770,  770,  770,  770,  771,  771,
-      771,  771,  771,  771,  771,  771,  771,  771,  771,  771,
-      771,  771,  771,  771,  771,  771,  771,  772,  772,  772,
-
-      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
-      772,  772,  772,  772,  772,  772,  773,  773,  773,  773,
-      773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
-      773,  773,  773,  773,  773,  774,    0,    0,    0,    0,
-        0,  774,  774,  774,  774,  775,  775,    0,  775,  775,
-      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
-      775,  775,  775,  775,  776,  776,  776,  776,  776,  776,
-      776,  776,  776,  776,  776,  776,  776,  776,  776,  776,
-      776,  776,  776,  777,  777,    0,  777,  777,  777,  777,
-      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
-
-      777,  777,  778,  778,    0,  778,  778,  778,  778,  778,
-      778,  778,  778,  778,  778,  778,  778,  778,  778,  778,
-      778,  779,  779,    0,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  781,
-      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
-      781,  781,  781,  781,  781,  781,  781,  781,  782,  782,
-      782,  782,  782,  782,  782,  782,  782,  782,  782,  782,
-      782,  782,  782,  782,  782,  782,  782,  783,  783,  783,
-
-      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
-      783,  783,  783,  783,  783,  783,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696
-    } ;
-
-static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
-static char *yy_full_match;
-static int yy_lp;
-static int yy_looking_for_trail_begin = 0;
-static int yy_full_lp;
-static int *yy_full_state;
-#define YY_TRAILING_MASK 0x2000
-#define YY_TRAILING_HEAD_MASK 0x4000
-#define REJECT \
-{ \
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
-yy_cp = yy_full_match; /* restore poss. backed-over text */ \
-yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
-yy_state_ptr = yy_full_state; /* restore orig. state */ \
-yy_current_state = *yy_state_ptr; /* restore curr. state */ \
-++yy_lp; \
-goto find_rule; \
-}
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#define INITIAL 0
-/*
- * parser.l -- lex parser of algebraic chess moves for XBoard
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts.
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-/* This parser handles all forms of promotion.
- * The parser resolves ambiguous moves by searching and check-testing.
- * It also parses comments of the form [anything] or (anything).
- *
- * [HGM] Parser extensively modified for bigger boards, Shogi-like syntax,
- * and unknow pieces. All pieces are now mandatory upper case, but can be
- * any letter A-Z. Files must be lower case (as before), but can run upto 'l'.
- * Ranks can be 0-9. The parser returns 0 for off-board files and ranks.
- * For an unknown piece (as mover or promotion piece) it returns
- * IllegalMove, like it does when the piece doesn't match.
- * Promotions can now also be appended Shogi-style, a bare '=' or '+',
- * and this is then returned as promotion character. The piece indicator
- * can be prefixed by a '+' to indicate it is a promoted piece.
- */
-
-#include "config.h"
-
-#define NO_CONSTRAINT	-1
-#undef YYLMAX
-#define YYLMAX			4096
-#define UNPUT_BUF_SIZE		YYLMAX
-
-#ifdef FLEX_SCANNER
-/* yytext is probably a char*, but could be a char[].  yy_text is set
-   in YY_DECL below, because if yytext is a char*, its value is not
-   constant. */
-char *yy_text;
-#else /*!FLEX_SCANNER*/
-/* yytext is definitely a char[], so yy_text can be set here, statically. */
-char *yy_text = (char *) yytext;
-#endif
-
-#ifdef FLEX_SCANNER
-/* This is flex */
-/* [AP] use prototypes in function declarations */
-#define YY_USE_PROTOS
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-/* end of [AP] fix */
-
-#undef YY_INPUT
-#define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
-#undef YY_DECL
-#define YY_DECL                     \
-    int _yylex YY_PROTO((void));    \
-    int yylex YY_PROTO((void))      \
-    {                               \
-	int result = _yylex();      \
-	yy_text = (char *) yytext;  \
-	return(result);             \
-    }                               \
-    int _yylex YY_PROTO((void))
-#else
-/* This is lex */
-#undef input
-#undef output
-#undef unput
-#endif
-
-/* The includes must be here, below the #undef input */
-
-#include <ctype.h>
-
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <string.h>
-#else /* not STDC_HEADERS */
-# if HAVE_STRING_H
-#  include <string.h>
-# else /* not HAVE_STRING_H */
-#  include <strings.h>
-# endif /* not HAVE_STRING_H */
-#endif /* not STDC_HEADERS */
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#if defined(_amigados)
-# include <errno.h>
-# if HAVE_FCNTL_H
-#  include <fcntl.h>    /*  isatty() prototype  */
-# endif /*  HAVE_FCNTL_H        */
-#endif  /*  defined(_amigados)  */
-
-#include "common.h"
-#include "backend.h"
-#include "frontend.h"
-#include "parser.h"
-#include "moves.h"
-
-extern int PosFlags P((int));
-
-extern Board	boards[MAX_MOVES];
-int		yyboardindex;
-int             yyskipmoves = FALSE;
-char		currentMoveString[YYLMAX];
-#ifndef FLEX_SCANNER
-char		unputBuffer[UNPUT_BUF_SIZE];
-int		unputCount = 0;
-#endif
-
-#ifdef FLEX_SCANNER
-void my_yy_input P((char *buf, int *result, int max_size));
-#else /*!FLEX_SCANNER*/
-static int input P((void));
-static void output P((int ch));
-static void unput P((int ch));
-int yylook P((void));
-int yyback P((int *, int));
-#endif
-#undef yywrap
-int yywrap P((void));
-extern void CopyBoard P((Board to, Board from));
-
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines.  This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( yy_current_buffer->yy_is_interactive ) \
-		{ \
-		int c = '*', n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( yyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-		  && ferror( yyin ) ) \
-		YY_FATAL_ERROR( "input in flex scanner failed" );
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	if ( yyleng > 0 ) \
-		yy_current_buffer->yy_at_bol = \
-				(yytext[yyleng - 1] == '\n'); \
-	YY_USER_ACTION
-
-YY_DECL
-	{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-
-
-
-
-	if ( yy_init )
-		{
-		yy_init = 0;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! yy_start )
-			yy_start = 1;	/* first start state */
-
-		if ( ! yyin )
-			yyin = stdin;
-
-		if ( ! yyout )
-			yyout = stdout;
-
-		if ( ! yy_current_buffer )
-			yy_current_buffer =
-				yy_create_buffer( yyin, YY_BUF_SIZE );
-
-		yy_load_buffer_state();
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = yy_c_buf_p;
-
-		/* Support of yytext. */
-		*yy_cp = yy_hold_char;
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = yy_start;
-		yy_current_state += YY_AT_BOL();
-		yy_state_ptr = yy_state_buf;
-		*yy_state_ptr++ = yy_current_state;
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 697 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			*yy_state_ptr++ = yy_current_state;
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 4517 );
-
-yy_find_action:
-		yy_current_state = *--yy_state_ptr;
-		yy_lp = yy_accept[yy_current_state];
-find_rule: /* we branch to this label when backing up */
-		for ( ; ; ) /* until we find what rule we matched */
-			{
-			if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
-				{
-				yy_act = yy_acclist[yy_lp];
-				if ( yy_act & YY_TRAILING_HEAD_MASK ||
-				     yy_looking_for_trail_begin )
-					{
-					if ( yy_act == yy_looking_for_trail_begin )
-						{
-						yy_looking_for_trail_begin = 0;
-						yy_act &= ~YY_TRAILING_HEAD_MASK;
-						break;
-						}
-					}
-				else if ( yy_act & YY_TRAILING_MASK )
-					{
-					yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
-					yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
-					}
-				else
-					{
-					yy_full_match = yy_cp;
-					yy_full_state = yy_state_ptr;
-					yy_full_lp = yy_lp;
-					break;
-					}
-				++yy_lp;
-				goto find_rule;
-				}
-			--yy_cp;
-			yy_current_state = *--yy_state_ptr;
-			yy_lp = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-
-do_action:	/* This label is used only to access EOF actions. */
-
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-case 1:
-YY_RULE_SETUP
-{
-    /*
-     * Fully-qualified algebraic move, possibly with promotion
-     */
-    int skip1 = 0, skip2 = 0, skip3 = 0, promoted = 0;
-    ChessSquare piece;
-    ChessMove result;
-    char c;
-    
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    if (yytext[0] == '+') skip1 = skip3 = promoted = 1; /* [HGM] Shogi promoted */
-
-    /* remove the / */
-    if (yytext[1+skip1] == '/')  skip1++; 
-    
-    /* remove the [xX:-] */
-    if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
-        (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
-    
-    currentMoveString[0] = yytext[1+skip1];
-    currentMoveString[1] = yytext[2+skip1];
-    currentMoveString[2] = yytext[3+skip1+skip2];
-    currentMoveString[3] = yytext[4+skip1+skip2];
-    currentMoveString[4] = NULLCHAR;
-    
-    if (appData.debugMode) {
-        fprintf(debugFP, "Parser Qa1b2: yyleng=%d\n",
-        yyleng);
-    }
-
-    if (yyleng-skip1-skip2 > 5) { char c;
-        if (yytext[yyleng-1] == ')') {
-            c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
-	} else {
-            c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
-	}
-	currentMoveString[5] = NULLCHAR;
-        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
-            return IllegalMove; /* [HGM] promotion to invalid piece */
-    }
-
-    if (appData.debugMode) {
-        fprintf(debugFP, "parser: %s\n", currentMoveString);
-    }
-    /* [HGM] do not allow values beyond board size */
-    if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
-       currentMoveString[1] - ONE <  0            ||
-       currentMoveString[0] - AAA >= BOARD_RGHT   ||
-       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
-       currentMoveString[3] - ONE <  0            ||
-       currentMoveString[2] - AAA >= BOARD_RGHT   ||
-       currentMoveString[0] - AAA <  BOARD_LEFT   ||
-       currentMoveString[2] - AAA <  BOARD_LEFT     )
-      return 0;
-
-    piece = boards[yyboardindex]
-      [currentMoveString[1] - ONE][currentMoveString[0] - AAA];
-    if(promoted) piece = (ChessSquare) (DEMOTED piece);
-    c = PieceToChar(piece);
-    if(c == '~') c = PieceToChar((ChessSquare) (DEMOTED piece));
-    if (ToLower(yytext[skip3]) != ToLower(c))
-      return (int) IllegalMove;
-
-    result = LegalityTest(boards[yyboardindex],
-			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
-			  EP_UNKNOWN,
-                          initialRights, /* [HGM] assume all castlings allowed */
-                          currentMoveString[1] - ONE,
-                          currentMoveString[0] - AAA,
-                          currentMoveString[3] - ONE,
-                          currentMoveString[2] - AAA,
-			  currentMoveString[4]);
-
-    if (currentMoveString[4] == NULLCHAR &&
-        (result == WhitePromotionKnight || result == BlackPromotionKnight ||
-         result == WhitePromotionQueen  || result == BlackPromotionQueen)) {
-        currentMoveString[4] = PieceToChar(BlackQueen);
-	currentMoveString[5] = NULLCHAR;
-    }
-
-    return (int) result;
-}
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-{
-    /*
-     * Simple algebraic move, possibly with promotion
-     * [HGM] Engine moves are received in this format, with lower-case promoChar!
-     */
-    int skip = 0;
-    ChessMove result;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    /* remove the [xX:-] */
-    if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
-	(yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
-
-    currentMoveString[0] = yytext[0];
-    currentMoveString[1] = yytext[1];
-    currentMoveString[2] = yytext[2+skip];
-    currentMoveString[3] = yytext[3+skip];
-    currentMoveString[4] = NULLCHAR;
-
-    if (yyleng-skip > 4) { char c;
-	if (yytext[yyleng-1] == ')') {
-            c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
-	} else {
-            c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
-	}
-	currentMoveString[5] = NULLCHAR;
-        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
-            return IllegalMove;
-    }
-
-    /* [HGM] do not allow values beyond board size */
-    if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
-       currentMoveString[1] - ONE <  0            ||
-       currentMoveString[0] - AAA >= BOARD_RGHT   ||
-       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
-       currentMoveString[3] - ONE <  0            ||
-       currentMoveString[2] - AAA >= BOARD_RGHT   ||
-       currentMoveString[0] - AAA <  BOARD_LEFT   ||
-       currentMoveString[2] - AAA <  BOARD_LEFT     )
-      return 0;
-
-    result = LegalityTest(boards[yyboardindex],
-			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
-			  EP_UNKNOWN,
-                          initialRights, /* [HGM] assume all castlings allowed */
-                          currentMoveString[1] - ONE,
-                          currentMoveString[0] - AAA,
-                          currentMoveString[3] - ONE,
-                          currentMoveString[2] - AAA,
-			  currentMoveString[4]);
-
-    if (currentMoveString[4] == NULLCHAR &&
-        (result == WhitePromotionKnight || result == BlackPromotionKnight ||
-         result == WhitePromotionQueen  || result == BlackPromotionQueen)) {
-        if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
-            currentMoveString[4] = PieceToChar(BlackFerz);
-        else if(gameInfo.variant == VariantGreat)
-            currentMoveString[4] = PieceToChar(BlackMan);
-        else
-            currentMoveString[4] = PieceToChar(BlackQueen);
-	currentMoveString[5] = NULLCHAR;
-    }
-
-    return (int) result;
-}
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-{
-    /*
-     * Pawn move, possibly with promotion
-     */
-    DisambiguateClosure cl;
-    int skip = 0; char c;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    /* remove the =() */
-    if (yytext[2] == '=' && yytext[3] != NULLCHAR) skip++;
-    if (yytext[2+skip] == '(') skip++;
-
-    cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
-    cl.rfIn = -1;
-    cl.ffIn = yytext[0] - AAA;
-    cl.rtIn = yytext[1] - ONE;
-    cl.ftIn = yytext[0] - AAA;
-    c = cl.promoCharIn = yytext[2+skip];
-
-    /* [HGM] do not allow values beyond board size */
-    if(cl.rtIn >= BOARD_HEIGHT ||
-       cl.rtIn <  0            ||
-       cl.ffIn >= BOARD_RGHT   ||
-       cl.ftIn <  BOARD_LEFT     )
-      return 0;
-
-    if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
-      return IllegalMove;
-
-
-    Disambiguate(boards[yyboardindex],
-		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
-
-    currentMoveString[0] = cl.ff + AAA;
-    currentMoveString[1] = cl.rf + ONE;
-    currentMoveString[2] = cl.ft + AAA;
-    currentMoveString[3] = cl.rt + ONE;
-    currentMoveString[4] = cl.promoChar;
-    currentMoveString[5] = NULLCHAR;
-
-    return (int) cl.kind;
-}
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-{
-    /*
-     * Pawn capture, possibly with promotion, possibly ambiguous
-     */
-    DisambiguateClosure cl;
-    int skip1 = 0, skip2 = 0; char c;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    /* remove trailing ep or e.p. (nonstandard PGN) */
-    if (yytext[yyleng-1] == 'p') {
-      yyleng -= 2;
-      yytext[yyleng] = NULLCHAR;
-    } else if (yytext[yyleng-1] == '.') {
-      yyleng -= 4;
-      yytext[yyleng] = NULLCHAR;
-    }
-
-    /* remove the [xX:-] and =() */
-    if ((yytext[1] == 'x') || (yytext[1] == 'X')
-	|| (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
-    if (yytext[2+skip1] == '=' && yytext[3+skip1] != NULLCHAR) skip2++;
-    if (yytext[2+skip1+skip2] == '(') skip2++;
-
-    cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
-    cl.rfIn = -1;
-    cl.ffIn = yytext[0] - AAA;
-    cl.rtIn = -1;
-    cl.ftIn = yytext[1+skip1] - AAA;
-    c = cl.promoCharIn = yytext[2+skip1+skip2];
-
-    /* [HGM] do not allow values beyond board size */
-    if(cl.ffIn >= BOARD_RGHT  ||
-       cl.ffIn <  BOARD_LEFT  ||
-       cl.ftIn >= BOARD_RGHT  ||
-       cl.ftIn <  BOARD_LEFT     )
-      return 0;
-
-    if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
-      return IllegalMove;
-
-    Disambiguate(boards[yyboardindex],
-		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
-
-    currentMoveString[0] = cl.ff + AAA;
-    currentMoveString[1] = cl.rf + ONE;
-    currentMoveString[2] = cl.ft + AAA;
-    currentMoveString[3] = cl.rt + ONE;
-    currentMoveString[4] = cl.promoChar;
-    currentMoveString[5] = NULLCHAR;
-
-    return (int) cl.kind;
-}
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-{
-    /*
-     * unambiguously abbreviated Pawn capture, possibly with promotion
-     */
-    int skip = 0;
-    ChessMove result; char c;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    /* remove trailing ep or e.p. (nonstandard PGN) */
-    if (yytext[yyleng-1] == 'p') {
-      yyleng -= 2;
-      yytext[yyleng] = NULLCHAR;
-    } else if (yytext[yyleng-1] == '.') {
-      yyleng -= 4;
-      yytext[yyleng] = NULLCHAR;
-    }
-
-    /* remove the [xX:-] */
-    if ((yytext[1] == 'x') || (yytext[1] == 'X')
-	|| (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
-
-    currentMoveString[0] = yytext[0];
-    currentMoveString[2] = yytext[1+skip];
-    currentMoveString[3] = yytext[2+skip];
-
-    /* [HGM] do not allow values beyond board size */
-    if(currentMoveString[0] - AAA >= BOARD_RGHT   ||
-       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
-       currentMoveString[3] - ONE <  0            ||
-       currentMoveString[2] - AAA >= BOARD_RGHT   ||
-       currentMoveString[0] - AAA <  BOARD_LEFT   ||
-       currentMoveString[2] - AAA <  BOARD_LEFT     )
-      return 0;
-
-    if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */
-         currentMoveString[0] != currentMoveString[2] ) {
-        currentMoveString[1] = yytext[2+skip];
-    } else 
-    if (WhiteOnMove(yyboardindex)) {
-        if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
-	currentMoveString[1] = yytext[2+skip] - 1;
-    } else {
-        currentMoveString[1] = currentMoveString[3] + 1;
-        if (currentMoveString[3] == ONE+BOARD_HEIGHT-1) return (int) ImpossibleMove;
-    }
-    if (yyleng-skip > 3) {
-	if (yytext[yyleng-1] == ')')
-          c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
-	else
-          c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
-	currentMoveString[5] = NULLCHAR;
-        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
-            return IllegalMove;
-    } else {
-	currentMoveString[4] = NULLCHAR;
-    }
-
-    result = LegalityTest(boards[yyboardindex],
-			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
-			  EP_UNKNOWN,
-                          initialRights, /* [HGM] assume all castlings allowed */
-                          currentMoveString[1] - ONE,
-                          currentMoveString[0] - AAA,
-                          currentMoveString[3] - ONE,
-                          currentMoveString[2] - AAA,
-			  currentMoveString[4]);
-
-    if (currentMoveString[4] == NULLCHAR &&
-        (result == WhitePromotionQueen  || result == BlackPromotionQueen ||
-         result == WhitePromotionKnight || result == BlackPromotionKnight)) {
-        currentMoveString[4] = PieceToChar(BlackQueen);
-	// [HGM] shatranj: take care of variants without Queen
-	if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
-            currentMoveString[4] = PieceToChar(BlackFerz);
-	if(gameInfo.variant == VariantGreat)
-            currentMoveString[4] = PieceToChar(BlackMan);
-	currentMoveString[5] = NULLCHAR;
-    }
-
-    if (result != IllegalMove) return (int) result;
-
-    /* Special case: improperly written en passant capture */
-    if (WhiteOnMove(yyboardindex)) {
-	if (currentMoveString[3] == '5') {
-	    currentMoveString[1] = '5';
-	    currentMoveString[3] = '6';
-	} else {
-	    return (int) IllegalMove;
-	}
-    } else {
-	if (currentMoveString[3] == '4') {
-	    currentMoveString[1] = '4';
-	    currentMoveString[3] = '3';
-	} else {
-	    return (int) IllegalMove;
-	}
-    }
-
-    result = LegalityTest(boards[yyboardindex],
-			  PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
-			  EP_UNKNOWN,
-                          initialRights, /* [HGM] assume all castlings allowed */
-                          currentMoveString[1] - ONE,
-                          currentMoveString[0] - AAA,
-                          currentMoveString[3] - ONE,
-                          currentMoveString[2] - AAA,
-			  currentMoveString[4]);
-
-    if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
-      return (int) result;
-    else
-      return (int) IllegalMove;
-}
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-{
-    /*
-     * piece move, possibly ambiguous
-     */
-    DisambiguateClosure cl;
-    int skip = 0, skip2 = 0, promoted = 0;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    if(yytext[0] == '+') promoted = skip = skip2 = 1;
-
-    /* remove the [xX:-] */
-    if ((yytext[1+skip] == 'x') || (yytext[1+skip] == 'X')
-        || (yytext[1+skip] == ':') || (yytext[1+skip] == '-')) skip++;
-
-    if (WhiteOnMove(yyboardindex)) {
-        cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
-    } else {
-        cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
-    }
-    if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
-
-    cl.rfIn = -1;
-    cl.ffIn = -1;
-    cl.rtIn = yytext[2+skip] - ONE;
-    cl.ftIn = yytext[1+skip] - AAA;
-    cl.promoCharIn = NULLCHAR;
-
-    if(yyleng-skip > 3) /* [HGM] can have Shogi-style promotion */
-        cl.promoCharIn = yytext[yyleng-1];
-
-    if (appData.debugMode) {
-        fprintf(debugFP, "Parser Qa1: yyleng=%d,  %d(%d,%d)-(%d,%d) = %d (%c)\n",
-        yyleng,
-        cl.pieceIn,cl.ffIn,cl.rfIn,cl.ftIn,cl.rtIn,cl.promoCharIn,cl.promoCharIn?cl.promoCharIn:' ');
-    }
-
-    /* [HGM] but do not allow values beyond board size */
-    if(cl.rtIn >= BOARD_HEIGHT ||
-       cl.rtIn <  0            ||
-       cl.ftIn >= BOARD_RGHT   ||
-       cl.ftIn <  BOARD_LEFT     )
-      return 0;
-
-    Disambiguate(boards[yyboardindex],
-		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
-
-    currentMoveString[0] = cl.ff + AAA;
-    currentMoveString[1] = cl.rf + ONE;
-    currentMoveString[2] = cl.ft + AAA;
-    currentMoveString[3] = cl.rt + ONE;
-    currentMoveString[4] = cl.promoChar;
-    currentMoveString[5] = NULLCHAR;
-
-    return (int) cl.kind;
-}
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-{
-    /*
-     * piece move with rank or file disambiguator
-     */
-    DisambiguateClosure cl;
-    int skip = 0, skip2 = 0; int promoted=0;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    if(yytext[0]=='+') promoted = skip = skip2 = 1;
-
-    /* remove the [xX:-] */
-    if ((yytext[2+skip] == 'x') || (yytext[2+skip] == 'X')
-        || (yytext[2+skip] == ':') || (yytext[2+skip] == '-')) skip++;
-
-    if (WhiteOnMove(yyboardindex)) {
-        cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
-    } else {
-        cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
-    }
-    if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
-
-    if (isalpha(yytext[1+skip2])) {
-	cl.rfIn = -1;
-        cl.ffIn = yytext[1+skip2] - AAA;
-       
-        if(cl.ffIn >= BOARD_RGHT ||
-           cl.ffIn <  BOARD_LEFT   ) return 0;
-    } else {
-        cl.rfIn = yytext[1+skip2] - ONE;
-	cl.ffIn = -1;
-        if(cl.rfIn >= BOARD_HEIGHT ||
-           cl.rfIn <  0) return 0;
-    }
-    cl.rtIn = yytext[3+skip] - ONE;
-    cl.ftIn = yytext[2+skip] - AAA;
-    cl.promoCharIn = NULLCHAR;
-
-    if(yyleng-skip > 4) /* [HGM] can have Shogi-style promotion */
-        cl.promoCharIn = yytext[yyleng-1];
-
-    /* [HGM] do not allow values beyond board size */
-    if(cl.rtIn >= BOARD_HEIGHT ||
-       cl.rtIn <  0            ||
-       cl.ftIn >= BOARD_RGHT   ||
-       cl.ftIn <  BOARD_LEFT     )
-      return 0;
-
-    Disambiguate(boards[yyboardindex],
-		 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
-
-    currentMoveString[0] = cl.ff + AAA;
-    currentMoveString[1] = cl.rf + ONE;
-    currentMoveString[2] = cl.ft + AAA;
-    currentMoveString[3] = cl.rt + ONE;
-    currentMoveString[4] = cl.promoChar;
-    currentMoveString[5] = NULLCHAR;
-
-    return (int) cl.kind;
-}
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-{
-    int rf, ff, rt, ft;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    /* [HGM] all squares referenced to board edges in stead of absolute */
-    if (WhiteOnMove(yyboardindex)) {
-        if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
-	    /* ICS wild castling */
-	    rf = 0;
-            ff = (BOARD_WIDTH-1)>>1;
-	    rt = 0;
-            ft = BOARD_RGHT-3;
-	} else {
-	    rf = 0;
-            ff = BOARD_WIDTH>>1;
-	    rt = 0;
-            ft = BOARD_LEFT+2;
-	}
-    } else{ 
-        if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
-	    /* ICS wild castling */
-            rf = BOARD_HEIGHT-1;
-            ff = (BOARD_WIDTH-1)>>1;
-            rt = BOARD_HEIGHT-1;
-            ft = BOARD_RGHT-3;
-	} else {
-            rf = BOARD_HEIGHT-1;
-            ff = BOARD_WIDTH>>1;
-            rt = BOARD_HEIGHT-1;
-            ft = BOARD_LEFT+2;
-	}
-    }
-    if(gameInfo.variant == VariantFischeRandom) {
-        if (WhiteOnMove(yyboardindex)) {
-            ff = initialRights[2];
-            ft = initialRights[1];
-        } else {
-            ff = initialRights[5];
-            ft = initialRights[4];
-        }
-        fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
-        if(ff < 0 || ft < 0) return 0;
-    }
-    sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
-    if (appData.debugMode) {
-        fprintf(debugFP, "long castling %d %d\n", ff, ft);
-    }
-    return (int) LegalityTest(boards[yyboardindex],
-			      PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.!
-			      EP_UNKNOWN,
-                              castlingRights[yyboardindex], /* [HGM] use true castling rights */
-			      rf, ff, rt, ft, NULLCHAR);
-}
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-{
-    int rf, ff, rt, ft;
-
-    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
-
-    if (WhiteOnMove(yyboardindex)) {
-        if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
-	    /* ICS wild castling */
-	    rf = 0;
-            ff = (BOARD_WIDTH-1)>>1;
-	    rt = 0;
-            ft = BOARD_LEFT+1;
-	} else {
-	    rf = 0;
-            ff = BOARD_WIDTH>>1;
-	    rt = 0;
-            ft = BOARD_RGHT-2;
-	}
-    } else {
-        if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
-	    /* ICS wild castling */
-            rf = BOARD_HEIGHT-1;
-            ff = (BOARD_WIDTH-1)>>1;
-            rt = BOARD_HEIGHT-1;
-            ft = BOARD_LEFT+1;
-	} else {
-            rf = BOARD_HEIGHT-1;
-            ff = BOARD_WIDTH>>1;
-            rt = BOARD_HEIGHT-1;
-            ft = BOARD_RGHT-2;
-	}
-    }
-    if(gameInfo.variant == VariantFischeRandom) {
-        if (WhiteOnMove(yyboardindex)) {
-            ff = initialRights[2];
-            ft = initialRights[0];
-        } else {
-            ff = initialRights[5];
-            ft = initialRights[3];
-        }
-    if (appData.debugMode) {
-        fprintf(debugFP, "Parser FRC short %d %d\n", ff, ft);
-    }
-        if(ff < 0 || ft < 0) return 0;
-    }
-    sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
-    if (appData.debugMode) {
-        fprintf(debugFP, "short castling %d %d\n", ff, ft);
-    }
-
-    return (int) LegalityTest(boards[yyboardindex],
-			      PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.!
-			      EP_UNKNOWN,
-                              castlingRights[yyboardindex], /* [HGM] use true castling rights */
-			      rf, ff, rt, ft, NULLCHAR);
-}
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-{
-    /* Bughouse piece drop.  No legality checking for now. */
-    currentMoveString[1] = '@';
-    currentMoveString[2] = yytext[2];
-    currentMoveString[3] = yytext[3];
-    currentMoveString[4] = NULLCHAR;
-
-    if (appData.debugMode) {
-        fprintf(debugFP, "Drop: %s\n", currentMoveString);
-    }
-    /* [HGM] do not allow values beyond board size */
-    if(currentMoveString[3] - ONE >= BOARD_HEIGHT ||
-       currentMoveString[2] - AAA >= BOARD_WIDTH     )
-      return 0;
-
-    if (WhiteOnMove(yyboardindex)) {
-	currentMoveString[0] = ToUpper(yytext[0]);
-	return (int) WhiteDrop;
-    } else {
-	currentMoveString[0] = ToLower(yytext[0]);
-	return (int) BlackDrop;
-    }
-}
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-{
-    if (WhiteOnMove(yyboardindex))
-      return (int) BlackWins;
-    else
-      return (int) WhiteWins;
-}
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-{
-    return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
-}
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-{
-    return (int) GameUnfinished;
-}
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-{
-    return (int) GameIsDrawn;
-}
-	YY_BREAK
-case 15:
-YY_RULE_SETUP
-{
-    return (int) GameIsDrawn;
-}
-	YY_BREAK
-case 16:
-YY_RULE_SETUP
-{
-    if (WhiteOnMove(yyboardindex))
-      return (int) BlackWins;
-    else
-      return (int) WhiteWins;
-}
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-{
-    if (WhiteOnMove(yyboardindex))
-      return (int) BlackWins;
-    else
-      return (int) WhiteWins;
-}
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-{
-    return (int) GameIsDrawn;
-}
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-{
-    return (int) GameIsDrawn;
-}
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-{
-    return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
-}
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-{
-    return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
-}
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-{ 
-    return (int) WhiteWins;
-}
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-{ 
-    return (int) BlackWins;
-}
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-{
-    return (int) GameIsDrawn;
-}
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-{
-    return (int) GameUnfinished;
-}
-	YY_BREAK
-case 26:
-YY_RULE_SETUP
-{
-    /* move numbers */
-    if ((yyleng == 1) && (yytext[0] == '1'))
-      return (int) MoveNumberOne;
-}
-	YY_BREAK
-case 27:
-YY_RULE_SETUP
-{
-    /* elapsed time indication, e.g. (0:12) or {10:21.071} */ 
-    return (int) ElapsedTime;
-}
-	YY_BREAK
-case 28:
-YY_RULE_SETUP
-{
-    /* position diagram enclosed in [-- --] */
-    return (int) PositionDiagram;
-}
-	YY_BREAK
-case 29:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-{
-    /* position diagram enclosed in {-- --} */
-    return (int) PositionDiagram;
-}
-	YY_BREAK
-case 30:
-YY_RULE_SETUP
-{
-    return (int) PGNTag;
-}    
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-{
-    return (int) GNUChessGame;
-}
-	YY_BREAK
-case 32:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-{
-    return (int) XBoardGame;
-}
-	YY_BREAK
-case 33:
-YY_RULE_SETUP
-{				/* numeric annotation glyph */
-    return (int) NAG;
-}
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-{        			/* anything in {} */
-    return (int) Comment; 
-}
-	YY_BREAK
-case 35:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-{                                          /* ; to end of line */
-    return (int) Comment;
-}
-	YY_BREAK
-case 36:
-YY_RULE_SETUP
-{        			/* anything in [] */
-    return (int) Comment; 
-}
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-{ 	  	/* nested () */
-    return (int) Comment; 
-}
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-{ 				/* >=2 chars in () */
-    return (int) Comment; 
-}       
-	YY_BREAK
-case 39:
-YY_RULE_SETUP
-{
-        /* Skip mail headers */
-}
-	YY_BREAK
-case 40:
-YY_RULE_SETUP
-{
-        /* Skip random words */
-}
-	YY_BREAK
-case 41:
-YY_RULE_SETUP
-{
-        /* Skip everything else */
-}
-	YY_BREAK
-case 42:
-YY_RULE_SETUP
-ECHO;
-	YY_BREAK
-			case YY_STATE_EOF(INITIAL):
-				yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = yy_hold_char;
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed yyin at a new source and called
-			 * yylex().  If so, then we have to assure
-			 * consistency between yy_current_buffer and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			yy_n_chars = yy_current_buffer->yy_n_chars;
-			yy_current_buffer->yy_input_file = yyin;
-			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state();
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = yytext_ptr + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++yy_c_buf_p;
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = yy_c_buf_p;
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer() )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				yy_did_buffer_switch_on_eof = 0;
-
-				if ( yywrap() )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * yytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! yy_did_buffer_switch_on_eof )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				yy_c_buf_p =
-					yytext_ptr + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state();
-
-				yy_cp = yy_c_buf_p;
-				yy_bp = yytext_ptr + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				yy_c_buf_p =
-				&yy_current_buffer->yy_ch_buf[yy_n_chars];
-
-				yy_current_state = yy_get_previous_state();
-
-				yy_cp = yy_c_buf_p;
-				yy_bp = yytext_ptr + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-	} /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
-	{
-	register char *dest = yy_current_buffer->yy_ch_buf;
-	register char *source = yytext_ptr;
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( yy_current_buffer->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
-	else
-		{
-		int num_to_read =
-			yy_current_buffer->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
-			YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = yy_current_buffer;
-
-			int yy_c_buf_p_offset =
-				(int) (yy_c_buf_p - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				int new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					yy_flex_realloc( (void *) b->yy_ch_buf,
-							 b->yy_buf_size + 2 );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = yy_current_buffer->yy_buf_size -
-						number_to_move - 1;
-#endif
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-			yy_n_chars, num_to_read );
-
-		yy_current_buffer->yy_n_chars = yy_n_chars;
-		}
-
-	if ( yy_n_chars == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			yyrestart( yyin );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			yy_current_buffer->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	yy_n_chars += number_to_move;
-	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
-	return ret_val;
-	}
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
-	{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-
-	yy_current_state = yy_start;
-	yy_current_state += YY_AT_BOL();
-	yy_state_ptr = yy_state_buf;
-	*yy_state_ptr++ = yy_current_state;
-
-	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 697 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		*yy_state_ptr++ = yy_current_state;
-		}
-
-	return yy_current_state;
-	}
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-	{
-	register int yy_is_jam;
-
-	register YY_CHAR yy_c = 1;
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 697 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 696);
-	if ( ! yy_is_jam )
-		*yy_state_ptr++ = yy_current_state;
-
-	return yy_is_jam ? 0 : yy_current_state;
-	}
-
-
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-	{
-	register char *yy_cp = yy_c_buf_p;
-
-	/* undo effects of setting up yytext */
-	*yy_cp = yy_hold_char;
-
-	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = yy_n_chars + 2;
-		register char *dest = &yy_current_buffer->yy_ch_buf[
-					yy_current_buffer->yy_buf_size + 2];
-		register char *source =
-				&yy_current_buffer->yy_ch_buf[number_to_move];
-
-		while ( source > yy_current_buffer->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		yy_current_buffer->yy_n_chars =
-			yy_n_chars = yy_current_buffer->yy_buf_size;
-
-		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-
-	yytext_ptr = yy_bp;
-	yy_hold_char = *yy_cp;
-	yy_c_buf_p = yy_cp;
-	}
-#endif	/* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
-	{
-	int c;
-
-	*yy_c_buf_p = yy_hold_char;
-
-	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-			/* This was really a NUL. */
-			*yy_c_buf_p = '\0';
-
-		else
-			{ /* need more input */
-			int offset = yy_c_buf_p - yytext_ptr;
-			++yy_c_buf_p;
-
-			switch ( yy_get_next_buffer() )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					yyrestart( yyin );
-
-					/* fall through */
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( yywrap() )
-						return EOF;
-
-					if ( ! yy_did_buffer_switch_on_eof )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					yy_c_buf_p = yytext_ptr + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
-	*yy_c_buf_p = '\0';	/* preserve yytext */
-	yy_hold_char = *++yy_c_buf_p;
-
-	yy_current_buffer->yy_at_bol = (c == '\n');
-
-	return c;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-	{
-	if ( ! yy_current_buffer )
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-	yy_init_buffer( yy_current_buffer, input_file );
-	yy_load_buffer_state();
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-	{
-	if ( yy_current_buffer == new_buffer )
-		return;
-
-	if ( yy_current_buffer )
-		{
-		/* Flush out information for old buffer. */
-		*yy_c_buf_p = yy_hold_char;
-		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-		yy_current_buffer->yy_n_chars = yy_n_chars;
-		}
-
-	yy_current_buffer = new_buffer;
-	yy_load_buffer_state();
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (yywrap()) processing, but the only time this flag
-	 * is looked at is after yywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	yy_did_buffer_switch_on_eof = 1;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
-	{
-	yy_n_chars = yy_current_buffer->yy_n_chars;
-	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-	yyin = yy_current_buffer->yy_input_file;
-	yy_hold_char = *yy_c_buf_p;
-	}
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
-	{
-	YY_BUFFER_STATE b;
-
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	yy_init_buffer( b, file );
-
-	return b;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-	{
-	if ( ! b )
-		return;
-
-	if ( b == yy_current_buffer )
-		yy_current_buffer = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		yy_flex_free( (void *) b->yy_ch_buf );
-
-	yy_flex_free( (void *) b );
-	}
-
-
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
-	{
-	yy_flush_buffer( b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
-	b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-	b->yy_is_interactive = 0;
-#else
-	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
-	{
-	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == yy_current_buffer )
-		yy_load_buffer_state();
-	}
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
-	{
-	YY_BUFFER_STATE b;
-
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	yy_switch_to_buffer( b );
-
-	return b;
-	}
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
-	{
-	int len;
-	for ( len = 0; yy_str[len]; ++len )
-		;
-
-	return yy_scan_bytes( yy_str, len );
-	}
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
-	{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = len + 2;
-	buf = (char *) yy_flex_alloc( n );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-	for ( i = 0; i < len; ++i )
-		buf[i] = bytes[i];
-
-	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = yy_scan_buffer( buf, n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-	}
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-	{
-	if ( yy_start_stack_ptr >= yy_start_stack_depth )
-		{
-		yy_size_t new_size;
-
-		yy_start_stack_depth += YY_START_STACK_INCR;
-		new_size = yy_start_stack_depth * sizeof( int );
-
-		if ( ! yy_start_stack )
-			yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-		else
-			yy_start_stack = (int *) yy_flex_realloc(
-					(void *) yy_start_stack, new_size );
-
-		if ( ! yy_start_stack )
-			YY_FATAL_ERROR(
-			"out of memory expanding start-condition stack" );
-		}
-
-	yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-	BEGIN(new_state);
-	}
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-	{
-	if ( --yy_start_stack_ptr < 0 )
-		YY_FATAL_ERROR( "start-condition stack underflow" );
-
-	BEGIN(yy_start_stack[yy_start_stack_ptr]);
-	}
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-	{
-	return yy_start_stack[yy_start_stack_ptr - 1];
-	}
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-	{
-	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-	}
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-		yytext[yyleng] = yy_hold_char; \
-		yy_c_buf_p = yytext + n; \
-		yy_hold_char = *yy_c_buf_p; \
-		*yy_c_buf_p = '\0'; \
-		yyleng = n; \
-		} \
-	while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-	{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-	}
-#endif
-
-#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
-	{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-	}
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-	{
-	return (void *) malloc( size );
-	}
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
-	{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-	}
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-	{
-	free( ptr );
-	}
-
-#if YY_MAIN
-int main()
-	{
-	yylex();
-	return 0;
-	}
-#endif
-
-
-
-static char *StringToLex;
-
-#ifndef FLEX_SCANNER
-static FILE *lexFP;
-
-static int input()
-{
-    int ret;
-    
-    if (StringToLex != NULL) {
-	ret = *StringToLex;
-	if (ret == NULLCHAR)
-	  ret = EOF;
-	else
-	  StringToLex++;
-    } else if (unputCount > 0) {
-	ret = unputBuffer[--unputCount];
-    } else {
-	ret = fgetc(lexFP);
-    }    
-
-    if (ret == EOF) 
-      return 0;
-    else
-      return ret;
-}
-
-/*
- * Return offset of next pattern within current file
- */
-int yyoffset()
-{
-    int offset = ftell(lexFP) - unputCount;
-
-    if (offset < 0) {
-	offset = 0;
-    }
-    return(offset);
-}
- 
-static void output(ch)
-     int ch;
-{
-    fprintf(stderr, "PARSER BUG: unmatched character '%c' (0%o)\n",
-	    ch, ch);
-}
-
-static void unput(ch)
-     int ch;
-{
-    if (ch == 0) return;
-    if (StringToLex != NULL) {
-	StringToLex--;
-    } else {
-	if (unputCount >= UNPUT_BUF_SIZE)
-	  fprintf(stderr, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
-		  ch, ch);
-	unputBuffer[unputCount++] = ch;
-    }
-}
-
-/* Get ready to lex from a new file.  Kludge below sticks
-   an artificial newline at the front of the file, which the
-   above grammar ignores, but which makes ^ at start of pattern
-   match at the real start of the file.
-*/
-void yynewfile(f)
-     FILE *f;
-{
-    lexFP = f;
-    StringToLex = NULL;
-    unputCount = 0;
-    unput('\n'); /* kludge */
-}
-
-/* Get ready to lex from a string.  ^ at start of pattern WON'T
-   match at the start of the string!
-*/
-void yynewstr(s)
-     char *s;
-{
-    lexFP = NULL;
-    StringToLex = s;
-    unputCount = 0;
-}
-#endif /*!FLEX_SCANNER*/
-
-#ifdef FLEX_SCANNER
-void my_yy_input(buf, result, max_size)
-     char *buf;
-     int *result;
-     int max_size;
-{
-    int count;
-
-    if (StringToLex != NULL) {
-	count = 0;
-	while (*StringToLex != NULLCHAR) {
-	    *buf++ = *StringToLex++;
-	    count++;
-	}
-	*result = count;
-	return;
-    } else {
-	count = fread(buf, 1, max_size, yyin);
-	if (count == 0) {
-	    *result = YY_NULL;
-	} else {
-	    *result = count;
-	}
-	return;
-    }    
-}
-
-static YY_BUFFER_STATE my_file_buffer = NULL;
-
-/*
-    Return offset of next pattern in the current file.
-*/
-int yyoffset()
-{
-    int pos = yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf;
-
-    return(ftell(YY_CURRENT_BUFFER->yy_input_file) -
-         yy_n_chars + pos);
-}
-
-
-void yynewstr(s)
-     char *s;
-{
-    if (my_file_buffer != NULL)
-      yy_delete_buffer(my_file_buffer);
-    StringToLex = s;
-    my_file_buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
-    yy_switch_to_buffer(my_file_buffer);
-}
-
-void yynewfile(f)
-     FILE *f;
-{
-    if (my_file_buffer != NULL)
-      yy_delete_buffer(my_file_buffer);
-    StringToLex = NULL;
-    my_file_buffer = yy_create_buffer(f, YY_BUF_SIZE);
-    yy_switch_to_buffer(my_file_buffer);
-}
-#endif /*FLEX_SCANNER*/
-
-int yywrap()
-{
-    return TRUE;
-}
-
-/* Parse a move from the given string s */
-/* ^ at start of pattern WON'T work here unless using flex */
-ChessMove yylexstr(boardIndex, s)
-     int boardIndex;
-     char *s;
-{
-    ChessMove ret;
-    char *oldStringToLex;
-#ifdef FLEX_SCANNER
-    YY_BUFFER_STATE buffer, oldBuffer;
-#endif
-    
-    yyboardindex = boardIndex;
-    oldStringToLex = StringToLex;
-    StringToLex = s;
-#ifdef FLEX_SCANNER
-    buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
-    oldBuffer = YY_CURRENT_BUFFER;
-    yy_switch_to_buffer(buffer);
-#endif /*FLEX_SCANNER*/
-
-    ret = (ChessMove) yylex();
-
-#ifdef FLEX_SCANNER
-    if (oldBuffer != NULL) 
-      yy_switch_to_buffer(oldBuffer);
-    yy_delete_buffer(buffer);
-#endif /*FLEX_SCANNER*/
-    StringToLex = oldStringToLex;
-
-    return ret;
-}
diff --git a/winboard/res/winboard.exe.manifest b/winboard/res/winboard.exe.manifest
deleted file mode 100644
index 349abd5..0000000
--- a/winboard/res/winboard.exe.manifest
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-<assemblyIdentity
-    version="1.0.0.0"
-    processorArchitecture="X86"
-    name="Winboard.Application"
-    type="win32"
-/>
-<description>Winboard 32-bit application.</description>
-<dependency>
-    <dependentAssembly>
-        <assemblyIdentity
-            type="win32"
-            name="Microsoft.Windows.Common-Controls"
-            version="6.0.0.0"
-            processorArchitecture="X86"
-            publicKeyToken="6595b64144ccf1df"
-            language="*"
-        />
-    </dependentAssembly>
-</dependency>
-</assembly>
diff --git a/winboard/resource.h b/winboard/resource.h
deleted file mode 100644
index 565fab6..0000000
--- a/winboard/resource.h
+++ /dev/null
@@ -1,513 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by winboard.rc
-//
-#define MANIFEST_RESOURCE_ID              1
-#define IDM_NewGame                     100
-#define IDM_LoadGame                    101
-#define IDM_SaveGame                    102
-#define IDM_Exit                        103
-#define IDM_LoadPosition                104
-#define IDM_SavePosition                105
-#define IDM_EditPosition                106
-#define IDM_FlipView                    107
-#define IDM_MachineWhite                108
-#define IDM_MachineBlack                109
-#define IDM_TwoMachines                 110
-#define IDM_EditGame                    111
-#define IDM_Forward                     112
-#define IDM_Backward                    113
-#define IDM_ToEnd                       114
-#define IDM_ToStart                     115
-#define IDM_Pause                       116
-#define IDM_CallFlag                    117
-#define IDM_Draw                        118
-#define IDM_SaveDiagram                 119
-#define IDM_Abort                       120
-#define IDM_Adjourn                     122
-#define IDM_Resign                      124
-#define IDM_Hint                        125
-#define IDM_IcsClient                   126
-#define IDM_TimeControl                 131
-#define IDM_LoadOptions                 132
-#define IDM_SaveOptions                 133
-#define IDM_CommPort                    147
-#define IDM_EditComment                 148
-#define IDM_LoadNextGame                149
-#define IDM_LoadPrevGame                150
-#define IDM_ReloadGame                  151
-#define IDM_Accept                      153
-#define IDM_Decline                     154
-#define IDM_StopObserving               155
-#define IDM_StopExamining               156
-#define IDM_Revert                      157
-#define IDM_TruncateGame                158
-#define IDM_MoveNow                     159
-#define IDM_RetractMove                 160
-#define IDM_MailMove                    164
-#define IDM_ReloadCMailMsg              165
-#define IDM_Book                        166
-#define IDM_AboutGame                   167
-#define IDM_ShowGameList                170
-#define IDM_EditTags                    171
-#define IDM_Debug                       174
-#define IDM_AnalysisMode                177
-#define IDM_AnalyzeFile                 178
-#define IDM_CopyGame                    180
-#define IDM_PasteGame                   181
-#define IDM_CopyPosition                182
-#define IDM_PastePosition               183
-#define IDM_NewVariant                  184  
-#define IDM_TypeInName                  185  
-#define IDM_MachineBoth                 186  
-#define OPT_TCtext1                     202
-#define OPT_TCTime                      203
-#define OPT_TCtext2                     204
-#define OPT_Autosave                    206
-#define OPT_AVPrompt                    208
-#define OPT_AVToFile                    209
-#define OPT_AVFilename                  210
-#define OPT_Autostep                    214
-#define OPT_ASTimeDelay                 215
-#define OPT_AStext1                     216
-#define OPT_TCMoves                     217
-#define IDM_HELPCONTENTS                300
-#define IDM_HELPSEARCH                  301
-#define IDM_HELPHELP                    302
-#define IDM_ABOUT                       303
-#define IDM_CommandX                    310
-#define IDM_CommandXLast                399
-#define DLG_TimeControl                 400
-#define ABOUTBOX_Version                401
-#define OPT_TCUseMoves                  402
-#define OPT_TCUseInc                    403
-#define OPT_TCitext1                    405
-#define OPT_TCitext2                    406
-#define OPT_TCInc                       407
-#define OPT_TCitext3                    408
-#define OPT_TCTime2                     409
-#define OPT_TCOdds1                     410
-#define OPT_TCOdds2                     411
-#define DLG_PremoveOptions              450
-#define DLG_GeneralOptions              453
-#define DLG_IcsOptions                  454
-#define DLG_BoardOptions                455
-#define DLG_Fonts                       456
-#define DLG_NewGameFRC                  457
-#define DLG_GameListOptions             458
-#define DLG_MoveHistory                 459
-#define DLG_EvalGraph                   461
-#define DLG_EngineOutput                463
-#define DLG_EnginePlayOptions           464
-#define IDI_WHITE_14                    466
-#define IDI_BLACK_14                    467
-#define DLG_OptionsUCI                  467
-#define IDI_PONDER_14                   468
-#define IDI_TRANS_14                    469
-#define IDI_CLOCK_14                    470
-#define IDI_UNKNOWN_14                  471
-#define IDI_BALOON_14                   472
-#define IDI_ANALYZE_14                  473
-#define IDI_ANALYZE2_14                 474
-#define DLG_Promotion                   500
-#define PB_Queen                        502
-#define PB_Rook                         503
-#define PB_Bishop                       504
-#define PB_Knight                       505
-#define PB_Chancellor                   506 /* [HGM] Capablanca pieces */
-#define PB_Archbishop                   507
-#define IDC_Yes                         520
-#define IDC_No                          521
-#define IDC_Centaur                     522
-#define EP_White                        600
-#define EP_WhitePawn                    601
-#define EP_WhiteKnight                  602
-#define EP_WhiteBishop                  603
-#define EP_WhiteRook                    604
-#define EP_WhiteQueen                   605
-#define EP_Black                        606
-#define EP_BlackPawn                    607
-#define EP_BlackKnight                  608
-#define EP_BlackBishop                  609
-#define EP_BlackRook                    610
-#define EP_BlackQueen                   611
-#define EP_EmptySquare                  612
-#define EP_ClearBoard                   613
-#define EP_WhiteKing                    614
-#define EP_BlackKing                    615
-#define DP_Pawn                         616
-#define DP_Knight                       617
-#define DP_Bishop                       618
-#define DP_Rook                         619
-#define DP_Queen                        620
-
-#define EP_WhiteCardinal                630
-#define EP_WhiteMarshall                631
-#define EP_WhiteAlfil                   632
-#define EP_WhiteCannon                  633
-#define EP_WhiteFerz                    634
-#define EP_WhiteWazir                   635
-#define EP_BlackCardinal                640
-#define EP_BlackMarshall                641
-#define EP_BlackAlfil                   642
-#define EP_BlackCannon                  643
-#define EP_BlackFerz                    644
-#define EP_BlackWazir                   645
-#define EP_Promote                      650
-#define EP_Demote                       651
-
-#define DLG_LoadOptions                 700
-#define DLG_SaveOptions                 800
-#define OPT_PGN                         802
-#define OPT_Old                         803
-#define DLG_CommPort                    900
-#define OPT_Port                        901
-#define OPT_DataRate                    902
-#define OPT_Bits                        903
-#define OPT_Parity                      904
-#define OPT_StopBits                    905
-#define OPT_Flow                        910
-#define OPT_SerialHelp                  911
-#define DLG_BoardSize                   1000
-#define OPT_Small                       1001
-#define OPT_SizeSmall                   1001
-#define OPT_Medium                      1002
-#define OPT_SizeBulky                   1002
-#define OPT_Large                       1003
-#define DLG_EditComment                 1004
-#define OPT_ClearComment                1005
-#define OPT_EditComment                 1006
-#define OPT_CommentText                 1007
-#define DLG_ViewComment                 1008
-#define DLG_GameList                    1009
-#define OPT_GameListPrev                1010
-#define OPT_GameListText                1011
-#define OPT_GameListLoad                1012
-#define OPT_GameListNext                1013
-#define OPT_GameListClose               1014
-#define DLG_EditTags                    1015
-#define OPT_TagsText                    1016
-#define DLG_Analysis                    1017
-#define OPT_AnalysisText                1018
-#define DLG_Error                       1019
-#define OPT_ErrorIcon                   1020
-#define IDD_DIALOG1                     1021
-#define DLG_ConsoleRich                 1022
-#define IDC_EDIT1                       1023
-#define OPT_DarkSquareColor             1023
-#define IDC_GameListFilter              1023
-#define IDC_NFG_Edit                    1023
-#define IDC_EpDrawMoveCount             1023
-#define IDC_PolyglotDir                 1023
-#define OPT_ConsoleText                 1024
-#define OPT_LightSquareColor            1024
-#define OPT_CommandInput                1025
-#define OPT_WhitePieceColor             1025
-#define OPT_QuestionInput               1026
-#define OPT_BlackPieceColor             1026
-#define OPT_ChessEngineName             1027
-#define OPT_HighlightSquareColor        1027
-#define OPT_WavFileName                 1028
-#define OPT_PremoveHighlightColor       1028
-#define OPT_IndexNumber                 1029
-#define OPT_SampleLightSquare           1029
-#define OPT_Move                        1030
-#define OPT_SampleDarkSquare            1030
-#define OPT_PremoveWhiteText            1031
-#define IDC_EDIT2                       1032
-#define IDC_EpAdjudicationThreshold     1032
-#define IDC_HashSize                    1032
-#define OPT_ConsoleInput                1033
-#define OPT_AdditionalOptions           1034
-#define OPT_PremoveBlackText            1035
-#define OPT_ErrorText                   1036
-#define OPT_IcsAlarmTime                1037
-#define OPT_Name                        1038
-#define DLG_Console                     1100
-#define DLG_PromotionKing               1102
-#define DLG_Colorize                    1106
-#define DLG_Command                     1122
-#define DLG_Question                    1123
-#define DLG_Startup                     1124
-#define DLG_Sound                       1127
-#define DLG_IndexNumber                 1149
-#define DLG_TypeInMove                  1151
-#define DLG_TypeInName                  1152
-#define OPT_IndexNumberOld              1155
-#define IDM_Rematch                     1203
-#define IDA_PAGEUP                      1216
-#define IDA_PAGEDOWN                    1217
-#define IDA_CTRLHOME                    1218
-#define IDA_CTRLEND                     1219
-#define IDA_TAB                         1221
-#define IDM_SaveSettings                1223
-#define IDM_Iconize                     1224
-#define IDM_DirectCommand1              1226
-#define IDM_DirectCommand2              1227
-#define IDM_Copy                        1229
-#define IDM_Paste                       1230
-#define IDM_MatchX                      1231
-#define IDM_ObserveX                    1232
-#define IDM_FingerX                     1233
-#define IDM_TellX                       1234
-#define IDM_QuickPaste                  1235
-#define IDM_MessageX                    1237
-#define IDM_VarsX                       1238
-#define IDM_Cut                         1240
-#define IDM_Undo                        1242
-#define IDM_SelectAll                   1243
-#define IDM_SaveSettingsOnExit          1280
-#define IDM_LoadNextPosition            1286
-#define IDM_ReloadPosition              1287
-#define IDM_LoadPrevPosition            1288
-#define IDM_TypeInMove                  1291
-#define IDM_PopupExitMessage            1292
-#define IDM_Training                    1293
-#define IDM_GeneralOptions              1299
-#define IDM_BoardOptions                1300
-#define IDM_Fonts                       1301
-#define IDM_UserAdjudication_White      1302
-#define IDM_UserAdjudication_Black      1303
-#define IDM_UserAdjudication_Draw       1304
-#define IDM_NewGameFRC                  1305
-#define IDM_GameListOptions             1306
-#define PB_King                         1307
-#define IDM_ShowMoveHistory             1307
-#define IDM_PasteAny                    1309
-#define IDM_ShowEvalGraph               1310
-#define IDM_CopyGameListToClipboard     1311
-#define OPT_Bold                        1312
-#define IDM_ShowEngineOutput            1312
-#define OPT_Italic                      1313
-#define IDM_EnginePlayOptions           1313
-#define OPT_Underline                   1314
-#define IDM_OptionsUCI                  1314
-#define OPT_Strikeout                   1315
-#define OPT_ChooseColor                 1316
-#define OPT_Sample                      1318
-#define OPT_SampleSShout                1319
-#define OPT_CancelComment               1320
-#define OPT_SampleChannel1              1320
-#define OPT_SampleChannel               1321
-#define OPT_SampleKibitz                1322
-#define OPT_SampleTell                  1324
-#define OPT_EditTags                    1325
-#define OPT_SampleChallenge             1325
-#define OPT_TagsCancel                  1326
-#define OPT_SampleRequest               1326
-#define OPT_CommandText                 1327
-#define OPT_QuestionText                1327
-#define OPT_SampleSeek                  1327
-#define OPT_ChessEngine                 1328
-#define OPT_SampleNormal                1328
-#define OPT_ChessServer                 1329
-#define OPT_View                        1330
-#define OPT_ChessServerName             1331
-#define OPT_NoSound                     1333
-#define OPT_DefaultBeep                 1334
-#define OPT_SystemSound                 1335
-#define OPT_BuiltInSound                1336
-#define OPT_WavFile                     1337
-#define OPT_BuiltInSoundName            1339
-#define OPT_SystemSoundName             1340
-#define OPT_BrowseSound                 1341
-#define OPT_PlaySound                   1342
-#define OPT_AVBrowse                    1343
-#define OPT_SecondChessEngineName       1344
-#define OPT_AnyAdditional               1345
-#define OPT_Premove                     1346
-#define OPT_PremoveWhite                1347
-#define OPT_PremoveBlack                1348
-#define OPT_IcsAlarm                    1349
-#define CBO_Sounds                      1350
-#define OPT_DefaultSounds               1351
-#define OPT_AlwaysOnTop                 1352
-#define OPT_AutoFlag                    1353
-#define OPT_AlwaysQueen                 1354
-#define OPT_AutoComment                 1354
-#define OPT_AnimateDragging             1355
-#define OPT_AutoObserve                 1355
-#define OPT_AnimateMoving               1356
-#define OPT_GetMoveList                 1356
-#define OPT_AutoFlipView                1357
-#define OPT_LocalLineEditing            1357
-#define OPT_HighlightDragging           1358
-#define OPT_QuietPlay                   1358
-#define OPT_HighlightLastMove           1359
-#define OPT_PeriodicUpdates             1360
-#define OPT_ChooseLightSquareColor      1360
-#define OPT_PonderNextMove              1361
-#define OPT_ChooseDarkSquareColor       1361
-#define OPT_PopupExitMessage            1362
-#define OPT_ChooseWhitePieceColor       1362
-#define OPT_PopupMoveErrors             1363
-#define OPT_ChooseBlackPieceColor       1363
-#define OPT_ShowCoordinates             1364
-#define OPT_ChooseHighlightSquareColor  1364
-#define OPT_ShowThinking                1365
-#define OPT_ChoosePremoveHighlightColor 1365
-#define OPT_TestLegality                1366
-#define OPT_Blindfold                   1367
-#define OPT_SizeTiny                    1368
-#define OPT_SizeTeeny                   1369
-#define OPT_SizeDinky                   1370
-#define OPT_SizePetite                  1371
-#define OPT_SizeSlim                    1372
-#define OPT_SizeMediocre                1374
-#define OPT_SizeMiddling                1375
-#define OPT_SizeAverage                 1376
-#define OPT_SizeModerate                1377
-#define OPT_SizeMedium                  1378
-#define OPT_SizeLarge                   1379
-#define OPT_SizeBig                     1380
-#define OPT_SizeHuge                    1381
-#define OPT_SizeGiant                   1382
-#define OPT_SizeColossal                1383
-#define OPT_SizeTitanic                 1384
-#define OPT_Monochrome                  1385
-#define OPT_DefaultBoardColors          1386
-#define OPT_ChooseShoutColor            1387
-#define OPT_ChooseSShoutColor           1388
-#define OPT_ChooseChannel1Color         1389
-#define OPT_ChooseChannelColor          1390
-#define OPT_ChooseKibitzColor           1391
-#define OPT_ChooseBackgroundColor       1392
-#define OPT_ChooseTellColor             1393
-#define OPT_ChooseChallengeColor        1394
-#define OPT_ChooseRequestColor          1395
-#define OPT_ChooseSeekColor             1396
-#define OPT_ChooseNormalColor           1397
-#define OPT_DefaultColors               1398
-#define IDM_Minimize                    1400
-#define OPT_SampleShout                 1400
-#define IDM_Sounds                      1401
-#define OPT_SampleClockFont             1401
-#define IDM_IcsOptions                  1402
-#define OPT_SampleCoordFont             1402
-#define OPT_DontColorize                1403
-#define OPT_SampleMessageFont           1403
-#define OPT_SampleTagFont               1404
-#define OPT_SampleCommentsFont          1405
-#define OPT_SampleConsoleFont           1406
-#define OPT_MessageFont                 1407
-#define OPT_ClockFont                   1408
-#define OPT_CoordFont                   1409
-#define OPT_EditTagsFont                1410
-#define OPT_CommentsFont                1411
-#define OPT_MessageFont5                1412
-#define OPT_ChooseClockFont             1413
-#define OPT_ChooseMessageFont           1414
-#define OPT_ChooseCoordFont             1415
-#define OPT_ChooseTagFont               1416
-#define OPT_ChooseCommentsFont          1417
-#define OPT_ChooseConsoleFont           1418
-#define OPT_DefaultFonts                1419
-#define OPT_ChooseMoveHistoryFont       1420
-#define OPT_AutoRaiseBoard              1421
-#define OPT_SampleMoveHistoryFont       1421
-#define OPT_ShowButtonBar               1422
-#define OPT_MessageFont6                1422
-#define OPT_SaveExtPGN                  1423
-#define OPT_HideThinkFromHuman          1424
-#define IDC_GameListDoFilter            1425
-#define IDC_NFG_Random                  1426
-#define IDC_NFG_Label                   1427
-#define IDC_GameListTags                1428
-#define IDC_GLT                         1429
-#define IDC_GLT_Up                      1430
-#define IDC_GLT_Down                    1431
-#define IDC_GLT_Restore                 1432
-#define IDC_GLT_Default                 1433
-#define IDC_GLT_RestoreTo               1434
-#define IDC_MoveHistory                 1435
-#define OPT_OutOfBookInfo               1436
-#define OPT_ExtraInfoInMoveHistory      1437
-#define OPT_HighlightMoveArrow          1438
-#define IDC_BUTTON1                     1440
-#define IDC_BrowseForPolyglotDir        1440
-#define IDC_BrowseForEGTB               1441
-#define IDC_BrowseForBook               1442
-#define IDC_EngineMemo1                 1443
-#define IDC_EngineMemo2                 1444
-#define IDC_EngineLabel1                1445
-#define IDC_EngineLabel2                1446
-#define IDC_EpShowThinking              1447
-#define IDC_EpHideThinkingHuman         1448
-#define IDC_EpPonder                    1449
-#define IDC_EpPeriodicUpdates           1450
-#define IDC_Engine1_NPS                 1451
-#define IDC_Engine2_NPS                 1452
-#define IDC_Color1                      1459
-#define IDC_Color2                      1460
-#define IDC_StateIcon1                  1461
-#define IDC_StateData1                  1462
-#define IDC_StateData2                  1463
-#define IDC_StateIcon2                  1464
-#define IDC_PathToEGTB                  1466
-#define IDC_SizeOfEGTB                  1467
-#define IDC_BookFile                    1469
-#define IDC_UseBook                     1470
-#define IDC_OwnBook1                    1471
-#define IDC_OwnBook2                    1472
-#define IDC_Cores                       1473
-#define DLG_NewVariant                  1500
-#define OPT_VariantGothic               1501
-#define OPT_VariantCrazyhouse           1502
-#define OPT_VariantBughouse             1503
-#define OPT_VariantCourier              1504
-#define OPT_VariantShatranj             1505
-#define OPT_VariantShogi                1506
-#define OPT_VariantXiangqi              1507
-#define OPT_VariantCapablanca           1508
-#define OPT_VariantTwoKings             1509
-#define OPT_VariantKnightmate           1510
-#define OPT_VariantLosers               1511
-#define OPT_VariantSuicide              1512
-#define OPT_VariantAtomic               1513
-#define OPT_VariantNormal               1514
-#define OPT_VariantFairy                1515
-#define OPT_VariantFRC                  1516
-#define OPT_VariantCylinder             1517
-#define OPT_VariantFalcon               1518
-#define OPT_VariantCRC                  1519
-#define OPT_VariantBerolina             1520
-#define OPT_VariantSuper                1521
-#define OPT_VariantJanus                1522
-#define OPT_VariantWildcastle           1523
-#define OPT_VariantNocastle             1524
-#define OPT_VariantGiveaway             1525
-#define OPT_Variant3Check               1526
-#define OPT_VariantGreat                1527
-#define OPT_VariantTwilight             1528
-#define IDC_Files                       1550
-#define IDC_Ranks                       1551
-#define IDC_Holdings                    1552
-#define IDC_TestClaims                  1600
-#define IDC_DetectMates                 1601
-#define IDC_MaterialDraws               1602
-#define IDC_TrivialDraws                1603
-#define IDC_RuleMoves                   1604
-#define IDC_DrawRepeats                 1605
-#define IDC_ScoreAbs1                   1606
-#define IDC_ScoreAbs2                   1607
-#define IDM_FlipClock                   1700
-#define OPT_AllWhite                    1701
-#define OPT_UpsideDown                  1702
-#define IDC_SPECIFY_ENG_STATIC          1814
-#define IDC_SPECIFY_SERVER_STATIC       1815
-#define OPT_MESS                        1818
-#define IDM_Engine1Options		1890
-#define IDM_Engine2Options		1891
-#define IDC_STATIC                      -1
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NO_MFC                     1
-#define _APS_NEXT_RESOURCE_VALUE        468
-#define _APS_NEXT_COMMAND_VALUE         1315
-#define _APS_NEXT_CONTROL_VALUE         1471
-#define _APS_NEXT_SYMED_VALUE           1404
-#endif
-#endif
diff --git a/winboard/shogibitmaps/README b/winboard/shogibitmaps/README
deleted file mode 100644
index 94e05c4..0000000
--- a/winboard/shogibitmaps/README
+++ /dev/null
@@ -1,2 +0,0 @@
-These bitmaps are distributed under the GNU GENERAL PUBLIC LICENSE
-coming with xboard.
diff --git a/winboard/shogibitmaps/bamazon.bmp b/winboard/shogibitmaps/bamazon.bmp
deleted file mode 100644
index e9ed472..0000000
Binary files a/winboard/shogibitmaps/bamazon.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/king.bmp b/winboard/shogibitmaps/king.bmp
deleted file mode 100644
index c80a2b3..0000000
Binary files a/winboard/shogibitmaps/king.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/largeking.bmp b/winboard/shogibitmaps/largeking.bmp
deleted file mode 100644
index 20c4c0c..0000000
Binary files a/winboard/shogibitmaps/largeking.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sa58o.bmp b/winboard/shogibitmaps/sa58o.bmp
deleted file mode 100644
index fcae346..0000000
Binary files a/winboard/shogibitmaps/sa58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sb58o.bmp b/winboard/shogibitmaps/sb58o.bmp
deleted file mode 100644
index 75b2be2..0000000
Binary files a/winboard/shogibitmaps/sb58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sc58o.bmp b/winboard/shogibitmaps/sc58o.bmp
deleted file mode 100644
index 84bef21..0000000
Binary files a/winboard/shogibitmaps/sc58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sf58o.bmp b/winboard/shogibitmaps/sf58o.bmp
deleted file mode 100644
index 5c1d43a..0000000
Binary files a/winboard/shogibitmaps/sf58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sg58o.bmp b/winboard/shogibitmaps/sg58o.bmp
deleted file mode 100644
index 580814c..0000000
Binary files a/winboard/shogibitmaps/sg58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sh58o.bmp b/winboard/shogibitmaps/sh58o.bmp
deleted file mode 100644
index 8b906eb..0000000
Binary files a/winboard/shogibitmaps/sh58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sk58o.bmp b/winboard/shogibitmaps/sk58o.bmp
deleted file mode 100644
index 8b57f9e..0000000
Binary files a/winboard/shogibitmaps/sk58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sk58w.bmp b/winboard/shogibitmaps/sk58w.bmp
deleted file mode 100644
index a419066..0000000
Binary files a/winboard/shogibitmaps/sk58w.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sl58o.bmp b/winboard/shogibitmaps/sl58o.bmp
deleted file mode 100644
index 799b21a..0000000
Binary files a/winboard/shogibitmaps/sl58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sl58w.bmp b/winboard/shogibitmaps/sl58w.bmp
deleted file mode 100644
index dc1ce99..0000000
Binary files a/winboard/shogibitmaps/sl58w.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sn58o.bmp b/winboard/shogibitmaps/sn58o.bmp
deleted file mode 100644
index 387e28f..0000000
Binary files a/winboard/shogibitmaps/sn58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sn58w.bmp b/winboard/shogibitmaps/sn58w.bmp
deleted file mode 100644
index b1c6af2..0000000
Binary files a/winboard/shogibitmaps/sn58w.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sp58o.bmp b/winboard/shogibitmaps/sp58o.bmp
deleted file mode 100644
index 62be42b..0000000
Binary files a/winboard/shogibitmaps/sp58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sp58w.bmp b/winboard/shogibitmaps/sp58w.bmp
deleted file mode 100644
index 2e623c8..0000000
Binary files a/winboard/shogibitmaps/sp58w.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sr58o.bmp b/winboard/shogibitmaps/sr58o.bmp
deleted file mode 100644
index 6f6d142..0000000
Binary files a/winboard/shogibitmaps/sr58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sr58w.bmp b/winboard/shogibitmaps/sr58w.bmp
deleted file mode 100644
index 87469d3..0000000
Binary files a/winboard/shogibitmaps/sr58w.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/ss58o.bmp b/winboard/shogibitmaps/ss58o.bmp
deleted file mode 100644
index e1aa7ad..0000000
Binary files a/winboard/shogibitmaps/ss58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/su58o.bmp b/winboard/shogibitmaps/su58o.bmp
deleted file mode 100644
index 9bdce85..0000000
Binary files a/winboard/shogibitmaps/su58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sw58o.bmp b/winboard/shogibitmaps/sw58o.bmp
deleted file mode 100644
index cb6029f..0000000
Binary files a/winboard/shogibitmaps/sw58o.bmp and /dev/null differ
diff --git a/winboard/shogibitmaps/sw58w.bmp b/winboard/shogibitmaps/sw58w.bmp
deleted file mode 100644
index e90dde3..0000000
Binary files a/winboard/shogibitmaps/sw58w.bmp and /dev/null differ
diff --git a/winboard/wclipbrd.c b/winboard/wclipbrd.c
deleted file mode 100644
index 4d0fac9..0000000
--- a/winboard/wclipbrd.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * wclipbrd.c -- Clipboard routines for WinBoard
- *
- * Copyright 2000,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h>   /* required for all Windows applications */
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <sys/stat.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-#include "wclipbrd.h"
-
-/* Imports from winboard.c */
-extern HWND hwndMain;
-Boolean ParseFEN(Board b, int *stm, char *FEN);
-
-/* File globals */
-static char *copyTemp;
-static char *pasteTemp;
-
-VOID 
-CopyFENToClipboard()
-{
-  char *fen = NULL;
-
-  fen = PositionToFEN(currentMove, NULL);
-  if (!fen) {
-    DisplayError("Unable to convert position to FEN.", 0);
-    return;
-  }
-  if (!CopyTextToClipboard(fen))
-      DisplayError("Unable to copy FEN to clipboard.", 0);
-  free(fen);
-}
-
-/* [AS] */
-HGLOBAL ExportGameListAsText();
-
-VOID CopyGameListToClipboard()
-{
-    HGLOBAL hMem = ExportGameListAsText();
-    
-    if( hMem != NULL ) {
-        /* Assign memory block to clipboard */
-        BOOL ok = OpenClipboard( hwndMain );
-
-        if( ok ) {
-            ok = EmptyClipboard();
-
-            if( ok ) {
-                if( hMem != SetClipboardData( CF_TEXT, hMem ) ) {
-                    ok = FALSE;
-                }
-            }
-
-            CloseClipboard();
-
-            if( ! ok ) {
-                GlobalFree( hMem );
-            }
-        }
-
-        if( ! ok ) {
-            DisplayError( "Cannot copy list to clipboard.", 0 );
-        }
-    }
-}
-
-VOID
-CopyGameToClipboard()
-{
-  /* A rather cheesy hack here. Write the game to a file, then read from the
-   * file into the clipboard.
-   */
-  char *buf = NULL;
-  FILE *f;
-  unsigned long size;
-  size_t len;
-  struct stat st;
-
-  if (!copyTemp) {
-    copyTemp = tempnam(NULL, "wbcp");
-  }
-  if (!copyTemp) {
-      DisplayError("Cannot create temporary file name.",0);
-      return;
-  }
-  f = fopen(copyTemp, "w");
-  if (!f) {
-    DisplayError("Cannot open temporary file.", 0);
-    return;
-  }
-  if (!SaveGame(f,0,"")) { 			/* call into backend */
-    DisplayError("Cannot write to temporary file.", 0);
-    goto copy_game_to_clipboard_cleanup;
-  }
-  f = fopen(copyTemp, "rb");
-  if (!f) {
-    DisplayError("Cannot reopen temporary file.", 0);
-    goto copy_game_to_clipboard_cleanup;
-  }
-  if (fstat(fileno(f), &st) < 0) {
-    DisplayError("Cannot determine size of file.", 0);
-    goto copy_game_to_clipboard_cleanup;
-  }
-  size = st.st_size;
-  if (size == -1) {
-    DisplayError("Cannot determine size of file.", 0);
-    goto copy_game_to_clipboard_cleanup;
-  }
-  rewind(f);
-  buf = (char*)malloc(size+1);
-  if (!buf) {
-    DisplayError("Cannot allocate clipboard buffer.", 0);
-    goto copy_game_to_clipboard_cleanup;
-  }
-  len = fread(buf, sizeof(char), size, f);
-  if (len == -1) {
-    DisplayError("Cannot read from temporary file.", 0);
-    goto copy_game_to_clipboard_cleanup;
-  }
-  if ((unsigned long)size != (unsigned long)len) { /* sigh */ 
-      DisplayError("Error reading from temporary file.", 0);
-      goto copy_game_to_clipboard_cleanup;
-  }
-  buf[size] = 0;
-  if (!CopyTextToClipboard(buf)) {
-      DisplayError("Cannot copy text to clipboard", 0);
-  }
-
-copy_game_to_clipboard_cleanup:
-  if (buf) free(buf);
-  if (f) fclose(f);
-}
-
-
-int 
-CopyTextToClipboard(char *text)
-{
-  /* some (most?) of the error checking may be overkill, 
-   * but hey, this is Windows 
-   */
-  HGLOBAL hGlobalMem;
-  LPVOID lpGlobalMem;
-  BOOL locked;
-  UINT lockCount;
-  DWORD err;
-
-  hGlobalMem = GlobalAlloc(GHND, (DWORD)lstrlen(text)+1);
-  if (hGlobalMem == NULL) {
-    DisplayError("Unable to allocate memory for clipboard.", 0);
-    return FALSE;
-  }
-  lpGlobalMem = GlobalLock(hGlobalMem);
-  if (lpGlobalMem == NULL) {
-    DisplayError("Unable to lock clipboard memory.", 0);
-    GlobalFree(hGlobalMem);
-    return FALSE;
-  }
-  lstrcpy(lpGlobalMem, text);
-  if (appData.debugMode) {
-    lockCount = GlobalFlags(hGlobalMem) & GMEM_LOCKCOUNT;
-    fprintf(debugFP, "CopyTextToClipboard(): lock count %d\n", lockCount);
-  }
-  SetLastError(NO_ERROR);
-  locked = GlobalUnlock(hGlobalMem);
-  err = GetLastError();
-  if (appData.debugMode) {
-    lockCount = GlobalFlags(hGlobalMem) & GMEM_LOCKCOUNT;
-    fprintf(debugFP, "CopyTextToClipboard(): lock count %d\n", lockCount);
-  }
-  if (!locked) {
-    locked = !((err == NO_ERROR) || (err == ERROR_NOT_LOCKED));
-    if (appData.debugMode) {
-      fprintf(debugFP, 
-	      "CopyTextToClipboard(): err %d locked %d\n", (int)err, locked);
-    }
-  }
-  if (locked) {
-    DisplayError("Cannot unlock clipboard memory.", 0);
-    GlobalFree(hGlobalMem);
-    return FALSE;
-  }
-  if (!OpenClipboard(hwndMain)) {
-    DisplayError("Cannot open clipboard.", 0);
-    GlobalFree(hGlobalMem);
-    return FALSE;
-  }
-  if (!EmptyClipboard()) {
-    DisplayError("Cannot empty clipboard.", 0);
-    return FALSE;
-  }
-  if (hGlobalMem != SetClipboardData(CF_TEXT, hGlobalMem)) {
-    DisplayError("Cannot copy text to clipboard.", 0);
-    CloseClipboard();
-    GlobalFree(hGlobalMem);
-    return FALSE;
-  }
-  if (!CloseClipboard())
-    DisplayError("Cannot close clipboard.", 0);
-  
-  return TRUE;
-}
-
-/* [AS] Reworked paste functions so they can work with strings too */
-
-VOID PasteFENFromString( char * fen )
-{
-  if (appData.debugMode) {
-    fprintf(debugFP, "PasteFenFromString(): fen '%s'\n", fen);
-  }
-  EditPositionPasteFEN(fen); /* call into backend */
-  free(fen);
-}
-
-
-VOID
-PasteFENFromClipboard()
-{
-  char *fen = NULL;
-  if (!PasteTextFromClipboard(&fen)) {
-      DisplayError("Unable to paste FEN from clipboard.", 0);
-      return;
-  }
-  PasteFENFromString( fen );
-}
-
-VOID PasteGameFromString( char * buf )
-{
-  FILE *f;
-  size_t len;
-  if (!pasteTemp) {
-    pasteTemp = tempnam(NULL, "wbpt");
-  }
-  f = fopen(pasteTemp, "w");
-  if (!f) {
-    DisplayError("Unable to create temporary file.", 0);
-    free(buf); /* [AS] */
-    return;
-  }
-  len = fwrite(buf, sizeof(char), strlen(buf), f);
-  fclose(f);
-  if (len != strlen(buf)) {
-    DisplayError("Error writing to temporary file.", 0);
-    free(buf); /* [AS] */
-    return;
-  }
-  LoadGameFromFile(pasteTemp, 0, "Clipboard", TRUE);
-  free( buf ); /* [AS] */
-}
-
-
-VOID
-PasteGameFromClipboard()
-{
-  /* Write the clipboard to a temp file, then let LoadGameFromFile()
-   * do all the work.  */
-  char *buf;
-  if (!PasteTextFromClipboard(&buf)) {
-    return;
-  }
-  PasteGameFromString( buf );
-}
-
-/* [AS] Try to detect whether the clipboard contains FEN or PGN data */
-VOID PasteGameOrFENFromClipboard()
-{
-  char *buf;
-//  char *tmp;
-  Board dummyBoard; int dummy; // [HGM] paste any
-
-  if (!PasteTextFromClipboard(&buf)) {
-    return;
-  }
-
-#if 0
-  tmp = buf;
-  while( *tmp == ' ' || *tmp == '\t' || *tmp == '\r' || *tmp == '\n' ) {
-      tmp++;
-  }
-
-  if( *tmp == '[' ) {
-#else
-  // [HGM] paste any: make still smarter, to allow pasting of games without tags, recognize FEN in stead
-  if(!ParseFEN(dummyBoard, &dummy, buf) ) {
-#endif
-      PasteGameFromString( buf );
-  }
-  else {
-      PasteFENFromString( buf );
-  }
-}
-
-int 
-PasteTextFromClipboard(char **text)
-{
-  /* some (most?) of the error checking may be overkill, 
-   * but hey, this is Windows 
-   */
-  HANDLE hClipMem;
-  LPVOID lpClipMem;
-  BOOL locked = FALSE;
-  DWORD err;
-  UINT lockCount;
-
-  if (!OpenClipboard(hwndMain)) {
-    DisplayError("Unable to open clipboard.", 0);
-    return FALSE;
-  }
-  hClipMem = GetClipboardData(CF_TEXT);
-  if (hClipMem == NULL) {
-    CloseClipboard();
-    DisplayError("No text in clipboard.", 0);
-    return FALSE;
-  }
-  lpClipMem = GlobalLock(hClipMem);
-  if (lpClipMem == NULL) {
-    CloseClipboard();
-    DisplayError("Unable to lock clipboard memory.", 0);
-    return FALSE;
-  }
-  *text = (char *) malloc(GlobalSize(hClipMem)+1);
-  if (!*text) {
-    DisplayError("Unable to allocate memory for text string.", 0);
-    CloseClipboard();
-    return FALSE;
-  }
-  lstrcpy(*text, lpClipMem);
-  if (appData.debugMode) {
-    lockCount = GlobalFlags(hClipMem) & GMEM_LOCKCOUNT;
-    fprintf(debugFP, "PasteTextFromClipboard(): lock count %d\n", lockCount);
-  }
-  SetLastError(NO_ERROR);
-#if 1
-  /*suggested by Wilkin Ng*/
-  lockCount = GlobalFlags(hClipMem) & GMEM_LOCKCOUNT;
-  if (lockCount) {
-    locked = GlobalUnlock(hClipMem);
-  }
-#else
-  locked = GlobalUnlock(hClipMem);
-#endif
-  err = GetLastError();
-  if (appData.debugMode) {
-    lockCount = GlobalFlags(hClipMem) & GMEM_LOCKCOUNT;
-    fprintf(debugFP, "PasteTextFromClipboard(): lock count %d\n", lockCount);
-  }
-  if (!locked) {
-    locked = !((err == NO_ERROR) || (err == ERROR_NOT_LOCKED));
-    if (appData.debugMode) {
-      fprintf(debugFP, 
-	      "PasteTextFromClipboard(): err %d locked %d\n", (int)err, locked);
-    }
-  }
-  if (locked) 
-    DisplayError("Unable to unlock clipboard memory.", 0);
-  
-  if (!CloseClipboard())
-    DisplayError("Unable to close clipboard.", 0);
-  
-  return TRUE;
-}
-
-VOID
-DeleteClipboardTempFiles()
-{
-  if (copyTemp) remove(copyTemp);
-  if (pasteTemp) remove(pasteTemp);
-}
diff --git a/winboard/wclipbrd.h b/winboard/wclipbrd.h
deleted file mode 100644
index 13d89bf..0000000
--- a/winboard/wclipbrd.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * wclipbrd.c -- Clipboard routines for WinBoard
- *
- * Copyright 2000,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-VOID CopyFENToClipboard();
-VOID CopyGameToClipboard();
-VOID CopyGameListToClipboard();
-int CopyTextToClipboard(char *text);
-
-VOID PasteFENFromClipboard();
-VOID PasteGameFromClipboard();
-int PasteTextFromClipboard(char **text);
-
-VOID DeleteClipboardTempFiles();
-
-VOID PasteGameOrFENFromClipboard(); /* [AS] */
diff --git a/winboard/wedittags.c b/winboard/wedittags.c
deleted file mode 100644
index 3039f4c..0000000
--- a/winboard/wedittags.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * wedittags.c -- EditTags window for WinBoard
- *
- * Copyright 1995,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h>   /* required for all Windows applications */
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <fcntl.h>
-#include <math.h>
-#include <commdlg.h>
-#include <dlgs.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-#include "wedittags.h"
-
-/* Module globals */
-static char *editTagsText;
-HWND editTagsDialog = NULL;
-BOOL editTagsUp = FALSE;
-BOOL canEditTags = FALSE;
-int editTagsX, editTagsY, editTagsW, editTagsH;
-
-/* Imports from winboard.c */
-extern HINSTANCE hInst;
-extern HWND hwndMain;
-extern BoardSize boardSize;
-
-LRESULT CALLBACK
-EditTagsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static HANDLE hwndText;
-  static int sizeX, sizeY;
-  int len, newSizeX, newSizeY, flags;
-  char *str;
-  RECT rect;
-  MINMAXINFO *mmi;
-  int err;
-  
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Initialize the dialog items */
-    hwndText = GetDlgItem(hDlg, OPT_TagsText);
-    SendMessage(hwndText, WM_SETFONT, 
-      (WPARAM)font[boardSize][EDITTAGS_FONT]->hf, MAKELPARAM(FALSE, 0));
-    SetDlgItemText(hDlg, OPT_TagsText, editTagsText);
-    EnableWindow(GetDlgItem(hDlg, OPT_TagsCancel), canEditTags);
-    EnableWindow(GetDlgItem(hDlg, OPT_EditTags), !canEditTags);
-    SendMessage(hwndText, EM_SETREADONLY, !canEditTags, 0);
-    if (canEditTags) {
-      SetWindowText(hDlg, "Edit Tags");
-      SetFocus(hwndText);
-    } else {
-      SetWindowText(hDlg, "Tags");
-      SetFocus(GetDlgItem(hDlg, IDOK));
-    }
-    if (!editTagsDialog) {
-      editTagsDialog = hDlg;
-      flags = SWP_NOZORDER;
-      GetClientRect(hDlg, &rect);
-      sizeX = rect.right;
-      sizeY = rect.bottom;
-      if (editTagsX != CW_USEDEFAULT && editTagsY != CW_USEDEFAULT &&
-	  editTagsW != CW_USEDEFAULT && editTagsH != CW_USEDEFAULT) {
-	WINDOWPLACEMENT wp;
-	EnsureOnScreen(&editTagsX, &editTagsY, 0, 0);
-	wp.length = sizeof(WINDOWPLACEMENT);
-	wp.flags = 0;
-	wp.showCmd = SW_SHOW;
-	wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;
-	wp.rcNormalPosition.left = editTagsX;
-	wp.rcNormalPosition.right = editTagsX + editTagsW;
-	wp.rcNormalPosition.top = editTagsY;
-	wp.rcNormalPosition.bottom = editTagsY + editTagsH;
-	SetWindowPlacement(hDlg, &wp);
-
-	GetClientRect(hDlg, &rect);
-	newSizeX = rect.right;
-	newSizeY = rect.bottom;
-        ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY,
-			      newSizeX, newSizeY);
-	sizeX = newSizeX;
-	sizeY = newSizeY;
-      }
-    }
-    return FALSE;
-    
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      if (canEditTags) {
-	char *p, *q;
-	/* Read changed options from the dialog box */
-	len = GetWindowTextLength(hwndText);
-	str = (char *) malloc(len + 1);
-	GetWindowText(hwndText, str, len + 1);
-	p = q = str;
-	while (*q) {
-	  if (*q == '\r'|| *q == '\n')
-	    q++;
-	  else
-	    *p++ = *q++;
-	}
-	*p = NULLCHAR;
-	err = ReplaceTags(str, &gameInfo);
-	if (err) DisplayError("Error replacing tags.", err);
-
-	free(str);
-      }
-      TagsPopDown();
-      return TRUE;
-      
-    case IDCANCEL:
-    case OPT_TagsCancel:
-      TagsPopDown();
-      return TRUE;
-      
-    case OPT_EditTags:
-      EditTagsEvent();
-      return TRUE;
-
-    default:
-      break;
-    }
-    break;
-
-  case WM_SIZE:
-    newSizeX = LOWORD(lParam);
-    newSizeY = HIWORD(lParam);
-    ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY);
-    sizeX = newSizeX;
-    sizeY = newSizeY;
-    break;
-
-  case WM_GETMINMAXINFO:
-    /* Prevent resizing window too small */
-    mmi = (MINMAXINFO *) lParam;
-    mmi->ptMinTrackSize.x = 100;
-    mmi->ptMinTrackSize.y = 100;
-    break;
-  }
-  return FALSE;
-}
-
-VOID TagsPopDown(void)
-{
-  if (editTagsDialog) ShowWindow(editTagsDialog, SW_HIDE);
-  CheckMenuItem(GetMenu(hwndMain), IDM_EditTags, MF_UNCHECKED);
-  editTagsUp = FALSE;
-}
-
-
-VOID EitherTagsPopUp(char *tags, char *msg, BOOLEAN edit)
-{
-  FARPROC lpProc;
-  char *p, *q;
-  
-  if (msg == NULL) msg = "";
-  p = (char *) malloc(2 * (strlen(tags) + strlen(msg)) + 2);
-  q = p;
-  while (*tags) {
-    if (*tags == '\n') *q++ = '\r';
-    *q++ = *tags++;
-  }
-  if (*msg != NULLCHAR) {
-    *q++ = '\r';
-    *q++ = '\n';
-    while (*msg) {
-      if (*msg == '\n') *q++ = '\r';
-      *q++ = *msg++;
-    }
-  }
-  *q = NULLCHAR;
-  if (editTagsText != NULL) free(editTagsText);
-  editTagsText = p;
-  canEditTags = edit;
-  
-  CheckMenuItem(GetMenu(hwndMain), IDM_EditTags, MF_CHECKED);
-  if (editTagsDialog) {
-    SendMessage(editTagsDialog, WM_INITDIALOG, 0, 0);
-    ShowWindow(editTagsDialog, SW_SHOW);
-  } else {
-    lpProc = MakeProcInstance((FARPROC)EditTagsDialog, hInst);
-    CreateDialog(hInst, MAKEINTRESOURCE(DLG_EditTags),
-      hwndMain, (DLGPROC)lpProc);
-    FreeProcInstance(lpProc);
-  }
-  editTagsUp = TRUE;
-}
-
-VOID TagsPopUp(char *tags, char *msg)
-{
-  HWND hwnd = GetActiveWindow();
-  EitherTagsPopUp(tags, msg, FALSE);
-  SetActiveWindow(hwnd);
-}
-
-VOID EditTagsPopUp(char *tags)
-{
-  EitherTagsPopUp(tags, "", TRUE);
-}
-
-VOID EditTagsProc()
-{
-  if (editTagsUp) {
-    TagsPopDown();
-  } else {
-    EditTagsEvent();
-  }
-}
diff --git a/winboard/wedittags.h b/winboard/wedittags.h
deleted file mode 100644
index e27a338..0000000
--- a/winboard/wedittags.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * wedittags.h -- EditTags window for WinBoard
- *
- * Copyright 1995,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-VOID EditTagsProc(void);
-extern HWND editTagsDialog;
-extern int editTagsX, editTagsY, editTagsW, editTagsH;
-
diff --git a/winboard/wengineo.c b/winboard/wengineo.c
deleted file mode 100644
index 1c3238f..0000000
--- a/winboard/wengineo.c
+++ /dev/null
@@ -1,855 +0,0 @@
-/*
- * Engine output (PV)
- *
- * Author: Alessandro Scotti (Dec 2005)
- *
- * Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h> /* required for all Windows applications */
-#include <richedit.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <commdlg.h>
-#include <dlgs.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-
-#include "wsnap.h"
-
-// [HGM] define numbers to indicate icons, for referring to them in platform-independent way
-#define nColorBlack   1
-#define nColorWhite   2
-#define nColorUnknown 3
-#define nClear        4
-#define nPondering    5
-#define nThinking     6
-#define nAnalyzing    7
-
-HICON icons[8]; // [HGM] this front-end array translates back-end icon indicator to handle
-
-// [HGM] same for output fields (note that there are two of each type, one per color)
-#define nColorIcon 1
-#define nStateIcon 2
-#define nLabel     3
-#define nStateData 4
-#define nLabelNPS  5
-#define nMemo      6
-
-HWND outputField[2][7]; // [HGM] front-end array to translate output field to window handle
-
-void EngineOutputPopUp();
-void EngineOutputPopDown();
-int  EngineOutputIsUp();
-
-#define SHOW_PONDERING
-
-/* Imports from backend.c */
-char * SavePart(char *str);
-extern int opponentKibitzes;
-
-/* Imports from winboard.c */
-extern HWND engineOutputDialog;
-extern int     engineOutputDialogUp;
-
-extern HINSTANCE hInst;
-extern HWND hwndMain;
-
-extern WindowPlacement wpEngineOutput;
-
-extern BoardSize boardSize;
-
-/* Module variables */
-#define H_MARGIN            2
-#define V_MARGIN            2
-#define LABEL_V_DISTANCE    1   /* Distance between label and memo */
-#define SPLITTER_SIZE       4   /* Distance between first memo and second label */
-
-#define ICON_SIZE           14
-
-#define STATE_UNKNOWN   -1
-#define STATE_THINKING   0
-#define STATE_IDLE       1
-#define STATE_PONDERING  2
-#define STATE_ANALYZING  3
-
-static int  windowMode = 1;
-
-static int  needInit = TRUE;
-
-static int  lastDepth[2] = { -1, -1 };
-static int  lastForwardMostMove[2] = { -1, -1 };
-static int  engineState[2] = { -1, -1 };
-
-typedef struct {
-//    HWND hColorIcon; // [HGM] the output-control handles are no loger passed,
-//    HWND hLabel;     //       to give better front-end / back-end separation
-//    HWND hStateIcon; //       the front-end routines now get them from a (front-end)
-//    HWND hStateData; //       table, indexed by output-field indicators.
-//    HWND hLabelNPS;
-//    HWND hMemo;
-    char * name;
-    int which;
-    int depth;
-    u64 nodes;
-    int score;
-    int time;
-    char * pv;
-    char * hint;
-    int an_move_index;
-    int an_move_count;
-} EngineOutputData;
-
-static void VerifyDisplayMode();
-static void UpdateControls( EngineOutputData * ed );
-static void SetEngineState( int which, int state, char * state_data );
-
-// front end
-static HICON LoadIconEx( int id )
-{
-    return LoadImage( hInst, MAKEINTRESOURCE(id), IMAGE_ICON, ICON_SIZE, ICON_SIZE, 0 );
-}
-
-// [HGM] the platform-dependent way of indicating where output should go is now all
-// concentrated here, where a table of platform-dependent handles are initialized.
-// This cleanses most other routines of front-end stuff, so they can go into the back end.
-static void InitializeEngineOutput()
-{
- //   if( needInit ) { // needInit was already tested before call
-	// [HGM] made this into a table, rather than separate global variables
-        icons[nColorBlack]   = LoadIconEx( IDI_BLACK_14 );
-        icons[nColorWhite]   = LoadIconEx( IDI_WHITE_14 );
-        icons[nColorUnknown] = LoadIconEx( IDI_UNKNOWN_14 );
-        icons[nClear]        = LoadIconEx( IDI_TRANS_14 );
-        icons[nPondering]    = LoadIconEx( IDI_PONDER_14 );
-        icons[nThinking]     = LoadIconEx( IDI_CLOCK_14 );
-        icons[nAnalyzing]    = LoadIconEx( IDI_ANALYZE2_14 );
-
-	// [HGM] also make a table of handles to output controls
-	// Note that engineOutputDialog must be defined first!
-        outputField[0][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color1 );
-        outputField[0][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel1 );
-        outputField[0][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon1 );
-        outputField[0][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData1 );
-        outputField[0][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine1_NPS );
-        outputField[0][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo1 );
-
-        outputField[1][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color2 );
-        outputField[1][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel2 );
-        outputField[1][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon2 );
-        outputField[1][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData2 );
-        outputField[1][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine2_NPS );
-        outputField[1][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo2 );
-//        needInit = FALSE;
-//    }
-}
-
-// front end
-static void SetControlPos( HWND hDlg, int id, int x, int y, int width, int height )
-{
-    HWND hControl = GetDlgItem( hDlg, id );
-
-    SetWindowPos( hControl, HWND_TOP, x, y, width, height, SWP_NOZORDER );
-}
-
-#define HIDDEN_X    20000
-#define HIDDEN_Y    20000
-
-// front end
-static void HideControl( HWND hDlg, int id )
-{
-    HWND hControl = GetDlgItem( hDlg, id );
-    RECT rc;
-
-    GetWindowRect( hControl, &rc );
-
-    /* 
-        Avoid hiding an already hidden control, because that causes many
-        unnecessary WM_ERASEBKGND messages!
-    */
-    if( rc.left != HIDDEN_X || rc.top != HIDDEN_Y ) {
-        SetControlPos( hDlg, id, 20000, 20000, 100, 100 );
-    }
-}
-
-// front end, although we might make GetWindowRect front end instead
-static int GetControlWidth( HWND hDlg, int id )
-{
-    RECT rc;
-
-    GetWindowRect( GetDlgItem( hDlg, id ), &rc );
-
-    return rc.right - rc.left;
-}
-
-// front end?
-static int GetControlHeight( HWND hDlg, int id )
-{
-    RECT rc;
-
-    GetWindowRect( GetDlgItem( hDlg, id ), &rc );
-
-    return rc.bottom - rc.top;
-}
-
-static int GetHeaderHeight()
-{
-    int result = GetControlHeight( engineOutputDialog, IDC_EngineLabel1 );
-
-    if( result < ICON_SIZE ) result = ICON_SIZE;
-
-    return result;
-}
-
-// The size calculations should be backend? If setControlPos is a platform-dependent way of doing things,
-// a platform-independent wrapper for it should be supplied.
-static void PositionControlSet( HWND hDlg, int x, int y, int clientWidth, int memoHeight, int idColor, int idEngineLabel, int idNPS, int idMemo, int idStateIcon, int idStateData )
-{
-    int label_x = x + ICON_SIZE + H_MARGIN;
-    int label_h = GetControlHeight( hDlg, IDC_EngineLabel1 );
-    int label_y = y + ICON_SIZE - label_h;
-    int nps_w = GetControlWidth( hDlg, IDC_Engine1_NPS );
-    int nps_x = clientWidth - H_MARGIN - nps_w;
-    int state_data_w = GetControlWidth( hDlg, IDC_StateData1 );
-    int state_data_x = nps_x - H_MARGIN - state_data_w;
-    int state_icon_x = state_data_x - ICON_SIZE - 2;
-    int max_w = clientWidth - 2*H_MARGIN;
-    int memo_y = y + ICON_SIZE + LABEL_V_DISTANCE;
-
-    SetControlPos( hDlg, idColor, x, y, ICON_SIZE, ICON_SIZE );
-    SetControlPos( hDlg, idEngineLabel, label_x, label_y, state_icon_x - label_x, label_h );
-    SetControlPos( hDlg, idStateIcon, state_icon_x, y, ICON_SIZE, ICON_SIZE );
-    SetControlPos( hDlg, idStateData, state_data_x, label_y, state_data_w, label_h );
-    SetControlPos( hDlg, idNPS, nps_x, label_y, nps_w, label_h );
-    SetControlPos( hDlg, idMemo, x, memo_y, max_w, memoHeight );
-}
-
-// Also here some of the size calculations should go to the back end, and their actual application to a front-end routine
-static void ResizeWindowControls( HWND hDlg, int mode )
-{
-    RECT rc;
-    int headerHeight = GetHeaderHeight();
-//    int labelHeight = GetControlHeight( hDlg, IDC_EngineLabel1 );
-//    int labelOffset = H_MARGIN + ICON_SIZE + H_MARGIN;
-//    int labelDeltaY = ICON_SIZE - labelHeight;
-    int clientWidth;
-    int clientHeight;
-    int maxControlWidth;
-    int npsWidth;
-
-    /* Initialize variables */
-    GetClientRect( hDlg, &rc );
-
-    clientWidth = rc.right - rc.left;
-    clientHeight = rc.bottom - rc.top;
-
-    maxControlWidth = clientWidth - 2*H_MARGIN;
-
-    npsWidth = GetControlWidth( hDlg, IDC_Engine1_NPS );
-
-    /* Resize controls */
-    if( mode == 0 ) {
-        /* One engine */
-        PositionControlSet( hDlg, H_MARGIN, V_MARGIN, 
-            clientWidth, 
-            clientHeight - V_MARGIN - LABEL_V_DISTANCE - headerHeight- V_MARGIN,
-            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );
-
-        /* Hide controls for the second engine */
-        HideControl( hDlg, IDC_Color2 );
-        HideControl( hDlg, IDC_EngineLabel2 );
-        HideControl( hDlg, IDC_StateIcon2 );
-        HideControl( hDlg, IDC_StateData2 );
-        HideControl( hDlg, IDC_Engine2_NPS );
-        HideControl( hDlg, IDC_EngineMemo2 );
-        SendDlgItemMessage( hDlg, IDC_EngineMemo2, WM_SETTEXT, 0, (LPARAM) "" );
-        /* TODO: we should also hide/disable them!!! what about tab stops?!?! */
-    }
-    else {
-        /* Two engines */
-        int memo_h = (clientHeight - headerHeight*2 - V_MARGIN*2 - LABEL_V_DISTANCE*2 - SPLITTER_SIZE) / 2;
-        int header1_y = V_MARGIN;
-        int header2_y = V_MARGIN + headerHeight + LABEL_V_DISTANCE + memo_h + SPLITTER_SIZE;
-
-        PositionControlSet( hDlg, H_MARGIN, header1_y, clientWidth, memo_h,
-            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );
-
-        PositionControlSet( hDlg, H_MARGIN, header2_y, clientWidth, memo_h,
-            IDC_Color2, IDC_EngineLabel2, IDC_Engine2_NPS, IDC_EngineMemo2, IDC_StateIcon2, IDC_StateData2 );
-    }
-
-    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo1), NULL, FALSE );
-    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo2), NULL, FALSE );
-}
-
-// front end. Actual printing of PV lines into the output field
-static void InsertIntoMemo( int which, char * text )
-{
-    SendMessage( outputField[which][nMemo], EM_SETSEL, 0, 0 );
-
-    SendMessage( outputField[which][nMemo], EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text );
-}
-
-// front end. Associates an icon with an output field ("control" in Windows jargon).
-// [HGM] let it find out the output field from the 'which' number by itself
-static void SetIcon( int which, int field, int nIcon )
-{
-
-    if( nIcon != 0 ) {
-        SendMessage( outputField[which][field], STM_SETICON, (WPARAM) icons[nIcon], 0 );
-    }
-}
-
-// front end wrapper for SetWindowText, taking control number in stead of handle
-void DoSetWindowText(int which, int field, char *s_label)
-{
-    SetWindowText( outputField[which][field], s_label );
-}
-
-// This seems pure front end
-LRESULT CALLBACK EngineOutputProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
-{
-    static SnapData sd;
-
-    switch (message) {
-    case WM_INITDIALOG:
-        if( engineOutputDialog == NULL ) {
-            engineOutputDialog = hDlg;
-
-            RestoreWindowPlacement( hDlg, &wpEngineOutput ); /* Restore window placement */
-
-            ResizeWindowControls( hDlg, windowMode );
-
-	    /* Set font */
-	    SendDlgItemMessage( engineOutputDialog, IDC_EngineMemo1, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 ));
-	    SendDlgItemMessage( engineOutputDialog, IDC_EngineMemo2, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 ));
-
-            SetEngineState( 0, STATE_IDLE, "" );
-            SetEngineState( 1, STATE_IDLE, "" );
-        }
-
-        return FALSE;
-
-    case WM_COMMAND:
-        switch (LOWORD(wParam)) {
-        case IDOK:
-          EndDialog(hDlg, TRUE);
-          return TRUE;
-
-        case IDCANCEL:
-          EndDialog(hDlg, FALSE);
-          return TRUE;
-
-        default:
-          break;
-        }
-
-        break;
-
-    case WM_GETMINMAXINFO:
-        {
-            MINMAXINFO * mmi = (MINMAXINFO *) lParam;
-        
-            mmi->ptMinTrackSize.x = 100;
-            mmi->ptMinTrackSize.y = 160;
-        }
-        break;
-
-    case WM_CLOSE:
-        EngineOutputPopDown();
-        break;
-
-    case WM_SIZE:
-        ResizeWindowControls( hDlg, windowMode );
-        break;
-
-    case WM_ENTERSIZEMOVE:
-        return OnEnterSizeMove( &sd, hDlg, wParam, lParam );
-
-    case WM_SIZING:
-        return OnSizing( &sd, hDlg, wParam, lParam );
-
-    case WM_MOVING:
-        return OnMoving( &sd, hDlg, wParam, lParam );
-
-    case WM_EXITSIZEMOVE:
-        return OnExitSizeMove( &sd, hDlg, wParam, lParam );
-    }
-
-    return FALSE;
-}
-
-// front end
-void EngineOutputPopUp()
-{
-  FARPROC lpProc;
-  
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_CHECKED);
-
-  if( engineOutputDialog ) {
-    SendMessage( engineOutputDialog, WM_INITDIALOG, 0, 0 );
-
-    if( ! engineOutputDialogUp ) {
-        ShowWindow(engineOutputDialog, SW_SHOW);
-    }
-  }
-  else {
-    lpProc = MakeProcInstance( (FARPROC) EngineOutputProc, hInst );
-
-    /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */
-    CreateDialog( hInst, MAKEINTRESOURCE(DLG_EngineOutput), hwndMain, (DLGPROC)lpProc );
-
-    FreeProcInstance(lpProc);
-  }
-
-  // [HGM] displaced to after creation of dialog, to allow initialization of output fields
-  if( needInit ) {
-      InitializeEngineOutput();
-      needInit = FALSE;
-  }
-
-  engineOutputDialogUp = TRUE;
-}
-
-// front end
-void EngineOutputPopDown()
-{
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_UNCHECKED);
-
-  if( engineOutputDialog ) {
-      ShowWindow(engineOutputDialog, SW_HIDE);
-  }
-
-  engineOutputDialogUp = FALSE;
-}
-
-// front end. [HGM] Takes handle of output control from table, so only number is passed
-void DoClearMemo(int which)
-{
-        SendMessage( outputField[which][nMemo], WM_SETTEXT, 0, (LPARAM) "" );
-}
-
-//------------------------ pure back-end routines -------------------------------
-
-
-// back end, due to front-end wrapper for SetWindowText, and new SetIcon arguments
-static void SetEngineState( int which, int state, char * state_data )
-{
-    int x_which = 1 - which;
-
-    if( engineState[ which ] != state ) {
-        engineState[ which ] = state;
-
-        switch( state ) {
-        case STATE_THINKING:
-            SetIcon( which, nStateIcon, nThinking );
-            if( engineState[ x_which ] == STATE_THINKING ) {
-                SetEngineState( x_which, STATE_IDLE, "" );
-            }
-            break;
-        case STATE_PONDERING:
-            SetIcon( which, nStateIcon, nPondering );
-            break;
-        case STATE_ANALYZING:
-            SetIcon( which, nStateIcon, nAnalyzing );
-            break;
-        default:
-            SetIcon( which, nStateIcon, nClear );
-            break;
-        }
-    }
-
-    if( state_data != 0 ) {
-        DoSetWindowText( which, nStateData, state_data );
-    }
-}
-
-// back end, now the front-end wrapper ClearMemo is used, and ed no longer contains handles.
-void EngineOutputUpdate( FrontEndProgramStats * stats )
-{
-    EngineOutputData ed;
-    int clearMemo = FALSE;
-    int which;
-    int depth;
-
-    if( stats == 0 ) {
-        SetEngineState( 0, STATE_IDLE, "" );
-        SetEngineState( 1, STATE_IDLE, "" );
-        return;
-    }
-
-    if(gameMode == IcsObserving && !appData.icsEngineAnalyze)
-	return; // [HGM] kibitz: shut up engine if we are observing an ICS game
-
-    which = stats->which;
-    depth = stats->depth;
-
-    if( which < 0 || which > 1 || depth < 0 || stats->time < 0 || stats->pv == 0 ) {
-        return;
-    }
-
-    if( engineOutputDialog == NULL ) {
-        return;
-    }
-
-    VerifyDisplayMode();
-
-    ed.which = which;
-    ed.depth = depth;
-    ed.nodes = stats->nodes;
-    ed.score = stats->score;
-    ed.time = stats->time;
-    ed.pv = stats->pv;
-    ed.hint = stats->hint;
-    ed.an_move_index = stats->an_move_index;
-    ed.an_move_count = stats->an_move_count;
-
-    /* Get target control. [HGM] this is moved to front end, which get them from a table */
-    if( which == 0 ) {
-        ed.name = first.tidy;
-    }
-    else {
-        ed.name = second.tidy;
-    }
-
-    /* Clear memo if needed */
-    if( lastDepth[which] > depth || (lastDepth[which] == depth && depth <= 1) ) {
-        clearMemo = TRUE;
-    }
-
-    if( lastForwardMostMove[which] != forwardMostMove ) {
-        clearMemo = TRUE;
-    }
-
-    if( clearMemo ) DoClearMemo(which);
-
-    /* Update */
-    lastDepth[which] = depth == 1 && ed.nodes == 0 ? 0 : depth; // [HGM] info-line kudge
-    lastForwardMostMove[which] = forwardMostMove;
-
-    if( ed.pv != 0 && ed.pv[0] == ' ' ) {
-        if( strncmp( ed.pv, " no PV", 6 ) == 0 ) { /* Hack on hack! :-O */
-            ed.pv = "";
-        }
-    }
-
-    UpdateControls( &ed );
-}
-
-#define ENGINE_COLOR_WHITE      'w'
-#define ENGINE_COLOR_BLACK      'b'
-#define ENGINE_COLOR_UNKNOWN    ' '
-
-// pure back end
-char GetEngineColor( int which )
-{
-    char result = ENGINE_COLOR_UNKNOWN;
-
-    if( which == 0 || which == 1 ) {
-        ChessProgramState * cps;
-
-        switch (gameMode) {
-        case MachinePlaysBlack:
-        case IcsPlayingBlack:
-            result = ENGINE_COLOR_BLACK;
-            break;
-        case MachinePlaysWhite:
-        case IcsPlayingWhite:
-            result = ENGINE_COLOR_WHITE;
-            break;
-        case AnalyzeMode:
-        case AnalyzeFile:
-            result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;
-            break;
-        case TwoMachinesPlay:
-            cps = (which == 0) ? &first : &second;
-            result = cps->twoMachinesColor[0];
-            result = result == 'w' ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;
-            break;
-        default: ; // does not happen, but suppresses pedantic warnings
-        }
-    }
-
-    return result;
-}
-
-// pure back end
-char GetActiveEngineColor()
-{
-    char result = ENGINE_COLOR_UNKNOWN;
-
-    if( gameMode == TwoMachinesPlay ) {
-        result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;
-    }
-
-    return result;
-}
-
-// pure back end
-static int IsEnginePondering( int which )
-{
-    int result = FALSE;
-
-    switch (gameMode) {
-    case MachinePlaysBlack:
-    case IcsPlayingBlack:
-        if( WhiteOnMove(forwardMostMove) ) result = TRUE;
-        break;
-    case MachinePlaysWhite:
-    case IcsPlayingWhite:
-        if( ! WhiteOnMove(forwardMostMove) ) result = TRUE;
-        break;
-    case TwoMachinesPlay:
-        if( GetActiveEngineColor() != ENGINE_COLOR_UNKNOWN ) {
-            if( GetEngineColor( which ) != GetActiveEngineColor() ) result = TRUE;
-        }
-        break;
-    default: ; // does not happen, but suppresses pedantic warnings
-    }
-
-    return result;
-}
-
-// back end
-static void SetDisplayMode( int mode )
-{
-    if( windowMode != mode ) {
-        windowMode = mode;
-
-        ResizeWindowControls( engineOutputDialog, mode );
-    }
-}
-
-// pure back end
-static void VerifyDisplayMode()
-{
-    int mode;
-
-    /* Get proper mode for current game */
-    switch( gameMode ) {
-    case IcsObserving:    // [HGM] ICS analyze
-	if(!appData.icsEngineAnalyze) return;
-    case AnalyzeMode:
-    case AnalyzeFile:
-    case MachinePlaysWhite:
-    case MachinePlaysBlack:
-        mode = 0;
-        break;
-    case IcsPlayingWhite:
-    case IcsPlayingBlack:
-        mode = appData.zippyPlay && opponentKibitzes; // [HGM] kibitz
-        break;
-    case TwoMachinesPlay:
-        mode = 1;
-        break;
-    default:
-        /* Do not change */
-        return;
-    }
-
-    SetDisplayMode( mode );
-}
-
-// back end. Determine what icon to se in the color-icon field, and print it
-static void SetEngineColorIcon( int which )
-{
-    char color = GetEngineColor(which);
-    int nicon = 0;
-
-    if( color == ENGINE_COLOR_BLACK )
-        nicon = nColorBlack;
-    else if( color == ENGINE_COLOR_WHITE )
-        nicon = nColorWhite;
-    else
-        nicon = nColorUnknown;
-
-    SetIcon( which, nColorIcon, nicon );
-}
-
-#define MAX_NAME_LENGTH 32
-
-// pure back end, now SetWindowText is called via wrapper DoSetWindowText
-static void UpdateControls( EngineOutputData * ed )
-{
-//    int isPondering = FALSE;
-
-    char s_label[MAX_NAME_LENGTH + 32];
-    
-    char * name = ed->name;
-
-    /* Label */
-    if( name == 0 || *name == '\0' ) {
-        name = "?";
-    }
-
-    strncpy( s_label, name, MAX_NAME_LENGTH );
-    s_label[ MAX_NAME_LENGTH-1 ] = '\0';
-
-#ifdef SHOW_PONDERING
-    if( IsEnginePondering( ed->which ) ) {
-        char buf[8];
-
-        buf[0] = '\0';
-
-        if( ed->hint != 0 && *ed->hint != '\0' ) {
-            strncpy( buf, ed->hint, sizeof(buf) );
-            buf[sizeof(buf)-1] = '\0';
-        }
-        else if( ed->pv != 0 && *ed->pv != '\0' ) {
-            char * sep = strchr( ed->pv, ' ' );
-            int buflen = sizeof(buf);
-
-            if( sep != NULL ) {
-                buflen = sep - ed->pv + 1;
-                if( buflen > sizeof(buf) ) buflen = sizeof(buf);
-            }
-
-            strncpy( buf, ed->pv, buflen );
-            buf[ buflen-1 ] = '\0';
-        }
-
-        SetEngineState( ed->which, STATE_PONDERING, buf );
-    }
-    else if( gameMode == TwoMachinesPlay ) {
-        SetEngineState( ed->which, STATE_THINKING, "" );
-    }
-    else if( gameMode == AnalyzeMode || gameMode == AnalyzeFile
-	  || (gameMode == IcsObserving && appData.icsEngineAnalyze)) { // [HGM] ICS-analyze
-        char buf[64];
-        int time_secs = ed->time / 100;
-        int time_mins = time_secs / 60;
-
-        buf[0] = '\0';
-
-        if( ed->an_move_index != 0 && ed->an_move_count != 0 && *ed->hint != '\0' ) {
-            char mov[16];
-
-            strncpy( mov, ed->hint, sizeof(mov) );
-            mov[ sizeof(mov)-1 ] = '\0';
-
-            sprintf( buf, "%d/%d: %s [%02d:%02d:%02d]", ed->an_move_index, ed->an_move_count, mov, time_mins / 60, time_mins % 60, time_secs % 60 );
-        }
-
-        SetEngineState( ed->which, STATE_ANALYZING, buf );
-    }
-    else {
-        SetEngineState( ed->which, STATE_IDLE, "" );
-    }
-#endif
-
-    DoSetWindowText( ed->which, nLabel, s_label );
-
-    s_label[0] = '\0';
-
-    if( ed->time > 0 && ed->nodes > 0 ) {
-        unsigned long nps_100 = ed->nodes / ed->time;
-
-        if( nps_100 < 100000 ) {
-            sprintf( s_label, "NPS: %lu", nps_100 * 100 );
-        }
-        else {
-            sprintf( s_label, "NPS: %.1fk", nps_100 / 10.0 );
-        }
-    }
-
-    DoSetWindowText( ed->which, nLabelNPS, s_label );
-
-    /* Memo */
-    if( ed->pv != 0 && *ed->pv != '\0' ) {
-        char s_nodes[24];
-        char s_score[16];
-        char s_time[24];
-        char buf[256];
-        int buflen;
-        int time_secs = ed->time / 100;
-        int time_cent = ed->time % 100;
-
-        /* Nodes */
-        if( ed->nodes < 1000000 ) {
-            sprintf( s_nodes, u64Display, ed->nodes );
-        }
-        else {
-            sprintf( s_nodes, "%.1fM", u64ToDouble(ed->nodes) / 1000000.0 );
-        }
-
-        /* Score */
-        if( ed->score > 0 ) {
-            sprintf( s_score, "+%.2f", ed->score / 100.0 );
-        }
-        else {
-            sprintf( s_score, "%.2f", ed->score / 100.0 );
-        }
-
-        /* Time */
-        sprintf( s_time, "%d:%02d.%02d", time_secs / 60, time_secs % 60, time_cent );
-
-        /* Put all together... */
-	if(ed->nodes == 0 && ed->score == 0 && ed->time == 0) sprintf( buf, "%3d\t", ed->depth ); else 
-	sprintf( buf, "%3d\t%s\t%s\t%s\t", ed->depth, s_score, s_nodes, s_time );
-
-        /* Add PV */
-        buflen = strlen(buf);
-
-        strncpy( buf + buflen, ed->pv, sizeof(buf) - buflen );
-
-        buf[ sizeof(buf) - 3 ] = '\0';
-
-        strcat( buf + buflen, "\r\n" );
-
-        /* Update memo */
-        InsertIntoMemo( ed->which, buf );
-    }
-
-    /* Colors */
-    SetEngineColorIcon( ed->which );
-}
-
-// back end
-int EngineOutputIsUp()
-{
-    return engineOutputDialogUp;
-}
-
-// [HGM] kibitz: write kibitz line; split window for it if necessary
-void OutputKibitz(int window, char *text)
-{
-	if(!EngineOutputIsUp()) return;
-	if(!opponentKibitzes) { // on first kibitz of game, clear memos
-	    DoClearMemo(1);
-	    if(gameMode == IcsObserving) DoClearMemo(0);
-	}
-	opponentKibitzes = TRUE; // this causes split window DisplayMode in ICS modes.
-	VerifyDisplayMode();
-	if(gameMode == IcsObserving) {
-	    DoSetWindowText(0, nLabel, gameInfo.white);
-	    SetIcon( 0, nColorIcon,  nColorWhite);
-	    SetIcon( 0, nStateIcon,  nClear);
-	}
-	DoSetWindowText(1, nLabel, gameMode == IcsPlayingBlack ? gameInfo.white : gameInfo.black); // opponent name
-	SetIcon( 1, nColorIcon,  gameMode == IcsPlayingBlack ? nColorWhite : nColorBlack);
-	SetIcon( 1, nStateIcon,  nClear);
-	InsertIntoMemo(window-1, text);
-}
diff --git a/winboard/wevalgraph.c b/winboard/wevalgraph.c
deleted file mode 100644
index af03f58..0000000
--- a/winboard/wevalgraph.c
+++ /dev/null
@@ -1,617 +0,0 @@
-/*
- * Evaluation graph
- *
- * Author: Alessandro Scotti (Dec 2005)
- *
- * Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h> /* required for all Windows applications */
-#include <richedit.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <commdlg.h>
-#include <dlgs.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-
-#include "wsnap.h"
-
-VOID EvalGraphSet( int first, int last, int current, ChessProgramStats_Move * pvInfo );
-VOID EvalGraphPopUp();
-VOID EvalGraphPopDown();
-BOOL EvalGraphIsUp();
-
-#define WM_REFRESH_GRAPH    (WM_USER + 1)
-
-/* Imports from backend.c */
-char * SavePart(char *str);
-
-/* Imports from winboard.c */
-extern HWND evalGraphDialog;
-extern BOOLEAN evalGraphDialogUp;
-
-extern HINSTANCE hInst;
-extern HWND hwndMain;
-
-extern WindowPlacement wpEvalGraph;
-
-/* Module globals */
-static ChessProgramStats_Move * currPvInfo;
-static int currFirst = 0;
-static int currLast = 0;
-static int currCurrent = -1;
-
-static COLORREF crWhite = RGB( 0xFF, 0xFF, 0xB0 );
-static COLORREF crBlack = RGB( 0xAD, 0x5D, 0x3D );
-
-static HDC hdcPB = NULL;
-static HBITMAP hbmPB = NULL;
-static int nWidthPB = 0;
-static int nHeightPB = 0;
-static HPEN hpenDotted = NULL;
-static HPEN hpenBlueDotted = NULL;
-static HPEN hpenBold[2] = { NULL, NULL };
-static HBRUSH hbrHist[2] = { NULL, NULL };
-
-static int MarginX = 18;
-static int MarginW = 4;
-static int MarginH = 4;
-
-#define MIN_HIST_WIDTH  4
-#define MAX_HIST_WIDTH  10
-
-static int GetPvScore( int index )
-{
-    int score = currPvInfo[ index ].score;
-
-    if( index & 1 ) score = -score; /* Flip score for black */
-
-    return score;
-}
-
-static VOID DrawLine( int x1, int y1, int x2, int y2 )
-{
-    MoveToEx( hdcPB, x1, y1, NULL );
-
-    LineTo( hdcPB, x2, y2 );
-}
-
-static VOID DrawLineEx( int x1, int y1, int x2, int y2 )
-{
-    POINT stPT;
-
-    MoveToEx( hdcPB, x1, y1, &stPT );
-
-    LineTo( hdcPB, x2, y2 );
-
-    MoveToEx( hdcPB, stPT.x, stPT.y, NULL );
-}
-
-static HBRUSH CreateBrush( UINT style, COLORREF color )
-{
-    LOGBRUSH stLB;
-
-    stLB.lbStyle = style;
-    stLB.lbColor = color;
-    stLB.lbHatch = 0;
-
-    return CreateBrushIndirect( &stLB );
-}
-
-/*
-    For a centipawn value, this function returns the height of the corresponding
-    histogram, centered on the reference axis.
-
-    Note: height can be negative!
-*/
-static int GetValueY( int value )
-{
-    if( value < -700 ) value = -700;
-    if( value > +700 ) value = +700;
-
-    return (nHeightPB / 2) - (int)(value * (nHeightPB - 2*MarginH) / 1400.0);
-}
-
-static VOID DrawAxisSegmentHoriz( int value, BOOL drawValue )
-{
-    int y = GetValueY( value*100 );
-
-    SelectObject( hdcPB, GetStockObject(BLACK_PEN) );
-    DrawLine( MarginX, y, MarginX + MarginW, y );
-    SelectObject( hdcPB, hpenDotted );
-    DrawLine( MarginX + MarginW, y, nWidthPB - MarginW, y );
-
-    if( drawValue ) {
-        SIZE stSize;
-        char buf[MSG_SIZ], *b = buf;
-        int cbBuf;
-
-        if( value > 0 ) *b++ = '+';
-	sprintf(b, "%d", value);
-
-        cbBuf = strlen( buf );
-        GetTextExtentPoint32( hdcPB, buf, cbBuf, &stSize );
-        TextOut( hdcPB, MarginX - stSize.cx - 2, y - stSize.cy / 2, buf, cbBuf );
-    }
-}
-
-static VOID DrawAxis()
-{
-    int cy = nHeightPB / 2;
-    
-    SelectObject( hdcPB, GetStockObject(NULL_BRUSH) );
-
-    SetBkMode( hdcPB, TRANSPARENT );
-
-    DrawAxisSegmentHoriz( +5, TRUE );
-    DrawAxisSegmentHoriz( +3, FALSE );
-    DrawAxisSegmentHoriz( +1, FALSE );
-    DrawAxisSegmentHoriz(  0, TRUE );
-    DrawAxisSegmentHoriz( -1, FALSE );
-    DrawAxisSegmentHoriz( -3, FALSE );
-    DrawAxisSegmentHoriz( -5, TRUE );
-
-    SelectObject( hdcPB, GetStockObject(BLACK_PEN) );
-
-    DrawLine( MarginX + MarginW, cy, nWidthPB - MarginW, cy );
-    DrawLine( MarginX + MarginW, MarginH, MarginX + MarginW, nHeightPB - MarginH );
-}
-
-static VOID DrawHistogram( int x, int y, int width, int value, int side )
-{
-    RECT rc;
-
-    if( value > -25 && value < +25 ) return;
-
-    rc.left = x;
-    rc.right = rc.left + width + 1;
-
-    if( value > 0 ) {
-        rc.top = GetValueY( value );
-        rc.bottom = y+1;
-    }
-    else {
-        rc.top = y;
-        rc.bottom = GetValueY( value ) + 1;
-    }
-
-
-    if( width == MIN_HIST_WIDTH ) {
-        rc.right--;
-        FillRect( hdcPB, &rc, hbrHist[side] );
-    }
-    else {
-        SelectObject( hdcPB, hbrHist[side] );
-        Rectangle( hdcPB, rc.left, rc.top, rc.right, rc.bottom );
-    }
-}
-
-static VOID DrawSeparator( int index, int x )
-{
-    if( index > 0 ) {
-        if( index == currCurrent ) {
-            HPEN hp = SelectObject( hdcPB, hpenBlueDotted );
-            DrawLineEx( x, MarginH, x, nHeightPB - MarginH );
-            SelectObject( hdcPB, hp );
-        }
-        else if( (index % 20) == 0 ) {
-            HPEN hp = SelectObject( hdcPB, hpenDotted );
-            DrawLineEx( x, MarginH, x, nHeightPB - MarginH );
-            SelectObject( hdcPB, hp );
-        }
-    }
-}
-
-/* Actually draw histogram as a diagram, cause there's too much data */
-static VOID DrawHistogramAsDiagram( int cy, int paint_width, int hist_count )
-{
-    double step;
-    int i;
-
-    /* Rescale the graph every few moves (as opposed to every move) */
-    hist_count -= hist_count % 8;
-    hist_count += 8;
-    hist_count /= 2;
-
-    step = (double) paint_width / (hist_count + 1);
-
-    for( i=0; i<2; i++ ) {
-        int index = currFirst;
-        int side = (currCurrent + i + 1) & 1; /* Draw current side last */
-        double x = MarginX + MarginW;
-
-        if( (index & 1) != side ) {
-            x += step / 2;
-            index++;
-        }
-
-        SelectObject( hdcPB, hpenBold[side] );
-
-        MoveToEx( hdcPB, (int) x, cy, NULL );
-
-        index += 2;
-
-        while( index < currLast ) {
-            x += step;
-
-            DrawSeparator( index, (int) x );
-
-            /* Extend line up to current point */
-            if( currPvInfo[index].depth > 0 ) {
-                LineTo( hdcPB, (int) x, GetValueY( GetPvScore(index) ) );
-            }
-
-            index += 2;
-        }
-    }
-}
-
-static VOID DrawHistogramFull( int cy, int hist_width, int hist_count )
-{
-    int i;
-
-    SelectObject( hdcPB, GetStockObject(BLACK_PEN) );
-
-    for( i=0; i<hist_count; i++ ) {
-        int index = currFirst + i;
-        int x = MarginX + MarginW + index * hist_width;
-
-        /* Draw a separator every 10 moves */
-        DrawSeparator( index, x );
-
-        /* Draw histogram */
-        if( currPvInfo[i].depth > 0 ) {
-            DrawHistogram( x, cy, hist_width, GetPvScore(index), index & 1 );
-        }
-    }
-}
-
-typedef struct {
-    int cy;
-    int hist_width;
-    int hist_count;
-    int paint_width;
-} VisualizationData;
-
-static BOOL InitVisualization( VisualizationData * vd )
-{
-    BOOL result = FALSE;
-
-    vd->cy = nHeightPB / 2;
-    vd->hist_width = MIN_HIST_WIDTH;
-    vd->hist_count = currLast - currFirst;
-    vd->paint_width = nWidthPB - MarginX - 2*MarginW;
-
-    if( vd->hist_count > 0 ) {
-        result = TRUE;
-
-        /* Compute width */
-        vd->hist_width = vd->paint_width / vd->hist_count;
-
-        if( vd->hist_width > MAX_HIST_WIDTH ) vd->hist_width = MAX_HIST_WIDTH;
-
-        vd->hist_width -= vd->hist_width % 2;
-    }
-
-    return result;
-}
-
-static VOID DrawHistograms()
-{
-    VisualizationData vd;
-
-    if( InitVisualization( &vd ) ) {
-        if( vd.hist_width < MIN_HIST_WIDTH ) {
-            DrawHistogramAsDiagram( vd.cy, vd.paint_width, vd.hist_count );
-        }
-        else {
-            DrawHistogramFull( vd.cy, vd.hist_width, vd.hist_count );
-        }
-    }
-}
-
-static int GetMoveIndexFromPoint( int x, int y )
-{
-    int result = -1;
-    int start_x = MarginX + MarginW;
-    VisualizationData vd;
-
-    if( x >= start_x && InitVisualization( &vd ) ) {
-        /* Almost an hack here... we duplicate some of the paint logic */
-        if( vd.hist_width < MIN_HIST_WIDTH ) {
-            double step;
-
-            vd.hist_count -= vd.hist_count % 8;
-            vd.hist_count += 8;
-            vd.hist_count /= 2;
-
-            step = (double) vd.paint_width / (vd.hist_count + 1);
-            step /= 2;
-
-            result = (int) (0.5 + (double) (x - start_x) / step);
-        }
-        else {
-            result = (x - start_x) / vd.hist_width;
-        }
-    }
-
-    if( result >= currLast ) {
-        result = -1;
-    }
-
-    return result;
-}
-
-static VOID DrawBackground()
-{
-    HBRUSH hbr;
-    RECT rc;
-
-    hbr = CreateBrush( BS_SOLID, GetSysColor( COLOR_3DFACE ) );
-
-    rc.left = 0;
-    rc.top = 0;
-    rc.right = nWidthPB;
-    rc.bottom = nHeightPB;
-
-    FillRect( hdcPB, &rc, hbr );
-
-    DeleteObject( hbr );
-}
-
-static VOID PaintEvalGraph( HWND hWnd, HDC hDC )
-{
-    RECT rcClient;
-    int width;
-    int height;
-
-    /* Get client area */
-    GetClientRect( hWnd, &rcClient );
-
-    width = rcClient.right - rcClient.left;
-    height = rcClient.bottom - rcClient.top;
-
-    /* Create or recreate paint box if needed */
-    if( hbmPB == NULL || width != nWidthPB || height != nHeightPB ) {
-        if( hpenDotted == NULL ) {
-            hpenDotted = CreatePen( PS_DOT, 0, RGB(0xA0,0xA0,0xA0) );
-            hpenBlueDotted = CreatePen( PS_DOT, 0, RGB(0x00,0x00,0xFF) );
-            hpenBold[0] = CreatePen( PS_SOLID, 2, crWhite );
-            hpenBold[1] = CreatePen( PS_SOLID, 2, crBlack );
-            hbrHist[0] = CreateBrush( BS_SOLID, crWhite );
-            hbrHist[1] = CreateBrush( BS_SOLID, crBlack );
-        }
-
-        if( hdcPB != NULL ) {
-            DeleteDC( hdcPB );
-            hdcPB = NULL;
-        }
-
-        if( hbmPB != NULL ) {
-            DeleteObject( hbmPB );
-            hbmPB = NULL;
-        }
-
-        hdcPB = CreateCompatibleDC( hDC );
-
-        nWidthPB = width;
-        nHeightPB = height;
-        hbmPB = CreateCompatibleBitmap( hDC, nWidthPB, nHeightPB );
-
-        SelectObject( hdcPB, hbmPB );
-    }
-
-    /* Draw */
-    DrawBackground();
-    DrawAxis();
-    DrawHistograms();
-
-    /* Copy bitmap into destination DC */
-    BitBlt( hDC, 0, 0, width, height, hdcPB, 0, 0, SRCCOPY );
-}
-
-LRESULT CALLBACK EvalGraphProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
-{
-    static SnapData sd;
-
-    PAINTSTRUCT stPS;
-    HDC hDC;
-
-    switch (message) {
-    case WM_INITDIALOG:
-        if( evalGraphDialog == NULL ) {
-            evalGraphDialog = hDlg;
-
-            RestoreWindowPlacement( hDlg, &wpEvalGraph ); /* Restore window placement */
-        }
-
-        return FALSE;
-
-    case WM_COMMAND:
-        switch (LOWORD(wParam)) {
-        case IDOK:
-          EndDialog(hDlg, TRUE);
-          return TRUE;
-
-        case IDCANCEL:
-          EndDialog(hDlg, FALSE);
-          return TRUE;
-
-        default:
-          break;
-        }
-
-        break;
-
-    case WM_ERASEBKGND:
-        return TRUE;
-
-    case WM_PAINT:
-        hDC = BeginPaint( hDlg, &stPS );
-        PaintEvalGraph( hDlg, hDC );
-        EndPaint( hDlg, &stPS );
-        break;
-
-    case WM_REFRESH_GRAPH:
-        hDC = GetDC( hDlg );
-        PaintEvalGraph( hDlg, hDC );
-        ReleaseDC( hDlg, hDC );
-        break;
-
-    case WM_LBUTTONDBLCLK:
-        if( wParam == 0 || wParam == MK_LBUTTON ) {
-            int index = GetMoveIndexFromPoint( LOWORD(lParam), HIWORD(lParam) );
-
-            if( index >= 0 && index < currLast ) {
-                ToNrEvent( index + 1 );
-            }
-        }
-        return TRUE;
-
-    case WM_SIZE:
-        InvalidateRect( hDlg, NULL, FALSE );
-        break;
-
-    case WM_GETMINMAXINFO:
-        {
-            MINMAXINFO * mmi = (MINMAXINFO *) lParam;
-        
-            mmi->ptMinTrackSize.x = 100;
-            mmi->ptMinTrackSize.y = 100;
-        }
-        break;
-
-    /* Support for captionless window */
-#if 0
-    case WM_NCLBUTTONDBLCLK:
-        if( wParam == HTCAPTION ) {
-            int index;
-            POINT mouse_xy;
-            POINTS pts = MAKEPOINTS(lParam);
-
-            mouse_xy.x = pts.x;
-            mouse_xy.y = pts.y;
-            ScreenToClient( hDlg, &mouse_xy );
-
-            index = GetMoveIndexFromPoint( mouse_xy.x, mouse_xy.y );
-
-            if( index >= 0 && index < currLast ) {
-                ToNrEvent( index + 1 );
-            }
-        }
-        break;
-
-    case WM_NCHITTEST:
-        {
-            LRESULT res = DefWindowProc( hDlg, message, wParam, lParam );
-
-            if( res == HTCLIENT ) res = HTCAPTION;
-
-            SetWindowLong( hDlg, DWL_MSGRESULT, res );
-
-            return TRUE;
-        }
-        break;
-#endif
-
-    case WM_CLOSE:
-        EvalGraphPopDown();
-        break;
-
-    case WM_ENTERSIZEMOVE:
-        return OnEnterSizeMove( &sd, hDlg, wParam, lParam );
-
-    case WM_SIZING:
-        return OnSizing( &sd, hDlg, wParam, lParam );
-
-    case WM_MOVING:
-        return OnMoving( &sd, hDlg, wParam, lParam );
-
-    case WM_EXITSIZEMOVE:
-        return OnExitSizeMove( &sd, hDlg, wParam, lParam );
-    }
-
-    return FALSE;
-}
-
-VOID EvalGraphPopUp()
-{
-  FARPROC lpProc;
-  
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEvalGraph, MF_CHECKED);
-
-  if( evalGraphDialog ) {
-    SendMessage( evalGraphDialog, WM_INITDIALOG, 0, 0 );
-
-    if( ! evalGraphDialogUp ) {
-        ShowWindow(evalGraphDialog, SW_SHOW);
-    }
-  }
-  else {
-    crWhite = appData.evalHistColorWhite;
-    crBlack = appData.evalHistColorBlack;
-
-    lpProc = MakeProcInstance( (FARPROC) EvalGraphProc, hInst );
-
-    /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */
-    CreateDialog( hInst, MAKEINTRESOURCE(DLG_EvalGraph), hwndMain, (DLGPROC)lpProc );
-
-    FreeProcInstance(lpProc);
-  }
-
-  evalGraphDialogUp = TRUE;
-}
-
-VOID EvalGraphPopDown()
-{
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEvalGraph, MF_UNCHECKED);
-
-  if( evalGraphDialog ) {
-      ShowWindow(evalGraphDialog, SW_HIDE);
-  }
-
-  evalGraphDialogUp = FALSE;
-}
-
-VOID EvalGraphSet( int first, int last, int current, ChessProgramStats_Move * pvInfo )
-{
-    /* [AS] Danger! For now we rely on the pvInfo parameter being a static variable! */
-
-    currFirst = first;
-    currLast = last;
-    currCurrent = current;
-    currPvInfo = pvInfo;
-
-    if( evalGraphDialog ) {
-        SendMessage( evalGraphDialog, WM_REFRESH_GRAPH, 0, 0 );
-    }
-}
-
-BOOL EvalGraphIsUp()
-{
-    return evalGraphDialogUp;
-}
diff --git a/winboard/wgamelist.c b/winboard/wgamelist.c
deleted file mode 100644
index 2fa1533..0000000
--- a/winboard/wgamelist.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * wgamelist.c -- Game list window for WinBoard
- *
- * Copyright 1995,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h> /* required for all Windows applications */
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <fcntl.h>
-#include <math.h>
-#include <commdlg.h>
-#include <dlgs.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-
-#include "wsnap.h"
-#include "wgamelist.h"
-
-extern BoardSize boardSize;
-
-/* Module globals */
-HWND gameListDialog = NULL;
-BOOLEAN gameListUp = FALSE;
-FILE* gameFile;
-char* gameFileName = NULL;
-
-/* Imports from winboard.c */
-extern HINSTANCE hInst;
-extern HWND hwndMain;
-extern WindowPlacement wpGameList;
-
-struct GameListStats
-{
-    int white_wins;
-    int black_wins;
-    int drawn;
-    int unfinished;
-};
-
-/* [AS] Wildcard pattern matching */
-static BOOL HasPattern( const char * text, const char * pattern )
-{
-    while( *pattern != '\0' ) {
-        if( *pattern == '*' ) {
-            while( *pattern == '*' ) {
-                pattern++;
-            }
-
-            if( *pattern == '\0' ) {
-                return TRUE;
-            }
-
-            while( *text != '\0' ) {
-                if( HasPattern( text, pattern ) ) {
-                    return TRUE;
-                }
-                text++;
-            }
-        }
-        else if( (*pattern == *text) || ((*pattern == '?') && (*text != '\0')) ) {
-            pattern++;
-            text++;
-            continue;
-        }
-
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-static BOOL SearchPattern( const char * text, const char * pattern )
-{
-    BOOL result = TRUE;
-
-    if( pattern != NULL && *pattern != '\0' ) {
-        if( *pattern == '*' ) {
-            result = HasPattern( text, pattern );
-        }
-        else {
-            result = FALSE;
-
-            while( *text != '\0' ) {
-                if( HasPattern( text, pattern ) ) {
-                    result = TRUE;
-                    break;
-                }
-                text++;
-            }
-        }
-    }
-
-    return result;
-}
-
-/* [AS] Setup the game list according to the specified filter */
-static int GameListToListBox( HWND hDlg, BOOL boReset, char * pszFilter, struct GameListStats * stats )
-{
-    ListGame * lg = (ListGame *) gameList.head;
-    int nItem;
-    BOOL hasFilter = FALSE;
-    int count = 0;
-    struct GameListStats dummy;
-
-    /* Initialize stats (use a dummy variable if caller not interested in them) */
-    if( stats == NULL ) { 
-        stats = &dummy;
-    }
-
-    stats->white_wins = 0;
-    stats->black_wins = 0;
-    stats->drawn = 0;
-    stats->unfinished = 0;
-
-    if( boReset ) {
-        SendDlgItemMessage(hDlg, OPT_GameListText, LB_RESETCONTENT, 0, 0);
-    }
-
-    if( pszFilter != NULL ) {
-        if( strlen( pszFilter ) > 0 ) {
-            hasFilter = TRUE;
-        }
-    }
-
-    for (nItem = 0; nItem < ((ListGame *) gameList.tailPred)->number; nItem++){
-        char * st = GameListLine(lg->number, &lg->gameInfo);
-        BOOL skip = FALSE;
-
-        if( hasFilter ) {
-            if( ! SearchPattern( st, pszFilter ) ) {
-                skip = TRUE;
-            }
-        }
-
-        if( ! skip ) {
-            SendDlgItemMessage(hDlg, OPT_GameListText, LB_ADDSTRING, 0, (LPARAM) st);
-            count++;
-
-            /* Update stats */
-            if( lg->gameInfo.result == WhiteWins )
-                stats->white_wins++;
-            else if( lg->gameInfo.result == BlackWins )
-                stats->black_wins++;
-            else if( lg->gameInfo.result == GameIsDrawn )
-                stats->drawn++;
-            else
-                stats->unfinished++;
-        }
-
-        free(st);
-        lg = (ListGame *) lg->node.succ;
-    }
-
-    SendDlgItemMessage(hDlg, OPT_GameListText, LB_SETCURSEL, 0, 0);
-
-    return count;
-}
-
-/* [AS] Show number of visible (filtered) games and total on window caption */
-static int GameListUpdateTitle( HWND hDlg, char * pszTitle, int item_count, int item_total, struct GameListStats * stats )
-{
-    char buf[256];
-
-    sprintf( buf, "%s - %d/%d games", pszTitle, item_count, item_total );
-
-    if( stats != 0 ) {
-        sprintf( buf+strlen(buf), " (%d-%d-%d)", stats->white_wins, stats->black_wins, stats->drawn );
-    }
-
-    SetWindowText( hDlg, buf );
-
-    return 0;
-}
-
-#define MAX_FILTER_LENGTH   128
-
-LRESULT CALLBACK
-GameListDialog(HWND hDlg, UINT message,	WPARAM wParam, LPARAM lParam)
-{
-  static char szDlgTitle[64];
-  static HANDLE hwndText;
-  int nItem;
-  RECT rect;
-  static int sizeX, sizeY;
-  int newSizeX, newSizeY, flags;
-  MINMAXINFO *mmi;
-  static BOOL filterHasFocus = FALSE;
-  int count;
-  struct GameListStats stats;
-  static SnapData sd;
-
-  switch (message) {
-  case WM_INITDIALOG: 
-    GetWindowText( hDlg, szDlgTitle, sizeof(szDlgTitle) );
-    szDlgTitle[ sizeof(szDlgTitle)-1 ] = '\0';
-
-    if (gameListDialog) {
-      SendDlgItemMessage(hDlg, OPT_GameListText, LB_RESETCONTENT, 0, 0);
-    }
-
-    /* Initialize the dialog items */
-    hwndText = GetDlgItem(hDlg, OPT_TagsText);
-
-    /* Set font */
-    SendDlgItemMessage( hDlg, OPT_GameListText, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 ));
-
-    count = GameListToListBox( hDlg, gameListDialog ? TRUE : FALSE, NULL, &stats );
-
-    SendDlgItemMessage( hDlg, IDC_GameListFilter, WM_SETTEXT, 0, (LPARAM) "" );
-    SendDlgItemMessage( hDlg, IDC_GameListFilter, EM_SETLIMITTEXT, MAX_FILTER_LENGTH, 0 );
-
-    filterHasFocus = FALSE;
-
-    /* Size and position the dialog */
-    if (!gameListDialog) {
-      gameListDialog = hDlg;
-      flags = SWP_NOZORDER;
-      GetClientRect(hDlg, &rect);
-      sizeX = rect.right;
-      sizeY = rect.bottom;
-      if (wpGameList.x != CW_USEDEFAULT && wpGameList.y != CW_USEDEFAULT &&
-	  wpGameList.width != CW_USEDEFAULT && wpGameList.height != CW_USEDEFAULT) {
-	WINDOWPLACEMENT wp;
-	EnsureOnScreen(&wpGameList.x, &wpGameList.y, 0, 0);
-	wp.length = sizeof(WINDOWPLACEMENT);
-	wp.flags = 0;
-	wp.showCmd = SW_SHOW;
-	wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;
-	wp.rcNormalPosition.left = wpGameList.x;
-	wp.rcNormalPosition.right = wpGameList.x + wpGameList.width;
-	wp.rcNormalPosition.top = wpGameList.y;
-	wp.rcNormalPosition.bottom = wpGameList.y + wpGameList.height;
-	SetWindowPlacement(hDlg, &wp);
-
-	GetClientRect(hDlg, &rect);
-	newSizeX = rect.right;
-	newSizeY = rect.bottom;
-        ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY,
-			      newSizeX, newSizeY);
-	sizeX = newSizeX;
-	sizeY = newSizeY;
-      }
-
-      GameListUpdateTitle( hDlg, szDlgTitle, count, ((ListGame *) gameList.tailPred)->number, &stats );
-    }
-    return FALSE;
-    
-  case WM_SIZE:
-    newSizeX = LOWORD(lParam);
-    newSizeY = HIWORD(lParam);
-    ResizeEditPlusButtons(hDlg, GetDlgItem(hDlg, OPT_GameListText),
-      sizeX, sizeY, newSizeX, newSizeY);
-    sizeX = newSizeX;
-    sizeY = newSizeY;
-    break;
-
-  case WM_ENTERSIZEMOVE:
-    return OnEnterSizeMove( &sd, hDlg, wParam, lParam );
-
-  case WM_SIZING:
-    return OnSizing( &sd, hDlg, wParam, lParam );
-
-  case WM_MOVING:
-    return OnMoving( &sd, hDlg, wParam, lParam );
-
-  case WM_EXITSIZEMOVE:
-    return OnExitSizeMove( &sd, hDlg, wParam, lParam );
-  
-  case WM_GETMINMAXINFO:
-    /* Prevent resizing window too small */
-    mmi = (MINMAXINFO *) lParam;
-    mmi->ptMinTrackSize.x = 100;
-    mmi->ptMinTrackSize.y = 100;
-    break;
-
-  case WM_COMMAND:
-      /* 
-        [AS]
-        If <Enter> is pressed while editing the filter, it's better to apply
-        the filter rather than selecting the current game.
-      */
-      if( LOWORD(wParam) == IDC_GameListFilter ) {
-          switch( HIWORD(wParam) ) {
-          case EN_SETFOCUS:
-              filterHasFocus = TRUE;
-              break;
-          case EN_KILLFOCUS:
-              filterHasFocus = FALSE;
-              break;
-          }
-      }
-
-      if( filterHasFocus && (LOWORD(wParam) == IDOK) ) {
-          wParam = IDC_GameListDoFilter;
-      }
-      /* [AS] End command replacement */
-
-    switch (LOWORD(wParam)) {
-    case IDOK:
-    case OPT_GameListLoad:
-      nItem = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0);
-      if (nItem < 0) {
-	/* is this possible? */
-	DisplayError("No game selected", 0);
-	return TRUE;
-      }
-      break; /* load the game*/
-      
-    case OPT_GameListNext:
-      nItem = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0);
-      nItem++;
-      if (nItem >= ((ListGame *) gameList.tailPred)->number) {
-        /* [AS] Removed error message */
-	/* DisplayError("Can't go forward any further", 0); */
-	return TRUE;
-      }
-      SendDlgItemMessage(hDlg, OPT_GameListText, LB_SETCURSEL, nItem, 0);
-      break; /* load the game*/
-      
-    case OPT_GameListPrev:
-      nItem = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0);
-      nItem--;
-      if (nItem < 0) {
-        /* [AS] Removed error message, added return */
-	/* DisplayError("Can't back up any further", 0); */
-        return TRUE;
-      }
-      SendDlgItemMessage(hDlg, OPT_GameListText, LB_SETCURSEL, nItem, 0);
-      break; /* load the game*/
-
-    /* [AS] */
-    case IDC_GameListDoFilter:
-        {
-            char filter[MAX_FILTER_LENGTH+1];
-            
-            if( GetDlgItemText( hDlg, IDC_GameListFilter, filter, sizeof(filter) ) >= 0 ) {
-                filter[ sizeof(filter)-1 ] = '\0';
-                count = GameListToListBox( hDlg, TRUE, filter, &stats );
-                GameListUpdateTitle( hDlg, szDlgTitle, count, ((ListGame *) gameList.tailPred)->number, &stats );
-            }
-        }
-        return FALSE;
-        break;
-
-    case IDCANCEL:
-    case OPT_GameListClose:
-      GameListPopDown();
-      return TRUE;
-      
-    case OPT_GameListText:
-      switch (HIWORD(wParam)) {
-      case LBN_DBLCLK:
-	nItem = SendMessage((HWND) lParam, LB_GETCURSEL, 0, 0);
-	break; /* load the game*/
-	
-      default:
-	return FALSE;
-      }
-      break;
-
-    default:
-      return FALSE;
-    }
-
-    /* Load the game */
-    {
-        /* [AS] Get index from the item itself, because filtering makes original order unuseable. */
-        int index = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0);
-        char * text;
-        LRESULT res;
-
-        if( index < 0 ) {
-            return TRUE;
-        }
-
-        res = SendDlgItemMessage( hDlg, OPT_GameListText, LB_GETTEXTLEN, index, 0 );
-
-        if( res == LB_ERR ) {
-            return TRUE;
-        }
-
-        text = (char *) malloc( res+1 );
-
-        res = SendDlgItemMessage( hDlg, OPT_GameListText, LB_GETTEXT, index, (LPARAM)text );
-
-        index = atoi( text );
-
-        nItem = index - 1;
-
-        free( text );
-        /* [AS] End: nItem has been "patched" now! */
-
-        if (cmailMsgLoaded) {
-            CmailLoadGame(gameFile, nItem + 1, gameFileName, TRUE);
-        }
-        else {
-            LoadGame(gameFile, nItem + 1, gameFileName, TRUE);
-        }
-    }
-
-    return TRUE;
-
-  default:
-    break;
-  }
-  return FALSE;
-}
-
-
-VOID GameListPopUp(FILE *fp, char *filename)
-{
-  FARPROC lpProc;
-  
-  gameFile = fp;
-  if (gameFileName != filename) {
-    if (gameFileName) free(gameFileName);
-    gameFileName = StrSave(filename);
-  }
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_CHECKED);
-  if (gameListDialog) {
-    SendMessage(gameListDialog, WM_INITDIALOG, 0, 0);
-    if (!gameListUp) ShowWindow(gameListDialog, SW_SHOW);
-  } else {
-    lpProc = MakeProcInstance((FARPROC)GameListDialog, hInst);
-    CreateDialog(hInst, MAKEINTRESOURCE(DLG_GameList),
-      hwndMain, (DLGPROC)lpProc);
-    FreeProcInstance(lpProc);
-  }
-  gameListUp = TRUE;
-}
-
-VOID GameListPopDown(void)
-{
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_UNCHECKED);
-  if (gameListDialog) ShowWindow(gameListDialog, SW_HIDE);
-  gameListUp = FALSE;
-}
-
-
-VOID GameListHighlight(int index)
-{
-  if (gameListDialog == NULL) return;
-  SendDlgItemMessage(gameListDialog, OPT_GameListText, 
-    LB_SETCURSEL, index - 1, 0);
-}
-
-
-VOID GameListDestroy()
-{
-  GameListPopDown();
-  if (gameFileName) {
-    free(gameFileName);
-    gameFileName = NULL;
-  }
-}
-
-VOID ShowGameListProc()
-{
-  if (gameListUp) {
-    GameListPopDown();
-  } else {
-    if (gameFileName) {
-      GameListPopUp(gameFile, gameFileName);
-    } else {
-      DisplayError("No game list", 0);
-    }
-  }
-}
-
-HGLOBAL ExportGameListAsText()
-{
-    HGLOBAL result = NULL;
-    LPVOID lpMem = NULL;
-    ListGame * lg = (ListGame *) gameList.head;
-    int nItem;
-    DWORD dwLen = 0;
-
-    if( ! gameFileName || ((ListGame *) gameList.tailPred)->number <= 0 ) {
-        DisplayError("Game list not loaded or empty", 0);
-        return NULL;
-    }
-
-    /* Get list size */
-    for (nItem = 0; nItem < ((ListGame *) gameList.tailPred)->number; nItem++){
-        char * st = GameListLineFull(lg->number, &lg->gameInfo);
-
-        dwLen += strlen(st) + 2; /* Add extra characters for "\r\n" */
-
-        free(st);
-        lg = (ListGame *) lg->node.succ;
-    }
-
-    /* Allocate memory for the list */
-    result = GlobalAlloc(GHND, dwLen+1 );
-
-    if( result != NULL ) {
-        lpMem = GlobalLock(result);
-    }
-
-    /* Copy the list into the global memory block */
-    if( lpMem != NULL ) {
-        char * dst = (char *) lpMem;
-        size_t len;
-
-        lg = (ListGame *) gameList.head;
-
-        for (nItem = 0; nItem < ((ListGame *) gameList.tailPred)->number; nItem++){
-            char * st = GameListLineFull(lg->number, &lg->gameInfo);
-
-            len = sprintf( dst, "%s\r\n", st );
-            dst += len;
-
-            free(st);
-            lg = (ListGame *) lg->node.succ;
-        }
-
-        GlobalUnlock( result );
-    }
-
-    return result;
-}
diff --git a/winboard/wgamelist.h b/winboard/wgamelist.h
deleted file mode 100644
index aa554f9..0000000
--- a/winboard/wgamelist.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * wgamelist.h -- Game list window for WinBoard
- *
- * Copyright 1995,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-VOID ShowGameListProc(void);
-extern HWND gameListDialog;
-extern int gameListX, gameListY, gameListW, gameListH;
diff --git a/winboard/whistory.c b/winboard/whistory.c
deleted file mode 100644
index 73ae025..0000000
--- a/winboard/whistory.c
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- * Move history for WinBoard
- *
- * Author: Alessandro Scotti (Dec 2005)
- *
- * Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/. 
- *
- * ------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h> /* required for all Windows applications */
-#include <richedit.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <commdlg.h>
-#include <dlgs.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-
-#include "wsnap.h"
-
-VOID MoveHistorySet( char movelist[][2*MOVE_LEN], int first, int last, int current, ChessProgramStats_Move * pvInfo );
-VOID MoveHistoryPopUp();
-VOID MoveHistoryPopDown();
-BOOL MoveHistoryIsUp();
-
-/* Imports from backend.c */
-char * SavePart(char *str);
-
-/* Imports from winboard.c */
-extern HWND moveHistoryDialog;
-extern BOOLEAN moveHistoryDialogUp;
-
-extern HINSTANCE hInst;
-extern HWND hwndMain;
-
-extern WindowPlacement wpMoveHistory;
-
-extern BoardSize boardSize;
-
-/* Module globals */
-typedef char MoveHistoryString[ MOVE_LEN*2 ];
-
-static int lastFirst = 0;
-static int lastLast = 0;
-static int lastCurrent = -1;
-
-static char lastLastMove[ MOVE_LEN ];
-
-static MoveHistoryString * currMovelist;
-static ChessProgramStats_Move * currPvInfo;
-static int currFirst = 0;
-static int currLast = 0;
-static int currCurrent = -1;
-
-typedef struct {
-    int memoOffset;
-    int memoLength;
-} HistoryMove;
-
-static HistoryMove histMoves[ MAX_MOVES ];
-
-#define WM_REFRESH_HISTORY  (WM_USER+4657)
-
-#define DEFAULT_COLOR       0xFFFFFFFF
-
-#define H_MARGIN            2
-#define V_MARGIN            2
-
-/* Note: in the following code a "Memo" is a Rich Edit control (it's Delphi lingo) */
-
-static VOID HighlightMove( int index, BOOL highlight )
-{
-    if( index >= 0 && index < MAX_MOVES ) {
-        CHARFORMAT cf;
-        HWND hMemo = GetDlgItem( moveHistoryDialog, IDC_MoveHistory );
-
-        SendMessage( hMemo, 
-            EM_SETSEL, 
-            histMoves[index].memoOffset, 
-            histMoves[index].memoOffset + histMoves[index].memoLength );
-
-
-        /* Set style */
-        ZeroMemory( &cf, sizeof(cf) );
-
-        cf.cbSize = sizeof(cf);
-        cf.dwMask = CFM_BOLD | CFM_COLOR;
-
-        if( highlight ) {
-            cf.dwEffects |= CFE_BOLD;
-            cf.crTextColor = RGB( 0x00, 0x00, 0xFF );
-        }
-        else {
-            cf.dwEffects |= CFE_AUTOCOLOR;
-        }
-
-        SendMessage( hMemo, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf );
-    }
-}
-
-static BOOL OnlyCurrentPositionChanged()
-{
-    BOOL result = FALSE;
-
-    if( lastFirst >= 0 &&
-        lastLast >= lastFirst &&
-        lastCurrent >= lastFirst && 
-        currFirst == lastFirst &&
-        currLast == lastLast &&
-        currCurrent >= 0 &&
-        TRUE )
-    {
-        result = TRUE;
-
-        /* Special case: last move changed */
-        if( currCurrent == currLast-1 ) {
-            if( strcmp( currMovelist[currCurrent], lastLastMove ) != 0 ) {
-                result = FALSE;
-            }
-        }
-    }
-
-    return result;
-}
-
-static BOOL OneMoveAppended()
-{
-    BOOL result = FALSE;
-
-    if( lastCurrent >= 0 && lastCurrent >= lastFirst && lastLast >= lastFirst &&
-        currCurrent >= 0 && currCurrent >= currFirst && currLast >= currFirst &&
-        lastFirst == currFirst &&
-        lastLast == (currLast-1) &&
-        lastCurrent == (currCurrent-1) &&
-        currCurrent == (currLast-1) &&
-        TRUE )
-    {
-        result = TRUE;
-    }
-
-    return result;
-}
-
-static VOID ClearMemo()
-{
-    SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, WM_SETTEXT, 0, (LPARAM) "" );
-}
-
-static int AppendToMemo( char * text, DWORD flags, DWORD color )
-{
-    CHARFORMAT cf;
-
-    HWND hMemo = GetDlgItem( moveHistoryDialog, IDC_MoveHistory );
-
-    /* Select end of text */
-    int cbTextLen = (int) SendMessage( hMemo, WM_GETTEXTLENGTH, 0, 0 );
-
-    SendMessage( hMemo, EM_SETSEL, cbTextLen, cbTextLen );
-
-    /* Set style */
-    ZeroMemory( &cf, sizeof(cf) );
-
-    cf.cbSize = sizeof(cf);
-    cf.dwMask = CFM_BOLD | CFM_ITALIC | CFM_COLOR | CFM_UNDERLINE;
-    cf.dwEffects = flags;
-
-    if( color != DEFAULT_COLOR ) {
-        cf.crTextColor = color;
-    }
-    else {
-        cf.dwEffects |= CFE_AUTOCOLOR;
-    }
-
-    SendMessage( hMemo, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf );
-
-    /* Append text */
-    SendMessage( hMemo, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text );
-
-    /* Return offset of appended text */
-    return cbTextLen;
-}
-
-static VOID AppendMoveToMemo( int index )
-{
-    char buf[64];
-    DWORD flags = 0;
-    DWORD color = DEFAULT_COLOR;
-
-    if( index < 0 || index >= MAX_MOVES ) {
-        return;
-    }
-
-    buf[0] = '\0';
-
-    /* Move number */
-    if( (index % 2) == 0 ) {
-        sprintf( buf, "%d.%s ", (index / 2)+1, index & 1 ? ".." : "" );
-        AppendToMemo( buf, CFE_BOLD, DEFAULT_COLOR );
-    }
-
-    /* Move text */
-    strcpy( buf, SavePart( currMovelist[index] ) );
-    strcat( buf, " " );
-
-    histMoves[index].memoOffset = AppendToMemo( buf, flags, color );
-    histMoves[index].memoLength = strlen(buf)-1;
-
-    /* PV info (if any) */
-    if( appData.showEvalInMoveHistory && currPvInfo[index].depth > 0 ) {
-        sprintf( buf, "{%s%.2f/%d} ", 
-            currPvInfo[index].score >= 0 ? "+" : "",
-            currPvInfo[index].score / 100.0,
-            currPvInfo[index].depth );
-
-        AppendToMemo( buf, flags, 
-            color == DEFAULT_COLOR ? GetSysColor(COLOR_GRAYTEXT) : color );
-    }
-}
-
-static void RefreshMemoContent()
-{
-    int i;
-
-    ClearMemo();
-
-    for( i=currFirst; i<currLast; i++ ) {
-        AppendMoveToMemo( i );
-    }
-}
-
-static void MemoContentUpdated()
-{
-    int caretPos;
-
-    HighlightMove( lastCurrent, FALSE );
-    HighlightMove( currCurrent, TRUE );
-
-    lastFirst = currFirst;
-    lastLast = currLast;
-    lastCurrent = currCurrent;
-    lastLastMove[0] = '\0';
-
-    if( lastLast > 0 ) {
-        strcpy( lastLastMove, SavePart( currMovelist[lastLast-1] ) );
-    }
-
-    /* Deselect any text, move caret to end of memo */
-    if( currCurrent >= 0 ) {
-        caretPos = histMoves[currCurrent].memoOffset + histMoves[currCurrent].memoLength;
-    }
-    else {
-        caretPos = (int) SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, WM_GETTEXTLENGTH, 0, 0 );
-    }
-
-    SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SETSEL, caretPos, caretPos );
-
-    SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SCROLLCARET, 0, 0 );
-}
-
-int FindMoveByCharIndex( int char_index )
-{
-    int index;
-
-    for( index=currFirst; index<currLast; index++ ) {
-        if( char_index >= histMoves[index].memoOffset &&
-            char_index <  (histMoves[index].memoOffset + histMoves[index].memoLength) )
-        {
-            return index;
-        }
-    }
-
-    return -1;
-}
-
-LRESULT CALLBACK HistoryDialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
-{
-    static SnapData sd;
-
-    switch (message) {
-    case WM_INITDIALOG:
-        if( moveHistoryDialog == NULL ) {
-            moveHistoryDialog = hDlg;
-
-            /* Enable word wrapping and notifications */
-            SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SETTARGETDEVICE, 0, 0 );
-
-            SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS );
-
-            /* Set font */
-	    SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 ));
-
-            /* Restore window placement */
-            RestoreWindowPlacement( hDlg, &wpMoveHistory );
-        }
-
-        /* Update memo */
-        RefreshMemoContent();
-
-        MemoContentUpdated();
-
-        return FALSE;
-
-    case WM_COMMAND:
-        switch (LOWORD(wParam)) {
-        case IDOK:
-          EndDialog(hDlg, TRUE);
-          return TRUE;
-
-        case IDCANCEL:
-          EndDialog(hDlg, FALSE);
-          return TRUE;
-
-        default:
-          break;
-        }
-
-        break;
-
-    case WM_NOTIFY:
-        if( wParam == IDC_MoveHistory ) {
-            MSGFILTER * lpMF = (MSGFILTER *) lParam;
-
-            if( lpMF->msg == WM_LBUTTONDBLCLK && (lpMF->wParam & (MK_CONTROL | MK_SHIFT)) == 0 ) {
-                POINTL pt;
-                LRESULT index;
-
-                pt.x = LOWORD( lpMF->lParam );
-                pt.y = HIWORD( lpMF->lParam );
-
-                index = SendDlgItemMessage( hDlg, IDC_MoveHistory, EM_CHARFROMPOS, 0, (LPARAM) &pt );
-
-                index = FindMoveByCharIndex( index );
-
-                if( index >= 0 ) {
-                    ToNrEvent( index + 1 );
-                }
-
-                /* Zap the message for good: apparently, returning non-zero is not enough */
-                lpMF->msg = WM_USER;
-
-                return TRUE;
-            }
-        }
-        break;
-
-    case WM_REFRESH_HISTORY:
-        /* Update the GUI */
-        if( OnlyCurrentPositionChanged() ) {
-            /* Only "cursor" changed, no need to update memo content */
-        }
-        else if( OneMoveAppended() ) {
-            AppendMoveToMemo( currCurrent );
-        }
-        else {
-            RefreshMemoContent();
-        }
-
-        MemoContentUpdated();
-
-        break;
-
-    case WM_SIZE:
-        SetWindowPos( GetDlgItem( moveHistoryDialog, IDC_MoveHistory ),
-            HWND_TOP,
-            H_MARGIN, V_MARGIN,
-            LOWORD(lParam) - 2*H_MARGIN,
-            HIWORD(lParam) - 2*V_MARGIN,
-            SWP_NOZORDER );
-        break;
-
-    case WM_GETMINMAXINFO:
-        {
-            MINMAXINFO * mmi = (MINMAXINFO *) lParam;
-        
-            mmi->ptMinTrackSize.x = 100;
-            mmi->ptMinTrackSize.y = 100;
-        }
-        break;
-
-    case WM_CLOSE:
-        MoveHistoryPopDown();
-        break;
-
-    case WM_ENTERSIZEMOVE:
-        return OnEnterSizeMove( &sd, hDlg, wParam, lParam );
-
-    case WM_SIZING:
-        return OnSizing( &sd, hDlg, wParam, lParam );
-
-    case WM_MOVING:
-        return OnMoving( &sd, hDlg, wParam, lParam );
-
-    case WM_EXITSIZEMOVE:
-        return OnExitSizeMove( &sd, hDlg, wParam, lParam );
-    }
-
-    return FALSE;
-}
-
-VOID MoveHistoryPopUp()
-{
-  FARPROC lpProc;
-  
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowMoveHistory, MF_CHECKED);
-
-  if( moveHistoryDialog ) {
-    SendMessage( moveHistoryDialog, WM_INITDIALOG, 0, 0 );
-
-    if( ! moveHistoryDialogUp ) {
-        ShowWindow(moveHistoryDialog, SW_SHOW);
-    }
-  }
-  else {
-    lpProc = MakeProcInstance( (FARPROC) HistoryDialogProc, hInst );
-
-    /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */
-    CreateDialog( hInst, MAKEINTRESOURCE(DLG_MoveHistory), hwndMain, (DLGPROC)lpProc );
-
-    FreeProcInstance(lpProc);
-  }
-
-  moveHistoryDialogUp = TRUE;
-}
-
-VOID MoveHistoryPopDown()
-{
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowMoveHistory, MF_UNCHECKED);
-
-  if( moveHistoryDialog ) {
-      ShowWindow(moveHistoryDialog, SW_HIDE);
-  }
-
-  moveHistoryDialogUp = FALSE;
-}
-
-VOID MoveHistorySet( char movelist[][2*MOVE_LEN], int first, int last, int current, ChessProgramStats_Move * pvInfo )
-{
-    /* [AS] Danger! For now we rely on the movelist parameter being a static variable! */
-
-    currMovelist = movelist;
-    currFirst = first;
-    currLast = last;
-    currCurrent = current;
-    currPvInfo = pvInfo;
-
-    if( moveHistoryDialog ) {
-        SendMessage( moveHistoryDialog, WM_REFRESH_HISTORY, 0, 0 );
-    }
-}
-
-BOOL MoveHistoryIsUp()
-{
-    return moveHistoryDialogUp;
-}
diff --git a/winboard/winboard.c b/winboard/winboard.c
deleted file mode 100644
index d6f4a45..0000000
--- a/winboard/winboard.c
+++ /dev/null
@@ -1,11005 +0,0 @@
-/*
- * WinBoard.c -- Windows NT front end to XBoard
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts. 
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * XBoard borrows its colors and the bitmaps.xchess bitmap set from XChess,
- * which was written and is copyrighted by Wayne Christopher.
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h>
-#include <winuser.h>
-#include <winsock.h>
-#include <commctrl.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <malloc.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <math.h>
-#include <commdlg.h>
-#include <dlgs.h>
-#include <richedit.h>
-#include <mmsystem.h>
-#include <ctype.h>
-
-#if __GNUC__
-#include <errno.h>
-#include <string.h>
-#endif
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-#include "moves.h"
-#include "wclipbrd.h"
-#include "wgamelist.h"
-#include "wedittags.h"
-#include "woptions.h"
-#include "wsockerr.h"
-#include "defaults.h"
-#include "help.h"
-#include "wsnap.h"
-
-//void InitEngineUCI( const char * iniDir, ChessProgramState * cps );
-
-  int myrandom(void);
-  void mysrandom(unsigned int seed);
-
-extern int whiteFlag, blackFlag;
-Boolean flipClock = FALSE;
-
-void DisplayHoldingsCount(HDC hdc, int x, int y, int align, int copyNumber);
-VOID NewVariantPopup(HWND hwnd);
-int FinishMove P((ChessMove moveType, int fromX, int fromY, int toX, int toY,
-		   /*char*/int promoChar));
-void AnimateAtomicCapture(int fromX, int fromY, int toX, int toY, int nFrames);
-void DisplayMove P((int moveNumber));
-Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen));
-typedef struct {
-  ChessSquare piece;  
-  POINT pos;      /* window coordinates of current pos */
-  POINT lastpos;  /* window coordinates of last pos - used for clipping */
-  POINT from;     /* board coordinates of the piece's orig pos */
-  POINT to;       /* board coordinates of the piece's new pos */
-} AnimInfo;
-
-static AnimInfo animInfo = { EmptySquare, {-1,-1}, {-1,-1}, {-1,-1} };
-
-typedef struct {
-  POINT start;    /* window coordinates of start pos */
-  POINT pos;      /* window coordinates of current pos */
-  POINT lastpos;  /* window coordinates of last pos - used for clipping */
-  POINT from;     /* board coordinates of the piece's orig pos */
-} DragInfo;
-
-static DragInfo dragInfo = { {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1} };
-
-typedef struct {
-  POINT sq[2];	  /* board coordinates of from, to squares */
-} HighlightInfo;
-
-static HighlightInfo highlightInfo        = { {{-1, -1}, {-1, -1}} };
-static HighlightInfo premoveHighlightInfo = { {{-1, -1}, {-1, -1}} };
-
-typedef struct { // [HGM] atomic
-  int fromX, fromY, toX, toY, radius;
-} ExplodeInfo;
-
-static ExplodeInfo explodeInfo;
-
-/* Window class names */
-char szAppName[] = "WinBoard";
-char szConsoleName[] = "WBConsole";
-
-/* Title bar text */
-char szTitle[] = "WinBoard";
-char szConsoleTitle[] = "I C S Interaction";
-
-char *programName;
-char *settingsFileName;
-BOOLEAN saveSettingsOnExit;
-char installDir[MSG_SIZ];
-
-BoardSize boardSize;
-BOOLEAN chessProgram;
-static int boardX, boardY;
-int  minX, minY; // [HGM] placement: volatile limits on upper-left corner
-static int squareSize, lineGap, minorSize;
-static int winWidth, winHeight, winW, winH;
-static RECT messageRect, whiteRect, blackRect, leftLogoRect, rightLogoRect; // [HGM] logo
-static int logoHeight = 0;
-static char messageText[MESSAGE_TEXT_MAX];
-static int clockTimerEvent = 0;
-static int loadGameTimerEvent = 0;
-static int analysisTimerEvent = 0;
-static DelayedEventCallback delayedTimerCallback;
-static int delayedTimerEvent = 0;
-static int buttonCount = 2;
-char *icsTextMenuString;
-char *icsNames;
-char *firstChessProgramNames;
-char *secondChessProgramNames;
-
-#define ARG_MAX 128*1024 /* [AS] For Roger Brown's very long list! */
-
-#define PALETTESIZE 256
-
-HINSTANCE hInst;          /* current instance */
-HWND hwndMain = NULL;        /* root window*/
-HWND hwndConsole = NULL;
-BOOLEAN alwaysOnTop = FALSE;
-RECT boardRect;
-COLORREF lightSquareColor, darkSquareColor, whitePieceColor, 
-  blackPieceColor, highlightSquareColor, premoveHighlightColor;
-HPALETTE hPal;
-ColorClass currentColorClass;
-
-HWND hCommPort = NULL;    /* currently open comm port */
-static HWND hwndPause;    /* pause button */
-static HBITMAP pieceBitmap[3][(int) BlackPawn]; /* [HGM] nr of bitmaps referred to bP in stead of wK */
-static HBRUSH lightSquareBrush, darkSquareBrush,
-  blackSquareBrush, /* [HGM] for band between board and holdings */
-  explodeBrush,     /* [HGM] atomic */
-  whitePieceBrush, blackPieceBrush, iconBkgndBrush /*, outlineBrush*/;
-static POINT gridEndpoints[(BOARD_SIZE + 1) * 4];
-static DWORD gridVertexCounts[(BOARD_SIZE + 1) * 2];
-static HPEN gridPen = NULL;
-static HPEN highlightPen = NULL;
-static HPEN premovePen = NULL;
-static NPLOGPALETTE pLogPal;
-static BOOL paletteChanged = FALSE;
-static HICON iconWhite, iconBlack, iconCurrent;
-static int doingSizing = FALSE;
-static int lastSizing = 0;
-static int prevStderrPort;
-static HBITMAP userLogo;
-
-/* [AS] Support for background textures */
-#define BACK_TEXTURE_MODE_DISABLED      0
-#define BACK_TEXTURE_MODE_PLAIN         1
-#define BACK_TEXTURE_MODE_FULL_RANDOM   2
-
-static HBITMAP liteBackTexture = NULL;
-static HBITMAP darkBackTexture = NULL;
-static int liteBackTextureMode = BACK_TEXTURE_MODE_PLAIN;
-static int darkBackTextureMode = BACK_TEXTURE_MODE_PLAIN;
-static int backTextureSquareSize = 0;
-static struct { int x; int y; int mode; } backTextureSquareInfo[BOARD_SIZE][BOARD_SIZE];
-
-#if __GNUC__ && !defined(_winmajor)
-#define oldDialog 0 /* cygwin doesn't define _winmajor; mingw does */
-#else
-#define oldDialog (_winmajor < 4)
-#endif
-
-char *defaultTextAttribs[] = 
-{
-  COLOR_SHOUT, COLOR_SSHOUT, COLOR_CHANNEL1, COLOR_CHANNEL, COLOR_KIBITZ,
-  COLOR_TELL, COLOR_CHALLENGE, COLOR_REQUEST, COLOR_SEEK, COLOR_NORMAL,
-  COLOR_NONE
-};
-
-typedef struct {
-  char *name;
-  int squareSize;
-  int lineGap;
-  int smallLayout;
-  int tinyLayout;
-  int cliWidth, cliHeight;
-} SizeInfo;
-
-SizeInfo sizeInfo[] = 
-{
-  { "tiny",     21, 0, 1, 1, 0, 0 },
-  { "teeny",    25, 1, 1, 1, 0, 0 },
-  { "dinky",    29, 1, 1, 1, 0, 0 },
-  { "petite",   33, 1, 1, 1, 0, 0 },
-  { "slim",     37, 2, 1, 0, 0, 0 },
-  { "small",    40, 2, 1, 0, 0, 0 },
-  { "mediocre", 45, 2, 1, 0, 0, 0 },
-  { "middling", 49, 2, 0, 0, 0, 0 },
-  { "average",  54, 2, 0, 0, 0, 0 },
-  { "moderate", 58, 3, 0, 0, 0, 0 },
-  { "medium",   64, 3, 0, 0, 0, 0 },
-  { "bulky",    72, 3, 0, 0, 0, 0 },
-  { "large",    80, 3, 0, 0, 0, 0 },
-  { "big",      87, 3, 0, 0, 0, 0 },
-  { "huge",     95, 3, 0, 0, 0, 0 },
-  { "giant",    108, 3, 0, 0, 0, 0 },
-  { "colossal", 116, 4, 0, 0, 0, 0 },
-  { "titanic",  129, 4, 0, 0, 0, 0 },
-  { NULL, 0, 0, 0, 0, 0, 0 }
-};
-
-#define MF(x) {x, {{0,}, 0. }, {0, }, 0}
-MyFont fontRec[NUM_SIZES][NUM_FONTS] =
-{
-  { MF(CLOCK_FONT_TINY), MF(MESSAGE_FONT_TINY), MF(COORD_FONT_TINY), MF(CONSOLE_FONT_TINY), MF(COMMENT_FONT_TINY), MF(EDITTAGS_FONT_TINY), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_TEENY), MF(MESSAGE_FONT_TEENY), MF(COORD_FONT_TEENY), MF(CONSOLE_FONT_TEENY), MF(COMMENT_FONT_TEENY), MF(EDITTAGS_FONT_TEENY), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_DINKY), MF(MESSAGE_FONT_DINKY), MF(COORD_FONT_DINKY), MF(CONSOLE_FONT_DINKY), MF(COMMENT_FONT_DINKY), MF(EDITTAGS_FONT_DINKY), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_PETITE), MF(MESSAGE_FONT_PETITE), MF(COORD_FONT_PETITE), MF(CONSOLE_FONT_PETITE), MF(COMMENT_FONT_PETITE), MF(EDITTAGS_FONT_PETITE), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_SLIM), MF(MESSAGE_FONT_SLIM), MF(COORD_FONT_SLIM), MF(CONSOLE_FONT_SLIM), MF(COMMENT_FONT_SLIM), MF(EDITTAGS_FONT_SLIM), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_SMALL), MF(MESSAGE_FONT_SMALL), MF(COORD_FONT_SMALL), MF(CONSOLE_FONT_SMALL), MF(COMMENT_FONT_SMALL), MF(EDITTAGS_FONT_SMALL), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_MEDIOCRE), MF(MESSAGE_FONT_MEDIOCRE), MF(COORD_FONT_MEDIOCRE), MF(CONSOLE_FONT_MEDIOCRE), MF(COMMENT_FONT_MEDIOCRE), MF(EDITTAGS_FONT_MEDIOCRE), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_MIDDLING), MF(MESSAGE_FONT_MIDDLING), MF(COORD_FONT_MIDDLING), MF(CONSOLE_FONT_MIDDLING), MF(COMMENT_FONT_MIDDLING), MF(EDITTAGS_FONT_MIDDLING), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_AVERAGE), MF(MESSAGE_FONT_AVERAGE), MF(COORD_FONT_AVERAGE), MF(CONSOLE_FONT_AVERAGE), MF(COMMENT_FONT_AVERAGE), MF(EDITTAGS_FONT_AVERAGE), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_MODERATE), MF(MESSAGE_FONT_MODERATE), MF(COORD_FONT_MODERATE), MF(CONSOLE_FONT_MODERATE), MF(COMMENT_FONT_MODERATE), MF(EDITTAGS_FONT_MODERATE), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_MEDIUM), MF(MESSAGE_FONT_MEDIUM), MF(COORD_FONT_MEDIUM), MF(CONSOLE_FONT_MEDIUM), MF(COMMENT_FONT_MEDIUM), MF(EDITTAGS_FONT_MEDIUM), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_BULKY), MF(MESSAGE_FONT_BULKY), MF(COORD_FONT_BULKY), MF(CONSOLE_FONT_BULKY), MF(COMMENT_FONT_BULKY), MF(EDITTAGS_FONT_BULKY), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_LARGE), MF(MESSAGE_FONT_LARGE), MF(COORD_FONT_LARGE), MF(CONSOLE_FONT_LARGE), MF(COMMENT_FONT_LARGE), MF(EDITTAGS_FONT_LARGE), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_BIG), MF(MESSAGE_FONT_BIG), MF(COORD_FONT_BIG), MF(CONSOLE_FONT_BIG), MF(COMMENT_FONT_BIG), MF(EDITTAGS_FONT_BIG), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_HUGE), MF(MESSAGE_FONT_HUGE), MF(COORD_FONT_HUGE), MF(CONSOLE_FONT_HUGE), MF(COMMENT_FONT_HUGE), MF(EDITTAGS_FONT_HUGE), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_GIANT), MF(MESSAGE_FONT_GIANT), MF(COORD_FONT_GIANT), MF(CONSOLE_FONT_GIANT), MF(COMMENT_FONT_GIANT), MF(EDITTAGS_FONT_GIANT), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_COLOSSAL), MF(MESSAGE_FONT_COLOSSAL), MF(COORD_FONT_COLOSSAL), MF(CONSOLE_FONT_COLOSSAL), MF(COMMENT_FONT_COLOSSAL), MF(EDITTAGS_FONT_COLOSSAL), MF(MOVEHISTORY_FONT_ALL) },
-  { MF(CLOCK_FONT_TITANIC), MF(MESSAGE_FONT_TITANIC), MF(COORD_FONT_TITANIC), MF(CONSOLE_FONT_TITANIC), MF(COMMENT_FONT_TITANIC), MF(EDITTAGS_FONT_TITANIC), MF(MOVEHISTORY_FONT_ALL) },
-};
-
-MyFont *font[NUM_SIZES][NUM_FONTS];
-
-typedef struct {
-  char *label;
-  int id;
-  HWND hwnd;
-  WNDPROC wndproc;
-} MyButtonDesc;
-
-#define BUTTON_WIDTH (tinyLayout ? 16 : 32)
-#define N_BUTTONS 5
-
-MyButtonDesc buttonDesc[N_BUTTONS] =
-{
-  {"<<", IDM_ToStart, NULL, NULL},
-  {"<", IDM_Backward, NULL, NULL},
-  {"P", IDM_Pause, NULL, NULL},
-  {">", IDM_Forward, NULL, NULL},
-  {">>", IDM_ToEnd, NULL, NULL},
-};
-
-int tinyLayout = 0, smallLayout = 0;
-#define MENU_BAR_ITEMS 7
-char *menuBarText[2][MENU_BAR_ITEMS+1] = {
-  { "&File", "&Mode", "&Action", "&Step", "&Options", "&Help", NULL },
-  { "&F", "&M", "&A", "&S", "&O", "&H", NULL },
-};
-
-
-MySound sounds[(int)NSoundClasses];
-MyTextAttribs textAttribs[(int)NColorClasses];
-
-MyColorizeAttribs colorizeAttribs[] = {
-  { (COLORREF)0, 0, "Shout Text" },
-  { (COLORREF)0, 0, "SShout/CShout" },
-  { (COLORREF)0, 0, "Channel 1 Text" },
-  { (COLORREF)0, 0, "Channel Text" },
-  { (COLORREF)0, 0, "Kibitz Text" },
-  { (COLORREF)0, 0, "Tell Text" },
-  { (COLORREF)0, 0, "Challenge Text" },
-  { (COLORREF)0, 0, "Request Text" },
-  { (COLORREF)0, 0, "Seek Text" },
-  { (COLORREF)0, 0, "Normal Text" },
-  { (COLORREF)0, 0, "None" }
-};
-
-
-
-static char *commentTitle;
-static char *commentText;
-static int commentIndex;
-static Boolean editComment = FALSE;
-HWND commentDialog = NULL;
-BOOLEAN commentDialogUp = FALSE;
-static int commentX, commentY, commentH, commentW;
-
-static char *analysisTitle;
-static char *analysisText;
-HWND analysisDialog = NULL;
-BOOLEAN analysisDialogUp = FALSE;
-static int analysisX, analysisY, analysisH, analysisW;
-
-char errorTitle[MSG_SIZ];
-char errorMessage[2*MSG_SIZ];
-HWND errorDialog = NULL;
-BOOLEAN moveErrorMessageUp = FALSE;
-BOOLEAN consoleEcho = TRUE;
-CHARFORMAT consoleCF;
-COLORREF consoleBackgroundColor;
-
-char *programVersion;
-
-#define CPReal 1
-#define CPComm 2
-#define CPSock 3
-#define CPRcmd 4
-typedef int CPKind;
-
-typedef struct {
-  CPKind kind;
-  HANDLE hProcess;
-  DWORD pid;
-  HANDLE hTo;
-  HANDLE hFrom;
-  SOCKET sock;
-  SOCKET sock2;  /* stderr socket for OpenRcmd */
-} ChildProc;
-
-#define INPUT_SOURCE_BUF_SIZE 4096
-
-typedef struct _InputSource {
-  CPKind kind;
-  HANDLE hFile;
-  SOCKET sock;
-  int lineByLine;
-  HANDLE hThread;
-  DWORD id;
-  char buf[INPUT_SOURCE_BUF_SIZE];
-  char *next;
-  DWORD count;
-  int error;
-  InputCallback func;
-  struct _InputSource *second;  /* for stderr thread on CPRcmd */
-  VOIDSTAR closure;
-} InputSource;
-
-InputSource *consoleInputSource;
-
-DCB dcb;
-
-/* forward */
-VOID ConsoleOutput(char* data, int length, int forceVisible);
-VOID ConsoleCreate();
-LRESULT CALLBACK
-  ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
-VOID ColorizeTextPopup(HWND hwnd, ColorClass cc);
-VOID PrintCommSettings(FILE *f, char *name, DCB *dcb);
-VOID ParseCommSettings(char *arg, DCB *dcb);
-LRESULT CALLBACK
-  StartupDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
-VOID APIENTRY MenuPopup(HWND hwnd, POINT pt, HMENU hmenu, UINT def);
-void ParseIcsTextMenu(char *icsTextMenuString);
-VOID PopUpMoveDialog(char firstchar);
-VOID PopUpNameDialog(char firstchar);
-VOID UpdateSampleText(HWND hDlg, int id, MyColorizeAttribs *mca);
-
-/* [AS] */
-int NewGameFRC();
-int GameListOptions();
-
-HWND moveHistoryDialog = NULL;
-BOOLEAN moveHistoryDialogUp = FALSE;
-
-WindowPlacement wpMoveHistory;
-
-HWND evalGraphDialog = NULL;
-BOOLEAN evalGraphDialogUp = FALSE;
-
-WindowPlacement wpEvalGraph;
-
-HWND engineOutputDialog = NULL;
-BOOLEAN engineOutputDialogUp = FALSE;
-
-WindowPlacement wpEngineOutput;
-WindowPlacement wpGameList;
-WindowPlacement wpConsole;
-
-VOID MoveHistoryPopUp();
-VOID MoveHistoryPopDown();
-VOID MoveHistorySet( char movelist[][2*MOVE_LEN], int first, int last, int current, ChessProgramStats_Move * pvInfo );
-BOOL MoveHistoryIsUp();
-
-VOID EvalGraphSet( int first, int last, int current, ChessProgramStats_Move * pvInfo );
-VOID EvalGraphPopUp();
-VOID EvalGraphPopDown();
-BOOL EvalGraphIsUp();
-
-VOID EngineOutputPopUp();
-VOID EngineOutputPopDown();
-BOOL EngineOutputIsUp();
-VOID EngineOutputUpdate( FrontEndProgramStats * stats );
-
-VOID EngineOptionsPopup(); // [HGM] settings
-
-VOID GothicPopUp(char *title, VariantClass variant);
-/*
- * Setting "frozen" should disable all user input other than deleting
- * the window.  We do this while engines are initializing themselves.
- */
-static int frozen = 0;
-static int oldMenuItemState[MENU_BAR_ITEMS];
-void FreezeUI()
-{
-  HMENU hmenu;
-  int i;
-
-  if (frozen) return;
-  frozen = 1;
-  hmenu = GetMenu(hwndMain);
-  for (i=0; i<MENU_BAR_ITEMS; i++) {
-    oldMenuItemState[i] = EnableMenuItem(hmenu, i, MF_BYPOSITION|MF_GRAYED);
-  }
-  DrawMenuBar(hwndMain);
-}
-
-/* Undo a FreezeUI */
-void ThawUI()
-{
-  HMENU hmenu;
-  int i;
-
-  if (!frozen) return;
-  frozen = 0;
-  hmenu = GetMenu(hwndMain);
-  for (i=0; i<MENU_BAR_ITEMS; i++) {
-    EnableMenuItem(hmenu, i, MF_BYPOSITION|oldMenuItemState[i]);
-  }
-  DrawMenuBar(hwndMain);
-}
-
-static int fromX = -1, fromY = -1, toX, toY; // [HGM] moved upstream, so JAWS can use them
-
-/* JAWS preparation patch (WinBoard for the sight impaired). Define required insertions as empty */
-#ifdef JAWS
-#include "jaws.c"
-#else
-#define JAWS_INIT
-#define JAWS_ALT_INTERCEPT
-#define JAWS_KB_NAVIGATION
-#define JAWS_MENU_ITEMS
-#define JAWS_SILENCE
-#define JAWS_REPLAY
-#define JAWS_ACCEL
-#define JAWS_COPYRIGHT
-#define JAWS_DELETE(X) X
-#define SAYMACHINEMOVE()
-#define SAY(X)
-#endif
-
-/*---------------------------------------------------------------------------*\
- *
- * WinMain
- *
-\*---------------------------------------------------------------------------*/
-
-int APIENTRY
-WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
-	LPSTR lpCmdLine, int nCmdShow)
-{
-  MSG msg;
-  HANDLE hAccelMain, hAccelNoAlt, hAccelNoICS;
-//  INITCOMMONCONTROLSEX ex;
-
-  debugFP = stderr;
-
-  LoadLibrary("RICHED32.DLL");
-  consoleCF.cbSize = sizeof(CHARFORMAT);
-
-  if (!InitApplication(hInstance)) {
-    return (FALSE);
-  }
-  if (!InitInstance(hInstance, nCmdShow, lpCmdLine)) {
-    return (FALSE);
-  }
-
-  JAWS_INIT
-
-//  InitCommonControlsEx(&ex);
-  InitCommonControls();
-
-  hAccelMain = LoadAccelerators (hInstance, szAppName);
-  hAccelNoAlt = LoadAccelerators (hInstance, "NO_ALT");
-  hAccelNoICS = LoadAccelerators( hInstance, "NO_ICS"); /* [AS] No Ctrl-V on ICS!!! */
-
-  /* Acquire and dispatch messages until a WM_QUIT message is received. */
-
-  while (GetMessage(&msg, /* message structure */
-		    NULL, /* handle of window receiving the message */
-		    0,    /* lowest message to examine */
-		    0))   /* highest message to examine */
-    {
-
-      if(msg.message == WM_CHAR && msg.wParam == '\t') {
-	// [HGM] navigate: switch between all windows with tab
-	HWND e1 = NULL, e2 = NULL, mh = NULL, hInput = NULL, hText = NULL;
-	int i, currentElement = 0;
-
-	// first determine what element of the chain we come from (if any)
-	if(appData.icsActive) {
-	    hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-	    hText  = GetDlgItem(hwndConsole, OPT_ConsoleText);
-	}
-	if(engineOutputDialog && EngineOutputIsUp()) {
-	    e1 = GetDlgItem(engineOutputDialog, IDC_EngineMemo1);
-	    e2 = GetDlgItem(engineOutputDialog, IDC_EngineMemo2);
-	}
-	if(moveHistoryDialog && MoveHistoryIsUp()) {
-	    mh = GetDlgItem(moveHistoryDialog, IDC_MoveHistory);
-	}
-	if(msg.hwnd == hwndMain) currentElement = 7 ; else
-	if(msg.hwnd == engineOutputDialog) currentElement = 2; else
-	if(msg.hwnd == e1)                 currentElement = 2; else
-	if(msg.hwnd == e2)                 currentElement = 3; else
-	if(msg.hwnd == moveHistoryDialog) currentElement = 4; else
-	if(msg.hwnd == mh)                currentElement = 4; else
-	if(msg.hwnd == evalGraphDialog)    currentElement = 7; else
-	if(msg.hwnd == hText)  currentElement = 5; else
-	if(msg.hwnd == hInput) currentElement = 6; else
-	for (i = 0; i < N_BUTTONS; i++) {
-	    if (buttonDesc[i].hwnd == msg.hwnd) { currentElement = 1; break; }
-	}
-
-	// determine where to go to
-	if(currentElement) { HWND h = NULL; int direction = GetKeyState(VK_SHIFT) < 0 ? -1 : 1;
-	  do {
-	    currentElement = (currentElement + direction) % 7;
-	    switch(currentElement) {
-		case 0:
-		  h = hwndMain; break; // passing this case always makes the loop exit
-		case 1:
-		  h = buttonDesc[0].hwnd; break; // could be NULL
-		case 2:
-		  if(!EngineOutputIsUp()) continue; // skip closed auxiliary windows
-		  h = e1; break;
-		case 3:
-		  if(!EngineOutputIsUp()) continue;
-		  h = e2; break;
-		case 4:
-		  if(!MoveHistoryIsUp()) continue;
-		  h = mh; break;
-//		case 5: // input to eval graph does not seem to get here!
-//		  if(!EvalGraphIsUp()) continue;
-//		  h = evalGraphDialog; break;
-		case 5:
-		  if(!appData.icsActive) continue;
-		  SAY("display");
-		  h = hText; break;
-		case 6:
-		  if(!appData.icsActive) continue;
-		  SAY("input");
-		  h = hInput; break;
-	    }
-	  } while(h == 0);
-
-	  if(currentElement > 4 && IsIconic(hwndConsole)) ShowWindow(hwndConsole, SW_RESTORE);
-	  if(currentElement < 5 && IsIconic(hwndMain))    ShowWindow(hwndMain, SW_RESTORE); // all open together
-	  SetFocus(h);
-
-	  continue; // this message now has been processed
-	}
-      }
-
-      if (!(commentDialog && IsDialogMessage(commentDialog, &msg)) &&
-          !(moveHistoryDialog && IsDialogMessage(moveHistoryDialog, &msg)) &&
-          !(evalGraphDialog && IsDialogMessage(evalGraphDialog, &msg)) &&
-          !(engineOutputDialog && IsDialogMessage(engineOutputDialog, &msg)) &&
-	  !(editTagsDialog && IsDialogMessage(editTagsDialog, &msg)) &&
-	  !(gameListDialog && IsDialogMessage(gameListDialog, &msg)) &&
-	  !(errorDialog && IsDialogMessage(errorDialog, &msg)) &&
-	  !(!frozen && TranslateAccelerator(hwndMain, hAccelMain, &msg)) && JAWS_ACCEL
-          !(!hwndConsole && TranslateAccelerator(hwndMain, hAccelNoICS, &msg)) &&
-	  !(!hwndConsole && TranslateAccelerator(hwndMain, hAccelNoAlt, &msg))) {
-	TranslateMessage(&msg);	/* Translates virtual key codes */
-	DispatchMessage(&msg);	/* Dispatches message to window */
-      }
-    }
-
-
-  return (msg.wParam);	/* Returns the value from PostQuitMessage */
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Initialization functions
- *
-\*---------------------------------------------------------------------------*/
-
-void
-SetUserLogo()
-{   // update user logo if necessary
-    static char oldUserName[MSG_SIZ], *curName;
-
-    if(appData.autoLogo) {
-	  curName = UserName();
-	  if(strcmp(curName, oldUserName)) {
-		sprintf(oldUserName, "logos\\%s.bmp", curName);
-		userLogo = LoadImage( 0, oldUserName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );	
-		strcpy(oldUserName, curName);
-	  }
-    }
-}
-
-BOOL
-InitApplication(HINSTANCE hInstance)
-{
-  WNDCLASS wc;
-
-  /* Fill in window class structure with parameters that describe the */
-  /* main window. */
-
-  wc.style         = CS_HREDRAW | CS_VREDRAW; /* Class style(s). */
-  wc.lpfnWndProc   = (WNDPROC)WndProc;	/* Window Procedure */
-  wc.cbClsExtra    = 0;			/* No per-class extra data. */
-  wc.cbWndExtra    = 0;			/* No per-window extra data. */
-  wc.hInstance     = hInstance;		/* Owner of this class */
-  wc.hIcon         = LoadIcon(hInstance, "icon_white");
-  wc.hCursor       = LoadCursor(NULL, IDC_ARROW);	/* Cursor */
-  wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);	/* Default color */
-  wc.lpszMenuName  = szAppName;			/* Menu name from .RC */
-  wc.lpszClassName = szAppName;			/* Name to register as */
-
-  /* Register the window class and return success/failure code. */
-  if (!RegisterClass(&wc)) return FALSE;
-
-  wc.style         = CS_HREDRAW | CS_VREDRAW;
-  wc.lpfnWndProc   = (WNDPROC)ConsoleWndProc;
-  wc.cbClsExtra    = 0;
-  wc.cbWndExtra    = DLGWINDOWEXTRA;
-  wc.hInstance     = hInstance;
-  wc.hIcon         = LoadIcon(hInstance, "icon_white");
-  wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
-  wc.hbrBackground = (HBRUSH)(COLOR_MENU+1);
-  wc.lpszMenuName  = NULL;
-  wc.lpszClassName = szConsoleName;
-
-  if (!RegisterClass(&wc)) return FALSE;
-  return TRUE;
-}
-
-
-/* Set by InitInstance, used by EnsureOnScreen */
-int screenHeight, screenWidth;
-
-void
-EnsureOnScreen(int *x, int *y, int minX, int minY)
-{
-//  int gap = GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYCAPTION);
-  /* Be sure window at (x,y) is not off screen (or even mostly off screen) */
-  if (*x > screenWidth - 32) *x = 0;
-  if (*y > screenHeight - 32) *y = 0;
-  if (*x < minX) *x = minX;
-  if (*y < minY) *y = minY;
-}
-
-BOOL
-InitInstance(HINSTANCE hInstance, int nCmdShow, LPSTR lpCmdLine)
-{
-  HWND hwnd; /* Main window handle. */
-  int ibs;
-  WINDOWPLACEMENT wp;
-  char *filepart;
-
-  hInst = hInstance;	/* Store instance handle in our global variable */
-
-  if (SearchPath(NULL, "WinBoard.exe", NULL, MSG_SIZ, installDir, &filepart)) {
-    *filepart = NULLCHAR;
-  } else {
-    GetCurrentDirectory(MSG_SIZ, installDir);
-  }
-  gameInfo.boardWidth = gameInfo.boardHeight = 8; // [HGM] won't have open window otherwise
-  screenWidth = screenHeight = 1000; // [HGM] placement: kludge to allow calling EnsureOnScreen from InitAppData
-  InitAppData(lpCmdLine);      /* Get run-time parameters */
-  if (appData.debugMode) {
-    debugFP = fopen(appData.nameOfDebugFile, "w");
-    setbuf(debugFP, NULL);
-  }
-
-  InitBackEnd1();
-
-//  InitEngineUCI( installDir, &first ); // [HGM] incorporated in InitBackEnd1()
-//  InitEngineUCI( installDir, &second );
-
-  /* Create a main window for this application instance. */
-  hwnd = CreateWindow(szAppName, szTitle,
-		      (WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX),
-		      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
-		      NULL, NULL, hInstance, NULL);
-  hwndMain = hwnd;
-
-  /* If window could not be created, return "failure" */
-  if (!hwnd) {
-    return (FALSE);
-  }
-
-  /* [HGM] logo: Load logos if specified (must be done before InitDrawingSizes) */
-  if( appData.firstLogo && appData.firstLogo[0] != NULLCHAR) {
-      first.programLogo = LoadImage( 0, appData.firstLogo, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
-
-      if (first.programLogo == NULL && appData.debugMode) {
-          fprintf( debugFP, "Unable to load logo bitmap '%s'\n", appData.firstLogo );
-      }
-  } else if(appData.autoLogo) {
-      if(appData.firstDirectory && appData.firstDirectory[0]) {
-	char buf[MSG_SIZ];
-	sprintf(buf, "%s/logo.bmp", appData.firstDirectory);
-	first.programLogo = LoadImage( 0, buf, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );	
-      }
-  }
-
-  if( appData.secondLogo && appData.secondLogo[0] != NULLCHAR) {
-      second.programLogo = LoadImage( 0, appData.secondLogo, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
-
-      if (second.programLogo == NULL && appData.debugMode) {
-          fprintf( debugFP, "Unable to load logo bitmap '%s'\n", appData.secondLogo );
-      }
-  } else if(appData.autoLogo) {
-      char buf[MSG_SIZ];
-      if(appData.icsActive) { // [HGM] logo: in ICS mode second can be used for ICS
-	sprintf(buf, "logos\\%s.bmp", appData.icsHost);
-	second.programLogo = LoadImage( 0, buf, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
-      } else
-      if(appData.secondDirectory && appData.secondDirectory[0]) {
-	sprintf(buf, "%s\\logo.bmp", appData.secondDirectory);
-	second.programLogo = LoadImage( 0, buf, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );	
-      }
-  }
-
-  SetUserLogo();
-
-  iconWhite = LoadIcon(hInstance, "icon_white");
-  iconBlack = LoadIcon(hInstance, "icon_black");
-  iconCurrent = iconWhite;
-  InitDrawingColors();
-  screenHeight = GetSystemMetrics(SM_CYSCREEN);
-  screenWidth = GetSystemMetrics(SM_CXSCREEN);
-  for (ibs = (int) NUM_SIZES - 1; ibs >= 0; ibs--) {
-    /* Compute window size for each board size, and use the largest
-       size that fits on this screen as the default. */
-    InitDrawingSizes((BoardSize)(ibs+1000), 0);
-    if (boardSize == (BoardSize)-1 &&
-        winH <= screenHeight
-           - GetSystemMetrics(SM_CYFRAME) - GetSystemMetrics(SM_CYCAPTION) - 10
-        && winW <= screenWidth) {
-      boardSize = (BoardSize)ibs;
-    }
-  }
-
-  InitDrawingSizes(boardSize, 0);
-  InitMenuChecks();
-  buttonCount = GetSystemMetrics(SM_CMOUSEBUTTONS);
-
-  /* [AS] Load textures if specified */
-  ZeroMemory( &backTextureSquareInfo, sizeof(backTextureSquareInfo) );
-  
-  if( appData.liteBackTextureFile && appData.liteBackTextureFile[0] != NULLCHAR && appData.liteBackTextureFile[0] != '*' ) {
-      liteBackTexture = LoadImage( 0, appData.liteBackTextureFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
-      liteBackTextureMode = appData.liteBackTextureMode;
-
-      if (liteBackTexture == NULL && appData.debugMode) {
-          fprintf( debugFP, "Unable to load lite texture bitmap '%s'\n", appData.liteBackTextureFile );
-      }
-  }
-  
-  if( appData.darkBackTextureFile && appData.darkBackTextureFile[0] != NULLCHAR && appData.darkBackTextureFile[0] != '*' ) {
-      darkBackTexture = LoadImage( 0, appData.darkBackTextureFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
-      darkBackTextureMode = appData.darkBackTextureMode;
-
-      if (darkBackTexture == NULL && appData.debugMode) {
-          fprintf( debugFP, "Unable to load dark texture bitmap '%s'\n", appData.darkBackTextureFile );
-      }
-  }
-
-  mysrandom( (unsigned) time(NULL) );
-
-  /* [AS] Restore layout */
-  if( wpMoveHistory.visible ) {
-      MoveHistoryPopUp();
-  }
-
-  if( wpEvalGraph.visible ) {
-      EvalGraphPopUp();
-  }
-
-  if( wpEngineOutput.visible ) {
-      EngineOutputPopUp();
-  }
-
-  InitBackEnd2();
-
-  /* Make the window visible; update its client area; and return "success" */
-  EnsureOnScreen(&boardX, &boardY, minX, minY);
-  wp.length = sizeof(WINDOWPLACEMENT);
-  wp.flags = 0;
-  wp.showCmd = nCmdShow;
-  wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;
-  wp.rcNormalPosition.left = boardX;
-  wp.rcNormalPosition.right = boardX + winWidth;
-  wp.rcNormalPosition.top = boardY;
-  wp.rcNormalPosition.bottom = boardY + winHeight;
-  SetWindowPlacement(hwndMain, &wp);
-
-  if(!appData.noGUI) SetWindowPos(hwndMain, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST,
-               0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
-
-  if (hwndConsole) {
-#if AOT_CONSOLE
-    SetWindowPos(hwndConsole, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST,
-                 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
-#endif
-    ShowWindow(hwndConsole, nCmdShow);
-  }
-  if(!appData.noGUI)   UpdateWindow(hwnd);  else ShowWindow(hwnd, SW_MINIMIZE);
-
-  return TRUE;
-
-}
-
-
-typedef enum {
-  ArgString, ArgInt, ArgFloat, ArgBoolean, ArgTrue, ArgFalse, ArgNone, 
-  ArgColor, ArgAttribs, ArgFilename, ArgBoardSize, ArgFont, ArgCommSettings,
-  ArgSettingsFilename,
-  ArgX, ArgY, ArgZ // [HGM] placement: for window-placement options stored relative to main window
-} ArgType;
-
-typedef struct {
-  char *argName;
-  ArgType argType;
-  /***
-  union {
-    String *pString;       // ArgString
-    int *pInt;             // ArgInt
-    float *pFloat;         // ArgFloat
-    Boolean *pBoolean;     // ArgBoolean
-    COLORREF *pColor;      // ArgColor
-    ColorClass cc;         // ArgAttribs
-    String *pFilename;     // ArgFilename
-    BoardSize *pBoardSize; // ArgBoardSize
-    int whichFont;         // ArgFont
-    DCB *pDCB;             // ArgCommSettings
-    String *pFilename;     // ArgSettingsFilename
-  } argLoc;
-  ***/
-  LPVOID argLoc;
-  BOOL save;
-} ArgDescriptor;
-
-int junk;
-ArgDescriptor argDescriptors[] = {
-  /* positional arguments */
-  { "loadGameFile", ArgFilename, (LPVOID) &appData.loadGameFile, FALSE },
-  { "", ArgNone, NULL },
-  /* keyword arguments */
-  { "whitePieceColor", ArgColor, (LPVOID) &whitePieceColor, TRUE },
-  { "wpc", ArgColor, (LPVOID) &whitePieceColor, FALSE },
-  { "blackPieceColor", ArgColor, (LPVOID) &blackPieceColor, TRUE },
-  { "bpc", ArgColor, (LPVOID) &blackPieceColor, FALSE },
-  { "lightSquareColor", ArgColor, (LPVOID) &lightSquareColor, TRUE },
-  { "lsc", ArgColor, (LPVOID) &lightSquareColor, FALSE },
-  { "darkSquareColor", ArgColor, (LPVOID) &darkSquareColor, TRUE },
-  { "dsc", ArgColor, (LPVOID) &darkSquareColor, FALSE },
-  { "highlightSquareColor", ArgColor, (LPVOID) &highlightSquareColor, TRUE },
-  { "hsc", ArgColor, (LPVOID) &highlightSquareColor, FALSE },
-  { "premoveHighlightColor", ArgColor, (LPVOID) &premoveHighlightColor, TRUE },
-  { "phc", ArgColor, (LPVOID) &premoveHighlightColor, FALSE },
-  { "movesPerSession", ArgInt, (LPVOID) &appData.movesPerSession, TRUE },
-  { "mps", ArgInt, (LPVOID) &appData.movesPerSession, FALSE },
-  { "initString", ArgString, (LPVOID) &appData.initString, FALSE },
-  { "firstInitString", ArgString, (LPVOID) &appData.initString, FALSE },
-  { "secondInitString", ArgString, (LPVOID) &appData.secondInitString, FALSE },
-  { "firstComputerString", ArgString, (LPVOID) &appData.firstComputerString,
-    FALSE },
-  { "secondComputerString", ArgString, (LPVOID) &appData.secondComputerString,
-    FALSE },
-  { "firstChessProgram", ArgFilename, (LPVOID) &appData.firstChessProgram,
-    FALSE },
-  { "fcp", ArgFilename, (LPVOID) &appData.firstChessProgram, FALSE },
-  { "secondChessProgram", ArgFilename, (LPVOID) &appData.secondChessProgram,
-    FALSE },
-  { "scp", ArgFilename, (LPVOID) &appData.secondChessProgram, FALSE },
-  { "firstPlaysBlack", ArgBoolean, (LPVOID) &appData.firstPlaysBlack, FALSE },
-  { "fb", ArgTrue, (LPVOID) &appData.firstPlaysBlack, FALSE },
-  { "xfb", ArgFalse, (LPVOID) &appData.firstPlaysBlack, FALSE },
-  { "-fb", ArgFalse, (LPVOID) &appData.firstPlaysBlack, FALSE },
-  { "noChessProgram", ArgBoolean, (LPVOID) &appData.noChessProgram, FALSE },
-  { "ncp", ArgTrue, (LPVOID) &appData.noChessProgram, FALSE },
-  { "xncp", ArgFalse, (LPVOID) &appData.noChessProgram, FALSE },
-  { "-ncp", ArgFalse, (LPVOID) &appData.noChessProgram, FALSE },
-  { "firstHost", ArgString, (LPVOID) &appData.firstHost, FALSE },
-  { "fh", ArgString, (LPVOID) &appData.firstHost, FALSE },
-  { "secondHost", ArgString, (LPVOID) &appData.secondHost, FALSE },
-  { "sh", ArgString, (LPVOID) &appData.secondHost, FALSE },
-  { "firstDirectory", ArgFilename, (LPVOID) &appData.firstDirectory, FALSE },
-  { "fd", ArgFilename, (LPVOID) &appData.firstDirectory, FALSE },
-  { "secondDirectory", ArgFilename, (LPVOID) &appData.secondDirectory, FALSE },
-  { "sd", ArgFilename, (LPVOID) &appData.secondDirectory, FALSE },
-  /*!!bitmapDirectory?*/
-  { "remoteShell", ArgFilename, (LPVOID) &appData.remoteShell, FALSE },
-  { "rsh", ArgFilename, (LPVOID) &appData.remoteShell, FALSE },
-  { "remoteUser", ArgString, (LPVOID) &appData.remoteUser, FALSE },
-  { "ruser", ArgString, (LPVOID) &appData.remoteUser, FALSE },
-  { "timeDelay", ArgFloat, (LPVOID) &appData.timeDelay, TRUE },
-  { "td", ArgFloat, (LPVOID) &appData.timeDelay, FALSE },
-  { "timeControl", ArgString, (LPVOID) &appData.timeControl, TRUE },
-  { "tc", ArgString, (LPVOID) &appData.timeControl, FALSE },
-  { "timeIncrement", ArgInt, (LPVOID) &appData.timeIncrement, TRUE },
-  { "inc", ArgInt, (LPVOID) &appData.timeIncrement, FALSE },
-  { "internetChessServerMode", ArgBoolean, (LPVOID) &appData.icsActive, FALSE },
-  { "ics", ArgTrue, (LPVOID) &appData.icsActive, FALSE },
-  { "xics", ArgFalse, (LPVOID) &appData.icsActive, FALSE },
-  { "-ics", ArgFalse, (LPVOID) &appData.icsActive, FALSE },
-  { "internetChessServerHost", ArgString, (LPVOID) &appData.icsHost, FALSE },
-  { "icshost", ArgString, (LPVOID) &appData.icsHost, FALSE },
-  { "internetChessServerPort", ArgString, (LPVOID) &appData.icsPort, FALSE },
-  { "icsport", ArgString, (LPVOID) &appData.icsPort, FALSE },
-  { "internetChessServerCommPort", ArgString, (LPVOID) &appData.icsCommPort, FALSE },
-  { "icscomm", ArgString, (LPVOID) &appData.icsCommPort, FALSE },
-  { "internetChessServerComPort", ArgString, (LPVOID) &appData.icsCommPort, FALSE },
-  { "icscom", ArgString, (LPVOID) &appData.icsCommPort, FALSE },
-  { "internetChessServerLogonScript", ArgFilename, (LPVOID) &appData.icsLogon, FALSE },
-  { "icslogon", ArgFilename, (LPVOID) &appData.icsLogon, FALSE },
-  { "useTelnet", ArgBoolean, (LPVOID) &appData.useTelnet, FALSE },
-  { "telnet", ArgTrue, (LPVOID) &appData.useTelnet, FALSE },
-  { "xtelnet", ArgFalse, (LPVOID) &appData.useTelnet, FALSE },
-  { "-telnet", ArgFalse, (LPVOID) &appData.useTelnet, FALSE },
-  { "telnetProgram", ArgFilename, (LPVOID) &appData.telnetProgram, FALSE },
-  { "icshelper", ArgFilename, (LPVOID) &appData.icsHelper, FALSE },
-  { "gateway", ArgString, (LPVOID) &appData.gateway, FALSE },
-  { "loadGameFile", ArgFilename, (LPVOID) &appData.loadGameFile, FALSE },
-  { "lgf", ArgFilename, (LPVOID) &appData.loadGameFile, FALSE },
-  { "loadGameIndex", ArgInt, (LPVOID) &appData.loadGameIndex, FALSE },
-  { "lgi", ArgInt, (LPVOID) &appData.loadGameIndex, FALSE },
-  { "saveGameFile", ArgFilename, (LPVOID) &appData.saveGameFile, TRUE },
-  { "sgf", ArgFilename, (LPVOID) &appData.saveGameFile, FALSE },
-  { "autoSaveGames", ArgBoolean, (LPVOID) &appData.autoSaveGames, TRUE },
-  { "autosave", ArgTrue, (LPVOID) &appData.autoSaveGames, FALSE },
-  { "xautosave", ArgFalse, (LPVOID) &appData.autoSaveGames, FALSE },
-  { "-autosave", ArgFalse, (LPVOID) &appData.autoSaveGames, FALSE },
-  { "loadPositionFile", ArgFilename, (LPVOID) &appData.loadPositionFile, FALSE },
-  { "lpf", ArgFilename, (LPVOID) &appData.loadPositionFile, FALSE },
-  { "loadPositionIndex", ArgInt, (LPVOID) &appData.loadPositionIndex, FALSE },
-  { "lpi", ArgInt, (LPVOID) &appData.loadPositionIndex, FALSE },
-  { "savePositionFile", ArgFilename, (LPVOID) &appData.savePositionFile, FALSE },
-  { "spf", ArgFilename, (LPVOID) &appData.savePositionFile, FALSE },
-  { "matchMode", ArgBoolean, (LPVOID) &appData.matchMode, FALSE },
-  { "mm", ArgTrue, (LPVOID) &appData.matchMode, FALSE },
-  { "xmm", ArgFalse, (LPVOID) &appData.matchMode, FALSE },
-  { "-mm", ArgFalse, (LPVOID) &appData.matchMode, FALSE },
-  { "matchGames", ArgInt, (LPVOID) &appData.matchGames, FALSE },
-  { "mg", ArgInt, (LPVOID) &appData.matchGames, FALSE },
-  { "monoMode", ArgBoolean, (LPVOID) &appData.monoMode, TRUE },
-  { "mono", ArgTrue, (LPVOID) &appData.monoMode, FALSE },
-  { "xmono", ArgFalse, (LPVOID) &appData.monoMode, FALSE },
-  { "-mono", ArgFalse, (LPVOID) &appData.monoMode, FALSE },
-  { "debugMode", ArgBoolean, (LPVOID) &appData.debugMode, FALSE },
-  { "debug", ArgTrue, (LPVOID) &appData.debugMode, FALSE },
-  { "xdebug", ArgFalse, (LPVOID) &appData.debugMode, FALSE },
-  { "-debug", ArgFalse, (LPVOID) &appData.debugMode, FALSE },
-  { "clockMode", ArgBoolean, (LPVOID) &appData.clockMode, FALSE },
-  { "clock", ArgTrue, (LPVOID) &appData.clockMode, FALSE },
-  { "xclock", ArgFalse, (LPVOID) &appData.clockMode, FALSE },
-  { "-clock", ArgFalse, (LPVOID) &appData.clockMode, FALSE },
-  { "searchTime", ArgString, (LPVOID) &appData.searchTime, FALSE },
-  { "st", ArgString, (LPVOID) &appData.searchTime, FALSE },
-  { "searchDepth", ArgInt, (LPVOID) &appData.searchDepth, FALSE },
-  { "depth", ArgInt, (LPVOID) &appData.searchDepth, FALSE },
-  { "showCoords", ArgBoolean, (LPVOID) &appData.showCoords, TRUE },
-  { "coords", ArgTrue, (LPVOID) &appData.showCoords, FALSE },
-  { "xcoords", ArgFalse, (LPVOID) &appData.showCoords, FALSE },
-  { "-coords", ArgFalse, (LPVOID) &appData.showCoords, FALSE },
-  { "showThinking", ArgBoolean, (LPVOID) &appData.showThinking, TRUE },
-  { "thinking", ArgTrue, (LPVOID) &appData.showThinking, FALSE },
-  { "xthinking", ArgFalse, (LPVOID) &appData.showThinking, FALSE },
-  { "-thinking", ArgFalse, (LPVOID) &appData.showThinking, FALSE },
-  { "ponderNextMove", ArgBoolean, (LPVOID) &appData.ponderNextMove, TRUE },
-  { "ponder", ArgTrue, (LPVOID) &appData.ponderNextMove, FALSE },
-  { "xponder", ArgFalse, (LPVOID) &appData.ponderNextMove, FALSE },
-  { "-ponder", ArgFalse, (LPVOID) &appData.ponderNextMove, FALSE },
-  { "periodicUpdates", ArgBoolean, (LPVOID) &appData.periodicUpdates, TRUE },
-  { "periodic", ArgTrue, (LPVOID) &appData.periodicUpdates, FALSE },
-  { "xperiodic", ArgFalse, (LPVOID) &appData.periodicUpdates, FALSE },
-  { "-periodic", ArgFalse, (LPVOID) &appData.periodicUpdates, FALSE },
-  { "popupExitMessage", ArgBoolean, (LPVOID) &appData.popupExitMessage, TRUE },
-  { "exit", ArgTrue, (LPVOID) &appData.popupExitMessage, FALSE },
-  { "xexit", ArgFalse, (LPVOID) &appData.popupExitMessage, FALSE },
-  { "-exit", ArgFalse, (LPVOID) &appData.popupExitMessage, FALSE },
-  { "popupMoveErrors", ArgBoolean, (LPVOID) &appData.popupMoveErrors, TRUE },
-  { "popup", ArgTrue, (LPVOID) &appData.popupMoveErrors, FALSE },
-  { "xpopup", ArgFalse, (LPVOID) &appData.popupMoveErrors, FALSE },
-  { "-popup", ArgFalse, (LPVOID) &appData.popupMoveErrors, FALSE },
-  { "popUpErrors", ArgBoolean, (LPVOID) &appData.popupMoveErrors, 
-    FALSE }, /* only so that old WinBoard.ini files from betas can be read */
-  { "clockFont", ArgFont, (LPVOID) CLOCK_FONT, TRUE },
-  { "messageFont", ArgFont, (LPVOID) MESSAGE_FONT, TRUE },
-  { "coordFont", ArgFont, (LPVOID) COORD_FONT, TRUE },
-  { "tagsFont", ArgFont, (LPVOID) EDITTAGS_FONT, TRUE },
-  { "commentFont", ArgFont, (LPVOID) COMMENT_FONT, TRUE },
-  { "icsFont", ArgFont, (LPVOID) CONSOLE_FONT, TRUE },
-  { "moveHistoryFont", ArgFont, (LPVOID) MOVEHISTORY_FONT, TRUE }, /* [AS] */
-  { "boardSize", ArgBoardSize, (LPVOID) &boardSize,
-    TRUE }, /* must come after all fonts */
-  { "size", ArgBoardSize, (LPVOID) &boardSize, FALSE },
-  { "ringBellAfterMoves", ArgBoolean, (LPVOID) &appData.ringBellAfterMoves,
-    FALSE }, /* historical; kept only so old winboard.ini files will parse */
-  { "alwaysOnTop", ArgBoolean, (LPVOID) &alwaysOnTop, TRUE },
-  { "top", ArgTrue, (LPVOID) &alwaysOnTop, FALSE },
-  { "xtop", ArgFalse, (LPVOID) &alwaysOnTop, FALSE },
-  { "-top", ArgFalse, (LPVOID) &alwaysOnTop, FALSE },
-  { "autoCallFlag", ArgBoolean, (LPVOID) &appData.autoCallFlag, TRUE },
-  { "autoflag", ArgTrue, (LPVOID) &appData.autoCallFlag, FALSE },
-  { "xautoflag", ArgFalse, (LPVOID) &appData.autoCallFlag, FALSE },
-  { "-autoflag", ArgFalse, (LPVOID) &appData.autoCallFlag, FALSE },
-  { "autoComment", ArgBoolean, (LPVOID) &appData.autoComment, TRUE },
-  { "autocomm", ArgTrue, (LPVOID) &appData.autoComment, FALSE },
-  { "xautocomm", ArgFalse, (LPVOID) &appData.autoComment, FALSE },
-  { "-autocomm", ArgFalse, (LPVOID) &appData.autoComment, FALSE },
-  { "autoObserve", ArgBoolean, (LPVOID) &appData.autoObserve, TRUE },
-  { "autobs", ArgTrue, (LPVOID) &appData.autoObserve, FALSE },
-  { "xautobs", ArgFalse, (LPVOID) &appData.autoObserve, FALSE },
-  { "-autobs", ArgFalse, (LPVOID) &appData.autoObserve, FALSE },
-  { "flipView", ArgBoolean, (LPVOID) &appData.flipView, FALSE },
-  { "flip", ArgTrue, (LPVOID) &appData.flipView, FALSE },
-  { "xflip", ArgFalse, (LPVOID) &appData.flipView, FALSE },
-  { "-flip", ArgFalse, (LPVOID) &appData.flipView, FALSE },
-  { "autoFlipView", ArgBoolean, (LPVOID) &appData.autoFlipView, TRUE },
-  { "autoflip", ArgTrue, (LPVOID) &appData.autoFlipView, FALSE },
-  { "xautoflip", ArgFalse, (LPVOID) &appData.autoFlipView, FALSE },
-  { "-autoflip", ArgFalse, (LPVOID) &appData.autoFlipView, FALSE },
-  { "autoRaiseBoard", ArgBoolean, (LPVOID) &appData.autoRaiseBoard, TRUE },
-  { "autoraise", ArgTrue, (LPVOID) &appData.autoRaiseBoard, FALSE },
-  { "xautoraise", ArgFalse, (LPVOID) &appData.autoRaiseBoard, FALSE },
-  { "-autoraise", ArgFalse, (LPVOID) &appData.autoRaiseBoard, FALSE },
-#if 0
-  { "cmailGameName", ArgString, (LPVOID) &appData.cmailGameName, FALSE },
-  { "cmail", ArgString, (LPVOID) &appData.cmailGameName, FALSE },
-#endif
-  { "alwaysPromoteToQueen", ArgBoolean, (LPVOID) &appData.alwaysPromoteToQueen, TRUE },
-  { "queen", ArgTrue, (LPVOID) &appData.alwaysPromoteToQueen, FALSE },
-  { "xqueen", ArgFalse, (LPVOID) &appData.alwaysPromoteToQueen, FALSE },
-  { "-queen", ArgFalse, (LPVOID) &appData.alwaysPromoteToQueen, FALSE },
-  { "oldSaveStyle", ArgBoolean, (LPVOID) &appData.oldSaveStyle, TRUE },
-  { "oldsave", ArgTrue, (LPVOID) &appData.oldSaveStyle, FALSE },
-  { "xoldsave", ArgFalse, (LPVOID) &appData.oldSaveStyle, FALSE },
-  { "-oldsave", ArgFalse, (LPVOID) &appData.oldSaveStyle, FALSE },
-  { "quietPlay", ArgBoolean, (LPVOID) &appData.quietPlay, TRUE },
-  { "quiet", ArgTrue, (LPVOID) &appData.quietPlay, FALSE },
-  { "xquiet", ArgFalse, (LPVOID) &appData.quietPlay, FALSE },
-  { "-quiet", ArgFalse, (LPVOID) &appData.quietPlay, FALSE },
-  { "getMoveList", ArgBoolean, (LPVOID) &appData.getMoveList, TRUE },
-  { "moves", ArgTrue, (LPVOID) &appData.getMoveList, FALSE },
-  { "xmoves", ArgFalse, (LPVOID) &appData.getMoveList, FALSE },
-  { "-moves", ArgFalse, (LPVOID) &appData.getMoveList, FALSE },
-  { "testLegality", ArgBoolean, (LPVOID) &appData.testLegality, TRUE },
-  { "legal", ArgTrue, (LPVOID) &appData.testLegality, FALSE },
-  { "xlegal", ArgFalse, (LPVOID) &appData.testLegality, FALSE },
-  { "-legal", ArgFalse, (LPVOID) &appData.testLegality, FALSE },
-  { "premove", ArgBoolean, (LPVOID) &appData.premove, TRUE },
-  { "pre", ArgTrue, (LPVOID) &appData.premove, FALSE },
-  { "xpre", ArgFalse, (LPVOID) &appData.premove, FALSE },
-  { "-pre", ArgFalse, (LPVOID) &appData.premove, FALSE },
-  { "premoveWhite", ArgBoolean, (LPVOID) &appData.premoveWhite, TRUE },
-  { "prewhite", ArgTrue, (LPVOID) &appData.premoveWhite, FALSE },
-  { "xprewhite", ArgFalse, (LPVOID) &appData.premoveWhite, FALSE },
-  { "-prewhite", ArgFalse, (LPVOID) &appData.premoveWhite, FALSE },
-  { "premoveWhiteText", ArgString, (LPVOID) &appData.premoveWhiteText, TRUE },
-  { "premoveBlack", ArgBoolean, (LPVOID) &appData.premoveBlack, TRUE },
-  { "preblack", ArgTrue, (LPVOID) &appData.premoveBlack, FALSE },
-  { "xpreblack", ArgFalse, (LPVOID) &appData.premoveBlack, FALSE },
-  { "-preblack", ArgFalse, (LPVOID) &appData.premoveBlack, FALSE },
-  { "premoveBlackText", ArgString, (LPVOID) &appData.premoveBlackText, TRUE },
-  { "icsAlarm", ArgBoolean, (LPVOID) &appData.icsAlarm, TRUE},
-  { "alarm", ArgTrue, (LPVOID) &appData.icsAlarm, FALSE},
-  { "xalarm", ArgFalse, (LPVOID) &appData.icsAlarm, FALSE},
-  { "-alarm", ArgFalse, (LPVOID) &appData.icsAlarm, FALSE},
-  { "icsAlarmTime", ArgInt, (LPVOID) &appData.icsAlarmTime, TRUE},
-  { "localLineEditing", ArgBoolean, (LPVOID) &appData.localLineEditing, FALSE},
-  { "localLineEditing", ArgBoolean, (LPVOID) &appData.localLineEditing, FALSE},
-  { "edit", ArgTrue, (LPVOID) &appData.localLineEditing, FALSE },
-  { "xedit", ArgFalse, (LPVOID) &appData.localLineEditing, FALSE },
-  { "-edit", ArgFalse, (LPVOID) &appData.localLineEditing, FALSE },
-  { "animateMoving", ArgBoolean, (LPVOID) &appData.animate, TRUE },
-  { "animate", ArgTrue, (LPVOID) &appData.animate, FALSE },
-  { "xanimate", ArgFalse, (LPVOID) &appData.animate, FALSE },
-  { "-animate", ArgFalse, (LPVOID) &appData.animate, FALSE },
-  { "animateSpeed", ArgInt, (LPVOID) &appData.animSpeed, TRUE },
-  { "animateDragging", ArgBoolean, (LPVOID) &appData.animateDragging, TRUE },
-  { "drag", ArgTrue, (LPVOID) &appData.animateDragging, FALSE },
-  { "xdrag", ArgFalse, (LPVOID) &appData.animateDragging, FALSE },
-  { "-drag", ArgFalse, (LPVOID) &appData.animateDragging, FALSE },
-  { "blindfold", ArgBoolean, (LPVOID) &appData.blindfold, TRUE },
-  { "blind", ArgTrue, (LPVOID) &appData.blindfold, FALSE },
-  { "xblind", ArgFalse, (LPVOID) &appData.blindfold, FALSE },
-  { "-blind", ArgFalse, (LPVOID) &appData.blindfold, FALSE },
-  { "highlightLastMove", ArgBoolean,
-    (LPVOID) &appData.highlightLastMove, TRUE },
-  { "highlight", ArgTrue, (LPVOID) &appData.highlightLastMove, FALSE },
-  { "xhighlight", ArgFalse, (LPVOID) &appData.highlightLastMove, FALSE },
-  { "-highlight", ArgFalse, (LPVOID) &appData.highlightLastMove, FALSE },
-  { "highlightDragging", ArgBoolean,
-    (LPVOID) &appData.highlightDragging, TRUE },
-  { "highdrag", ArgTrue, (LPVOID) &appData.highlightDragging, FALSE },
-  { "xhighdrag", ArgFalse, (LPVOID) &appData.highlightDragging, FALSE },
-  { "-highdrag", ArgFalse, (LPVOID) &appData.highlightDragging, FALSE },
-  { "colorizeMessages", ArgBoolean, (LPVOID) &appData.colorize, TRUE },
-  { "colorize", ArgTrue, (LPVOID) &appData.colorize, FALSE },
-  { "xcolorize", ArgFalse, (LPVOID) &appData.colorize, FALSE },
-  { "-colorize", ArgFalse, (LPVOID) &appData.colorize, FALSE },
-  { "colorShout", ArgAttribs, (LPVOID) ColorShout, TRUE },
-  { "colorSShout", ArgAttribs, (LPVOID) ColorSShout, TRUE },
-  { "colorChannel1", ArgAttribs, (LPVOID) ColorChannel1, TRUE },
-  { "colorChannel", ArgAttribs, (LPVOID) ColorChannel, TRUE },
-  { "colorKibitz", ArgAttribs, (LPVOID) ColorKibitz, TRUE },
-  { "colorTell", ArgAttribs, (LPVOID) ColorTell, TRUE },
-  { "colorChallenge", ArgAttribs, (LPVOID) ColorChallenge, TRUE },
-  { "colorRequest", ArgAttribs, (LPVOID) ColorRequest, TRUE },
-  { "colorSeek", ArgAttribs, (LPVOID) ColorSeek, TRUE },
-  { "colorNormal", ArgAttribs, (LPVOID) ColorNormal, TRUE },
-  { "colorBackground", ArgColor, (LPVOID) &consoleBackgroundColor, TRUE },
-  { "soundShout", ArgFilename,
-    (LPVOID) &textAttribs[ColorShout].sound.name, TRUE },
-  { "soundSShout", ArgFilename,
-    (LPVOID) &textAttribs[ColorSShout].sound.name, TRUE },
-  { "soundChannel1", ArgFilename,
-    (LPVOID) &textAttribs[ColorChannel1].sound.name, TRUE },
-  { "soundChannel", ArgFilename,
-    (LPVOID) &textAttribs[ColorChannel].sound.name, TRUE },
-  { "soundKibitz", ArgFilename,
-    (LPVOID) &textAttribs[ColorKibitz].sound.name, TRUE },
-  { "soundTell", ArgFilename,
-    (LPVOID) &textAttribs[ColorTell].sound.name, TRUE },
-  { "soundChallenge", ArgFilename,
-    (LPVOID) &textAttribs[ColorChallenge].sound.name, TRUE },
-  { "soundRequest", ArgFilename,
-    (LPVOID) &textAttribs[ColorRequest].sound.name, TRUE },
-  { "soundSeek", ArgFilename,
-    (LPVOID) &textAttribs[ColorSeek].sound.name, TRUE },
-  { "soundMove", ArgFilename, (LPVOID) &sounds[(int)SoundMove].name, TRUE },
-  { "soundBell", ArgFilename, (LPVOID) &sounds[(int)SoundBell].name, TRUE },
-  { "soundIcsWin", ArgFilename, (LPVOID) &sounds[(int)SoundIcsWin].name,TRUE },
-  { "soundIcsLoss", ArgFilename, 
-    (LPVOID) &sounds[(int)SoundIcsLoss].name, TRUE },
-  { "soundIcsDraw", ArgFilename, 
-    (LPVOID) &sounds[(int)SoundIcsDraw].name, TRUE },
-  { "soundIcsUnfinished", ArgFilename, 
-    (LPVOID) &sounds[(int)SoundIcsUnfinished].name, TRUE},
-  { "soundIcsAlarm", ArgFilename, 
-    (LPVOID) &sounds[(int)SoundAlarm].name, TRUE },
-  { "reuseFirst", ArgBoolean, (LPVOID) &appData.reuseFirst, FALSE },
-  { "reuse", ArgTrue, (LPVOID) &appData.reuseFirst, FALSE },
-  { "xreuse", ArgFalse, (LPVOID) &appData.reuseFirst, FALSE },
-  { "-reuse", ArgFalse, (LPVOID) &appData.reuseFirst, FALSE },
-  { "reuseChessPrograms", ArgBoolean,
-    (LPVOID) &appData.reuseFirst, FALSE }, /* backward compat only */
-  { "reuseSecond", ArgBoolean, (LPVOID) &appData.reuseSecond, FALSE },
-  { "reuse2", ArgTrue, (LPVOID) &appData.reuseSecond, FALSE },
-  { "xreuse2", ArgFalse, (LPVOID) &appData.reuseSecond, FALSE },
-  { "-reuse2", ArgFalse, (LPVOID) &appData.reuseSecond, FALSE },
-  { "comPortSettings", ArgCommSettings, (LPVOID) &dcb, TRUE },
-  { "settingsFile", ArgSettingsFilename, (LPVOID) &settingsFileName, FALSE },
-  { "ini", ArgSettingsFilename, (LPVOID) &settingsFileName, FALSE },
-  { "saveSettingsOnExit", ArgBoolean, (LPVOID) &saveSettingsOnExit, TRUE },
-  { "chessProgram", ArgBoolean, (LPVOID) &chessProgram, FALSE },
-  { "cp", ArgTrue, (LPVOID) &chessProgram, FALSE },
-  { "xcp", ArgFalse, (LPVOID) &chessProgram, FALSE },
-  { "-cp", ArgFalse, (LPVOID) &chessProgram, FALSE },
-  { "icsMenu", ArgString, (LPVOID) &icsTextMenuString, TRUE },
-  { "icsNames", ArgString, (LPVOID) &icsNames, TRUE },
-  { "firstChessProgramNames", ArgString, (LPVOID) &firstChessProgramNames,
-    TRUE },
-  { "secondChessProgramNames", ArgString, (LPVOID) &secondChessProgramNames,
-    TRUE },
-  { "initialMode", ArgString, (LPVOID) &appData.initialMode, FALSE },
-  { "mode", ArgString, (LPVOID) &appData.initialMode, FALSE },
-  { "variant", ArgString, (LPVOID) &appData.variant, FALSE },
-  { "firstProtocolVersion", ArgInt, (LPVOID) &appData.firstProtocolVersion, FALSE },
-  { "secondProtocolVersion", ArgInt, (LPVOID) &appData.secondProtocolVersion,FALSE },
-  { "showButtonBar", ArgBoolean, (LPVOID) &appData.showButtonBar, TRUE },
-  { "buttons", ArgTrue, (LPVOID) &appData.showButtonBar, FALSE },
-  { "xbuttons", ArgFalse, (LPVOID) &appData.showButtonBar, FALSE },
-  { "-buttons", ArgFalse, (LPVOID) &appData.showButtonBar, FALSE },
-  /* [AS] New features */
-  { "firstScoreAbs", ArgBoolean, (LPVOID) &appData.firstScoreIsAbsolute, FALSE },
-  { "secondScoreAbs", ArgBoolean, (LPVOID) &appData.secondScoreIsAbsolute, FALSE },
-  { "pgnExtendedInfo", ArgBoolean, (LPVOID) &appData.saveExtendedInfoInPGN, TRUE },
-  { "hideThinkingFromHuman", ArgBoolean, (LPVOID) &appData.hideThinkingFromHuman, TRUE },
-  { "liteBackTextureFile", ArgString, (LPVOID) &appData.liteBackTextureFile, TRUE },
-  { "darkBackTextureFile", ArgString, (LPVOID) &appData.darkBackTextureFile, TRUE },
-  { "liteBackTextureMode", ArgInt, (LPVOID) &appData.liteBackTextureMode, TRUE },
-  { "darkBackTextureMode", ArgInt, (LPVOID) &appData.darkBackTextureMode, TRUE },
-  { "renderPiecesWithFont", ArgString, (LPVOID) &appData.renderPiecesWithFont, TRUE },
-  { "fontPieceToCharTable", ArgString, (LPVOID) &appData.fontToPieceTable, TRUE },
-  { "fontPieceBackColorWhite", ArgColor, (LPVOID) &appData.fontBackColorWhite, TRUE },
-  { "fontPieceForeColorWhite", ArgColor, (LPVOID) &appData.fontForeColorWhite, TRUE },
-  { "fontPieceBackColorBlack", ArgColor, (LPVOID) &appData.fontBackColorBlack, TRUE },
-  { "fontPieceForeColorBlack", ArgColor, (LPVOID) &appData.fontForeColorBlack, TRUE },
-  { "fontPieceSize", ArgInt, (LPVOID) &appData.fontPieceSize, TRUE },
-  { "overrideLineGap", ArgInt, (LPVOID) &appData.overrideLineGap, TRUE },
-  { "adjudicateLossThreshold", ArgInt, (LPVOID) &appData.adjudicateLossThreshold, TRUE },
-  { "delayBeforeQuit", ArgInt, (LPVOID) &appData.delayBeforeQuit, TRUE },
-  { "delayAfterQuit", ArgInt, (LPVOID) &appData.delayAfterQuit, TRUE },
-  { "nameOfDebugFile", ArgFilename, (LPVOID) &appData.nameOfDebugFile, FALSE },
-  { "debugfile", ArgFilename, (LPVOID) &appData.nameOfDebugFile, FALSE },
-  { "pgnEventHeader", ArgString, (LPVOID) &appData.pgnEventHeader, TRUE },
-  { "defaultFrcPosition", ArgInt, (LPVOID) &appData.defaultFrcPosition, TRUE },
-  { "gameListTags", ArgString, (LPVOID) &appData.gameListTags, TRUE },
-  { "saveOutOfBookInfo", ArgBoolean, (LPVOID) &appData.saveOutOfBookInfo, TRUE },
-  { "showEvalInMoveHistory", ArgBoolean, (LPVOID) &appData.showEvalInMoveHistory, TRUE },
-  { "evalHistColorWhite", ArgColor, (LPVOID) &appData.evalHistColorWhite, TRUE },
-  { "evalHistColorBlack", ArgColor, (LPVOID) &appData.evalHistColorBlack, TRUE },
-  { "highlightMoveWithArrow", ArgBoolean, (LPVOID) &appData.highlightMoveWithArrow, TRUE },
-  { "highlightArrowColor", ArgColor, (LPVOID) &appData.highlightArrowColor, TRUE },
-  { "stickyWindows", ArgBoolean, (LPVOID) &appData.useStickyWindows, TRUE },
-  { "adjudicateDrawMoves", ArgInt, (LPVOID) &appData.adjudicateDrawMoves, TRUE },
-  { "autoDisplayComment", ArgBoolean, (LPVOID) &appData.autoDisplayComment, TRUE },
-  { "autoDisplayTags", ArgBoolean, (LPVOID) &appData.autoDisplayTags, TRUE },
-  { "firstIsUCI", ArgBoolean, (LPVOID) &appData.firstIsUCI, FALSE },
-  { "fUCI", ArgTrue, (LPVOID) &appData.firstIsUCI, FALSE },
-  { "secondIsUCI", ArgBoolean, (LPVOID) &appData.secondIsUCI, FALSE },
-  { "sUCI", ArgTrue, (LPVOID) &appData.secondIsUCI, FALSE },
-  { "firstHasOwnBookUCI", ArgBoolean, (LPVOID) &appData.firstHasOwnBookUCI, FALSE },
-  { "fNoOwnBookUCI", ArgFalse, (LPVOID) &appData.firstHasOwnBookUCI, FALSE },
-  { "firstXBook", ArgFalse, (LPVOID) &appData.firstHasOwnBookUCI, FALSE },
-  { "secondHasOwnBookUCI", ArgBoolean, (LPVOID) &appData.secondHasOwnBookUCI, FALSE },
-  { "sNoOwnBookUCI", ArgFalse, (LPVOID) &appData.secondHasOwnBookUCI, FALSE },
-  { "secondXBook", ArgFalse, (LPVOID) &appData.secondHasOwnBookUCI, FALSE },
-  { "polyglotDir", ArgFilename, (LPVOID) &appData.polyglotDir, TRUE },
-  { "usePolyglotBook", ArgBoolean, (LPVOID) &appData.usePolyglotBook, TRUE },
-  { "polyglotBook", ArgFilename, (LPVOID) &appData.polyglotBook, TRUE },
-  { "defaultHashSize", ArgInt, (LPVOID) &appData.defaultHashSize, TRUE }, 
-  { "defaultCacheSizeEGTB", ArgInt, (LPVOID) &appData.defaultCacheSizeEGTB, TRUE },
-  { "defaultPathEGTB", ArgFilename, (LPVOID) &appData.defaultPathEGTB, TRUE },
-
-  /* [HGM] board-size, adjudication and misc. options */
-  { "boardWidth", ArgInt, (LPVOID) &appData.NrFiles, TRUE },
-  { "boardHeight", ArgInt, (LPVOID) &appData.NrRanks, TRUE },
-  { "holdingsSize", ArgInt, (LPVOID) &appData.holdingsSize, TRUE },
-  { "matchPause", ArgInt, (LPVOID) &appData.matchPause, TRUE },
-  { "pieceToCharTable", ArgString, (LPVOID) &appData.pieceToCharTable, FALSE },
-  { "flipBlack", ArgBoolean, (LPVOID) &appData.upsideDown, TRUE },
-  { "allWhite", ArgBoolean, (LPVOID) &appData.allWhite, TRUE },
-  { "alphaRank", ArgBoolean, (LPVOID) &appData.alphaRank, FALSE },
-  { "firstAlphaRank", ArgBoolean, (LPVOID) &first.alphaRank, FALSE },
-  { "secondAlphaRank", ArgBoolean, (LPVOID) &second.alphaRank, FALSE },
-  { "testClaims", ArgBoolean, (LPVOID) &appData.testClaims, TRUE },
-  { "checkMates", ArgBoolean, (LPVOID) &appData.checkMates, TRUE },
-  { "materialDraws", ArgBoolean, (LPVOID) &appData.materialDraws, TRUE },
-  { "trivialDraws", ArgBoolean, (LPVOID) &appData.trivialDraws, TRUE },
-  { "ruleMoves", ArgInt, (LPVOID) &appData.ruleMoves, TRUE },
-  { "repeatsToDraw", ArgInt, (LPVOID) &appData.drawRepeats, TRUE },
-  { "autoKibitz", ArgTrue, (LPVOID) &appData.autoKibitz, FALSE },
-  { "engineDebugOutput", ArgInt, (LPVOID) &appData.engineComments, FALSE },
-  { "userName", ArgString, (LPVOID) &appData.userName, FALSE },
-  { "rewindIndex", ArgInt, (LPVOID) &appData.rewindIndex, FALSE },
-  { "sameColorGames", ArgInt, (LPVOID) &appData.sameColorGames, FALSE },
-  { "smpCores", ArgInt, (LPVOID) &appData.smpCores, TRUE },
-  { "egtFormats", ArgString, (LPVOID) &appData.egtFormats, TRUE },
-  { "niceEngines", ArgInt, (LPVOID) &appData.niceEngines, TRUE },
-  { "firstLogo", ArgFilename, (LPVOID) &appData.firstLogo, FALSE },
-  { "secondLogo", ArgFilename, (LPVOID) &appData.secondLogo, FALSE },
-  { "autoLogo", ArgBoolean, (LPVOID) &appData.autoLogo, TRUE },
-  { "firstOptions", ArgString, (LPVOID) &appData.firstOptions, FALSE },
-  { "secondOptions", ArgString, (LPVOID) &appData.secondOptions, FALSE },
-  { "firstNeedsNoncompliantFEN", ArgString, (LPVOID) &appData.fenOverride1, FALSE },
-  { "secondNeedsNoncompliantFEN", ArgString, (LPVOID) &appData.fenOverride2, FALSE },
-
-#ifdef ZIPPY
-  { "zippyTalk", ArgBoolean, (LPVOID) &appData.zippyTalk, FALSE },
-  { "zt", ArgTrue, (LPVOID) &appData.zippyTalk, FALSE },
-  { "xzt", ArgFalse, (LPVOID) &appData.zippyTalk, FALSE },
-  { "-zt", ArgFalse, (LPVOID) &appData.zippyTalk, FALSE },
-  { "zippyPlay", ArgBoolean, (LPVOID) &appData.zippyPlay, FALSE },
-  { "zp", ArgTrue, (LPVOID) &appData.zippyPlay, FALSE },
-  { "xzp", ArgFalse, (LPVOID) &appData.zippyPlay, FALSE },
-  { "-zp", ArgFalse, (LPVOID) &appData.zippyPlay, FALSE },
-  { "zippyLines", ArgFilename, (LPVOID) &appData.zippyLines, FALSE },
-  { "zippyPinhead", ArgString, (LPVOID) &appData.zippyPinhead, FALSE },
-  { "zippyPassword", ArgString, (LPVOID) &appData.zippyPassword, FALSE },
-  { "zippyPassword2", ArgString, (LPVOID) &appData.zippyPassword2, FALSE },
-  { "zippyWrongPassword", ArgString, (LPVOID) &appData.zippyWrongPassword,
-    FALSE },
-  { "zippyAcceptOnly", ArgString, (LPVOID) &appData.zippyAcceptOnly, FALSE },
-  { "zippyUseI", ArgBoolean, (LPVOID) &appData.zippyUseI, FALSE },
-  { "zui", ArgTrue, (LPVOID) &appData.zippyUseI, FALSE },
-  { "xzui", ArgFalse, (LPVOID) &appData.zippyUseI, FALSE },
-  { "-zui", ArgFalse, (LPVOID) &appData.zippyUseI, FALSE },
-  { "zippyBughouse", ArgInt, (LPVOID) &appData.zippyBughouse, FALSE },
-  { "zippyNoplayCrafty", ArgBoolean, (LPVOID) &appData.zippyNoplayCrafty,
-    FALSE },
-  { "znc", ArgTrue, (LPVOID) &appData.zippyNoplayCrafty, FALSE },
-  { "xznc", ArgFalse, (LPVOID) &appData.zippyNoplayCrafty, FALSE },
-  { "-znc", ArgFalse, (LPVOID) &appData.zippyNoplayCrafty, FALSE },
-  { "zippyGameEnd", ArgString, (LPVOID) &appData.zippyGameEnd, FALSE },
-  { "zippyGameStart", ArgString, (LPVOID) &appData.zippyGameStart, FALSE },
-  { "zippyAdjourn", ArgBoolean, (LPVOID) &appData.zippyAdjourn, FALSE },
-  { "zadj", ArgTrue, (LPVOID) &appData.zippyAdjourn, FALSE },
-  { "xzadj", ArgFalse, (LPVOID) &appData.zippyAdjourn, FALSE },
-  { "-zadj", ArgFalse, (LPVOID) &appData.zippyAdjourn, FALSE },
-  { "zippyAbort", ArgBoolean, (LPVOID) &appData.zippyAbort, FALSE },
-  { "zab", ArgTrue, (LPVOID) &appData.zippyAbort, FALSE },
-  { "xzab", ArgFalse, (LPVOID) &appData.zippyAbort, FALSE },
-  { "-zab", ArgFalse, (LPVOID) &appData.zippyAbort, FALSE },
-  { "zippyVariants", ArgString, (LPVOID) &appData.zippyVariants, FALSE },
-  { "zippyMaxGames", ArgInt, (LPVOID)&appData.zippyMaxGames, FALSE },
-  { "zippyReplayTimeout", ArgInt, (LPVOID)&appData.zippyReplayTimeout, FALSE },
-  { "zippyShortGame", ArgInt, (LPVOID)&appData.zippyShortGame, FALSE },
-  /* Kludge to allow winboard.ini files from buggy 4.0.4 to be read: */
-  { "zippyReplyTimeout", ArgInt, (LPVOID)&junk, FALSE },
-#endif
-  /* [HGM] options for broadcasting and time odds */
-  { "serverMoves", ArgString, (LPVOID) &appData.serverMovesName, FALSE },
-  { "suppressLoadMoves", ArgBoolean, (LPVOID) &appData.suppressLoadMoves, FALSE },
-  { "serverPause", ArgInt, (LPVOID) &appData.serverPause, FALSE },
-  { "firstTimeOdds", ArgInt, (LPVOID) &appData.firstTimeOdds, FALSE },
-  { "secondTimeOdds", ArgInt, (LPVOID) &appData.secondTimeOdds, FALSE },
-  { "timeOddsMode", ArgInt, (LPVOID) &appData.timeOddsMode, TRUE },
-  { "firstAccumulateTC", ArgInt, (LPVOID) &appData.firstAccumulateTC, FALSE },
-  { "secondAccumulateTC", ArgInt, (LPVOID) &appData.secondAccumulateTC, FALSE },
-  { "firstNPS", ArgInt, (LPVOID) &appData.firstNPS, FALSE },
-  { "secondNPS", ArgInt, (LPVOID) &appData.secondNPS, FALSE },
-  { "noGUI", ArgTrue, (LPVOID) &appData.noGUI, FALSE },
-
-  // [HGM] placement: put all window layouts last in ini file, but man X,Y before all others
-  { "minX", ArgZ, (LPVOID) &minX, FALSE }, // [HGM] placement: to make suer auxialary windows can be placed
-  { "minY", ArgZ, (LPVOID) &minY, FALSE },
-  { "winWidth",  ArgInt, (LPVOID) &winWidth,  TRUE }, // [HGM] placement: dummies to remember right & bottom
-  { "winHeight", ArgInt, (LPVOID) &winHeight, TRUE }, //       for attaching auxiliary windows to them
-  { "x", ArgInt, (LPVOID) &boardX, TRUE },
-  { "y", ArgInt, (LPVOID) &boardY, TRUE },
-  { "icsX", ArgX,   (LPVOID) &wpConsole.x, TRUE },
-  { "icsY", ArgY,   (LPVOID) &wpConsole.y, TRUE },
-  { "icsW", ArgInt, (LPVOID) &wpConsole.width, TRUE },
-  { "icsH", ArgInt, (LPVOID) &wpConsole.height, TRUE },
-  { "analysisX", ArgX,   (LPVOID) &analysisX, FALSE }, // [HGM] placement: analysis window no longer exists
-  { "analysisY", ArgY,   (LPVOID) &analysisY, FALSE }, //       provided for compatibility with old ini files
-  { "analysisW", ArgInt, (LPVOID) &analysisW, FALSE },
-  { "analysisH", ArgInt, (LPVOID) &analysisH, FALSE },
-  { "commentX", ArgX,   (LPVOID) &commentX, TRUE },
-  { "commentY", ArgY,   (LPVOID) &commentY, TRUE },
-  { "commentW", ArgInt, (LPVOID) &commentW, TRUE },
-  { "commentH", ArgInt, (LPVOID) &commentH, TRUE },
-  { "tagsX", ArgX,   (LPVOID) &editTagsX, TRUE },
-  { "tagsY", ArgY,   (LPVOID) &editTagsY, TRUE },
-  { "tagsW", ArgInt, (LPVOID) &editTagsW, TRUE },
-  { "tagsH", ArgInt, (LPVOID) &editTagsH, TRUE },
-  { "gameListX", ArgX,   (LPVOID) &wpGameList.x, TRUE },
-  { "gameListY", ArgY,   (LPVOID) &wpGameList.y, TRUE },
-  { "gameListW", ArgInt, (LPVOID) &wpGameList.width, TRUE },
-  { "gameListH", ArgInt, (LPVOID) &wpGameList.height, TRUE },
-  /* [AS] Layout stuff */
-  { "moveHistoryUp", ArgBoolean, (LPVOID) &wpMoveHistory.visible, TRUE },
-  { "moveHistoryX", ArgX,   (LPVOID) &wpMoveHistory.x, TRUE },
-  { "moveHistoryY", ArgY,   (LPVOID) &wpMoveHistory.y, TRUE },
-  { "moveHistoryW", ArgInt, (LPVOID) &wpMoveHistory.width, TRUE },
-  { "moveHistoryH", ArgInt, (LPVOID) &wpMoveHistory.height, TRUE },
-
-  { "evalGraphUp", ArgBoolean, (LPVOID) &wpEvalGraph.visible, TRUE },
-  { "evalGraphX", ArgX,   (LPVOID) &wpEvalGraph.x, TRUE },
-  { "evalGraphY", ArgY,   (LPVOID) &wpEvalGraph.y, TRUE },
-  { "evalGraphW", ArgInt, (LPVOID) &wpEvalGraph.width, TRUE },
-  { "evalGraphH", ArgInt, (LPVOID) &wpEvalGraph.height, TRUE },
-
-  { "engineOutputUp", ArgBoolean, (LPVOID) &wpEngineOutput.visible, TRUE },
-  { "engineOutputX", ArgX,   (LPVOID) &wpEngineOutput.x, TRUE },
-  { "engineOutputY", ArgY,   (LPVOID) &wpEngineOutput.y, TRUE },
-  { "engineOutputW", ArgInt, (LPVOID) &wpEngineOutput.width, TRUE },
-  { "engineOutputH", ArgInt, (LPVOID) &wpEngineOutput.height, TRUE },
-
-  { NULL, ArgNone, NULL, FALSE }
-};
-
-
-/* Kludge for indirection files on command line */
-char* lastIndirectionFilename;
-ArgDescriptor argDescriptorIndirection =
-{ "", ArgSettingsFilename, (LPVOID) NULL, FALSE };
-
-
-VOID
-ExitArgError(char *msg, char *badArg)
-{
-  char buf[MSG_SIZ];
-
-  sprintf(buf, "%s %s", msg, badArg);
-  DisplayFatalError(buf, 0, 2);
-  exit(2);
-}
-
-/* Command line font name parser.  NULL name means do nothing.
-   Syntax like "Courier New:10.0 bi" or "Arial:10" or "Arial:10b"
-   For backward compatibility, syntax without the colon is also
-   accepted, but font names with digits in them won't work in that case.
-*/
-VOID
-ParseFontName(char *name, MyFontParams *mfp)
-{
-  char *p, *q;
-  if (name == NULL) return;
-  p = name;
-  q = strchr(p, ':');
-  if (q) {
-    if (q - p >= sizeof(mfp->faceName))
-      ExitArgError("Font name too long:", name);
-    memcpy(mfp->faceName, p, q - p);
-    mfp->faceName[q - p] = NULLCHAR;
-    p = q + 1;
-  } else {
-    q = mfp->faceName;
-    while (*p && !isdigit(*p)) {
-      *q++ = *p++;
-      if (q - mfp->faceName >= sizeof(mfp->faceName))
-	ExitArgError("Font name too long:", name);
-    }
-    while (q > mfp->faceName && q[-1] == ' ') q--;
-    *q = NULLCHAR;
-  }
-  if (!*p) ExitArgError("Font point size missing:", name);
-  mfp->pointSize = (float) atof(p);
-  mfp->bold = (strchr(p, 'b') != NULL);
-  mfp->italic = (strchr(p, 'i') != NULL);
-  mfp->underline = (strchr(p, 'u') != NULL);
-  mfp->strikeout = (strchr(p, 's') != NULL);
-}
-
-/* Color name parser.
-   X version accepts X color names, but this one
-   handles only the #rrggbb form (hex) or rrr,ggg,bbb (decimal) */
-COLORREF
-ParseColorName(char *name)
-{
-  int red, green, blue, count;
-  char buf[MSG_SIZ];
-
-  count = sscanf(name, "#%2x%2x%2x", &red, &green, &blue);
-  if (count != 3) {
-    count = sscanf(name, "%3d%*[^0-9]%3d%*[^0-9]%3d", 
-      &red, &green, &blue);
-  }
-  if (count != 3) {
-    sprintf(buf, "Can't parse color name %s", name);
-    DisplayError(buf, 0);
-    return RGB(0, 0, 0);
-  }
-  return PALETTERGB(red, green, blue);
-}
-
-
-void ParseAttribs(COLORREF *color, int *effects, char* argValue)
-{
-  char *e = argValue;
-  int eff = 0;
-
-  while (*e) {
-    if (*e == 'b')      eff |= CFE_BOLD;
-    else if (*e == 'i') eff |= CFE_ITALIC;
-    else if (*e == 'u') eff |= CFE_UNDERLINE;
-    else if (*e == 's') eff |= CFE_STRIKEOUT;
-    else if (*e == '#' || isdigit(*e)) break;
-    e++;
-  }
-  *effects = eff;
-  *color   = ParseColorName(e);
-}
-
-
-BoardSize
-ParseBoardSize(char *name)
-{
-  BoardSize bs = SizeTiny;
-  while (sizeInfo[bs].name != NULL) {
-    if (StrCaseCmp(name, sizeInfo[bs].name) == 0) return bs;
-    bs++;
-  }
-  ExitArgError("Unrecognized board size value", name);
-  return bs; /* not reached */
-}
-
-
-char
-StringGet(void *getClosure)
-{
-  char **p = (char **) getClosure;
-  return *((*p)++);
-}
-
-char
-FileGet(void *getClosure)
-{
-  int c;
-  FILE* f = (FILE*) getClosure;
-
-  c = getc(f);
-  if (c == '\r') c = getc(f); // work around DOS format files by bypassing the '\r' completely
-  if (c == EOF)
-    return NULLCHAR;
-  else
-    return (char) c;
-}
-
-/* Parse settings file named "name". If file found, return the
-   full name in fullname and return TRUE; else return FALSE */
-BOOLEAN
-ParseSettingsFile(char *name, char fullname[MSG_SIZ])
-{
-  char *dummy;
-  FILE *f;
-  int ok; char buf[MSG_SIZ];
-
-  ok = SearchPath(installDir, name, NULL, MSG_SIZ, fullname, &dummy);
-  if(!ok && strchr(name, '.') == NULL) { // [HGM] append default file-name extension '.ini' when needed
-    sprintf(buf, "%s.ini", name);
-    ok = SearchPath(installDir, buf, NULL, MSG_SIZ, fullname, &dummy);
-  }
-  if (ok) {
-    f = fopen(fullname, "r");
-    if (f != NULL) {
-      ParseArgs(FileGet, f);
-      fclose(f);
-      return TRUE;
-    }
-  }
-  return FALSE;
-}
-
-VOID
-ParseArgs(GetFunc get, void *cl)
-{
-  char argName[ARG_MAX];
-  char argValue[ARG_MAX];
-  ArgDescriptor *ad;
-  char start;
-  char *q;
-  int i, octval;
-  char ch;
-  int posarg = 0;
-
-  ch = get(cl);
-  for (;;) {
-    while (ch == ' ' || ch == '\n' || ch == '\t') ch = get(cl);
-    if (ch == NULLCHAR) break;
-    if (ch == ';') {
-      /* Comment to end of line */
-      ch = get(cl);
-      while (ch != '\n' && ch != NULLCHAR) ch = get(cl);
-      continue;
-    } else if (ch == '/' || ch == '-') {
-      /* Switch */
-      q = argName;
-      while (ch != ' ' && ch != '=' && ch != ':' && ch != NULLCHAR &&
-	     ch != '\n' && ch != '\t') {
-	*q++ = ch;
-	ch = get(cl);
-      }
-      *q = NULLCHAR;
-
-      for (ad = argDescriptors; ad->argName != NULL; ad++)
-	if (strcmp(ad->argName, argName + 1) == 0) break;
-
-      if (ad->argName == NULL)
-	ExitArgError("Unrecognized argument", argName);
-
-    } else if (ch == '@') {
-      /* Indirection file */
-      ad = &argDescriptorIndirection;
-      ch = get(cl);
-    } else {
-      /* Positional argument */
-      ad = &argDescriptors[posarg++];
-      strcpy(argName, ad->argName);
-    }
-
-    if (ad->argType == ArgTrue) {
-      *(Boolean *) ad->argLoc = TRUE;
-      continue;
-    }
-    if (ad->argType == ArgFalse) {
-      *(Boolean *) ad->argLoc = FALSE;
-      continue;
-    }
-
-    while (ch == ' ' || ch == '=' || ch == ':' || ch == '\t') ch = get(cl);
-    if (ch == NULLCHAR || ch == '\n') {
-      ExitArgError("No value provided for argument", argName);
-    }
-    q = argValue;
-    if (ch == '{') {
-      // Quoting with { }.  No characters have to (or can) be escaped.
-      // Thus the string cannot contain a '}' character.
-      start = ch;
-      ch = get(cl);
-      while (start) {
-	switch (ch) {
-	case NULLCHAR:
-	  start = NULLCHAR;
-	  break;
-	  
-	case '}':
-	  ch = get(cl);
-	  start = NULLCHAR;
-	  break;
-
-	default:
-	  *q++ = ch;
-	  ch = get(cl);
-	  break;
-	}
-      }	  
-    } else if (ch == '\'' || ch == '"') {
-      // Quoting with ' ' or " ", with \ as escape character.
-      // Inconvenient for long strings that may contain Windows filenames.
-      start = ch;
-      ch = get(cl);
-      while (start) {
-	switch (ch) {
-	case NULLCHAR:
-	  start = NULLCHAR;
-	  break;
-
-	default:
-        not_special:
-	  *q++ = ch;
-	  ch = get(cl);
-	  break;
-
-	case '\'':
-	case '\"':
-	  if (ch == start) {
-	    ch = get(cl);
-	    start = NULLCHAR;
-	    break;
-	  } else {
-	    goto not_special;
-	  }
-
-	case '\\':
-          if (ad->argType == ArgFilename
-	      || ad->argType == ArgSettingsFilename) {
-	      goto not_special;
-	  }
-	  ch = get(cl);
-	  switch (ch) {
-	  case NULLCHAR:
-	    ExitArgError("Incomplete \\ escape in value for", argName);
-	    break;
-	  case 'n':
-	    *q++ = '\n';
-	    ch = get(cl);
-	    break;
-	  case 'r':
-	    *q++ = '\r';
-	    ch = get(cl);
-	    break;
-	  case 't':
-	    *q++ = '\t';
-	    ch = get(cl);
-	    break;
-	  case 'b':
-	    *q++ = '\b';
-	    ch = get(cl);
-	    break;
-	  case 'f':
-	    *q++ = '\f';
-	    ch = get(cl);
-	    break;
-	  default:
-	    octval = 0;
-	    for (i = 0; i < 3; i++) {
-	      if (ch >= '0' && ch <= '7') {
-		octval = octval*8 + (ch - '0');
-		ch = get(cl);
-	      } else {
-		break;
-	      }
-	    }
-	    if (i > 0) {
-	      *q++ = (char) octval;
-	    } else {
-	      *q++ = ch;
-	      ch = get(cl);
-	    }
-	    break;
-	  }
-	  break;
-	}
-      }
-    } else {
-      while (ch != ' ' && ch != NULLCHAR && ch != '\t' && ch != '\n') {
-	*q++ = ch;
-	ch = get(cl);
-      }
-    }
-    *q = NULLCHAR;
-
-    switch (ad->argType) {
-    case ArgInt:
-      *(int *) ad->argLoc = atoi(argValue);
-      break;
-
-    case ArgX:
-      *(int *) ad->argLoc = atoi(argValue) + boardX; // [HGM] placement: translate stored relative to absolute 
-      break;
-
-    case ArgY:
-      *(int *) ad->argLoc = atoi(argValue) + boardY; // (this is really kludgey, it should be done where used...)
-      break;
-
-    case ArgZ:
-      *(int *) ad->argLoc = atoi(argValue);
-      EnsureOnScreen(&boardX, &boardY, minX, minY); 
-      break;
-
-    case ArgFloat:
-      *(float *) ad->argLoc = (float) atof(argValue);
-      break;
-
-    case ArgString:
-    case ArgFilename:
-      *(char **) ad->argLoc = strdup(argValue);
-      break;
-
-    case ArgSettingsFilename:
-      {
-	char fullname[MSG_SIZ];
-	if (ParseSettingsFile(argValue, fullname)) {
-	  if (ad->argLoc != NULL) {
-	    *(char **) ad->argLoc = strdup(fullname);
-	  }
-	} else {
-	  if (ad->argLoc != NULL) {
-	  } else {
-	    ExitArgError("Failed to open indirection file", argValue);
-	  }
-	}
-      }
-      break;
-
-    case ArgBoolean:
-      switch (argValue[0]) {
-      case 't':
-      case 'T':
-	*(Boolean *) ad->argLoc = TRUE;
-	break;
-      case 'f':
-      case 'F':
-	*(Boolean *) ad->argLoc = FALSE;
-	break;
-      default:
-	ExitArgError("Unrecognized boolean argument value", argValue);
-	break;
-      }
-      break;
-
-    case ArgColor:
-      *(COLORREF *)ad->argLoc = ParseColorName(argValue);
-      break;
-
-    case ArgAttribs: {
-      ColorClass cc = (ColorClass)ad->argLoc;
-      ParseAttribs(&textAttribs[cc].color, &textAttribs[cc].effects, argValue);
-      }
-      break;
-      
-    case ArgBoardSize:
-      *(BoardSize *)ad->argLoc = ParseBoardSize(argValue);
-      break;
-
-    case ArgFont:
-      ParseFontName(argValue, &font[boardSize][(int)ad->argLoc]->mfp);
-      break;
-
-    case ArgCommSettings:
-      ParseCommSettings(argValue, &dcb);
-      break;
-
-    case ArgNone:
-      ExitArgError("Unrecognized argument", argValue);
-      break;
-    case ArgTrue:
-    case ArgFalse: ;
-    }
-  }
-}
-
-VOID
-LFfromMFP(LOGFONT* lf, MyFontParams *mfp)
-{
-  HDC hdc = CreateDC("DISPLAY", NULL, NULL, NULL);
-  lf->lfHeight = -(int)(mfp->pointSize * GetDeviceCaps(hdc, LOGPIXELSY) / 72.0 + 0.5);
-  DeleteDC(hdc);
-  lf->lfWidth = 0;
-  lf->lfEscapement = 0;
-  lf->lfOrientation = 0;
-  lf->lfWeight = mfp->bold ? FW_BOLD : FW_NORMAL;
-  lf->lfItalic = mfp->italic;
-  lf->lfUnderline = mfp->underline;
-  lf->lfStrikeOut = mfp->strikeout;
-  lf->lfCharSet = DEFAULT_CHARSET;
-  lf->lfOutPrecision = OUT_DEFAULT_PRECIS;
-  lf->lfClipPrecision = CLIP_DEFAULT_PRECIS;
-  lf->lfQuality = DEFAULT_QUALITY;
-  lf->lfPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE;
-  strcpy(lf->lfFaceName, mfp->faceName);
-}
-
-VOID
-CreateFontInMF(MyFont *mf)
-{
-  LFfromMFP(&mf->lf, &mf->mfp);
-  if (mf->hf) DeleteObject(mf->hf);
-  mf->hf = CreateFontIndirect(&mf->lf);
-}
-
-VOID
-SetDefaultTextAttribs()
-{
-  ColorClass cc;
-  for (cc = (ColorClass)0; cc < NColorClasses; cc++) {
-    ParseAttribs(&textAttribs[cc].color, 
-		 &textAttribs[cc].effects, 
-	         defaultTextAttribs[cc]);
-  }
-}
-
-VOID
-SetDefaultSounds()
-{
-  ColorClass cc;
-  SoundClass sc;
-  for (cc = (ColorClass)0; cc < NColorClasses; cc++) {
-    textAttribs[cc].sound.name = strdup("");
-    textAttribs[cc].sound.data = NULL;
-  }
-  for (sc = (SoundClass)0; sc < NSoundClasses; sc++) {
-    sounds[sc].name = strdup("");
-    sounds[sc].data = NULL;
-  }
-  sounds[(int)SoundBell].name = strdup(SOUND_BELL);
-}
-
-VOID
-LoadAllSounds()
-{
-  ColorClass cc;
-  SoundClass sc;
-  for (cc = (ColorClass)0; cc < NColorClasses; cc++) {
-    MyLoadSound(&textAttribs[cc].sound);
-  }
-  for (sc = (SoundClass)0; sc < NSoundClasses; sc++) {
-    MyLoadSound(&sounds[sc]);
-  }
-}
-
-VOID
-InitAppData(LPSTR lpCmdLine)
-{
-  int i, j;
-  char buf[ARG_MAX], currDir[MSG_SIZ];
-  char *dummy, *p;
-
-  programName = szAppName;
-
-  /* Initialize to defaults */
-  lightSquareColor = ParseColorName(LIGHT_SQUARE_COLOR);
-  darkSquareColor = ParseColorName(DARK_SQUARE_COLOR);
-  whitePieceColor = ParseColorName(WHITE_PIECE_COLOR);
-  blackPieceColor = ParseColorName(BLACK_PIECE_COLOR);
-  highlightSquareColor = ParseColorName(HIGHLIGHT_SQUARE_COLOR);
-  premoveHighlightColor = ParseColorName(PREMOVE_HIGHLIGHT_COLOR);
-  consoleBackgroundColor = ParseColorName(COLOR_BKGD);
-  SetDefaultTextAttribs();
-  SetDefaultSounds();
-  appData.movesPerSession = MOVES_PER_SESSION;
-  appData.initString = INIT_STRING;
-  appData.secondInitString = INIT_STRING;
-  appData.firstComputerString = COMPUTER_STRING;
-  appData.secondComputerString = COMPUTER_STRING;
-  appData.firstChessProgram = FIRST_CHESS_PROGRAM;
-  appData.secondChessProgram = SECOND_CHESS_PROGRAM;
-  appData.firstPlaysBlack = FALSE;
-  appData.noChessProgram = FALSE;
-  chessProgram = FALSE;
-  appData.firstHost = FIRST_HOST;
-  appData.secondHost = SECOND_HOST;
-  appData.firstDirectory = FIRST_DIRECTORY;
-  appData.secondDirectory = SECOND_DIRECTORY;
-  appData.bitmapDirectory = "";
-  appData.remoteShell = REMOTE_SHELL;
-  appData.remoteUser = "";
-  appData.timeDelay = TIME_DELAY;
-  appData.timeControl = TIME_CONTROL;
-  appData.timeIncrement = TIME_INCREMENT;
-  appData.icsActive = FALSE;
-  appData.icsHost = "";
-  appData.icsPort = ICS_PORT;
-  appData.icsCommPort = ICS_COMM_PORT;
-  appData.icsLogon = ICS_LOGON;
-  appData.icsHelper = "";
-  appData.useTelnet = FALSE;
-  appData.telnetProgram = TELNET_PROGRAM;
-  appData.gateway = "";
-  appData.loadGameFile = "";
-  appData.loadGameIndex = 0;
-  appData.saveGameFile = "";
-  appData.autoSaveGames = FALSE;
-  appData.loadPositionFile = "";
-  appData.loadPositionIndex = 1;
-  appData.savePositionFile = "";
-  appData.matchMode = FALSE;
-  appData.matchGames = 0;
-  appData.monoMode = FALSE;
-  appData.debugMode = FALSE;
-  appData.clockMode = TRUE;
-  boardSize = (BoardSize) -1; /* determine by screen size */
-  appData.Iconic = FALSE; /*unused*/
-  appData.searchTime = "";
-  appData.searchDepth = 0;
-  appData.showCoords = FALSE;
-  appData.ringBellAfterMoves = TRUE; /*obsolete in WinBoard*/
-  appData.autoCallFlag = FALSE;
-  appData.flipView = FALSE;
-  appData.autoFlipView = TRUE;
-  appData.cmailGameName = "";
-  appData.alwaysPromoteToQueen = FALSE;
-  appData.oldSaveStyle = FALSE;
-  appData.quietPlay = FALSE;
-  appData.showThinking = FALSE;
-  appData.ponderNextMove = TRUE;
-  appData.periodicUpdates = TRUE;
-  appData.popupExitMessage = TRUE;
-  appData.popupMoveErrors = FALSE;
-  appData.autoObserve = FALSE;
-  appData.autoComment = FALSE;
-  appData.animate = TRUE;
-  appData.animSpeed = 10;
-  appData.animateDragging = TRUE;
-  appData.highlightLastMove = TRUE;
-  appData.getMoveList = TRUE;
-  appData.testLegality = TRUE;
-  appData.premove = TRUE;
-  appData.premoveWhite = FALSE;
-  appData.premoveWhiteText = "";
-  appData.premoveBlack = FALSE;
-  appData.premoveBlackText = "";
-  appData.icsAlarm = TRUE;
-  appData.icsAlarmTime = 5000;
-  appData.autoRaiseBoard = TRUE;
-  appData.localLineEditing = TRUE;
-  appData.colorize = TRUE;
-  appData.reuseFirst = TRUE;
-  appData.reuseSecond = TRUE;
-  appData.blindfold = FALSE;
-  appData.icsEngineAnalyze = FALSE;
-  memset(&dcb, 0, sizeof(DCB)); // required by VS 2002 +
-  dcb.DCBlength = sizeof(DCB);
-  dcb.BaudRate = 9600;
-  dcb.fBinary = TRUE;
-  dcb.fParity = FALSE;
-  dcb.fOutxCtsFlow = FALSE;
-  dcb.fOutxDsrFlow = FALSE;
-  dcb.fDtrControl = DTR_CONTROL_ENABLE;
-  dcb.fDsrSensitivity = FALSE;
-  dcb.fTXContinueOnXoff = TRUE;
-  dcb.fOutX = FALSE;
-  dcb.fInX = FALSE;
-  dcb.fNull = FALSE;
-  dcb.fRtsControl = RTS_CONTROL_ENABLE;
-  dcb.fAbortOnError = FALSE;
-  dcb.ByteSize = 7;
-  dcb.Parity = SPACEPARITY;
-  dcb.StopBits = ONESTOPBIT;
-  settingsFileName = SETTINGS_FILE;
-  saveSettingsOnExit = TRUE;
-  boardX = CW_USEDEFAULT;
-  boardY = CW_USEDEFAULT;
-  analysisX = CW_USEDEFAULT; 
-  analysisY = CW_USEDEFAULT; 
-  analysisW = CW_USEDEFAULT;
-  analysisH = CW_USEDEFAULT;
-  commentX = CW_USEDEFAULT; 
-  commentY = CW_USEDEFAULT; 
-  commentW = CW_USEDEFAULT;
-  commentH = CW_USEDEFAULT;
-  editTagsX = CW_USEDEFAULT; 
-  editTagsY = CW_USEDEFAULT; 
-  editTagsW = CW_USEDEFAULT;
-  editTagsH = CW_USEDEFAULT;
-  icsTextMenuString = ICS_TEXT_MENU_DEFAULT;
-  icsNames = ICS_NAMES;
-  firstChessProgramNames = FCP_NAMES;
-  secondChessProgramNames = SCP_NAMES;
-  appData.initialMode = "";
-  appData.variant = "normal";
-  appData.firstProtocolVersion = PROTOVER;
-  appData.secondProtocolVersion = PROTOVER;
-  appData.showButtonBar = TRUE;
-
-   /* [AS] New properties (see comments in header file) */
-  appData.firstScoreIsAbsolute = FALSE;
-  appData.secondScoreIsAbsolute = FALSE;
-  appData.saveExtendedInfoInPGN = FALSE;
-  appData.hideThinkingFromHuman = FALSE;
-  appData.liteBackTextureFile = "";
-  appData.liteBackTextureMode = BACK_TEXTURE_MODE_PLAIN;
-  appData.darkBackTextureFile = "";
-  appData.darkBackTextureMode = BACK_TEXTURE_MODE_PLAIN;
-  appData.renderPiecesWithFont = "";
-  appData.fontToPieceTable = "";
-  appData.fontBackColorWhite = 0;
-  appData.fontForeColorWhite = 0;
-  appData.fontBackColorBlack = 0;
-  appData.fontForeColorBlack = 0;
-  appData.fontPieceSize = 80;
-  appData.overrideLineGap = 1;
-  appData.adjudicateLossThreshold = 0;
-  appData.delayBeforeQuit = 0;
-  appData.delayAfterQuit = 0;
-  appData.nameOfDebugFile = "winboard.debug";
-  appData.pgnEventHeader = "Computer Chess Game";
-  appData.defaultFrcPosition = -1;
-  appData.gameListTags = GLT_DEFAULT_TAGS;
-  appData.saveOutOfBookInfo = TRUE;
-  appData.showEvalInMoveHistory = TRUE;
-  appData.evalHistColorWhite = ParseColorName( "#FFFFB0" );
-  appData.evalHistColorBlack = ParseColorName( "#AD5D3D" );
-  appData.highlightMoveWithArrow = FALSE;
-  appData.highlightArrowColor = ParseColorName( "#FFFF80" );
-  appData.useStickyWindows = TRUE;
-  appData.adjudicateDrawMoves = 0;
-  appData.autoDisplayComment = TRUE;
-  appData.autoDisplayTags = TRUE;
-  appData.firstIsUCI = FALSE;
-  appData.secondIsUCI = FALSE;
-  appData.firstHasOwnBookUCI = TRUE;
-  appData.secondHasOwnBookUCI = TRUE;
-  appData.polyglotDir = "";
-  appData.usePolyglotBook = FALSE;
-  appData.polyglotBook = "";
-  appData.defaultHashSize = 64;
-  appData.defaultCacheSizeEGTB = 4;
-  appData.defaultPathEGTB = "c:\\egtb";
-  appData.firstOptions = "";
-  appData.secondOptions = "";
-
-  InitWindowPlacement( &wpGameList );
-  InitWindowPlacement( &wpMoveHistory );
-  InitWindowPlacement( &wpEvalGraph );
-  InitWindowPlacement( &wpEngineOutput );
-  InitWindowPlacement( &wpConsole );
-
-  /* [HGM] User-selectable board size, adjudication control, miscellaneous */
-  appData.NrFiles      = -1;
-  appData.NrRanks      = -1;
-  appData.holdingsSize = -1;
-  appData.testClaims   = FALSE;
-  appData.checkMates   = FALSE;
-  appData.materialDraws= FALSE;
-  appData.trivialDraws = FALSE;
-  appData.ruleMoves    = 51;
-  appData.drawRepeats  = 6;
-  appData.matchPause   = 10000;
-  appData.alphaRank    = FALSE;
-  appData.allWhite     = FALSE;
-  appData.upsideDown   = FALSE;
-  appData.serverPause  = 15;
-  appData.serverMovesName   = NULL;
-  appData.suppressLoadMoves = FALSE;
-  appData.firstTimeOdds  = 1;
-  appData.secondTimeOdds = 1;
-  appData.firstAccumulateTC  = 1; // combine previous and current sessions
-  appData.secondAccumulateTC = 1;
-  appData.firstNPS  = -1; // [HGM] nps: use wall-clock time
-  appData.secondNPS = -1;
-  appData.engineComments = 1;
-  appData.smpCores = 1; // [HGM] SMP: max nr of cores
-  appData.egtFormats = "";
-
-#ifdef ZIPPY
-  appData.zippyTalk = ZIPPY_TALK;
-  appData.zippyPlay = ZIPPY_PLAY;
-  appData.zippyLines = ZIPPY_LINES;
-  appData.zippyPinhead = ZIPPY_PINHEAD;
-  appData.zippyPassword = ZIPPY_PASSWORD;
-  appData.zippyPassword2 = ZIPPY_PASSWORD2;
-  appData.zippyWrongPassword = ZIPPY_WRONG_PASSWORD;
-  appData.zippyAcceptOnly = ZIPPY_ACCEPT_ONLY;
-  appData.zippyUseI = ZIPPY_USE_I;
-  appData.zippyBughouse = ZIPPY_BUGHOUSE;
-  appData.zippyNoplayCrafty = ZIPPY_NOPLAY_CRAFTY;
-  appData.zippyGameEnd = ZIPPY_GAME_END;
-  appData.zippyGameStart = ZIPPY_GAME_START;
-  appData.zippyAdjourn = ZIPPY_ADJOURN;
-  appData.zippyAbort = ZIPPY_ABORT;
-  appData.zippyVariants = ZIPPY_VARIANTS;
-  appData.zippyMaxGames = ZIPPY_MAX_GAMES;
-  appData.zippyReplayTimeout = ZIPPY_REPLAY_TIMEOUT;
-#endif
-
-  /* Point font array elements to structures and
-     parse default font names */
-  for (i=0; i<NUM_FONTS; i++) {
-    for (j=0; j<NUM_SIZES; j++) {
-      font[j][i] = &fontRec[j][i];
-      ParseFontName(font[j][i]->def, &font[j][i]->mfp);
-    }
-  }
-  
-  /* Parse default settings file if any */
-  if (ParseSettingsFile(settingsFileName, buf)) {
-    settingsFileName = strdup(buf);
-  }
-
-  /* Parse command line */
-  ParseArgs(StringGet, &lpCmdLine);
-
-  /* [HGM] make sure board size is acceptable */
-  if(appData.NrFiles > BOARD_SIZE ||
-     appData.NrRanks > BOARD_SIZE   )
-      DisplayFatalError("Recompile with BOARD_SIZE > 12, to support this size", 0, 2);
-
-  /* [HGM] After parsing the options from the .ini file, and overruling them
-   * with options from the command line, we now make an even higher priority
-   * overrule by WB options attached to the engine command line. This so that
-   * tournament managers can use WB options (such as /timeOdds) that follow
-   * the engines.
-   */
-  if(appData.firstChessProgram != NULL) {
-      char *p = StrStr(appData.firstChessProgram, "WBopt");
-      static char *f = "first";
-      char buf[MSG_SIZ], *q = buf;
-      if(p != NULL) { // engine command line contains WinBoard options
-          sprintf(buf, p+6, f, f, f, f, f, f, f, f, f, f); // replace %s in them by "first"
-          ParseArgs(StringGet, &q);
-          p[-1] = 0; // cut them offengine command line
-      }
-  }
-  // now do same for second chess program
-  if(appData.secondChessProgram != NULL) {
-      char *p = StrStr(appData.secondChessProgram, "WBopt");
-      static char *s = "second";
-      char buf[MSG_SIZ], *q = buf;
-      if(p != NULL) { // engine command line contains WinBoard options
-          sprintf(buf, p+6, s, s, s, s, s, s, s, s, s, s); // replace %s in them by "first"
-          ParseArgs(StringGet, &q);
-          p[-1] = 0; // cut them offengine command line
-      }
-  }
-
-
-  /* Propagate options that affect others */
-  if (appData.matchMode || appData.matchGames) chessProgram = TRUE;
-  if (appData.icsActive || appData.noChessProgram) {
-     chessProgram = FALSE;  /* not local chess program mode */
-  }
-
-  /* Open startup dialog if needed */
-  if ((!appData.noChessProgram && !chessProgram && !appData.icsActive) ||
-      (appData.icsActive && *appData.icsHost == NULLCHAR) ||
-      (chessProgram && (*appData.firstChessProgram == NULLCHAR ||
-                        *appData.secondChessProgram == NULLCHAR))) {
-    FARPROC lpProc;
-    
-    lpProc = MakeProcInstance((FARPROC)StartupDialog, hInst);
-    DialogBox(hInst, MAKEINTRESOURCE(DLG_Startup), NULL, (DLGPROC)lpProc);
-    FreeProcInstance(lpProc);
-  }
-
-  /* Make sure save files land in the right (?) directory */
-  if (GetFullPathName(appData.saveGameFile, MSG_SIZ, buf, &dummy)) {
-    appData.saveGameFile = strdup(buf);
-  }
-  if (GetFullPathName(appData.savePositionFile, MSG_SIZ, buf, &dummy)) {
-    appData.savePositionFile = strdup(buf);
-  }
-
-  /* Finish initialization for fonts and sounds */
-  for (i=0; i<NUM_FONTS; i++) {
-    for (j=0; j<NUM_SIZES; j++) {
-      CreateFontInMF(font[j][i]);
-    }
-  }
-  /* xboard, and older WinBoards, controlled the move sound with the
-     appData.ringBellAfterMoves option.  In the current WinBoard, we
-     always turn the option on (so that the backend will call us),
-     then let the user turn the sound off by setting it to silence if
-     desired.  To accommodate old winboard.ini files saved by old
-     versions of WinBoard, we also turn off the sound if the option
-     was initially set to false. */
-  if (!appData.ringBellAfterMoves) {
-    sounds[(int)SoundMove].name = strdup("");
-    appData.ringBellAfterMoves = TRUE;
-  }
-  GetCurrentDirectory(MSG_SIZ, currDir);
-  SetCurrentDirectory(installDir);
-  LoadAllSounds();
-  SetCurrentDirectory(currDir);
-
-  p = icsTextMenuString;
-  if (p[0] == '@') {
-    FILE* f = fopen(p + 1, "r");
-    if (f == NULL) {
-      DisplayFatalError(p + 1, errno, 2);
-      return;
-    }
-    i = fread(buf, 1, sizeof(buf)-1, f);
-    fclose(f);
-    buf[i] = NULLCHAR;
-    p = buf;
-  }
-  ParseIcsTextMenu(strdup(p));
-}
-
-
-VOID
-InitMenuChecks()
-{
-  HMENU hmenu = GetMenu(hwndMain);
-
-  (void) EnableMenuItem(hmenu, IDM_CommPort,
-			MF_BYCOMMAND|((appData.icsActive &&
-				       *appData.icsCommPort != NULLCHAR) ?
-				      MF_ENABLED : MF_GRAYED));
-  (void) CheckMenuItem(hmenu, IDM_SaveSettingsOnExit,
-		       MF_BYCOMMAND|(saveSettingsOnExit ?
-				     MF_CHECKED : MF_UNCHECKED));
-}
-
-
-VOID
-SaveSettings(char* name)
-{
-  FILE *f;
-  ArgDescriptor *ad;
-  WINDOWPLACEMENT wp;
-  char dir[MSG_SIZ];
-
-  if (!hwndMain) return;
-
-  GetCurrentDirectory(MSG_SIZ, dir);
-  SetCurrentDirectory(installDir);
-  f = fopen(name, "w");
-  SetCurrentDirectory(dir);
-  if (f == NULL) {
-    DisplayError(name, errno);
-    return;
-  }
-  fprintf(f, ";\n");
-  fprintf(f, "; %s Save Settings file\n", PACKAGE_STRING);
-  fprintf(f, ";\n");
-  fprintf(f, "; You can edit the values of options that are already set in this file,\n");
-  fprintf(f, "; but if you add other options, the next Save Settings will not save them.\n");
-  fprintf(f, "; Use a shortcut, an @indirection file, or a .bat file instead.\n");
-  fprintf(f, ";\n");
-
-  wp.length = sizeof(WINDOWPLACEMENT);
-  GetWindowPlacement(hwndMain, &wp);
-  boardX = wp.rcNormalPosition.left;
-  boardY = wp.rcNormalPosition.top;
-
-  if (hwndConsole) {
-    GetWindowPlacement(hwndConsole, &wp);
-    wpConsole.x = wp.rcNormalPosition.left;
-    wpConsole.y = wp.rcNormalPosition.top;
-    wpConsole.width = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    wpConsole.height = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  if (analysisDialog) {
-    GetWindowPlacement(analysisDialog, &wp);
-    analysisX = wp.rcNormalPosition.left;
-    analysisY = wp.rcNormalPosition.top;
-    analysisW = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    analysisH = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  if (commentDialog) {
-    GetWindowPlacement(commentDialog, &wp);
-    commentX = wp.rcNormalPosition.left;
-    commentY = wp.rcNormalPosition.top;
-    commentW = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    commentH = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  if (editTagsDialog) {
-    GetWindowPlacement(editTagsDialog, &wp);
-    editTagsX = wp.rcNormalPosition.left;
-    editTagsY = wp.rcNormalPosition.top;
-    editTagsW = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    editTagsH = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  if (gameListDialog) {
-    GetWindowPlacement(gameListDialog, &wp);
-    wpGameList.x = wp.rcNormalPosition.left;
-    wpGameList.y = wp.rcNormalPosition.top;
-    wpGameList.width = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    wpGameList.height = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  /* [AS] Move history */
-  wpMoveHistory.visible = MoveHistoryIsUp();
-  
-  if( moveHistoryDialog ) {
-    GetWindowPlacement(moveHistoryDialog, &wp);
-    wpMoveHistory.x = wp.rcNormalPosition.left;
-    wpMoveHistory.y = wp.rcNormalPosition.top;
-    wpMoveHistory.width = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    wpMoveHistory.height = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  /* [AS] Eval graph */
-  wpEvalGraph.visible = EvalGraphIsUp();
-
-  if( evalGraphDialog ) {
-    GetWindowPlacement(evalGraphDialog, &wp);
-    wpEvalGraph.x = wp.rcNormalPosition.left;
-    wpEvalGraph.y = wp.rcNormalPosition.top;
-    wpEvalGraph.width = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    wpEvalGraph.height = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  /* [AS] Engine output */
-  wpEngineOutput.visible = EngineOutputIsUp();
-
-  if( engineOutputDialog ) {
-    GetWindowPlacement(engineOutputDialog, &wp);
-    wpEngineOutput.x = wp.rcNormalPosition.left;
-    wpEngineOutput.y = wp.rcNormalPosition.top;
-    wpEngineOutput.width = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
-    wpEngineOutput.height = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
-  }
-
-  for (ad = argDescriptors; ad->argName != NULL; ad++) {
-    if (!ad->save) continue;
-    switch (ad->argType) {
-    case ArgString:
-      {
-	char *p = *(char **)ad->argLoc;
-	if ((strchr(p, '\\') || strchr(p, '\n')) && !strchr(p, '}')) {
-	  /* Quote multiline values or \-containing values
-	     with { } if possible */
-	  fprintf(f, "/%s={%s}\n", ad->argName, p);
-	} else {
-	  /* Else quote with " " */
-	  fprintf(f, "/%s=\"", ad->argName);
-	  while (*p) {
-	    if (*p == '\n') fprintf(f, "\n");
-	    else if (*p == '\r') fprintf(f, "\\r");
-	    else if (*p == '\t') fprintf(f, "\\t");
-	    else if (*p == '\b') fprintf(f, "\\b");
-	    else if (*p == '\f') fprintf(f, "\\f");
-	    else if (*p < ' ') fprintf(f, "\\%03o", *p);
-	    else if (*p == '\"') fprintf(f, "\\\"");
-	    else if (*p == '\\') fprintf(f, "\\\\");
-	    else putc(*p, f);
-	    p++;
-	  }
-	  fprintf(f, "\"\n");
-	}
-      }
-      break;
-    case ArgInt:
-    case ArgZ:
-      fprintf(f, "/%s=%d\n", ad->argName, *(int *)ad->argLoc);
-      break;
-    case ArgX:
-      fprintf(f, "/%s=%d\n", ad->argName, *(int *)ad->argLoc - boardX); // [HGM] placement: stor relative value
-      break;
-    case ArgY:
-      fprintf(f, "/%s=%d\n", ad->argName, *(int *)ad->argLoc - boardY);
-      break;
-    case ArgFloat:
-      fprintf(f, "/%s=%g\n", ad->argName, *(float *)ad->argLoc);
-      break;
-    case ArgBoolean:
-      fprintf(f, "/%s=%s\n", ad->argName, 
-	(*(Boolean *)ad->argLoc) ? "true" : "false");
-      break;
-    case ArgTrue:
-      if (*(Boolean *)ad->argLoc) fprintf(f, "/%s\n", ad->argName);
-      break;
-    case ArgFalse:
-      if (!*(Boolean *)ad->argLoc) fprintf(f, "/%s\n", ad->argName);
-      break;
-    case ArgColor:
-      {
-	COLORREF color = *(COLORREF *)ad->argLoc;
-	fprintf(f, "/%s=#%02lx%02lx%02lx\n", ad->argName, 
-	  color&0xff, (color>>8)&0xff, (color>>16)&0xff);
-      }
-      break;
-    case ArgAttribs:
-      {
-	MyTextAttribs* ta = &textAttribs[(ColorClass)ad->argLoc];
-	fprintf(f, "/%s=\"%s%s%s%s%s#%02lx%02lx%02lx\"\n", ad->argName,
-          (ta->effects & CFE_BOLD) ? "b" : "",
-          (ta->effects & CFE_ITALIC) ? "i" : "",
-          (ta->effects & CFE_UNDERLINE) ? "u" : "",
-          (ta->effects & CFE_STRIKEOUT) ? "s" : "",
-          (ta->effects) ? " " : "",
-	  ta->color&0xff, (ta->color >> 8)&0xff, (ta->color >> 16)&0xff);
-      }
-      break;
-    case ArgFilename:
-      if (strchr(*(char **)ad->argLoc, '\"')) {
-	fprintf(f, "/%s='%s'\n", ad->argName, *(char **)ad->argLoc);
-      } else {
-	fprintf(f, "/%s=\"%s\"\n", ad->argName, *(char **)ad->argLoc);
-      }
-      break;
-    case ArgBoardSize:
-      fprintf(f, "/%s=%s\n", ad->argName,
-	      sizeInfo[*(BoardSize *)ad->argLoc].name);
-      break;
-    case ArgFont:
-      {
-        int bs;
-	for (bs=0; bs<NUM_SIZES; bs++) {
-	  MyFontParams *mfp = &font[bs][(int) ad->argLoc]->mfp;
-          fprintf(f, "/size=%s ", sizeInfo[bs].name);
-	  fprintf(f, "/%s=\"%s:%g%s%s%s%s%s\"\n",
-	    ad->argName, mfp->faceName, mfp->pointSize,
-            mfp->bold || mfp->italic || mfp->underline || mfp->strikeout ? " " : "",
-	    mfp->bold ? "b" : "",
-	    mfp->italic ? "i" : "",
-	    mfp->underline ? "u" : "",
-	    mfp->strikeout ? "s" : "");
-	}
-      }
-      break;
-    case ArgCommSettings:
-      PrintCommSettings(f, ad->argName, (DCB *)ad->argLoc);
-    case ArgNone:
-    case ArgSettingsFilename: ;
-    }
-  }
-  fclose(f);
-}
-
-
-
-/*---------------------------------------------------------------------------*\
- *
- * GDI board drawing routines
- *
-\*---------------------------------------------------------------------------*/
-
-/* [AS] Draw square using background texture */
-static void DrawTile( int dx, int dy, int dw, int dh, HDC dst, HDC src, int mode, int sx, int sy )
-{
-    XFORM   x;
-
-    if( mode == 0 ) {
-        return; /* Should never happen! */
-    }
-
-    SetGraphicsMode( dst, GM_ADVANCED );
-
-    switch( mode ) {
-    case 1:
-        /* Identity */
-        break;
-    case 2:
-        /* X reflection */
-        x.eM11 = -1.0;
-        x.eM12 = 0;
-        x.eM21 = 0;
-        x.eM22 = 1.0;
-        x.eDx = (FLOAT) dw + dx - 1;
-        x.eDy = 0;
-        dx = 0;
-        SetWorldTransform( dst, &x );
-        break;
-    case 3:
-        /* Y reflection */
-        x.eM11 = 1.0;
-        x.eM12 = 0;
-        x.eM21 = 0;
-        x.eM22 = -1.0;
-        x.eDx = 0;
-        x.eDy = (FLOAT) dh + dy - 1;
-        dy = 0;
-        SetWorldTransform( dst, &x );
-        break;
-    case 4:
-        /* X/Y flip */
-        x.eM11 = 0;
-        x.eM12 = 1.0;
-        x.eM21 = 1.0;
-        x.eM22 = 0;
-        x.eDx = (FLOAT) dx;
-        x.eDy = (FLOAT) dy;
-        dx = 0;
-        dy = 0;
-        SetWorldTransform( dst, &x );
-        break;
-    }
-
-    BitBlt( dst, dx, dy, dw, dh, src, sx, sy, SRCCOPY );
-
-    x.eM11 = 1.0;
-    x.eM12 = 0;
-    x.eM21 = 0;
-    x.eM22 = 1.0;
-    x.eDx = 0;
-    x.eDy = 0;
-    SetWorldTransform( dst, &x );
-
-    ModifyWorldTransform( dst, 0, MWT_IDENTITY );
-}
-
-/* [AS] [HGM] Make room for more piece types, so all pieces can be different */
-enum {
-    PM_WP = (int) WhitePawn, 
-    PM_WN = (int) WhiteKnight, 
-    PM_WB = (int) WhiteBishop, 
-    PM_WR = (int) WhiteRook, 
-    PM_WQ = (int) WhiteQueen, 
-    PM_WF = (int) WhiteFerz, 
-    PM_WW = (int) WhiteWazir, 
-    PM_WE = (int) WhiteAlfil, 
-    PM_WM = (int) WhiteMan, 
-    PM_WO = (int) WhiteCannon, 
-    PM_WU = (int) WhiteUnicorn, 
-    PM_WH = (int) WhiteNightrider, 
-    PM_WA = (int) WhiteAngel, 
-    PM_WC = (int) WhiteMarshall, 
-    PM_WAB = (int) WhiteCardinal, 
-    PM_WD = (int) WhiteDragon, 
-    PM_WL = (int) WhiteLance, 
-    PM_WS = (int) WhiteCobra, 
-    PM_WV = (int) WhiteFalcon, 
-    PM_WSG = (int) WhiteSilver, 
-    PM_WG = (int) WhiteGrasshopper, 
-    PM_WK = (int) WhiteKing,
-    PM_BP = (int) BlackPawn, 
-    PM_BN = (int) BlackKnight, 
-    PM_BB = (int) BlackBishop, 
-    PM_BR = (int) BlackRook, 
-    PM_BQ = (int) BlackQueen, 
-    PM_BF = (int) BlackFerz, 
-    PM_BW = (int) BlackWazir, 
-    PM_BE = (int) BlackAlfil, 
-    PM_BM = (int) BlackMan,
-    PM_BO = (int) BlackCannon, 
-    PM_BU = (int) BlackUnicorn, 
-    PM_BH = (int) BlackNightrider, 
-    PM_BA = (int) BlackAngel, 
-    PM_BC = (int) BlackMarshall, 
-    PM_BG = (int) BlackGrasshopper, 
-    PM_BAB = (int) BlackCardinal,
-    PM_BD = (int) BlackDragon,
-    PM_BL = (int) BlackLance,
-    PM_BS = (int) BlackCobra,
-    PM_BV = (int) BlackFalcon,
-    PM_BSG = (int) BlackSilver,
-    PM_BK = (int) BlackKing
-};
-
-static HFONT hPieceFont = NULL;
-static HBITMAP hPieceMask[(int) EmptySquare];
-static HBITMAP hPieceFace[(int) EmptySquare];
-static int fontBitmapSquareSize = 0;
-static char pieceToFontChar[(int) EmptySquare] =
-                              { 'p', 'n', 'b', 'r', 'q', 
-                      'n', 'b', 'p', 'n', 'b', 'r', 'b', 'r', 'q', 'k',
-                      'k', 'o', 'm', 'v', 't', 'w', 
-                      'v', 't', 'o', 'm', 'v', 't', 'v', 't', 'w', 'l',
-                                                              'l' };
-
-extern BOOL SetCharTable( char *table, const char * map );
-/* [HGM] moved to backend.c */
-
-static void SetPieceBackground( HDC hdc, COLORREF color, int mode )
-{
-    HBRUSH hbrush;
-    BYTE r1 = GetRValue( color );
-    BYTE g1 = GetGValue( color );
-    BYTE b1 = GetBValue( color );
-    BYTE r2 = r1 / 2;
-    BYTE g2 = g1 / 2;
-    BYTE b2 = b1 / 2;
-    RECT rc;
-
-    /* Create a uniform background first */
-    hbrush = CreateSolidBrush( color );
-    SetRect( &rc, 0, 0, squareSize, squareSize );
-    FillRect( hdc, &rc, hbrush );
-    DeleteObject( hbrush );
-    
-    if( mode == 1 ) {
-        /* Vertical gradient, good for pawn, knight and rook, less for queen and king */
-        int steps = squareSize / 2;
-        int i;
-
-        for( i=0; i<steps; i++ ) {
-            BYTE r = r1 - (r1-r2) * i / steps;
-            BYTE g = g1 - (g1-g2) * i / steps;
-            BYTE b = b1 - (b1-b2) * i / steps;
-
-            hbrush = CreateSolidBrush( RGB(r,g,b) );
-            SetRect( &rc, i + squareSize - steps, 0, i + squareSize - steps + 1, squareSize );
-            FillRect( hdc, &rc, hbrush );
-            DeleteObject(hbrush);
-        }
-    }
-    else if( mode == 2 ) {
-        /* Diagonal gradient, good more or less for every piece */
-        POINT triangle[3];
-        HPEN hpen = SelectObject( hdc, GetStockObject(NULL_PEN) );
-        HBRUSH hbrush_old;
-        int steps = squareSize;
-        int i;
-
-        triangle[0].x = squareSize - steps;
-        triangle[0].y = squareSize;
-        triangle[1].x = squareSize;
-        triangle[1].y = squareSize;
-        triangle[2].x = squareSize;
-        triangle[2].y = squareSize - steps;
-
-        for( i=0; i<steps; i++ ) {
-            BYTE r = r1 - (r1-r2) * i / steps;
-            BYTE g = g1 - (g1-g2) * i / steps;
-            BYTE b = b1 - (b1-b2) * i / steps;
-
-            hbrush = CreateSolidBrush( RGB(r,g,b) );
-            hbrush_old = SelectObject( hdc, hbrush );
-            Polygon( hdc, triangle, 3 );
-            SelectObject( hdc, hbrush_old );
-            DeleteObject(hbrush);
-            triangle[0].x++;
-            triangle[2].y++;
-        }
-
-        SelectObject( hdc, hpen );
-    }
-}
-
-/*
-    [AS] The method I use to create the bitmaps it a bit tricky, but it
-    seems to work ok. The main problem here is to find the "inside" of a chess
-    piece: follow the steps as explained below.
-*/
-static void CreatePieceMaskFromFont( HDC hdc_window, HDC hdc, int index )
-{
-    HBITMAP hbm;
-    HBITMAP hbm_old;
-    COLORREF chroma = RGB(0xFF,0x00,0xFF);
-    RECT rc;
-    SIZE sz;
-    POINT pt;
-    int backColor = whitePieceColor; 
-    int foreColor = blackPieceColor;
-    
-    if( index < (int)BlackPawn && appData.fontBackColorWhite != appData.fontForeColorWhite ) {
-        backColor = appData.fontBackColorWhite;
-        foreColor = appData.fontForeColorWhite;
-    }
-    else if( index >= (int)BlackPawn && appData.fontBackColorBlack != appData.fontForeColorBlack ) {
-        backColor = appData.fontBackColorBlack;
-        foreColor = appData.fontForeColorBlack;
-    }
-
-    /* Mask */
-    hbm = CreateCompatibleBitmap( hdc_window, squareSize, squareSize );
-
-    hbm_old = SelectObject( hdc, hbm );
-
-    rc.left = 0;
-    rc.top = 0;
-    rc.right = squareSize;
-    rc.bottom = squareSize;
-
-    /* Step 1: background is now black */
-    FillRect( hdc, &rc, GetStockObject(BLACK_BRUSH) );
-
-    GetTextExtentPoint32( hdc, &pieceToFontChar[index], 1, &sz );
-
-    pt.x = (squareSize - sz.cx) / 2;
-    pt.y = (squareSize - sz.cy) / 2;
-
-    SetBkMode( hdc, TRANSPARENT );
-    SetTextColor( hdc, chroma );
-    /* Step 2: the piece has been drawn in purple, there are now black and purple in this bitmap */
-    TextOut( hdc, pt.x, pt.y, &pieceToFontChar[appData.allWhite && index >= (int)BlackPawn ? index - (int)BlackPawn : index], 1 );
-
-    SelectObject( hdc, GetStockObject(WHITE_BRUSH) );
-    /* Step 3: the area outside the piece is filled with white */
-//    FloodFill( hdc, 0, 0, chroma );
-    ExtFloodFill( hdc, 0, 0, 0, FLOODFILLSURFACE );
-    ExtFloodFill( hdc, 0, squareSize-1, 0, FLOODFILLSURFACE ); // [HGM] fill from all 4 corners, for if piece too big
-    ExtFloodFill( hdc, squareSize-1, 0, 0, FLOODFILLSURFACE );
-    ExtFloodFill( hdc, squareSize-1, squareSize-1, 0, FLOODFILLSURFACE );
-    SelectObject( hdc, GetStockObject(BLACK_BRUSH) );
-    /* 
-        Step 4: this is the tricky part, the area inside the piece is filled with black,
-        but if the start point is not inside the piece we're lost!
-        There should be a better way to do this... if we could create a region or path
-        from the fill operation we would be fine for example.
-    */
-//    FloodFill( hdc, squareSize / 2, squareSize / 2, RGB(0xFF,0xFF,0xFF) );
-    ExtFloodFill( hdc, squareSize / 2, squareSize / 2, RGB(0xFF,0xFF,0xFF), FLOODFILLBORDER );
-
-    {   /* [HGM] shave off edges of mask, in an attempt to correct for the fact that FloodFill does not work correctly under Win XP */
-        HDC dc2 = CreateCompatibleDC( hdc_window );
-        HBITMAP bm2 = CreateCompatibleBitmap( hdc_window, squareSize, squareSize );
-
-        SelectObject( dc2, bm2 );
-        BitBlt( dc2, 0, 0, squareSize, squareSize, hdc, 0, 0, SRCCOPY ); // make copy
-        BitBlt( hdc, 0, 1, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT );
-        BitBlt( hdc, 2, 1, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT );
-        BitBlt( hdc, 1, 0, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT );
-        BitBlt( hdc, 1, 2, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT );
-
-        DeleteDC( dc2 );
-        DeleteObject( bm2 );
-    }
-
-    SetTextColor( hdc, 0 );
-    /* 
-        Step 5: some fonts have "disconnected" areas that are skipped by the fill:
-        draw the piece again in black for safety.
-    */
-    TextOut( hdc, pt.x, pt.y, &pieceToFontChar[appData.allWhite && index >= (int)BlackPawn ? index - (int)BlackPawn : index], 1 );
-
-    SelectObject( hdc, hbm_old );
-
-    if( hPieceMask[index] != NULL ) {
-        DeleteObject( hPieceMask[index] );
-    }
-
-    hPieceMask[index] = hbm;
-
-    /* Face */
-    hbm = CreateCompatibleBitmap( hdc_window, squareSize, squareSize );
-
-    SelectObject( hdc, hbm );
-
-    {
-        HDC dc1 = CreateCompatibleDC( hdc_window );
-        HDC dc2 = CreateCompatibleDC( hdc_window );
-        HBITMAP bm2 = CreateCompatibleBitmap( hdc_window, squareSize, squareSize );
-
-        SelectObject( dc1, hPieceMask[index] );
-        SelectObject( dc2, bm2 );
-        FillRect( dc2, &rc, GetStockObject(WHITE_BRUSH) );
-        BitBlt( dc2, 0, 0, squareSize, squareSize, dc1, 0, 0, SRCINVERT );
-        
-        /* 
-            Now dc2 contains the inverse of the piece mask, i.e. a mask that preserves
-            the piece background and deletes (makes transparent) the rest.
-            Thanks to that mask, we are free to paint the background with the greates
-            freedom, as we'll be able to mask off the unwanted parts when finished.
-            We use this, to make gradients and give the pieces a "roundish" look.
-        */
-        SetPieceBackground( hdc, backColor, 2 );
-        BitBlt( hdc, 0, 0, squareSize, squareSize, dc2, 0, 0, SRCAND );
-
-        DeleteDC( dc2 );
-        DeleteDC( dc1 );
-        DeleteObject( bm2 );
-    }
-
-    SetTextColor( hdc, foreColor );
-    TextOut( hdc, pt.x, pt.y, &pieceToFontChar[appData.allWhite && index >= (int)BlackPawn ? index - (int)BlackPawn : index], 1 );
-
-    SelectObject( hdc, hbm_old );
-
-    if( hPieceFace[index] != NULL ) {
-        DeleteObject( hPieceFace[index] );
-    }
-
-    hPieceFace[index] = hbm;
-}
-
-static int TranslatePieceToFontPiece( int piece )
-{
-    switch( piece ) {
-    case BlackPawn:
-        return PM_BP;
-    case BlackKnight:
-        return PM_BN;
-    case BlackBishop:
-        return PM_BB;
-    case BlackRook:
-        return PM_BR;
-    case BlackQueen:
-        return PM_BQ;
-    case BlackKing:
-        return PM_BK;
-    case WhitePawn:
-        return PM_WP;
-    case WhiteKnight:
-        return PM_WN;
-    case WhiteBishop:
-        return PM_WB;
-    case WhiteRook:
-        return PM_WR;
-    case WhiteQueen:
-        return PM_WQ;
-    case WhiteKing:
-        return PM_WK;
-
-    case BlackAngel:
-        return PM_BA;
-    case BlackMarshall:
-        return PM_BC;
-    case BlackFerz:
-        return PM_BF;
-    case BlackNightrider:
-        return PM_BH;
-    case BlackAlfil:
-        return PM_BE;
-    case BlackWazir:
-        return PM_BW;
-    case BlackUnicorn:
-        return PM_BU;
-    case BlackCannon:
-        return PM_BO;
-    case BlackGrasshopper:
-        return PM_BG;
-    case BlackMan:
-        return PM_BM;
-    case BlackSilver:
-        return PM_BSG;
-    case BlackLance:
-        return PM_BL;
-    case BlackFalcon:
-        return PM_BV;
-    case BlackCobra:
-        return PM_BS;
-    case BlackCardinal:
-        return PM_BAB;
-    case BlackDragon:
-        return PM_BD;
-
-    case WhiteAngel:
-        return PM_WA;
-    case WhiteMarshall:
-        return PM_WC;
-    case WhiteFerz:
-        return PM_WF;
-    case WhiteNightrider:
-        return PM_WH;
-    case WhiteAlfil:
-        return PM_WE;
-    case WhiteWazir:
-        return PM_WW;
-    case WhiteUnicorn:
-        return PM_WU;
-    case WhiteCannon:
-        return PM_WO;
-    case WhiteGrasshopper:
-        return PM_WG;
-    case WhiteMan:
-        return PM_WM;
-    case WhiteSilver:
-        return PM_WSG;
-    case WhiteLance:
-        return PM_WL;
-    case WhiteFalcon:
-        return PM_WV;
-    case WhiteCobra:
-        return PM_WS;
-    case WhiteCardinal:
-        return PM_WAB;
-    case WhiteDragon:
-        return PM_WD;
-    }
-
-    return 0;
-}
-
-void CreatePiecesFromFont()
-{
-    LOGFONT lf;
-    HDC hdc_window = NULL;
-    HDC hdc = NULL;
-    HFONT hfont_old;
-    int fontHeight;
-    int i;
-
-    if( fontBitmapSquareSize < 0 ) {
-        /* Something went seriously wrong in the past: do not try to recreate fonts! */
-        return;
-    }
-
-    if( appData.renderPiecesWithFont == NULL || appData.renderPiecesWithFont[0] == NULLCHAR || appData.renderPiecesWithFont[0] == '*' ) {
-        fontBitmapSquareSize = -1;
-        return;
-    }
-
-    if( fontBitmapSquareSize != squareSize ) {
-        hdc_window = GetDC( hwndMain );
-        hdc = CreateCompatibleDC( hdc_window );
-
-        if( hPieceFont != NULL ) {
-            DeleteObject( hPieceFont );
-        }
-        else {
-            for( i=0; i<=(int)BlackKing; i++ ) {
-                hPieceMask[i] = NULL;
-                hPieceFace[i] = NULL;
-            }
-        }
-
-        fontHeight = 75;
-
-        if( appData.fontPieceSize >= 50 && appData.fontPieceSize <= 150 ) {
-            fontHeight = appData.fontPieceSize;
-        }
-
-        fontHeight = (fontHeight * squareSize) / 100;
-
-        lf.lfHeight = -MulDiv( fontHeight, GetDeviceCaps(hdc, LOGPIXELSY), 72 );
-        lf.lfWidth = 0;
-        lf.lfEscapement = 0;
-        lf.lfOrientation = 0;
-        lf.lfWeight = FW_NORMAL;
-        lf.lfItalic = 0;
-        lf.lfUnderline = 0;
-        lf.lfStrikeOut = 0;
-        lf.lfCharSet = DEFAULT_CHARSET;
-        lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
-        lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
-        lf.lfQuality = PROOF_QUALITY;
-        lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
-        strncpy( lf.lfFaceName, appData.renderPiecesWithFont, sizeof(lf.lfFaceName) );
-        lf.lfFaceName[ sizeof(lf.lfFaceName) - 1 ] = '\0';
-
-        hPieceFont = CreateFontIndirect( &lf );
-
-        if( hPieceFont == NULL ) {
-            fontBitmapSquareSize = -2;
-        }
-        else {
-            /* Setup font-to-piece character table */
-            if( ! SetCharTable(pieceToFontChar, appData.fontToPieceTable) ) {
-                /* No (or wrong) global settings, try to detect the font */
-                if( strstr(lf.lfFaceName,"Alpha") != NULL ) {
-                    /* Alpha */
-                    SetCharTable(pieceToFontChar, "phbrqkojntwl");
-                }
-                else if( strstr(lf.lfFaceName,"DiagramTT") != NULL ) {
-                    /* DiagramTT* family */
-                    SetCharTable(pieceToFontChar, "PNLRQKpnlrqk");
-                }
-                else if( strstr(lf.lfFaceName,"WinboardF") != NULL ) {
-                    /* Fairy symbols */
-                     SetCharTable(pieceToFontChar, "PNBRQFEACWMOHIJGDVSLUKpnbrqfeacwmohijgdvsluk");
-                }
-                else if( strstr(lf.lfFaceName,"GC2004D") != NULL ) {
-                    /* Good Companion (Some characters get warped as literal :-( */
-                    char s[] = "1cmWG0ñueOS¯®oYI23wgQU";
-                    s[0]=0xB9; s[1]=0xA9; s[6]=0xB1; s[11]=0xBB; s[12]=0xAB; s[17]=0xB3;
-                    SetCharTable(pieceToFontChar, s);
-                }
-                else {
-                    /* Cases, Condal, Leipzig, Lucena, Marroquin, Merida, Usual */
-                    SetCharTable(pieceToFontChar, "pnbrqkomvtwl");
-                }
-            }
-
-            /* Create bitmaps */
-            hfont_old = SelectObject( hdc, hPieceFont );
-#if 0
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WP );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WN );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WB );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WR );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WQ );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WK );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BP );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BN );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BB );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BR );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BQ );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BK );
-
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WA );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WC );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WF );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WH );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WE );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WW );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WU );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WO );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WG );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WM );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WSG );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WV );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WAB );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WD );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WL );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_WS );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BA );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BC );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BF );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BH );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BE );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BW );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BU );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BO );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BG );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BM );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BSG );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BV );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BAB );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BD );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BL );
-            CreatePieceMaskFromFont( hdc_window, hdc, PM_BS );
-#else
-	    for(i=(int)WhitePawn; i<(int)EmptySquare; i++) /* [HGM] made a loop for this */
-		if(PieceToChar((ChessSquare)i) != '.')     /* skip unused pieces         */
-		    CreatePieceMaskFromFont( hdc_window, hdc, i );
-#endif
-            SelectObject( hdc, hfont_old );
-
-            fontBitmapSquareSize = squareSize;
-        }
-    }
-
-    if( hdc != NULL ) {
-        DeleteDC( hdc );
-    }
-
-    if( hdc_window != NULL ) {
-        ReleaseDC( hwndMain, hdc_window );
-    }
-}
-
-HBITMAP
-DoLoadBitmap(HINSTANCE hinst, char *piece, int squareSize, char *suffix)
-{
-  char name[128];
-
-  sprintf(name, "%s%d%s", piece, squareSize, suffix);
-  if (gameInfo.event &&
-      strcmp(gameInfo.event, "Easter Egg Hunt") == 0 &&
-      strcmp(name, "k80s") == 0) {
-    strcpy(name, "tim");
-  }
-  return LoadBitmap(hinst, name);
-}
-
-
-/* Insert a color into the program's logical palette
-   structure.  This code assumes the given color is
-   the result of the RGB or PALETTERGB macro, and it
-   knows how those macros work (which is documented).
-*/
-VOID
-InsertInPalette(COLORREF color)
-{
-  LPPALETTEENTRY pe = &(pLogPal->palPalEntry[pLogPal->palNumEntries]);
-
-  if (pLogPal->palNumEntries++ >= PALETTESIZE) {
-    DisplayFatalError("Too many colors", 0, 1);
-    pLogPal->palNumEntries--;
-    return;
-  }
-
-  pe->peFlags = (char) 0;
-  pe->peRed = (char) (0xFF & color);
-  pe->peGreen = (char) (0xFF & (color >> 8));
-  pe->peBlue = (char) (0xFF & (color >> 16));
-  return;
-}
-
-
-VOID
-InitDrawingColors()
-{
-  if (pLogPal == NULL) {
-    /* Allocate enough memory for a logical palette with
-     * PALETTESIZE entries and set the size and version fields
-     * of the logical palette structure.
-     */
-    pLogPal = (NPLOGPALETTE)
-      LocalAlloc(LMEM_FIXED, (sizeof(LOGPALETTE) +
-			      (sizeof(PALETTEENTRY) * (PALETTESIZE))));
-    pLogPal->palVersion    = 0x300;
-  }
-  pLogPal->palNumEntries = 0;
-
-  InsertInPalette(lightSquareColor);
-  InsertInPalette(darkSquareColor);
-  InsertInPalette(whitePieceColor);
-  InsertInPalette(blackPieceColor);
-  InsertInPalette(highlightSquareColor);
-  InsertInPalette(premoveHighlightColor);
-
-  /*  create a logical color palette according the information
-   *  in the LOGPALETTE structure.
-   */
-  hPal = CreatePalette((LPLOGPALETTE) pLogPal);
-
-  lightSquareBrush = CreateSolidBrush(lightSquareColor);
-  blackSquareBrush = CreateSolidBrush(blackPieceColor);
-  darkSquareBrush = CreateSolidBrush(darkSquareColor);
-  whitePieceBrush = CreateSolidBrush(whitePieceColor);
-  blackPieceBrush = CreateSolidBrush(blackPieceColor);
-  iconBkgndBrush = CreateSolidBrush(GetSysColor(COLOR_BACKGROUND));
-  explodeBrush = CreateSolidBrush(highlightSquareColor); // [HGM] atomic
-  /* [AS] Force rendering of the font-based pieces */
-  if( fontBitmapSquareSize > 0 ) {
-    fontBitmapSquareSize = 0;
-  }
-}
-
-
-int
-BoardWidth(int boardSize, int n)
-{ /* [HGM] argument n added to allow different width and height */
-  int lineGap = sizeInfo[boardSize].lineGap;
-
-  if( appData.overrideLineGap >= 0 && appData.overrideLineGap <= 5 ) {
-      lineGap = appData.overrideLineGap;
-  }
-
-  return (n + 1) * lineGap +
-          n * sizeInfo[boardSize].squareSize;
-}
-
-/* Respond to board resize by dragging edge */
-VOID
-ResizeBoard(int newSizeX, int newSizeY, int flags)
-{
-  BoardSize newSize = NUM_SIZES - 1;
-  static int recurse = 0;
-  if (IsIconic(hwndMain)) return;
-  if (recurse > 0) return;
-  recurse++;
-  while (newSize > 0) {
-	InitDrawingSizes(newSize+1000, 0); // [HGM] kludge to update sizeInfo without visible effects
-	if(newSizeX >= sizeInfo[newSize].cliWidth &&
-	   newSizeY >= sizeInfo[newSize].cliHeight) break;
-    newSize--;
-  } 
-  boardSize = newSize;
-  InitDrawingSizes(boardSize, flags);
-  recurse--;
-}
-
-
-
-VOID
-InitDrawingSizes(BoardSize boardSize, int flags)
-{
-  int i, boardWidth, boardHeight; /* [HGM] height treated separately */
-  ChessSquare piece;
-  static int oldBoardSize = -1, oldTinyLayout = 0;
-  HDC hdc;
-  SIZE clockSize, messageSize;
-  HFONT oldFont;
-  char buf[MSG_SIZ];
-  char *str;
-  HMENU hmenu = GetMenu(hwndMain);
-  RECT crect, wrect, oldRect;
-  int offby;
-  LOGBRUSH logbrush;
-
-  int suppressVisibleEffects = 0; // [HGM] kludge to request updating sizeInfo only
-  if((int)boardSize >= 1000 ) { boardSize -= 1000; suppressVisibleEffects = 1; }
-
-  /* [HGM] call with -2 uses old size (for if nr of files, ranks changes) */
-  if(boardSize == (BoardSize)(-2) ) boardSize = oldBoardSize;
-
-  oldRect.left = boardX; //[HGM] placement: remember previous window params
-  oldRect.top = boardY;
-  oldRect.right = boardX + winWidth;
-  oldRect.bottom = boardY + winHeight;
-
-  tinyLayout = sizeInfo[boardSize].tinyLayout;
-  smallLayout = sizeInfo[boardSize].smallLayout;
-  squareSize = sizeInfo[boardSize].squareSize;
-  lineGap = sizeInfo[boardSize].lineGap;
-  minorSize = 0; /* [HGM] Kludge to see if demagnified pieces need to be shifted  */
-
-  if( appData.overrideLineGap >= 0 && appData.overrideLineGap <= 5 ) {
-      lineGap = appData.overrideLineGap;
-  }
-
-  if (tinyLayout != oldTinyLayout) {
-    long style = GetWindowLong(hwndMain, GWL_STYLE);
-    if (tinyLayout) {
-      style &= ~WS_SYSMENU;
-      InsertMenu(hmenu, IDM_Exit, MF_BYCOMMAND, IDM_Minimize,
-		 "&Minimize\tCtrl+F4");
-    } else {
-      style |= WS_SYSMENU;
-      RemoveMenu(hmenu, IDM_Minimize, MF_BYCOMMAND);
-    }
-    SetWindowLong(hwndMain, GWL_STYLE, style);
-
-    for (i=0; menuBarText[tinyLayout][i]; i++) {
-      ModifyMenu(hmenu, i, MF_STRING|MF_BYPOSITION|MF_POPUP, 
-	(UINT)GetSubMenu(hmenu, i), menuBarText[tinyLayout][i]);
-    }
-    DrawMenuBar(hwndMain);
-  }
-
-  boardWidth  = BoardWidth(boardSize, BOARD_WIDTH);
-  boardHeight = BoardWidth(boardSize, BOARD_HEIGHT);
-
-  /* Get text area sizes */
-  hdc = GetDC(hwndMain);
-  if (appData.clockMode) {
-    sprintf(buf, "White: %s", TimeString(23*60*60*1000L));
-  } else {
-    sprintf(buf, "White");
-  }
-  oldFont = SelectObject(hdc, font[boardSize][CLOCK_FONT]->hf);
-  GetTextExtentPoint(hdc, buf, strlen(buf), &clockSize);
-  SelectObject(hdc, font[boardSize][MESSAGE_FONT]->hf);
-  str = "We only care about the height here";
-  GetTextExtentPoint(hdc, str, strlen(str), &messageSize);
-  SelectObject(hdc, oldFont);
-  ReleaseDC(hwndMain, hdc);
-
-  /* Compute where everything goes */
-  if((first.programLogo || second.programLogo) && !tinyLayout) {
-        /* [HGM] logo: if either logo is on, reserve space for it */
-	logoHeight =  2*clockSize.cy;
-	leftLogoRect.left   = OUTER_MARGIN;
-	leftLogoRect.right  = leftLogoRect.left + 4*clockSize.cy;
-	leftLogoRect.top    = OUTER_MARGIN;
-	leftLogoRect.bottom = OUTER_MARGIN + logoHeight;
-
-	rightLogoRect.right  = OUTER_MARGIN + boardWidth;
-	rightLogoRect.left   = rightLogoRect.right - 4*clockSize.cy;
-	rightLogoRect.top    = OUTER_MARGIN;
-	rightLogoRect.bottom = OUTER_MARGIN + logoHeight;
-
-
-    whiteRect.left = leftLogoRect.right;
-    whiteRect.right = OUTER_MARGIN + boardWidth/2 - INNER_MARGIN/2;
-    whiteRect.top = OUTER_MARGIN;
-    whiteRect.bottom = whiteRect.top + logoHeight;
-
-    blackRect.right = rightLogoRect.left;
-    blackRect.left = whiteRect.right + INNER_MARGIN;
-    blackRect.top = whiteRect.top;
-    blackRect.bottom = whiteRect.bottom;
-  } else {
-    whiteRect.left = OUTER_MARGIN;
-    whiteRect.right = whiteRect.left + boardWidth/2 - INNER_MARGIN/2;
-    whiteRect.top = OUTER_MARGIN;
-    whiteRect.bottom = whiteRect.top + clockSize.cy;
-
-    blackRect.left = whiteRect.right + INNER_MARGIN;
-    blackRect.right = blackRect.left + boardWidth/2 - 1;
-    blackRect.top = whiteRect.top;
-    blackRect.bottom = whiteRect.bottom;
-  }
-
-  messageRect.left = OUTER_MARGIN + MESSAGE_LINE_LEFTMARGIN;
-  if (appData.showButtonBar) {
-    messageRect.right = OUTER_MARGIN + boardWidth         // [HGM] logo: expressed independent of clock placement
-      - N_BUTTONS*BUTTON_WIDTH - MESSAGE_LINE_LEFTMARGIN;
-  } else {
-    messageRect.right = OUTER_MARGIN + boardWidth;
-  }
-  messageRect.top = whiteRect.bottom + INNER_MARGIN;
-  messageRect.bottom = messageRect.top + messageSize.cy;
-
-  boardRect.left = OUTER_MARGIN;
-  boardRect.right = boardRect.left + boardWidth;
-  boardRect.top = messageRect.bottom + INNER_MARGIN;
-  boardRect.bottom = boardRect.top + boardHeight;
-
-  sizeInfo[boardSize].cliWidth = boardRect.right + OUTER_MARGIN;
-  sizeInfo[boardSize].cliHeight = boardRect.bottom + OUTER_MARGIN;
-  oldBoardSize = boardSize;
-  oldTinyLayout = tinyLayout;
-  winW = 2 * GetSystemMetrics(SM_CXFRAME) + boardRect.right + OUTER_MARGIN;
-  winH = 2 * GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYMENU) +
-    GetSystemMetrics(SM_CYCAPTION) + boardRect.bottom + OUTER_MARGIN;
-  if(suppressVisibleEffects) return; // [HGM] when called for filling sizeInfo only
-  winWidth = winW;  // [HGM] placement: set through temporary which can used by initial sizing choice
-  winHeight = winH; //       without disturbing window attachments
-  GetWindowRect(hwndMain, &wrect);
-  SetWindowPos(hwndMain, NULL, 0, 0, winWidth, winHeight,
-	       SWP_NOCOPYBITS|SWP_NOZORDER|SWP_NOMOVE);
-
-  // [HGM] placement: let attached windows follow size change.
-  ReattachAfterSize( &oldRect, winWidth, winHeight, moveHistoryDialog, &wpMoveHistory );
-  ReattachAfterSize( &oldRect, winWidth, winHeight, evalGraphDialog, &wpEvalGraph );
-  ReattachAfterSize( &oldRect, winWidth, winHeight, engineOutputDialog, &wpEngineOutput );
-  ReattachAfterSize( &oldRect, winWidth, winHeight, gameListDialog, &wpGameList );
-  ReattachAfterSize( &oldRect, winWidth, winHeight, hwndConsole, &wpConsole );
-
-  /* compensate if menu bar wrapped */
-  GetClientRect(hwndMain, &crect);
-  offby = boardRect.bottom + OUTER_MARGIN - crect.bottom;
-  winHeight += offby;
-  switch (flags) {
-  case WMSZ_TOPLEFT:
-    SetWindowPos(hwndMain, NULL, 
-                 wrect.right - winWidth, wrect.bottom - winHeight, 
-                 winWidth, winHeight, SWP_NOCOPYBITS|SWP_NOZORDER);
-    break;
-
-  case WMSZ_TOPRIGHT:
-  case WMSZ_TOP:
-    SetWindowPos(hwndMain, NULL, 
-                 wrect.left, wrect.bottom - winHeight, 
-                 winWidth, winHeight, SWP_NOCOPYBITS|SWP_NOZORDER);
-    break;
-
-  case WMSZ_BOTTOMLEFT:
-  case WMSZ_LEFT:
-    SetWindowPos(hwndMain, NULL, 
-                 wrect.right - winWidth, wrect.top, 
-                 winWidth, winHeight, SWP_NOCOPYBITS|SWP_NOZORDER);
-    break;
-
-  case WMSZ_BOTTOMRIGHT:
-  case WMSZ_BOTTOM:
-  case WMSZ_RIGHT:
-  default:
-    SetWindowPos(hwndMain, NULL, 0, 0, winWidth, winHeight,
-               SWP_NOCOPYBITS|SWP_NOZORDER|SWP_NOMOVE);
-    break;
-  }
-
-  hwndPause = NULL;
-  for (i = 0; i < N_BUTTONS; i++) {
-    if (buttonDesc[i].hwnd != NULL) {
-      DestroyWindow(buttonDesc[i].hwnd);
-      buttonDesc[i].hwnd = NULL;
-    }
-    if (appData.showButtonBar) {
-      buttonDesc[i].hwnd =
-	CreateWindow("BUTTON", buttonDesc[i].label,
-		     WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
-		     boardRect.right - BUTTON_WIDTH*(N_BUTTONS-i),
-		     messageRect.top, BUTTON_WIDTH, messageSize.cy, hwndMain,
-		     (HMENU) buttonDesc[i].id,
-		     (HINSTANCE) GetWindowLong(hwndMain, GWL_HINSTANCE), NULL);
-      if (tinyLayout) {
-	SendMessage(buttonDesc[i].hwnd, WM_SETFONT, 
-		    (WPARAM)font[boardSize][MESSAGE_FONT]->hf,
-		    MAKELPARAM(FALSE, 0));
-      }
-      if (buttonDesc[i].id == IDM_Pause)
-	hwndPause = buttonDesc[i].hwnd;
-      buttonDesc[i].wndproc = (WNDPROC)
-	SetWindowLong(buttonDesc[i].hwnd, GWL_WNDPROC, (LONG) ButtonProc);
-    }
-  }
-  if (gridPen != NULL) DeleteObject(gridPen);
-  if (highlightPen != NULL) DeleteObject(highlightPen);
-  if (premovePen != NULL) DeleteObject(premovePen);
-  if (lineGap != 0) {
-    logbrush.lbStyle = BS_SOLID;
-    logbrush.lbColor = RGB(0, 0, 0); /* grid pen color = black */
-    gridPen =
-      ExtCreatePen(PS_GEOMETRIC|PS_SOLID|PS_ENDCAP_FLAT|PS_JOIN_MITER,
-                   lineGap, &logbrush, 0, NULL);
-    logbrush.lbColor = highlightSquareColor;
-    highlightPen =
-      ExtCreatePen(PS_GEOMETRIC|PS_SOLID|PS_ENDCAP_FLAT|PS_JOIN_MITER,
-                   lineGap, &logbrush, 0, NULL);
-
-    logbrush.lbColor = premoveHighlightColor; 
-    premovePen =
-      ExtCreatePen(PS_GEOMETRIC|PS_SOLID|PS_ENDCAP_FLAT|PS_JOIN_MITER,
-                   lineGap, &logbrush, 0, NULL);
-
-    /* [HGM] Loop had to be split in part for vert. and hor. lines */
-    for (i = 0; i < BOARD_HEIGHT + 1; i++) {
-      gridEndpoints[i*2].x = boardRect.left + lineGap / 2;
-      gridEndpoints[i*2].y = gridEndpoints[i*2 + 1].y =
-	boardRect.top + lineGap / 2 + (i * (squareSize + lineGap));
-      gridEndpoints[i*2 + 1].x = boardRect.left + lineGap / 2 +
-        BOARD_WIDTH * (squareSize + lineGap);
-      gridVertexCounts[i*2] = gridVertexCounts[i*2 + 1] = 2;
-    }
-    for (i = 0; i < BOARD_WIDTH + 1; i++) {
-      gridEndpoints[i*2 + BOARD_HEIGHT*2 + 2].y = boardRect.top + lineGap / 2;
-      gridEndpoints[i*2 + BOARD_HEIGHT*2 + 2].x =
-        gridEndpoints[i*2 + 1 + BOARD_HEIGHT*2 + 2].x = boardRect.left +
-	lineGap / 2 + (i * (squareSize + lineGap));
-      gridEndpoints[i*2 + 1 + BOARD_HEIGHT*2 + 2].y =
-        boardRect.top + BOARD_HEIGHT * (squareSize + lineGap);
-      gridVertexCounts[i*2] = gridVertexCounts[i*2 + 1] = 2;
-    }
-  }
-
-  /* [HGM] Licensing requirement */
-#ifdef GOTHIC
-  if(gameInfo.variant == VariantGothic) GothicPopUp( GOTHIC, VariantGothic); else
-#endif
-#ifdef FALCON
-  if(gameInfo.variant == VariantFalcon) GothicPopUp( FALCON, VariantFalcon); else
-#endif
-  GothicPopUp( "", VariantNormal);
-
-
-/*  if (boardSize == oldBoardSize) return; [HGM] variant might have changed */
-
-  /* Load piece bitmaps for this board size */
-  for (i=0; i<=2; i++) {
-    for (piece = WhitePawn;
-         (int) piece < (int) BlackPawn;
-	 piece = (ChessSquare) ((int) piece + 1)) {
-      if (pieceBitmap[i][piece] != NULL)
-	DeleteObject(pieceBitmap[i][piece]);
-    }
-  }
-
-  fontBitmapSquareSize = 0; /* [HGM] render: make sure pieces will be recreated, as we might need others now */
-  // Orthodox Chess pieces
-  pieceBitmap[0][WhitePawn] = DoLoadBitmap(hInst, "p", squareSize, "s");
-  pieceBitmap[0][WhiteKnight] = DoLoadBitmap(hInst, "n", squareSize, "s");
-  pieceBitmap[0][WhiteBishop] = DoLoadBitmap(hInst, "b", squareSize, "s");
-  pieceBitmap[0][WhiteRook] = DoLoadBitmap(hInst, "r", squareSize, "s");
-  pieceBitmap[0][WhiteKing] = DoLoadBitmap(hInst, "k", squareSize, "s");
-  pieceBitmap[1][WhitePawn] = DoLoadBitmap(hInst, "p", squareSize, "o");
-  pieceBitmap[1][WhiteKnight] = DoLoadBitmap(hInst, "n", squareSize, "o");
-  pieceBitmap[1][WhiteBishop] = DoLoadBitmap(hInst, "b", squareSize, "o");
-  pieceBitmap[1][WhiteRook] = DoLoadBitmap(hInst, "r", squareSize, "o");
-  pieceBitmap[1][WhiteKing] = DoLoadBitmap(hInst, "k", squareSize, "o");
-  pieceBitmap[2][WhitePawn] = DoLoadBitmap(hInst, "p", squareSize, "w");
-  pieceBitmap[2][WhiteKnight] = DoLoadBitmap(hInst, "n", squareSize, "w");
-  pieceBitmap[2][WhiteBishop] = DoLoadBitmap(hInst, "b", squareSize, "w");
-  pieceBitmap[2][WhiteRook] = DoLoadBitmap(hInst, "r", squareSize, "w");
-  pieceBitmap[2][WhiteKing] = DoLoadBitmap(hInst, "k", squareSize, "w");
-  if( !strcmp(appData.variant, "shogi") && (squareSize==72 || squareSize==49)) {
-    // in Shogi, Hijack the unused Queen for Lance
-    pieceBitmap[0][WhiteQueen] = DoLoadBitmap(hInst, "l", squareSize, "s");
-    pieceBitmap[1][WhiteQueen] = DoLoadBitmap(hInst, "l", squareSize, "o");
-    pieceBitmap[2][WhiteQueen] = DoLoadBitmap(hInst, "l", squareSize, "w");
-  } else {
-    pieceBitmap[0][WhiteQueen] = DoLoadBitmap(hInst, "q", squareSize, "s");
-    pieceBitmap[1][WhiteQueen] = DoLoadBitmap(hInst, "q", squareSize, "o");
-    pieceBitmap[2][WhiteQueen] = DoLoadBitmap(hInst, "q", squareSize, "w");
-  }
-
-  if(squareSize <= 72 && squareSize >= 33) { 
-    /* A & C are available in most sizes now */
-    if(squareSize != 49 && squareSize != 72 && squareSize != 33) { // Vortex-like
-      pieceBitmap[0][WhiteAngel] = DoLoadBitmap(hInst, "a", squareSize, "s");
-      pieceBitmap[1][WhiteAngel] = DoLoadBitmap(hInst, "a", squareSize, "o");
-      pieceBitmap[2][WhiteAngel] = DoLoadBitmap(hInst, "a", squareSize, "w");
-      pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "s");
-      pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "o");
-      pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "w");
-      pieceBitmap[0][WhiteCobra] = DoLoadBitmap(hInst, "cv", squareSize, "s");
-      pieceBitmap[1][WhiteCobra] = DoLoadBitmap(hInst, "cv", squareSize, "o");
-      pieceBitmap[2][WhiteCobra] = DoLoadBitmap(hInst, "cv", squareSize, "w");
-      pieceBitmap[0][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "s");
-      pieceBitmap[1][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "o");
-      pieceBitmap[2][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "w");
-    } else { // Smirf-like
-      pieceBitmap[0][WhiteAngel] = DoLoadBitmap(hInst, "aa", squareSize, "s");
-      pieceBitmap[1][WhiteAngel] = DoLoadBitmap(hInst, "aa", squareSize, "o");
-      pieceBitmap[2][WhiteAngel] = DoLoadBitmap(hInst, "aa", squareSize, "w");
-    }
-    if(gameInfo.variant == VariantGothic) { // Vortex-like
-      pieceBitmap[0][WhiteMarshall] = DoLoadBitmap(hInst, "cv", squareSize, "s");
-      pieceBitmap[1][WhiteMarshall] = DoLoadBitmap(hInst, "cv", squareSize, "o");
-      pieceBitmap[2][WhiteMarshall] = DoLoadBitmap(hInst, "cv", squareSize, "w");
-    } else { // WinBoard standard
-      pieceBitmap[0][WhiteMarshall] = DoLoadBitmap(hInst, "c", squareSize, "s");
-      pieceBitmap[1][WhiteMarshall] = DoLoadBitmap(hInst, "c", squareSize, "o");
-      pieceBitmap[2][WhiteMarshall] = DoLoadBitmap(hInst, "c", squareSize, "w");
-    }
-  }
-
-
-  if(squareSize==72 || squareSize==49 || squareSize==33) { /* experiment with some home-made bitmaps */
-    pieceBitmap[0][WhiteFerz] = DoLoadBitmap(hInst, "f", squareSize, "s");
-    pieceBitmap[1][WhiteFerz] = DoLoadBitmap(hInst, "f", squareSize, "o");
-    pieceBitmap[2][WhiteFerz] = DoLoadBitmap(hInst, "f", squareSize, "w");
-    pieceBitmap[0][WhiteWazir] = DoLoadBitmap(hInst, "w", squareSize, "s");
-    pieceBitmap[1][WhiteWazir] = DoLoadBitmap(hInst, "w", squareSize, "o");
-    pieceBitmap[2][WhiteWazir] = DoLoadBitmap(hInst, "w", squareSize, "w");
-    pieceBitmap[0][WhiteAlfil] = DoLoadBitmap(hInst, "e", squareSize, "s");
-    pieceBitmap[1][WhiteAlfil] = DoLoadBitmap(hInst, "e", squareSize, "o");
-    pieceBitmap[2][WhiteAlfil] = DoLoadBitmap(hInst, "e", squareSize, "w");
-    pieceBitmap[0][WhiteMan] = DoLoadBitmap(hInst, "m", squareSize, "s");
-    pieceBitmap[1][WhiteMan] = DoLoadBitmap(hInst, "m", squareSize, "o");
-    pieceBitmap[2][WhiteMan] = DoLoadBitmap(hInst, "m", squareSize, "w");
-    pieceBitmap[0][WhiteCardinal] = DoLoadBitmap(hInst, "a", squareSize, "s");
-    pieceBitmap[1][WhiteCardinal] = DoLoadBitmap(hInst, "a", squareSize, "o");
-    pieceBitmap[2][WhiteCardinal] = DoLoadBitmap(hInst, "a", squareSize, "w");
-    pieceBitmap[0][WhiteDragon] = DoLoadBitmap(hInst, "dk", squareSize, "s");
-    pieceBitmap[1][WhiteDragon] = DoLoadBitmap(hInst, "dk", squareSize, "o");
-    pieceBitmap[2][WhiteDragon] = DoLoadBitmap(hInst, "dk", squareSize, "w");
-    pieceBitmap[0][WhiteFalcon] = DoLoadBitmap(hInst, "v", squareSize, "s");
-    pieceBitmap[1][WhiteFalcon] = DoLoadBitmap(hInst, "v", squareSize, "o");
-    pieceBitmap[2][WhiteFalcon] = DoLoadBitmap(hInst, "v", squareSize, "w");
-    pieceBitmap[0][WhiteCobra] = DoLoadBitmap(hInst, "s", squareSize, "s");
-    pieceBitmap[1][WhiteCobra] = DoLoadBitmap(hInst, "s", squareSize, "o");
-    pieceBitmap[2][WhiteCobra] = DoLoadBitmap(hInst, "s", squareSize, "w");
-    pieceBitmap[0][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "s");
-    pieceBitmap[1][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "o");
-    pieceBitmap[2][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "w");
-    pieceBitmap[0][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "s");
-    pieceBitmap[1][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "o");
-    pieceBitmap[2][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "w");
-
-    if(gameInfo.variant == VariantShogi) { /* promoted Gold represemtations */
-      pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s");
-      pieceBitmap[1][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "o");
-      pieceBitmap[2][WhiteCannon] = DoLoadBitmap(hInst, "w", squareSize, "w");
-      pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "wn", squareSize, "s");
-      pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "wn", squareSize, "o");
-      pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "w", squareSize, "w");
-      pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "ws", squareSize, "s");
-      pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "ws", squareSize, "o");
-      pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "w", squareSize, "w");
-      pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "wl", squareSize, "s");
-      pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "wl", squareSize, "o");
-      pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "w", squareSize, "w");
-    } else {
-      pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "o", squareSize, "s");
-      pieceBitmap[1][WhiteCannon] = DoLoadBitmap(hInst, "o", squareSize, "o");
-      pieceBitmap[2][WhiteCannon] = DoLoadBitmap(hInst, "o", squareSize, "w");
-      pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "h", squareSize, "s");
-      pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "h", squareSize, "o");
-      pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "h", squareSize, "w");
-      pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "s");
-      pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "o");
-      pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "w");
-      pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "g", squareSize, "s");
-      pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "g", squareSize, "o");
-      pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "g", squareSize, "w");
-    }
-
-  } else { /* other size, no special bitmaps available. Use smaller symbols */
-    if((int)boardSize < 2) minorSize = sizeInfo[0].squareSize;
-    else  minorSize = sizeInfo[(int)boardSize - 2].squareSize;
-    pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "n", minorSize, "s");
-    pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "n", minorSize, "o");
-    pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "n", minorSize, "w");
-    pieceBitmap[0][WhiteCardinal]   = DoLoadBitmap(hInst, "b", minorSize, "s");
-    pieceBitmap[1][WhiteCardinal]   = DoLoadBitmap(hInst, "b", minorSize, "o");
-    pieceBitmap[2][WhiteCardinal]   = DoLoadBitmap(hInst, "b", minorSize, "w");
-    pieceBitmap[0][WhiteDragon]   = DoLoadBitmap(hInst, "r", minorSize, "s");
-    pieceBitmap[1][WhiteDragon]   = DoLoadBitmap(hInst, "r", minorSize, "o");
-    pieceBitmap[2][WhiteDragon]   = DoLoadBitmap(hInst, "r", minorSize, "w");
-    pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "q", minorSize, "s");
-    pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "q", minorSize, "o");
-    pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "q", minorSize, "w");
-  }
-
-
-  if(gameInfo.variant == VariantShogi && squareSize == 58)
-  /* special Shogi support in this size */
-  { for (i=0; i<=2; i++) { /* replace all bitmaps */
-      for (piece = WhitePawn;
-           (int) piece < (int) BlackPawn;
-           piece = (ChessSquare) ((int) piece + 1)) {
-        if (pieceBitmap[i][piece] != NULL)
-          DeleteObject(pieceBitmap[i][piece]);
-      }
-    }
-  pieceBitmap[0][WhitePawn] = DoLoadBitmap(hInst, "sp", squareSize, "o");
-  pieceBitmap[0][WhiteKnight] = DoLoadBitmap(hInst, "sn", squareSize, "o");
-  pieceBitmap[0][WhiteBishop] = DoLoadBitmap(hInst, "sb", squareSize, "o");
-  pieceBitmap[0][WhiteRook] = DoLoadBitmap(hInst, "sr", squareSize, "o");
-  pieceBitmap[0][WhiteQueen] = DoLoadBitmap(hInst, "sl", squareSize, "o");
-  pieceBitmap[0][WhiteKing] = DoLoadBitmap(hInst, "sk", squareSize, "o");
-  pieceBitmap[0][WhiteFerz] = DoLoadBitmap(hInst, "sf", squareSize, "o");
-  pieceBitmap[0][WhiteWazir] = DoLoadBitmap(hInst, "sw", squareSize, "o");
-  pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "su", squareSize, "o");
-  pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "sh", squareSize, "o");
-  pieceBitmap[0][WhiteCardinal] = DoLoadBitmap(hInst, "sa", squareSize, "o");
-  pieceBitmap[0][WhiteDragon] = DoLoadBitmap(hInst, "sc", squareSize, "o");
-  pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "sg", squareSize, "o");
-  pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "ss", squareSize, "o");
-  pieceBitmap[1][WhitePawn] = DoLoadBitmap(hInst, "sp", squareSize, "o");
-  pieceBitmap[1][WhiteKnight] = DoLoadBitmap(hInst, "sn", squareSize, "o");
-  pieceBitmap[1][WhiteBishop] = DoLoadBitmap(hInst, "sb", squareSize, "o");
-  pieceBitmap[1][WhiteRook] = DoLoadBitmap(hInst, "sr", squareSize, "o");
-  pieceBitmap[1][WhiteQueen] = DoLoadBitmap(hInst, "sl", squareSize, "o");
-  pieceBitmap[1][WhiteKing] = DoLoadBitmap(hInst, "sk", squareSize, "o");
-  pieceBitmap[1][WhiteFerz] = DoLoadBitmap(hInst, "sf", squareSize, "o");
-  pieceBitmap[1][WhiteWazir] = DoLoadBitmap(hInst, "sw", squareSize, "o");
-  pieceBitmap[1][WhiteCannon] = DoLoadBitmap(hInst, "su", squareSize, "o");
-  pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "sh", squareSize, "o");
-  pieceBitmap[1][WhiteCardinal] = DoLoadBitmap(hInst, "sa", squareSize, "o");
-  pieceBitmap[1][WhiteDragon] = DoLoadBitmap(hInst, "sc", squareSize, "o");
-  pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "sg", squareSize, "o");
-  pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "ss", squareSize, "o");
-  pieceBitmap[2][WhitePawn] = DoLoadBitmap(hInst, "sp", squareSize, "w");
-  pieceBitmap[2][WhiteKnight] = DoLoadBitmap(hInst, "sn", squareSize, "w");
-  pieceBitmap[2][WhiteBishop] = DoLoadBitmap(hInst, "sr", squareSize, "w");
-  pieceBitmap[2][WhiteRook] = DoLoadBitmap(hInst, "sr", squareSize, "w");
-  pieceBitmap[2][WhiteQueen] = DoLoadBitmap(hInst, "sl", squareSize, "w");
-  pieceBitmap[2][WhiteKing] = DoLoadBitmap(hInst, "sk", squareSize, "w");
-  pieceBitmap[2][WhiteFerz] = DoLoadBitmap(hInst, "sw", squareSize, "w");
-  pieceBitmap[2][WhiteWazir] = DoLoadBitmap(hInst, "sw", squareSize, "w");
-  pieceBitmap[2][WhiteCannon] = DoLoadBitmap(hInst, "sp", squareSize, "w");
-  pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "sn", squareSize, "w");
-  pieceBitmap[2][WhiteCardinal] = DoLoadBitmap(hInst, "sr", squareSize, "w");
-  pieceBitmap[2][WhiteDragon] = DoLoadBitmap(hInst, "sr", squareSize, "w");
-  pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "sl", squareSize, "w");
-  pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "sw", squareSize, "w");
-  minorSize = 0;
-  }
-}
-
-HBITMAP
-PieceBitmap(ChessSquare p, int kind)
-{
-  if ((int) p >= (int) BlackPawn)
-    p = (ChessSquare) ((int) p - (int) BlackPawn + (int) WhitePawn);
-
-  return pieceBitmap[kind][(int) p];
-}
-
-/***************************************************************/
-
-#define MIN(a,b) (((a) < (b)) ? (a) : (b))
-#define MAX(a,b) (((a) > (b)) ? (a) : (b))
-/*
-#define MIN3(a,b,c) (((a) < (b) && (a) < (c)) ? (a) : (((b) < (a) && (b) < (c)) ? (b) : (c)))
-#define MAX3(a,b,c) (((a) > (b) && (a) > (c)) ? (a) : (((b) > (a) && (b) > (c)) ? (b) : (c)))
-*/
-
-VOID
-SquareToPos(int row, int column, int * x, int * y)
-{
-  if (flipView) {
-    *x = boardRect.left + lineGap + ((BOARD_WIDTH-1)-column) * (squareSize + lineGap);
-    *y = boardRect.top + lineGap + row * (squareSize + lineGap);
-  } else {
-    *x = boardRect.left + lineGap + column * (squareSize + lineGap);
-    *y = boardRect.top + lineGap + ((BOARD_HEIGHT-1)-row) * (squareSize + lineGap);
-  }
-}
-
-VOID
-DrawCoordsOnDC(HDC hdc)
-{
-  static char files[24] = {'0', '1','2','3','4','5','6','7','8','9','0','1','1','0','9','8','7','6','5','4','3','2','1','0'};
-  static char ranks[24] = {'l', 'k','j','i','h','g','f','e','d','c','b','a','a','b','c','d','e','f','g','h','i','j','k','l'};
-  char str[2] = { NULLCHAR, NULLCHAR };
-  int oldMode, oldAlign, x, y, start, i;
-  HFONT oldFont;
-  HBRUSH oldBrush;
-
-  if (!appData.showCoords)
-    return;
-
-  start = flipView ? 1-(ONE!='1') : 23+(ONE!='1')-BOARD_HEIGHT;
-
-  oldBrush = SelectObject(hdc, GetStockObject(BLACK_BRUSH));
-  oldMode = SetBkMode(hdc, (appData.monoMode ? OPAQUE : TRANSPARENT));
-  oldAlign = GetTextAlign(hdc);
-  oldFont = SelectObject(hdc, font[boardSize][COORD_FONT]->hf);
-
-  y = boardRect.top + lineGap;
-  x = boardRect.left + lineGap + gameInfo.holdingsWidth*(squareSize + lineGap);
-
-  SetTextAlign(hdc, TA_LEFT|TA_TOP);
-  for (i = 0; i < BOARD_HEIGHT; i++) {
-    str[0] = files[start + i];
-    ExtTextOut(hdc, x + 2, y + 1, 0, NULL, str, 1, NULL);
-    y += squareSize + lineGap;
-  }
-
-  start = flipView ? 12-(BOARD_RGHT-BOARD_LEFT) : 12;
-
-  SetTextAlign(hdc, TA_RIGHT|TA_BOTTOM);
-  for (i = 0; i < BOARD_RGHT - BOARD_LEFT; i++) {
-    str[0] = ranks[start + i];
-    ExtTextOut(hdc, x + squareSize - 2, y - 1, 0, NULL, str, 1, NULL);
-    x += squareSize + lineGap;
-  }    
-
-  SelectObject(hdc, oldBrush);
-  SetBkMode(hdc, oldMode);
-  SetTextAlign(hdc, oldAlign);
-  SelectObject(hdc, oldFont);
-}
-
-VOID
-DrawGridOnDC(HDC hdc)
-{
-  HPEN oldPen;
- 
-  if (lineGap != 0) {
-    oldPen = SelectObject(hdc, gridPen);
-    PolyPolyline(hdc, gridEndpoints, gridVertexCounts, BOARD_WIDTH+BOARD_HEIGHT + 2);
-    SelectObject(hdc, oldPen);
-  }
-}
-
-#define HIGHLIGHT_PEN 0
-#define PREMOVE_PEN   1
-
-VOID
-DrawHighlightOnDC(HDC hdc, BOOLEAN on, int x, int y, int pen)
-{
-  int x1, y1;
-  HPEN oldPen, hPen;
-  if (lineGap == 0) return;
-  if (flipView) {
-    x1 = boardRect.left +
-      lineGap/2 + ((BOARD_WIDTH-1)-x) * (squareSize + lineGap);
-    y1 = boardRect.top +
-      lineGap/2 + y * (squareSize + lineGap);
-  } else {
-    x1 = boardRect.left +
-      lineGap/2 + x * (squareSize + lineGap);
-    y1 = boardRect.top +
-      lineGap/2 + ((BOARD_HEIGHT-1)-y) * (squareSize + lineGap);
-  }
-  hPen = pen ? premovePen : highlightPen;
-  oldPen = SelectObject(hdc, on ? hPen : gridPen);
-  MoveToEx(hdc, x1, y1, NULL);
-  LineTo(hdc, x1 + squareSize + lineGap, y1);
-  LineTo(hdc, x1 + squareSize + lineGap, y1 + squareSize + lineGap);
-  LineTo(hdc, x1, y1 + squareSize + lineGap);
-  LineTo(hdc, x1, y1);
-  SelectObject(hdc, oldPen);
-}
-
-VOID
-DrawHighlightsOnDC(HDC hdc)
-{
-  int i;
-  for (i=0; i<2; i++) {
-    if (highlightInfo.sq[i].x >= 0 && highlightInfo.sq[i].y >= 0) 
-      DrawHighlightOnDC(hdc, TRUE,
-			highlightInfo.sq[i].x, highlightInfo.sq[i].y,
-			HIGHLIGHT_PEN);
-  }
-  for (i=0; i<2; i++) {
-    if (premoveHighlightInfo.sq[i].x >= 0 && 
-	premoveHighlightInfo.sq[i].y >= 0) {
-	DrawHighlightOnDC(hdc, TRUE,
-	   		  premoveHighlightInfo.sq[i].x, 
-			  premoveHighlightInfo.sq[i].y,
-			  PREMOVE_PEN);
-    }
-  }
-}
-
-/* Note: sqcolor is used only in monoMode */
-/* Note that this code is largely duplicated in woptions.c,
-   function DrawSampleSquare, so that needs to be updated too */
-VOID
-DrawPieceOnDC(HDC hdc, ChessSquare piece, int color, int sqcolor, int x, int y, HDC tmphdc)
-{
-  HBITMAP oldBitmap;
-  HBRUSH oldBrush;
-  int tmpSize;
-
-  if (appData.blindfold) return;
-
-  /* [AS] Use font-based pieces if needed */
-  if( fontBitmapSquareSize >= 0 && squareSize > 32 ) {
-    /* Create piece bitmaps, or do nothing if piece set is up to date */
-    CreatePiecesFromFont();
-
-    if( fontBitmapSquareSize == squareSize ) {
-        int index = TranslatePieceToFontPiece(piece);
-
-        SelectObject( tmphdc, hPieceMask[ index ] );
-
-        BitBlt( hdc,
-            x, y,
-            squareSize, squareSize,
-            tmphdc,
-            0, 0,
-            SRCAND );
-
-        SelectObject( tmphdc, hPieceFace[ index ] );
-
-        BitBlt( hdc,
-            x, y,
-            squareSize, squareSize,
-            tmphdc,
-            0, 0,
-            SRCPAINT );
-
-        return;
-    }
-  }
-
-  if (appData.monoMode) {
-    SelectObject(tmphdc, PieceBitmap(piece, 
-      color == sqcolor ? OUTLINE_PIECE : SOLID_PIECE));
-    BitBlt(hdc, x, y, squareSize, squareSize, tmphdc, 0, 0,
-	   sqcolor ? SRCCOPY : NOTSRCCOPY);
-  } else {
-    tmpSize = squareSize;
-    if(minorSize &&
-        ((piece >= (int)WhiteNightrider && piece <= WhiteGrasshopper) ||
-         (piece >= (int)BlackNightrider && piece <= BlackGrasshopper))  ) {
-      /* [HGM] no bitmap available for promoted pieces in Crazyhouse        */
-      /* Bitmaps of smaller size are substituted, but we have to align them */
-      x += (squareSize - minorSize)>>1;
-      y += squareSize - minorSize - 2;
-      tmpSize = minorSize;
-    }
-    if (color || appData.allWhite ) {
-      oldBitmap = SelectObject(tmphdc, PieceBitmap(piece, WHITE_PIECE));
-      if( color )
-              oldBrush = SelectObject(hdc, whitePieceBrush);
-      else    oldBrush = SelectObject(hdc, blackPieceBrush);
-      if(appData.upsideDown && color==flipView)
-        StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, 0x00B8074A);
-      else
-        BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A);
-#if 0
-      /* Use black piece color for outline of white pieces */
-      /* Not sure this looks really good (though xboard does it).
-	 Maybe better to have another selectable color, default black */
-      SelectObject(hdc, blackPieceBrush); /* could have own brush */
-      SelectObject(tmphdc, PieceBitmap(piece, OUTLINE_PIECE));
-      BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A);
-#else
-      /* Use black for outline of white pieces */
-      SelectObject(tmphdc, PieceBitmap(piece, OUTLINE_PIECE));
-      if(appData.upsideDown && color==flipView)
-        StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, SRCAND);
-      else
-        BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, SRCAND);
-#endif
-    } else {
-#if 0
-      /* Use white piece color for details of black pieces */
-      /* Requires filled-in solid bitmaps (BLACK_PIECE class); the
-	 WHITE_PIECE ones aren't always the right shape. */
-      /* Not sure this looks really good (though xboard does it).
-	 Maybe better to have another selectable color, default medium gray? */
-      oldBitmap = SelectObject(tmphdc, PieceBitmap(piece, BLACK_PIECE));
-      oldBrush = SelectObject(hdc, whitePieceBrush); /* could have own brush */
-      BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A);
-      SelectObject(tmphdc, PieceBitmap(piece, SOLID_PIECE));
-      SelectObject(hdc, blackPieceBrush);
-      BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A);
-#else
-      /* Use square color for details of black pieces */
-      oldBitmap = SelectObject(tmphdc, PieceBitmap(piece, SOLID_PIECE));
-      oldBrush = SelectObject(hdc, blackPieceBrush);
-      if(appData.upsideDown && !flipView)
-        StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, 0x00B8074A);
-      else
-        BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A);
-#endif
-    }
-    SelectObject(hdc, oldBrush);
-    SelectObject(tmphdc, oldBitmap);
-  }
-}
-
-/* [AS] Compute a drawing mode for a square, based on specified settings (see DrawTile) */
-int GetBackTextureMode( int algo )
-{
-    int result = BACK_TEXTURE_MODE_DISABLED;
-
-    switch( algo ) 
-    {
-        case BACK_TEXTURE_MODE_PLAIN:
-            result = 1; /* Always use identity map */
-            break;
-        case BACK_TEXTURE_MODE_FULL_RANDOM:
-            result = 1 + (myrandom() % 3); /* Pick a transformation at random */
-            break;
-    }
-
-    return result;
-}
-
-/* 
-    [AS] Compute and save texture drawing info, otherwise we may not be able
-    to handle redraws cleanly (as random numbers would always be different).
-*/
-VOID RebuildTextureSquareInfo()
-{
-    BITMAP bi;
-    int lite_w = 0;
-    int lite_h = 0;
-    int dark_w = 0;
-    int dark_h = 0;
-    int row;
-    int col;
-
-    ZeroMemory( &backTextureSquareInfo, sizeof(backTextureSquareInfo) );
-
-    if( liteBackTexture != NULL ) {
-        if( GetObject( liteBackTexture, sizeof(bi), &bi ) > 0 ) {
-            lite_w = bi.bmWidth;
-            lite_h = bi.bmHeight;
-        }
-    }
-
-    if( darkBackTexture != NULL ) {
-        if( GetObject( darkBackTexture, sizeof(bi), &bi ) > 0 ) {
-            dark_w = bi.bmWidth;
-            dark_h = bi.bmHeight;
-        }
-    }
-
-    for( row=0; row<BOARD_HEIGHT; row++ ) {
-        for( col=0; col<BOARD_WIDTH; col++ ) {
-            if( (col + row) & 1 ) {
-                /* Lite square */
-                if( lite_w >= squareSize && lite_h >= squareSize ) {
-                    backTextureSquareInfo[row][col].x = col * (lite_w - squareSize) / (BOARD_WIDTH-1);  /* [HGM] divide by size-1 in stead of size! */
-                    backTextureSquareInfo[row][col].y = (BOARD_HEIGHT-1-row) * (lite_h - squareSize) / (BOARD_HEIGHT-1);
-                    backTextureSquareInfo[row][col].mode = GetBackTextureMode(liteBackTextureMode);
-                }
-            }
-            else {
-                /* Dark square */
-                if( dark_w >= squareSize && dark_h >= squareSize ) {
-                    backTextureSquareInfo[row][col].x = col * (dark_w - squareSize) / (BOARD_WIDTH-1);
-                    backTextureSquareInfo[row][col].y = (BOARD_HEIGHT-1-row) * (dark_h - squareSize) / (BOARD_HEIGHT-1);
-                    backTextureSquareInfo[row][col].mode = GetBackTextureMode(darkBackTextureMode);
-                }
-            }
-        }
-    }
-}
-
-/* [AS] Arrow highlighting support */
-
-static int A_WIDTH = 5; /* Width of arrow body */
-
-#define A_HEIGHT_FACTOR 6   /* Length of arrow "point", relative to body width */
-#define A_WIDTH_FACTOR  3   /* Width of arrow "point", relative to body width */
-
-static double Sqr( double x )
-{
-    return x*x;
-}
-
-static int Round( double x )
-{
-    return (int) (x + 0.5);
-}
-
-/* Draw an arrow between two points using current settings */
-VOID DrawArrowBetweenPoints( HDC hdc, int s_x, int s_y, int d_x, int d_y )
-{
-    POINT arrow[7];
-    double dx, dy, j, k, x, y;
-
-    if( d_x == s_x ) {
-        int h = (d_y > s_y) ? +A_WIDTH*A_HEIGHT_FACTOR : -A_WIDTH*A_HEIGHT_FACTOR;
-
-        arrow[0].x = s_x + A_WIDTH;
-        arrow[0].y = s_y;
-
-        arrow[1].x = s_x + A_WIDTH;
-        arrow[1].y = d_y - h;
-
-        arrow[2].x = s_x + A_WIDTH*A_WIDTH_FACTOR;
-        arrow[2].y = d_y - h;
-
-        arrow[3].x = d_x;
-        arrow[3].y = d_y;
-
-        arrow[4].x = s_x - A_WIDTH*A_WIDTH_FACTOR;
-        arrow[4].y = d_y - h;
-
-        arrow[5].x = s_x - A_WIDTH;
-        arrow[5].y = d_y - h;
-
-        arrow[6].x = s_x - A_WIDTH;
-        arrow[6].y = s_y;
-    }
-    else if( d_y == s_y ) {
-        int w = (d_x > s_x) ? +A_WIDTH*A_HEIGHT_FACTOR : -A_WIDTH*A_HEIGHT_FACTOR;
-
-        arrow[0].x = s_x;
-        arrow[0].y = s_y + A_WIDTH;
-
-        arrow[1].x = d_x - w;
-        arrow[1].y = s_y + A_WIDTH;
-
-        arrow[2].x = d_x - w;
-        arrow[2].y = s_y + A_WIDTH*A_WIDTH_FACTOR;
-
-        arrow[3].x = d_x;
-        arrow[3].y = d_y;
-
-        arrow[4].x = d_x - w;
-        arrow[4].y = s_y - A_WIDTH*A_WIDTH_FACTOR;
-
-        arrow[5].x = d_x - w;
-        arrow[5].y = s_y - A_WIDTH;
-
-        arrow[6].x = s_x;
-        arrow[6].y = s_y - A_WIDTH;
-    }
-    else {
-        /* [AS] Needed a lot of paper for this! :-) */
-        dy = (double) (d_y - s_y) / (double) (d_x - s_x);
-        dx = (double) (s_x - d_x) / (double) (s_y - d_y);
-  
-        j = sqrt( Sqr(A_WIDTH) / (1.0 + Sqr(dx)) );
-
-        k = sqrt( Sqr(A_WIDTH*A_HEIGHT_FACTOR) / (1.0 + Sqr(dy)) );
-
-        x = s_x;
-        y = s_y;
-
-        arrow[0].x = Round(x - j);
-        arrow[0].y = Round(y + j*dx);
-
-        arrow[1].x = Round(x + j);
-        arrow[1].y = Round(y - j*dx);
-
-        if( d_x > s_x ) {
-            x = (double) d_x - k;
-            y = (double) d_y - k*dy;
-        }
-        else {
-            x = (double) d_x + k;
-            y = (double) d_y + k*dy;
-        }
-
-        arrow[2].x = Round(x + j);
-        arrow[2].y = Round(y - j*dx);
-
-        arrow[3].x = Round(x + j*A_WIDTH_FACTOR);
-        arrow[3].y = Round(y - j*A_WIDTH_FACTOR*dx);
-
-        arrow[4].x = d_x;
-        arrow[4].y = d_y;
-
-        arrow[5].x = Round(x - j*A_WIDTH_FACTOR);
-        arrow[5].y = Round(y + j*A_WIDTH_FACTOR*dx);
-
-        arrow[6].x = Round(x - j);
-        arrow[6].y = Round(y + j*dx);
-    }
-
-    Polygon( hdc, arrow, 7 );
-}
-
-/* [AS] Draw an arrow between two squares */
-VOID DrawArrowBetweenSquares( HDC hdc, int s_col, int s_row, int d_col, int d_row )
-{
-    int s_x, s_y, d_x, d_y;
-    HPEN hpen;
-    HPEN holdpen;
-    HBRUSH hbrush;
-    HBRUSH holdbrush;
-    LOGBRUSH stLB;
-
-    if( s_col == d_col && s_row == d_row ) {
-        return;
-    }
-
-    /* Get source and destination points */
-    SquareToPos( s_row, s_col, &s_x, &s_y);
-    SquareToPos( d_row, d_col, &d_x, &d_y);
-
-    if( d_y > s_y ) {
-        d_y += squareSize / 4;
-    }
-    else if( d_y < s_y ) {
-        d_y += 3 * squareSize / 4;
-    }
-    else {
-        d_y += squareSize / 2;
-    }
-
-    if( d_x > s_x ) {
-        d_x += squareSize / 4;
-    }
-    else if( d_x < s_x ) {
-        d_x += 3 * squareSize / 4;
-    }
-    else {
-        d_x += squareSize / 2;
-    }
-
-    s_x += squareSize / 2;
-    s_y += squareSize / 2;
-
-    /* Adjust width */
-    A_WIDTH = squareSize / 14;
-
-    /* Draw */
-    stLB.lbStyle = BS_SOLID;
-    stLB.lbColor = appData.highlightArrowColor;
-    stLB.lbHatch = 0;
-
-    hpen = CreatePen( PS_SOLID, 2, RGB(0x00,0x00,0x00) );
-    holdpen = SelectObject( hdc, hpen );
-    hbrush = CreateBrushIndirect( &stLB );
-    holdbrush = SelectObject( hdc, hbrush );
-
-    DrawArrowBetweenPoints( hdc, s_x, s_y, d_x, d_y );
-
-    SelectObject( hdc, holdpen );
-    SelectObject( hdc, holdbrush );
-    DeleteObject( hpen );
-    DeleteObject( hbrush );
-}
-
-BOOL HasHighlightInfo()
-{
-    BOOL result = FALSE;
-
-    if( highlightInfo.sq[0].x >= 0 && highlightInfo.sq[0].y >= 0 &&
-        highlightInfo.sq[1].x >= 0 && highlightInfo.sq[1].y >= 0 )
-    {
-        result = TRUE;
-    }
-
-    return result;
-}
-
-BOOL IsDrawArrowEnabled()
-{
-    BOOL result = FALSE;
-
-    if( appData.highlightMoveWithArrow && squareSize >= 32 ) {
-        result = TRUE;
-    }
-
-    return result;
-}
-
-VOID DrawArrowHighlight( HDC hdc )
-{
-    if( IsDrawArrowEnabled() && HasHighlightInfo() ) {
-        DrawArrowBetweenSquares( hdc,
-            highlightInfo.sq[0].x, highlightInfo.sq[0].y,
-            highlightInfo.sq[1].x, highlightInfo.sq[1].y );
-    }
-}
-
-HRGN GetArrowHighlightClipRegion( HDC hdc )
-{
-    HRGN result = NULL;
-
-    if( HasHighlightInfo() ) {
-        int x1, y1, x2, y2;
-        int sx, sy, dx, dy;
-
-        SquareToPos(highlightInfo.sq[0].y, highlightInfo.sq[0].x, &x1, &y1 );
-        SquareToPos(highlightInfo.sq[1].y, highlightInfo.sq[1].x, &x2, &y2 );
-
-        sx = MIN( x1, x2 );
-        sy = MIN( y1, y2 );
-        dx = MAX( x1, x2 ) + squareSize;
-        dy = MAX( y1, y2 ) + squareSize;
-
-        result = CreateRectRgn( sx, sy, dx, dy );
-    }
-
-    return result;
-}
-
-/*
-    Warning: this function modifies the behavior of several other functions. 
-    
-    Basically, Winboard is optimized to avoid drawing the whole board if not strictly
-    needed. Unfortunately, the decision whether or not to perform a full or partial
-    repaint is scattered all over the place, which is not good for features such as
-    "arrow highlighting" that require a full repaint of the board.
-
-    So, I've tried to patch the code where I thought it made sense (e.g. after or during
-    user interaction, when speed is not so important) but especially to avoid errors
-    in the displayed graphics.
-
-    In such patched places, I always try refer to this function so there is a single
-    place to maintain knowledge.
-    
-    To restore the original behavior, just return FALSE unconditionally.
-*/
-BOOL IsFullRepaintPreferrable()
-{
-    BOOL result = FALSE;
-
-    if( (appData.highlightLastMove || appData.highlightDragging) && IsDrawArrowEnabled() ) {
-        /* Arrow may appear on the board */
-        result = TRUE;
-    }
-
-    return result;
-}
-
-/* 
-    This function is called by DrawPosition to know whether a full repaint must
-    be forced or not.
-
-    Only DrawPosition may directly call this function, which makes use of 
-    some state information. Other function should call DrawPosition specifying 
-    the repaint flag, and can use IsFullRepaintPreferrable if needed.
-*/
-BOOL DrawPositionNeedsFullRepaint()
-{
-    BOOL result = FALSE;
-
-    /* 
-        Probably a slightly better policy would be to trigger a full repaint
-        when animInfo.piece changes state (i.e. empty -> non-empty and viceversa),
-        but animation is fast enough that it's difficult to notice.
-    */
-    if( animInfo.piece == EmptySquare ) {
-        if( (appData.highlightLastMove || appData.highlightDragging) && IsDrawArrowEnabled() && HasHighlightInfo() ) {
-            result = TRUE;
-        }
-    }
-
-    return result;
-}
-
-VOID
-DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc)
-{
-  int row, column, x, y, square_color, piece_color;
-  ChessSquare piece;
-  HBRUSH oldBrush;
-  HDC texture_hdc = NULL;
-
-  /* [AS] Initialize background textures if needed */
-  if( liteBackTexture != NULL || darkBackTexture != NULL ) {
-      static int backTextureBoardSize; /* [HGM] boardsize: also new texture if board format changed */
-      if( backTextureSquareSize != squareSize 
-       || backTextureBoardSize != BOARD_WIDTH+BOARD_SIZE*BOARD_HEIGHT) {
-	  backTextureBoardSize = BOARD_WIDTH+BOARD_SIZE*BOARD_HEIGHT;
-          backTextureSquareSize = squareSize;
-          RebuildTextureSquareInfo();
-      }
-
-      texture_hdc = CreateCompatibleDC( hdc );
-  }
-
-  for (row = 0; row < BOARD_HEIGHT; row++) {
-    for (column = 0; column < BOARD_WIDTH; column++) {
-  
-      SquareToPos(row, column, &x, &y);
-
-      piece = board[row][column];
-
-      square_color = ((column + row) % 2) == 1;
-      if( gameInfo.variant == VariantXiangqi ) {
-          square_color = !InPalace(row, column);
-          if(BOARD_HEIGHT&1) { if(row==BOARD_HEIGHT/2) square_color ^= 1; }
-          else if(row < BOARD_HEIGHT/2) square_color ^= 1;
-      }
-      piece_color = (int) piece < (int) BlackPawn;
-
-
-      /* [HGM] holdings file: light square or black */
-      if(column == BOARD_LEFT-2) {
-            if( row > BOARD_HEIGHT - gameInfo.holdingsSize - 1 )
-                square_color = 1;
-            else {
-                DisplayHoldingsCount(hdc, x, y, 0, 0); /* black out */
-                continue;
-            }
-      } else
-      if(column == BOARD_RGHT + 1 ) {
-            if( row < gameInfo.holdingsSize )
-                square_color = 1;
-            else {
-                DisplayHoldingsCount(hdc, x, y, 0, 0); 
-                continue;
-            }
-      }
-      if(column == BOARD_LEFT-1 ) /* left align */
-            DisplayHoldingsCount(hdc, x, y, flipView, (int) board[row][column]);
-      else if( column == BOARD_RGHT) /* right align */
-            DisplayHoldingsCount(hdc, x, y, !flipView, (int) board[row][column]);
-      else
-      if (appData.monoMode) {
-        if (piece == EmptySquare) {
-          BitBlt(hdc, x, y, squareSize, squareSize, 0, 0, 0,
-		 square_color ? WHITENESS : BLACKNESS);
-        } else {
-          DrawPieceOnDC(hdc, piece, piece_color, square_color, x, y, tmphdc);
-        }
-      } 
-      else if( backTextureSquareInfo[row][column].mode > 0 ) {
-          /* [AS] Draw the square using a texture bitmap */
-          HBITMAP hbm = SelectObject( texture_hdc, square_color ? liteBackTexture : darkBackTexture );
-	  int r = row, c = column; // [HGM] do not flip board in flipView
-	  if(flipView) { r = BOARD_HEIGHT-1 - r; c = BOARD_WIDTH-1 - c; }
-
-          DrawTile( x, y, 
-              squareSize, squareSize, 
-              hdc, 
-              texture_hdc,
-              backTextureSquareInfo[r][c].mode,
-              backTextureSquareInfo[r][c].x,
-              backTextureSquareInfo[r][c].y );
-
-          SelectObject( texture_hdc, hbm );
-
-          if (piece != EmptySquare) {
-              DrawPieceOnDC(hdc, piece, piece_color, -1, x, y, tmphdc);
-          }
-      }
-      else {
-        HBRUSH brush = square_color ? lightSquareBrush : darkSquareBrush;
-
-        oldBrush = SelectObject(hdc, brush );
-        BitBlt(hdc, x, y, squareSize, squareSize, 0, 0, 0, PATCOPY);
-        SelectObject(hdc, oldBrush);
-        if (piece != EmptySquare)
-          DrawPieceOnDC(hdc, piece, piece_color, -1, x, y, tmphdc);
-      }
-    }
-  }
-
-  if( texture_hdc != NULL ) {
-    DeleteDC( texture_hdc );
-  }
-}
-
-int saveDiagFlag = 0; FILE *diagFile; // [HGM] diag
-void fputDW(FILE *f, int x)
-{
-	fputc(x     & 255, f);
-	fputc(x>>8  & 255, f);
-	fputc(x>>16 & 255, f);
-	fputc(x>>24 & 255, f);
-}
-
-#define MAX_CLIPS 200   /* more than enough */
-
-VOID
-DrawLogoOnDC(HDC hdc, RECT logoRect, HBITMAP logo)
-{
-//  HBITMAP bufferBitmap;
-  BITMAP bi;
-//  RECT Rect;
-  HDC tmphdc;
-  HBITMAP hbm;
-  int w = 100, h = 50;
-
-  if(logo == NULL) return;
-//  GetClientRect(hwndMain, &Rect);
-//  bufferBitmap = CreateCompatibleBitmap(hdc, Rect.right-Rect.left+1,
-//					Rect.bottom-Rect.top+1);
-  tmphdc = CreateCompatibleDC(hdc);
-  hbm = SelectObject(tmphdc, logo);
-  if( GetObject( logo, sizeof(bi), &bi ) > 0 ) {
-            w = bi.bmWidth;
-            h = bi.bmHeight;
-  }
-  StretchBlt(hdc, logoRect.left, logoRect.top, logoRect.right - logoRect.left, 
-                  logoRect.bottom - logoRect.top, tmphdc, 0, 0, w, h, SRCCOPY);
-  SelectObject(tmphdc, hbm);
-  DeleteDC(tmphdc);
-}
-
-VOID
-HDCDrawPosition(HDC hdc, BOOLEAN repaint, Board board)
-{
-  static Board lastReq, lastDrawn;
-  static HighlightInfo lastDrawnHighlight, lastDrawnPremove;
-  static int lastDrawnFlipView = 0;
-  static int lastReqValid = 0, lastDrawnValid = 0;
-  int releaseDC, x, y, x2, y2, row, column, num_clips = 0, i;
-  HDC tmphdc;
-  HDC hdcmem;
-  HBITMAP bufferBitmap;
-  HBITMAP oldBitmap;
-  RECT Rect;
-  HRGN clips[MAX_CLIPS];
-  ChessSquare dragged_piece = EmptySquare;
-
-  /* I'm undecided on this - this function figures out whether a full
-   * repaint is necessary on its own, so there's no real reason to have the
-   * caller tell it that.  I think this can safely be set to FALSE - but
-   * if we trust the callers not to request full repaints unnessesarily, then
-   * we could skip some clipping work.  In other words, only request a full
-   * redraw when the majority of pieces have changed positions (ie. flip, 
-   * gamestart and similar)  --Hawk
-   */
-  Boolean fullrepaint = repaint;
-
-  if( DrawPositionNeedsFullRepaint() ) {
-      fullrepaint = TRUE;
-  }
-
-#if 0
-  if( fullrepaint ) {
-      static int repaint_count = 0;
-      char buf[128];
-
-      repaint_count++;
-      sprintf( buf, "FULL repaint: %d\n", repaint_count );
-      OutputDebugString( buf );
-  }
-#endif
-
-  if (board == NULL) {
-    if (!lastReqValid) {
-      return;
-    }
-    board = lastReq;
-  } else {
-    CopyBoard(lastReq, board);
-    lastReqValid = 1;
-  }
-
-  if (doingSizing) {
-    return;
-  }
-
-  if (IsIconic(hwndMain)) {
-    return;
-  }
-
-  if (hdc == NULL) {
-    hdc = GetDC(hwndMain);
-    if (!appData.monoMode) {
-      SelectPalette(hdc, hPal, FALSE);
-      RealizePalette(hdc);
-    }
-    releaseDC = TRUE;
-  } else {
-    releaseDC = FALSE;
-  }
-
-#if 0
-  fprintf(debugFP, "*******************************\n"
-                   "repaint = %s\n"
-                   "dragInfo.from (%d,%d)\n"
-                   "dragInfo.start (%d,%d)\n"
-                   "dragInfo.pos (%d,%d)\n"
-                   "dragInfo.lastpos (%d,%d)\n", 
-                    repaint ? "TRUE" : "FALSE",
-                    dragInfo.from.x, dragInfo.from.y, 
-                    dragInfo.start.x, dragInfo.start.y,
-                    dragInfo.pos.x, dragInfo.pos.y,
-                    dragInfo.lastpos.x, dragInfo.lastpos.y);
-  fprintf(debugFP, "prev:  ");
-  for (row = 0; row < BOARD_HEIGHT; row++) {
-    for (column = 0; column < BOARD_WIDTH; column++) {
-      fprintf(debugFP, "%d ", lastDrawn[row][column]);
-    }
-  }
-  fprintf(debugFP, "\n");
-  fprintf(debugFP, "board: ");
-  for (row = 0; row < BOARD_HEIGHT; row++) {
-    for (column = 0; column < BOARD_WIDTH; column++) {
-      fprintf(debugFP, "%d ", board[row][column]);
-    }
-  }
-  fprintf(debugFP, "\n");
-  fflush(debugFP);
-#endif
-
-  /* Create some work-DCs */
-  hdcmem = CreateCompatibleDC(hdc);
-  tmphdc = CreateCompatibleDC(hdc);
-
-  /* If dragging is in progress, we temporarely remove the piece */
-  /* [HGM] or temporarily decrease count if stacked              */
-  /*       !! Moved to before board compare !!                   */
-  if (dragInfo.from.x >= 0 && dragInfo.pos.x >= 0) {
-    dragged_piece = board[dragInfo.from.y][dragInfo.from.x];
-    if(dragInfo.from.x == BOARD_LEFT-2 ) {
-            if(--board[dragInfo.from.y][dragInfo.from.x+1] == 0 )
-        board[dragInfo.from.y][dragInfo.from.x] = EmptySquare;
-    } else 
-    if(dragInfo.from.x == BOARD_RGHT+1) {
-            if(--board[dragInfo.from.y][dragInfo.from.x-1] == 0 )
-        board[dragInfo.from.y][dragInfo.from.x] = EmptySquare;
-    } else 
-        board[dragInfo.from.y][dragInfo.from.x] = EmptySquare;
-  }
-
-  /* Figure out which squares need updating by comparing the 
-   * newest board with the last drawn board and checking if
-   * flipping has changed.
-   */
-  if (!fullrepaint && lastDrawnValid && lastDrawnFlipView == flipView) {
-    for (row = 0; row < BOARD_HEIGHT; row++) { /* [HGM] true size, not 8 */
-      for (column = 0; column < BOARD_WIDTH; column++) {
-	if (lastDrawn[row][column] != board[row][column]) {
-	  SquareToPos(row, column, &x, &y);
-	  clips[num_clips++] =
-	    CreateRectRgn(x, y, x + squareSize, y + squareSize);
-	}
-      }
-    }
-    for (i=0; i<2; i++) {
-      if (lastDrawnHighlight.sq[i].x != highlightInfo.sq[i].x ||
-	  lastDrawnHighlight.sq[i].y != highlightInfo.sq[i].y) {
-	if (lastDrawnHighlight.sq[i].x >= 0 &&
-	    lastDrawnHighlight.sq[i].y >= 0) {
-	  SquareToPos(lastDrawnHighlight.sq[i].y,
-		      lastDrawnHighlight.sq[i].x, &x, &y);
-	  clips[num_clips++] =
-	    CreateRectRgn(x - lineGap, y - lineGap, 
-	                  x + squareSize + lineGap, y + squareSize + lineGap);
-	}
-	if (highlightInfo.sq[i].x >= 0 && highlightInfo.sq[i].y >= 0) {
-	  SquareToPos(highlightInfo.sq[i].y, highlightInfo.sq[i].x, &x, &y);
-	  clips[num_clips++] =
-	    CreateRectRgn(x - lineGap, y - lineGap, 
-	                  x + squareSize + lineGap, y + squareSize + lineGap);
-	}
-      }
-    }
-    for (i=0; i<2; i++) {
-      if (lastDrawnPremove.sq[i].x != premoveHighlightInfo.sq[i].x ||
-	  lastDrawnPremove.sq[i].y != premoveHighlightInfo.sq[i].y) {
-	if (lastDrawnPremove.sq[i].x >= 0 &&
-	    lastDrawnPremove.sq[i].y >= 0) {
-	  SquareToPos(lastDrawnPremove.sq[i].y,
-		      lastDrawnPremove.sq[i].x, &x, &y);
-	  clips[num_clips++] =
-	    CreateRectRgn(x - lineGap, y - lineGap, 
-	                  x + squareSize + lineGap, y + squareSize + lineGap);
-	}
-	if (premoveHighlightInfo.sq[i].x >= 0 && 
-	    premoveHighlightInfo.sq[i].y >= 0) {
-	  SquareToPos(premoveHighlightInfo.sq[i].y, 
-		      premoveHighlightInfo.sq[i].x, &x, &y);
-	  clips[num_clips++] =
-	    CreateRectRgn(x - lineGap, y - lineGap, 
-	                  x + squareSize + lineGap, y + squareSize + lineGap);
-	}
-      }
-    }
-  } else {
-    fullrepaint = TRUE;
-  }
-
-  /* Create a buffer bitmap - this is the actual bitmap
-   * being written to.  When all the work is done, we can
-   * copy it to the real DC (the screen).  This avoids
-   * the problems with flickering.
-   */
-  GetClientRect(hwndMain, &Rect);
-  bufferBitmap = CreateCompatibleBitmap(hdc, Rect.right-Rect.left+1,
-					Rect.bottom-Rect.top+1);
-  oldBitmap = SelectObject(hdcmem, bufferBitmap);
-  if (!appData.monoMode) {
-    SelectPalette(hdcmem, hPal, FALSE);
-  }
-
-  /* Create clips for dragging */
-  if (!fullrepaint) {
-    if (dragInfo.from.x >= 0) {
-      SquareToPos(dragInfo.from.y, dragInfo.from.x, &x, &y);
-      clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize);
-    }
-    if (dragInfo.start.x >= 0) {
-      SquareToPos(dragInfo.start.y, dragInfo.start.x, &x, &y);
-      clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize);
-    }
-    if (dragInfo.pos.x >= 0) {
-      x = dragInfo.pos.x - squareSize / 2;
-      y = dragInfo.pos.y - squareSize / 2;
-      clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize);
-    }
-    if (dragInfo.lastpos.x >= 0) {
-      x = dragInfo.lastpos.x - squareSize / 2;
-      y = dragInfo.lastpos.y - squareSize / 2;
-      clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize);
-    }
-  }
-
-  /* Are we animating a move?  
-   * If so, 
-   *   - remove the piece from the board (temporarely)
-   *   - calculate the clipping region
-   */
-  if (!fullrepaint) {
-    if (animInfo.piece != EmptySquare) {
-      board[animInfo.from.y][animInfo.from.x] = EmptySquare;
-      x = boardRect.left + animInfo.lastpos.x;
-      y = boardRect.top + animInfo.lastpos.y;
-      x2 = boardRect.left + animInfo.pos.x;
-      y2 = boardRect.top + animInfo.pos.y;
-      clips[num_clips++] = CreateRectRgn(MIN(x,x2), MIN(y,y2), MAX(x,x2)+squareSize, MAX(y,y2)+squareSize);
-      /* Slight kludge.  The real problem is that after AnimateMove is
-	 done, the position on the screen does not match lastDrawn.
-	 This currently causes trouble only on e.p. captures in
-	 atomic, where the piece moves to an empty square and then
-	 explodes.  The old and new positions both had an empty square
-	 at the destination, but animation has drawn a piece there and
-	 we have to remember to erase it. [HGM] moved until after setting lastDrawn */
-      lastDrawn[animInfo.to.y][animInfo.to.x] = animInfo.piece;
-    }
-  }
-
-  /* No clips?  Make sure we have fullrepaint set to TRUE */
-  if (num_clips == 0)
-    fullrepaint = TRUE;
-
-  /* Set clipping on the memory DC */
-  if (!fullrepaint) {
-    SelectClipRgn(hdcmem, clips[0]);
-    for (x = 1; x < num_clips; x++) {
-      if (ExtSelectClipRgn(hdcmem, clips[x], RGN_OR) == ERROR)
-        abort();  // this should never ever happen!
-    }
-  }
-
-  /* Do all the drawing to the memory DC */
-  if(explodeInfo.radius) { // [HGM] atomic
-	HBRUSH oldBrush;
-	int x, y, r=(explodeInfo.radius * squareSize)/100;
-        board[explodeInfo.fromY][explodeInfo.fromX] = EmptySquare; // suppress display of capturer
-	SquareToPos(explodeInfo.toY, explodeInfo.toX, &x, &y);
-	x += squareSize/2;
-	y += squareSize/2;
-        if(!fullrepaint) {
-	  clips[num_clips] = CreateRectRgn(x-r, y-r, x+r, y+r);
-	  ExtSelectClipRgn(hdcmem, clips[num_clips++], RGN_OR);
-	}
-	DrawGridOnDC(hdcmem);
-	DrawHighlightsOnDC(hdcmem);
-	DrawBoardOnDC(hdcmem, board, tmphdc);
-	oldBrush = SelectObject(hdcmem, explodeBrush);
-	Ellipse(hdcmem, x-r, y-r, x+r, y+r);
-	SelectObject(hdcmem, oldBrush);
-  } else {
-    DrawGridOnDC(hdcmem);
-    DrawHighlightsOnDC(hdcmem);
-    DrawBoardOnDC(hdcmem, board, tmphdc);
-  }
-  if(logoHeight) {
-	HBITMAP whiteLogo = (HBITMAP) first.programLogo, blackLogo = (HBITMAP) second.programLogo;
-	if(appData.autoLogo) {
-	  
-	  switch(gameMode) { // pick logos based on game mode
-	    case IcsObserving:
-		whiteLogo = second.programLogo; // ICS logo
-		blackLogo = second.programLogo;
-	    default:
-		break;
-	    case IcsPlayingWhite:
-		if(!appData.zippyPlay) whiteLogo = userLogo;
-		blackLogo = second.programLogo; // ICS logo
-		break;
-	    case IcsPlayingBlack:
-		whiteLogo = second.programLogo; // ICS logo
-		blackLogo = appData.zippyPlay ? first.programLogo : userLogo;
-		break;
-	    case TwoMachinesPlay:
-	        if(first.twoMachinesColor[0] == 'b') {
-		    whiteLogo = second.programLogo;
-		    blackLogo = first.programLogo;
-		}
-		break;
-	    case MachinePlaysWhite:
-		blackLogo = userLogo;
-		break;
-	    case MachinePlaysBlack:
-		whiteLogo = userLogo;
-		blackLogo = first.programLogo;
-	  }
-	}
-	DrawLogoOnDC(hdc, leftLogoRect, flipClock ? blackLogo : whiteLogo);
-	DrawLogoOnDC(hdc, rightLogoRect, flipClock ? whiteLogo : blackLogo);
-  }
-
-  if( appData.highlightMoveWithArrow ) {
-    DrawArrowHighlight(hdcmem);
-  }
-
-  DrawCoordsOnDC(hdcmem);
-
-  CopyBoard(lastDrawn, board); /* [HGM] Moved to here from end of routine, */
-                 /* to make sure lastDrawn contains what is actually drawn */
-
-  /* Put the dragged piece back into place and draw it (out of place!) */
-    if (dragged_piece != EmptySquare) {
-    /* [HGM] or restack */
-    if(dragInfo.from.x == BOARD_LEFT-2 )
-                 board[dragInfo.from.y][dragInfo.from.x+1]++;
-    else
-    if(dragInfo.from.x == BOARD_RGHT+1 )
-                 board[dragInfo.from.y][dragInfo.from.x-1]++;
-    board[dragInfo.from.y][dragInfo.from.x] = dragged_piece;
-    x = dragInfo.pos.x - squareSize / 2;
-    y = dragInfo.pos.y - squareSize / 2;
-    DrawPieceOnDC(hdcmem, dragged_piece,
-		  ((int) dragged_piece < (int) BlackPawn), 
-                  (dragInfo.from.y + dragInfo.from.x) % 2, x, y, tmphdc);
-  }   
-  
-  /* Put the animated piece back into place and draw it */
-  if (animInfo.piece != EmptySquare) {
-    board[animInfo.from.y][animInfo.from.x]  = animInfo.piece;
-    x = boardRect.left + animInfo.pos.x;
-    y = boardRect.top + animInfo.pos.y;
-    DrawPieceOnDC(hdcmem, animInfo.piece,
-		  ((int) animInfo.piece < (int) BlackPawn),
-                  (animInfo.from.y + animInfo.from.x) % 2, x, y, tmphdc);
-  }
-
-  /* Release the bufferBitmap by selecting in the old bitmap 
-   * and delete the memory DC
-   */
-  SelectObject(hdcmem, oldBitmap);
-  DeleteDC(hdcmem);
-
-  /* Set clipping on the target DC */
-  if (!fullrepaint) {
-    SelectClipRgn(hdc, clips[0]);
-    for (x = 1; x < num_clips; x++) {
-      if (ExtSelectClipRgn(hdc, clips[x], RGN_OR) == ERROR)
-        abort();   // this should never ever happen!
-    } 
-  }
-
-  /* Copy the new bitmap onto the screen in one go.
-   * This way we avoid any flickering
-   */
-  oldBitmap = SelectObject(tmphdc, bufferBitmap);
-  BitBlt(hdc, boardRect.left, boardRect.top,
-	 boardRect.right - boardRect.left,
-	 boardRect.bottom - boardRect.top,
-	 tmphdc, boardRect.left, boardRect.top, SRCCOPY);
-  if(saveDiagFlag) { 
-    BITMAP b; int i, j=0, m, w, wb, fac=0; char pData[1000000]; 
-    BITMAPINFOHEADER bih; int color[16], nrColors=0;
-
-    GetObject(bufferBitmap, sizeof(b), &b);
-    if(b.bmWidthBytes*b.bmHeight <= 990000) {
-	bih.biSize = sizeof(BITMAPINFOHEADER);
-	bih.biWidth = b.bmWidth;
-	bih.biHeight = b.bmHeight;
-	bih.biPlanes = 1;
-	bih.biBitCount = b.bmBitsPixel;
-	bih.biCompression = 0;
-	bih.biSizeImage = b.bmWidthBytes*b.bmHeight;
-	bih.biXPelsPerMeter = 0;
-	bih.biYPelsPerMeter = 0;
-	bih.biClrUsed = 0;
-	bih.biClrImportant = 0;
-//	fprintf(diagFile, "t=%d\nw=%d\nh=%d\nB=%d\nP=%d\nX=%d\n", 
-//		b.bmType,  b.bmWidth,  b.bmHeight, b.bmWidthBytes,  b.bmPlanes,  b.bmBitsPixel);
-	GetDIBits(tmphdc,bufferBitmap,0,b.bmHeight,pData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
-//	fprintf(diagFile, "%8x\n", (int) pData);
-
-#if 1
-	wb = b.bmWidthBytes;
-	// count colors
-	for(i=0; i<wb*(b.bmHeight - boardRect.top + OUTER_MARGIN)>>2; i++) {
-		int k = ((int*) pData)[i];
-		for(j=0; j<nrColors; j++) if(color[j] == k) break;
-		if(j >= 16) break;
-		color[j] = k;
-		if(j >= nrColors) nrColors = j+1;
-	}
-	if(j<16) { // 16 colors is enough. Compress to 4 bits per pixel
-		INT p = 0;
-		for(i=0; i<b.bmHeight - boardRect.top + OUTER_MARGIN; i++) {
-		    for(w=0; w<(wb>>2); w+=2) {
-			int k = ((int*) pData)[(wb*i>>2) + w];
-			for(j=0; j<nrColors; j++) if(color[j] == k) break;
-			k = ((int*) pData)[(wb*i>>2) + w + 1];
-			for(m=0; m<nrColors; m++) if(color[m] == k) break;
-			pData[p++] = m | j<<4;
-		    }
-		    while(p&3) pData[p++] = 0;
-		}
-		fac = 3;
-		wb = ((wb+31)>>5)<<2;
-	}
-	// write BITMAPFILEHEADER
-	fprintf(diagFile, "BM");
-        fputDW(diagFile, wb*(b.bmHeight - boardRect.top + OUTER_MARGIN)+0x36 + (fac?64:0));
-        fputDW(diagFile, 0);
-        fputDW(diagFile, 0x36 + (fac?64:0));
-	// write BITMAPINFOHEADER
-        fputDW(diagFile, 40);
-        fputDW(diagFile, b.bmWidth);
-        fputDW(diagFile, b.bmHeight - boardRect.top + OUTER_MARGIN);
-	if(fac) fputDW(diagFile, 0x040001);   // planes and bits/pixel
-        else    fputDW(diagFile, 0x200001);   // planes and bits/pixel
-        fputDW(diagFile, 0);
-        fputDW(diagFile, 0);
-        fputDW(diagFile, 0);
-        fputDW(diagFile, 0);
-        fputDW(diagFile, 0);
-        fputDW(diagFile, 0);
-	// write color table
-	if(fac)
-	for(i=0; i<16; i++) fputDW(diagFile, color[i]);
-	// write bitmap data
-	for(i=0; i<wb*(b.bmHeight - boardRect.top + OUTER_MARGIN); i++) 
-		fputc(pData[i], diagFile);
-#endif
-     }
-  }
-
-  SelectObject(tmphdc, oldBitmap);
-
-  /* Massive cleanup */
-  for (x = 0; x < num_clips; x++)
-    DeleteObject(clips[x]);
-
-  DeleteDC(tmphdc);
-  DeleteObject(bufferBitmap);
-
-  if (releaseDC) 
-    ReleaseDC(hwndMain, hdc);
-  
-  if (lastDrawnFlipView != flipView) {
-    if (flipView)
-      CheckMenuItem(GetMenu(hwndMain),IDM_FlipView, MF_BYCOMMAND|MF_CHECKED);
-    else
-      CheckMenuItem(GetMenu(hwndMain),IDM_FlipView, MF_BYCOMMAND|MF_UNCHECKED);
-  }
-
-/*  CopyBoard(lastDrawn, board);*/
-  lastDrawnHighlight = highlightInfo;
-  lastDrawnPremove   = premoveHighlightInfo;
-  lastDrawnFlipView = flipView;
-  lastDrawnValid = 1;
-}
-
-/* [HGM] diag: Save the current board display to the given open file and close the file */
-int
-SaveDiagram(f)
-     FILE *f;
-{
-    saveDiagFlag = 1; diagFile = f;
-    HDCDrawPosition(NULL, TRUE, NULL);
-
-    saveDiagFlag = 0;
-
-//    if(f != NULL) fprintf(f, "Sorry, but this feature is still in preparation\n");
-    
-    fclose(f);
-    return TRUE;
-}
-
-
-/*---------------------------------------------------------------------------*\
-| CLIENT PAINT PROCEDURE
-|   This is the main event-handler for the WM_PAINT message.
-|
-\*---------------------------------------------------------------------------*/
-VOID
-PaintProc(HWND hwnd)
-{
-  HDC         hdc;
-  PAINTSTRUCT ps;
-  HFONT       oldFont;
-
-  if((hdc = BeginPaint(hwnd, &ps))) {
-    if (IsIconic(hwnd)) {
-      DrawIcon(hdc, 2, 2, iconCurrent);
-    } else {
-      if (!appData.monoMode) {
-	SelectPalette(hdc, hPal, FALSE);
-	RealizePalette(hdc);
-      }
-      HDCDrawPosition(hdc, 1, NULL);
-      oldFont =
-	SelectObject(hdc, font[boardSize][MESSAGE_FONT]->hf);
-      ExtTextOut(hdc, messageRect.left, messageRect.top,
-		 ETO_CLIPPED|ETO_OPAQUE,
-		 &messageRect, messageText, strlen(messageText), NULL);
-      SelectObject(hdc, oldFont);
-      DisplayBothClocks();
-    }
-    EndPaint(hwnd,&ps);
-  }
-
-  return;
-}
-
-
-/*
- * If the user selects on a border boundary, return -1; if off the board,
- *   return -2.  Otherwise map the event coordinate to the square.
- * The offset boardRect.left or boardRect.top must already have been
- *   subtracted from x.
- */
-int
-EventToSquare(int x)
-{
-  if (x <= 0)
-    return -2;
-  if (x < lineGap)
-    return -1;
-  x -= lineGap;
-  if ((x % (squareSize + lineGap)) >= squareSize)
-    return -1;
-  x /= (squareSize + lineGap);
-  if (x >= BOARD_SIZE)
-    return -2;
-  return x;
-}
-
-typedef struct {
-  char piece;
-  int command;
-  char* name;
-} DropEnable;
-
-DropEnable dropEnables[] = {
-  { 'P', DP_Pawn, "Pawn" },
-  { 'N', DP_Knight, "Knight" },
-  { 'B', DP_Bishop, "Bishop" },
-  { 'R', DP_Rook, "Rook" },
-  { 'Q', DP_Queen, "Queen" },
-};
-
-VOID
-SetupDropMenu(HMENU hmenu)
-{
-  int i, count, enable;
-  char *p;
-  extern char white_holding[], black_holding[];
-  char item[MSG_SIZ];
-
-  for (i=0; i<sizeof(dropEnables)/sizeof(DropEnable); i++) {
-    p = strchr(gameMode == IcsPlayingWhite ? white_holding : black_holding,
-	       dropEnables[i].piece);
-    count = 0;
-    while (p && *p++ == dropEnables[i].piece) count++;
-    sprintf(item, "%s  %d", dropEnables[i].name, count);
-    enable = count > 0 || !appData.testLegality
-      /*!!temp:*/ || (gameInfo.variant == VariantCrazyhouse
-		      && !appData.icsActive);
-    ModifyMenu(hmenu, dropEnables[i].command,
-	       MF_BYCOMMAND | (enable ? MF_ENABLED : MF_GRAYED) | MF_STRING,
-	       dropEnables[i].command, item);
-  }
-}
-
-/* Event handler for mouse messages */
-VOID
-MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  int x, y;
-  POINT pt;
-  static int recursive = 0;
-  HMENU hmenu;
-//  BOOLEAN needsRedraw = FALSE;
-  BOOLEAN saveAnimate;
-  BOOLEAN forceFullRepaint = IsFullRepaintPreferrable(); /* [AS] */
-  static BOOLEAN sameAgain = FALSE, promotionChoice = FALSE;
-  ChessMove moveType;
-
-  if (recursive) {
-    if (message == WM_MBUTTONUP) {
-      /* Hideous kludge to fool TrackPopupMenu into paying attention
-	 to the middle button: we simulate pressing the left button too!
-	 */
-      PostMessage(hwnd, WM_LBUTTONDOWN, wParam, lParam);
-      PostMessage(hwnd, WM_LBUTTONUP, wParam, lParam);
-    }
-    return;
-  }
-  recursive++;
-  
-  pt.x = LOWORD(lParam);
-  pt.y = HIWORD(lParam);
-  x = EventToSquare(pt.x - boardRect.left);
-  y = EventToSquare(pt.y - boardRect.top);
-  if (!flipView && y >= 0) {
-    y = BOARD_HEIGHT - 1 - y;
-  }
-  if (flipView && x >= 0) {
-    x = BOARD_WIDTH - 1 - x;
-  }
-
-  switch (message) {
-  case WM_LBUTTONDOWN:
-    if(promotionChoice) { // we are waiting for a click to indicate promotion piece
-	promotionChoice = FALSE; // only one chance: if click not OK it is interpreted as cancel
-	if(appData.debugMode) fprintf(debugFP, "promotion click, x=%d, y=%d\n", x, y);
-	if(gameInfo.holdingsWidth && 
-		(WhiteOnMove(currentMove) 
-			? x == BOARD_WIDTH-1 && y < gameInfo.holdingsSize && y > 0
-			: x == 0 && y >= BOARD_HEIGHT - gameInfo.holdingsSize && y < BOARD_HEIGHT-1) ) {
-	    // click in right holdings, for determining promotion piece
-	    ChessSquare p = boards[currentMove][y][x];
-	    if(appData.debugMode) fprintf(debugFP, "square contains %d\n", (int)p);
-	    if(p != EmptySquare) {
-		FinishMove(WhitePromotionQueen, fromX, fromY, toX, toY, ToLower(PieceToChar(p)));
-		fromX = fromY = -1;
-		break;
-	    }
-	}
-	DrawPosition(FALSE, boards[currentMove]);
-	break;
-    }
-    ErrorPopDown();
-    sameAgain = FALSE;
-    if (y == -2) {
-      /* Downclick vertically off board; check if on clock */
-      if (PtInRect((LPRECT) &whiteRect, pt)) {
-        if (gameMode == EditPosition) {
-	  SetWhiteToPlayEvent();
-	} else if (gameMode == IcsPlayingBlack ||
-		   gameMode == MachinePlaysWhite) {
-	  CallFlagEvent();
-        } else if (gameMode == EditGame) {
-          AdjustClock(flipClock, -1);
-        }
-      } else if (PtInRect((LPRECT) &blackRect, pt)) {
-	if (gameMode == EditPosition) {
-	  SetBlackToPlayEvent();
-	} else if (gameMode == IcsPlayingWhite ||
-		   gameMode == MachinePlaysBlack) {
-	  CallFlagEvent();
-        } else if (gameMode == EditGame) {
-          AdjustClock(!flipClock, -1);
-	}
-      }
-      if (!appData.highlightLastMove) {
-        ClearHighlights();
-	DrawPosition((int) (forceFullRepaint || FALSE), NULL);
-      }
-      fromX = fromY = -1;
-      dragInfo.start.x = dragInfo.start.y = -1;
-      dragInfo.from = dragInfo.start;
-      break;
-    } else if (x < 0 || y < 0
-      /* [HGM] block clicks between board and holdings */
-              || x == BOARD_LEFT-1 || x == BOARD_RGHT
-              || (x == BOARD_LEFT-2 && y < BOARD_HEIGHT-gameInfo.holdingsSize)
-              || (x == BOARD_RGHT+1 && y >= gameInfo.holdingsSize)
-	/* EditPosition, empty square, or different color piece;
-	   click-click move is possible */
-                               ) {
-      break;
-    } else if (fromX == x && fromY == y) {
-      /* Downclick on same square again */
-      ClearHighlights();
-      DrawPosition(forceFullRepaint || FALSE, NULL);
-      sameAgain = TRUE;  
-    } else if (fromX != -1 &&
-               x != BOARD_LEFT-2 && x != BOARD_RGHT+1 
-                                                                        ) {
-      /* Downclick on different square. */
-      /* [HGM] if on holdings file, should count as new first click ! */
-      /* [HGM] <sameColor> now always do UserMoveTest(), and check colors there */
-	toX = x;
-	toY = y;
-        /* [HGM] <popupFix> UserMoveEvent requires two calls now,
-           to make sure move is legal before showing promotion popup */
-        moveType = UserMoveTest(fromX, fromY, toX, toY, NULLCHAR);
-	if(moveType == AmbiguousMove) { /* [HGM] Edit-Position move executed */
-		fromX = fromY = -1; 
-		ClearHighlights();
-		DrawPosition(FALSE, boards[currentMove]);
-		break; 
-	} else 
-        if(moveType != ImpossibleMove) {
-	  if(moveType == IllegalMove) {
-		;
-	  } else
-          /* [HGM] We use PromotionToKnight in Shogi to indicate frorced promotion */
-          if (moveType == WhitePromotionKnight || moveType == BlackPromotionKnight ||
-            ((moveType == WhitePromotionQueen || moveType == BlackPromotionQueen) &&
-              appData.alwaysPromoteToQueen)) {
-                  FinishMove(moveType, fromX, fromY, toX, toY, 'q');
-                  if (!appData.highlightLastMove) {
-                      ClearHighlights();
-                      DrawPosition(forceFullRepaint || FALSE, NULL);
-                  }
-          } else
-          if (moveType == WhitePromotionQueen || moveType == BlackPromotionQueen ) {
-                  SetHighlights(fromX, fromY, toX, toY);
-                  DrawPosition(forceFullRepaint || FALSE, NULL);
-                  /* [HGM] <popupFix> Popup calls FinishMove now.
-                     If promotion to Q is legal, all are legal! */
-		  if(gameInfo.variant == VariantSuper || gameInfo.variant == VariantGreat)
-		  { ChessSquare p = boards[currentMove][fromY][fromX], q = boards[currentMove][toY][toX];
-		    // kludge to temporarily execute move on display, without promotng yet
-		    promotionChoice = TRUE;
-		    boards[currentMove][fromY][fromX] = EmptySquare; // move Pawn to 8th rank
-		    boards[currentMove][toY][toX] = p;
-		    DrawPosition(FALSE, boards[currentMove]);
-		    boards[currentMove][fromY][fromX] = p; // take back, but display stays
-		    boards[currentMove][toY][toX] = q;
-		  } else
-                  PromotionPopup(hwnd);
-          } else {       /* not a promotion */
-             if (appData.animate || appData.highlightLastMove) {
-                 SetHighlights(fromX, fromY, toX, toY);
-             } else {
-                 ClearHighlights();
-             }
-             FinishMove(moveType, fromX, fromY, toX, toY, NULLCHAR);
-             if (appData.animate && !appData.highlightLastMove) {
-                  ClearHighlights();
-                  DrawPosition(forceFullRepaint || FALSE, NULL);
-             }
-          }
-          fromX = fromY = -1;
-	  break;
-        }
-        if (gotPremove) {
-	    SetPremoveHighlights(fromX, fromY, toX, toY);
-            DrawPosition(forceFullRepaint || FALSE, NULL);
-	} else ClearHighlights();
-        fromX = fromY = -1;
-        DrawPosition(forceFullRepaint || FALSE, NULL);
-    }
-    /* First downclick, or restart on a square with same color piece */
-    if (!frozen && OKToStartUserMove(x, y)) {
-      fromX = x;
-      fromY = y;
-      dragInfo.lastpos = pt;
-      dragInfo.from.x = fromX;
-      dragInfo.from.y = fromY;
-      dragInfo.start = dragInfo.from;
-      SetCapture(hwndMain);
-    } else {
-      fromX = fromY = -1;
-      dragInfo.start.x = dragInfo.start.y = -1;
-      dragInfo.from = dragInfo.start;
-      DrawPosition(forceFullRepaint || FALSE, NULL); /* [AS] */
-    }
-    break;
-
-  case WM_LBUTTONUP:
-    ReleaseCapture();
-    if (fromX == -1) break;
-    if (x == fromX && y == fromY) {
-      dragInfo.from.x = dragInfo.from.y = -1;
-      /* Upclick on same square */
-      if (sameAgain) {
-	/* Clicked same square twice: abort click-click move */
-	fromX = fromY = -1;
-	gotPremove = 0;
-	ClearPremoveHighlights();
-      } else {
-	/* First square clicked: start click-click move */
-	SetHighlights(fromX, fromY, -1, -1);
-      }
-      DrawPosition(forceFullRepaint || FALSE, NULL);
-    } else if (dragInfo.from.x < 0 || dragInfo.from.y < 0) {
-      /* Errant click; ignore */
-      break;
-    } else {
-      /* Finish drag move. */
-    if (appData.debugMode) {
-        fprintf(debugFP, "release\n");
-    }
-      dragInfo.from.x = dragInfo.from.y = -1;
-      toX = x;
-      toY = y;
-      saveAnimate = appData.animate; /* sorry, Hawk :) */
-      appData.animate = appData.animate && !appData.animateDragging;
-      moveType = UserMoveTest(fromX, fromY, toX, toY, NULLCHAR);
-      if(moveType == AmbiguousMove) { /* [HGM] Edit-Position move executed */
-		fromX = fromY = -1; 
-		ClearHighlights();
-		DrawPosition(FALSE, boards[currentMove]);
-		appData.animate = saveAnimate;
-		break; 
-      } else 
-      if(moveType != ImpossibleMove) {
-          /* [HGM] use move type to determine if move is promotion.
-             Knight is Shogi kludge for mandatory promotion, Queen means choice */
-          if (moveType == WhitePromotionKnight || moveType == BlackPromotionKnight ||
-            ((moveType == WhitePromotionQueen || moveType == BlackPromotionQueen) &&
-              appData.alwaysPromoteToQueen)) 
-               FinishMove(moveType, fromX, fromY, toX, toY, 'q');
-          else 
-          if (moveType == WhitePromotionQueen || moveType == BlackPromotionQueen ) {
-               DrawPosition(forceFullRepaint || FALSE, NULL);
-		  if(gameInfo.variant == VariantSuper || gameInfo.variant == VariantGreat)
-		  { ChessSquare p = boards[currentMove][fromY][fromX], q = boards[currentMove][toY][toX];
-		    // kludge to temporarily execute move on display, wthout promotng yet
-		    promotionChoice = TRUE;
-		    boards[currentMove][fromY][fromX] = EmptySquare; // move Pawn to 8th rank
-		    boards[currentMove][toY][toX] = p;
-		    DrawPosition(FALSE, boards[currentMove]);
-		    boards[currentMove][fromY][fromX] = p; // take back, but display stays
-		    boards[currentMove][toY][toX] = q;
-		    appData.animate = saveAnimate;
-		    break;
-		  } else
-               PromotionPopup(hwnd); /* [HGM] Popup now calls FinishMove */
-          } else {
-	    if(saveAnimate /* ^$!%@#$!$ */  && gameInfo.variant == VariantAtomic 
-			  && (boards[currentMove][toY][toX] != EmptySquare || 
-					moveType == WhiteCapturesEnPassant || 
-					moveType == BlackCapturesEnPassant   ) )
-		AnimateAtomicCapture(fromX, fromY, toX, toY, 20);
-	    FinishMove(moveType, fromX, fromY, toX, toY, NULLCHAR);
-	  }
-      }
-      if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY);
-      appData.animate = saveAnimate;
-      fromX = fromY = -1;
-      if (appData.highlightDragging && !appData.highlightLastMove) {
-	ClearHighlights();
-      }
-      if (appData.animate || appData.animateDragging ||
-	  appData.highlightDragging || gotPremove) {
-	DrawPosition(forceFullRepaint || FALSE, NULL);
-      }
-    }
-    dragInfo.start.x = dragInfo.start.y = -1; 
-    dragInfo.pos = dragInfo.lastpos = dragInfo.start;
-    break;
-
-  case WM_MOUSEMOVE:
-    if ((appData.animateDragging || appData.highlightDragging)
-	&& (wParam & MK_LBUTTON)
-	&& dragInfo.from.x >= 0) 
-    {
-      BOOL full_repaint = FALSE;
-
-      sameAgain = FALSE; /* [HGM] if we drag something around, do keep square selected */
-      if (appData.animateDragging) {
-	dragInfo.pos = pt;
-      }
-      if (appData.highlightDragging) {
-	SetHighlights(fromX, fromY, x, y);
-        if( IsDrawArrowEnabled() && (x < 0 || x >= BOARD_WIDTH || y < 0 || y >= BOARD_HEIGHT) ) {
-            full_repaint = TRUE;
-        }
-      }
-      
-      DrawPosition( full_repaint, NULL);
-      
-      dragInfo.lastpos = dragInfo.pos;
-    }
-    break;
-
-  case WM_MOUSEWHEEL: // [DM]
-    {  static int lastDir = 0; // [HGM] build in some hysteresis to avoid spurious events
-       /* Mouse Wheel is being rolled forward
-        * Play moves forward
-        */
-       if((short)HIWORD(wParam) > 0 && currentMove < forwardMostMove) 
-		{ if(lastDir == 1) ForwardEvent(); else lastDir = 1; } // [HGM] suppress first event in direction
-       /* Mouse Wheel is being rolled backward
-        * Play moves backward
-        */
-       if((short)HIWORD(wParam) < 0 && currentMove > backwardMostMove) 
-		{ if(lastDir == -1) BackwardEvent(); else lastDir = -1; }
-    }
-    break;
-
-  case WM_MBUTTONDOWN:
-  case WM_RBUTTONDOWN:
-    ErrorPopDown();
-    ReleaseCapture();
-    fromX = fromY = -1;
-    dragInfo.pos.x = dragInfo.pos.y = -1;
-    dragInfo.start.x = dragInfo.start.y = -1;
-    dragInfo.from = dragInfo.start;
-    dragInfo.lastpos = dragInfo.pos;
-    if (appData.highlightDragging) {
-      ClearHighlights();
-    }
-    if(y == -2) {
-      /* [HGM] right mouse button in clock area edit-game mode ups clock */
-      if (PtInRect((LPRECT) &whiteRect, pt)) {
-          if (gameMode == EditGame) AdjustClock(flipClock, 1);
-      } else if (PtInRect((LPRECT) &blackRect, pt)) {
-          if (gameMode == EditGame) AdjustClock(!flipClock, 1);
-      }
-    }
-    DrawPosition(TRUE, NULL);
-
-    switch (gameMode) {
-    case EditPosition:
-    case IcsExamining:
-      if (x < 0 || y < 0) break;
-      fromX = x;
-      fromY = y;
-      if (message == WM_MBUTTONDOWN) {
-	buttonCount = 3;  /* even if system didn't think so */
-	if (wParam & MK_SHIFT) 
-	  MenuPopup(hwnd, pt, LoadMenu(hInst, "BlackPieceMenu"), -1);
-	else
-	  MenuPopup(hwnd, pt, LoadMenu(hInst, "WhitePieceMenu"), -1);
-      } else { /* message == WM_RBUTTONDOWN */
-#if 0
-	if (buttonCount == 3) {
-	  if (wParam & MK_SHIFT) 
-	    MenuPopup(hwnd, pt, LoadMenu(hInst, "WhitePieceMenu"), -1);
-	  else
-	    MenuPopup(hwnd, pt, LoadMenu(hInst, "BlackPieceMenu"), -1);
-	} else {
-	  MenuPopup(hwnd, pt, LoadMenu(hInst, "PieceMenu"), -1);
-	}
-#else
-	/* Just have one menu, on the right button.  Windows users don't
-	   think to try the middle one, and sometimes other software steals
-	   it, or it doesn't really exist. */
-        if(gameInfo.variant != VariantShogi)
-            MenuPopup(hwnd, pt, LoadMenu(hInst, "PieceMenu"), -1);
-        else
-            MenuPopup(hwnd, pt, LoadMenu(hInst, "ShogiPieceMenu"), -1);
-#endif
-      }
-      break;
-    case IcsPlayingWhite:
-    case IcsPlayingBlack:
-    case EditGame:
-    case MachinePlaysWhite:
-    case MachinePlaysBlack:
-      if (appData.testLegality &&
-	  gameInfo.variant != VariantBughouse &&
-	  gameInfo.variant != VariantCrazyhouse) break;
-      if (x < 0 || y < 0) break;
-      fromX = x;
-      fromY = y;
-      hmenu = LoadMenu(hInst, "DropPieceMenu");
-      SetupDropMenu(hmenu);
-      MenuPopup(hwnd, pt, hmenu, -1);
-      break;
-    default:
-      break;
-    }
-    break;
-  }
-
-  recursive--;
-}
-
-/* Preprocess messages for buttons in main window */
-LRESULT CALLBACK
-ButtonProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  int id = GetWindowLong(hwnd, GWL_ID);
-  int i, dir;
-
-  for (i=0; i<N_BUTTONS; i++) {
-    if (buttonDesc[i].id == id) break;
-  }
-  if (i == N_BUTTONS) return 0;
-  switch (message) {
-  case WM_KEYDOWN:
-    switch (wParam) {
-    case VK_LEFT:
-    case VK_RIGHT:
-      dir = (wParam == VK_LEFT) ? -1 : 1;
-      SetFocus(buttonDesc[(i + dir + N_BUTTONS) % N_BUTTONS].hwnd);
-      return TRUE;
-    }
-    break;
-  case WM_CHAR:
-    switch (wParam) {
-    case '\r':
-      SendMessage(hwndMain, WM_COMMAND, MAKEWPARAM(buttonDesc[i].id, 0), 0);
-      return TRUE;
-    default:
-      if (appData.icsActive && (isalpha((char)wParam) || wParam == '0')) {
-	// [HGM] movenum: only letters or leading zero should go to ICS input
-        HWND h = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-	if (IsIconic(hwndConsole)) ShowWindow(hwndConsole, SW_RESTORE);
-	SetFocus(h);
-	SendMessage(h, WM_CHAR, wParam, lParam);
-	return TRUE;
-      } else if (isalpha((char)wParam) || isdigit((char)wParam)){
-	PopUpMoveDialog((char)wParam);
-      }
-      break;
-    }
-    break;
-  }
-  return CallWindowProc(buttonDesc[i].wndproc, hwnd, message, wParam, lParam);
-}
-
-/* Process messages for Promotion dialog box */
-LRESULT CALLBACK
-Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char promoChar;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));
-    ShowWindow(GetDlgItem(hDlg, PB_King), 
-      (!appData.testLegality || gameInfo.variant == VariantSuicide ||
-       gameInfo.variant == VariantGiveaway || gameInfo.variant == VariantSuper ) ?
-	       SW_SHOW : SW_HIDE);
-    /* [HGM] Only allow C & A promotions if these pieces are defined */
-    ShowWindow(GetDlgItem(hDlg, PB_Archbishop),
-       ((PieceToChar(WhiteAngel) >= 'A' &&
-         PieceToChar(WhiteAngel) != '~') ||
-        (PieceToChar(BlackAngel) >= 'A' &&
-         PieceToChar(BlackAngel) != '~')   ) ?
-	       SW_SHOW : SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, PB_Chancellor), 
-       ((PieceToChar(WhiteMarshall) >= 'A' &&
-         PieceToChar(WhiteMarshall) != '~') ||
-        (PieceToChar(BlackMarshall) >= 'A' &&
-         PieceToChar(BlackMarshall) != '~')   ) ?
-	       SW_SHOW : SW_HIDE);
-    /* [HGM] Hide B & R button in Shogi, use Q as promote, N as defer */
-    ShowWindow(GetDlgItem(hDlg, PB_Rook),
-       gameInfo.variant != VariantShogi ?
-	       SW_SHOW : SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, PB_Bishop), 
-       gameInfo.variant != VariantShogi ?
-	       SW_SHOW : SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, IDC_Yes), 
-       gameInfo.variant == VariantShogi ?
-	       SW_SHOW : SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, IDC_No), 
-       gameInfo.variant == VariantShogi ?
-	       SW_SHOW : SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, IDC_Centaur), 
-       gameInfo.variant == VariantSuper ?
-	       SW_SHOW : SW_HIDE);
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDCANCEL:
-      EndDialog(hDlg, TRUE); /* Exit the dialog */
-      ClearHighlights();
-      DrawPosition(FALSE, NULL);
-      return TRUE;
-    case PB_King:
-      promoChar = gameInfo.variant == VariantSuper ? PieceToChar(BlackSilver) : PieceToChar(BlackKing);
-      break;
-    case PB_Queen:
-      promoChar = gameInfo.variant == VariantShogi ? '+' : PieceToChar(BlackQueen);
-      break;
-    case PB_Rook:
-      promoChar = PieceToChar(BlackRook);
-      break;
-    case PB_Bishop:
-      promoChar = PieceToChar(BlackBishop);
-      break;
-    case PB_Chancellor:
-      promoChar = PieceToChar(BlackMarshall);
-      break;
-    case PB_Archbishop:
-      promoChar = PieceToChar(BlackAngel);
-      break;
-    case PB_Knight:
-      promoChar = gameInfo.variant == VariantShogi ? '=' : PieceToChar(BlackKnight);
-      break;
-    default:
-      return FALSE;
-    }
-    EndDialog(hDlg, TRUE); /* Exit the dialog */
-    /* [HGM] <popupFix> Call FinishMove rather than UserMoveEvent, as we
-       only show the popup when we are already sure the move is valid or
-       legal. We pass a faulty move type, but the kludge is that FinishMove
-       will figure out it is a promotion from the promoChar. */
-    FinishMove(NormalMove, fromX, fromY, toX, toY, promoChar);
-    if (!appData.highlightLastMove) {
-      ClearHighlights();
-      DrawPosition(FALSE, NULL);
-    }
-    return TRUE;
-  }
-  return FALSE;
-}
-
-/* Pop up promotion dialog */
-VOID
-PromotionPopup(HWND hwnd)
-{
-  FARPROC lpProc;
-
-  lpProc = MakeProcInstance((FARPROC)Promotion, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_PromotionKing),
-    hwnd, (DLGPROC)lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/* Toggle ShowThinking */
-VOID
-ToggleShowThinking()
-{
-  appData.showThinking = !appData.showThinking;
-  ShowThinkingEvent();
-}
-
-VOID
-LoadGameDialog(HWND hwnd, char* title)
-{
-  UINT number = 0;
-  FILE *f;
-  char fileTitle[MSG_SIZ];
-  f = OpenFileDialog(hwnd, "rb", "",
- 	             appData.oldSaveStyle ? "gam" : "pgn",
-		     GAME_FILT,
-		     title, &number, fileTitle, NULL);
-  if (f != NULL) {
-    cmailMsgLoaded = FALSE;
-    if (number == 0) {
-      int error = GameListBuild(f);
-      if (error) {
-        DisplayError("Cannot build game list", error);
-      } else if (!ListEmpty(&gameList) &&
-                 ((ListGame *) gameList.tailPred)->number > 1) {
-	GameListPopUp(f, fileTitle);
-        return;
-      }
-      GameListDestroy();
-      number = 1;
-    }
-    LoadGame(f, number, fileTitle, FALSE);
-  }
-}
-
-VOID
-ChangedConsoleFont()
-{
-  CHARFORMAT cfmt;
-  CHARRANGE tmpsel, sel;
-  MyFont *f = font[boardSize][CONSOLE_FONT];
-  HWND hText = GetDlgItem(hwndConsole, OPT_ConsoleText);
-  HWND hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-  PARAFORMAT paraf;
-
-  cfmt.cbSize = sizeof(CHARFORMAT);
-  cfmt.dwMask = CFM_FACE|CFM_SIZE|CFM_CHARSET;
-  strcpy(cfmt.szFaceName, font[boardSize][CONSOLE_FONT]->mfp.faceName);
-  /* yHeight is expressed in twips.  A twip is 1/20 of a font's point
-   * size.  This was undocumented in the version of MSVC++ that I had
-   * when I wrote the code, but is apparently documented now.
-   */
-  cfmt.yHeight = (int)(f->mfp.pointSize * 20.0 + 0.5);
-  cfmt.bCharSet = f->lf.lfCharSet;
-  cfmt.bPitchAndFamily = f->lf.lfPitchAndFamily;
-  SendMessage(hText, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cfmt); 
-  SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cfmt); 
-  /* Why are the following seemingly needed too? */
-  SendMessage(hText, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM) &cfmt); 
-  SendMessage(hInput, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM) &cfmt); 
-  SendMessage(hText, EM_EXGETSEL, 0, (LPARAM)&sel);
-  tmpsel.cpMin = 0;
-  tmpsel.cpMax = -1; /*999999?*/
-  SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&tmpsel);
-  SendMessage(hText, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cfmt); 
-  /* Trying putting this here too.  It still seems to tickle a RichEdit
-   *  bug: sometimes RichEdit indents the first line of a paragraph too.
-   */
-  paraf.cbSize = sizeof(paraf);
-  paraf.dwMask = PFM_OFFSET | PFM_STARTINDENT;
-  paraf.dxStartIndent = 0;
-  paraf.dxOffset = WRAP_INDENT;
-  SendMessage(hText, EM_SETPARAFORMAT, 0, (LPARAM) &paraf);
-  SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Window Proc for main window
- *
-\*---------------------------------------------------------------------------*/
-
-/* Process messages for main window, etc. */
-LRESULT CALLBACK
-WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  FARPROC lpProc;
-  int wmId, wmEvent;
-  char *defName;
-  FILE *f;
-  UINT number;
-  char fileTitle[MSG_SIZ];
-  char buf[MSG_SIZ];
-  static SnapData sd;
-
-  switch (message) {
-
-  case WM_PAINT: /* message: repaint portion of window */
-    PaintProc(hwnd);
-    break;
-
-  case WM_ERASEBKGND:
-    if (IsIconic(hwnd)) {
-      /* Cheat; change the message */
-      return (DefWindowProc(hwnd, WM_ICONERASEBKGND, wParam, lParam));
-    } else {
-      return (DefWindowProc(hwnd, message, wParam, lParam));
-    }
-    break;
-
-  case WM_LBUTTONDOWN:
-  case WM_MBUTTONDOWN:
-  case WM_RBUTTONDOWN:
-  case WM_LBUTTONUP:
-  case WM_MBUTTONUP:
-  case WM_RBUTTONUP:
-  case WM_MOUSEMOVE:
-  case WM_MOUSEWHEEL:
-    MouseEvent(hwnd, message, wParam, lParam);
-    break;
-
-  JAWS_KB_NAVIGATION
-
-  case WM_CHAR:
-    
-    JAWS_ALT_INTERCEPT
-
-    if (appData.icsActive && (char)wParam > ' ' && !((char)wParam >= '1' && (char)wParam <= '9')) { 
-	// [HGM] movenum: for non-zero digits we always do type-in dialog
-	HWND h = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-	if (IsIconic(hwndConsole)) ShowWindow(hwndConsole, SW_RESTORE);
-	SetFocus(h);
-	SendMessage(h, message, wParam, lParam);
-    } else if(lParam != KF_REPEAT) {
-	if (isalpha((char)wParam) || isdigit((char)wParam)) {
-		PopUpMoveDialog((char)wParam);
-	} else if((char)wParam == 003) CopyGameToClipboard();
-	 else if((char)wParam == 026) PasteGameOrFENFromClipboard();
-    }
-
-    break;
-
-  case WM_PALETTECHANGED:
-    if (hwnd != (HWND)wParam && !appData.monoMode) {
-      int nnew;
-      HDC hdc = GetDC(hwndMain);
-      SelectPalette(hdc, hPal, TRUE);
-      nnew = RealizePalette(hdc);
-      if (nnew > 0) {
-	paletteChanged = TRUE;
-#if 0
-        UpdateColors(hdc);
-#else
-        InvalidateRect(hwnd, &boardRect, FALSE);/*faster!*/
-#endif
-      }
-      ReleaseDC(hwnd, hdc);
-    }
-    break;
-
-  case WM_QUERYNEWPALETTE:
-    if (!appData.monoMode /*&& paletteChanged*/) {
-      int nnew;
-      HDC hdc = GetDC(hwndMain);
-      paletteChanged = FALSE;
-      SelectPalette(hdc, hPal, FALSE);
-      nnew = RealizePalette(hdc);
-      if (nnew > 0) {
-	InvalidateRect(hwnd, &boardRect, FALSE);
-      }
-      ReleaseDC(hwnd, hdc);
-      return TRUE;
-    }
-    return FALSE;
-
-  case WM_COMMAND: /* message: command from application menu */
-    wmId    = LOWORD(wParam);
-    wmEvent = HIWORD(wParam);
-
-    switch (wmId) {
-    case IDM_NewGame:
-      ResetGameEvent();
-      AnalysisPopDown();
-      SAY("new game enter a move to play against the computer with white");
-      break;
-
-    case IDM_NewGameFRC:
-      if( NewGameFRC() == 0 ) {
-        ResetGameEvent();
-        AnalysisPopDown();
-      }
-      break;
-
-    case IDM_NewVariant:
-      NewVariantPopup(hwnd);
-      break;
-
-    case IDM_LoadGame:
-      LoadGameDialog(hwnd, "Load Game from File");
-      break;
-
-    case IDM_LoadNextGame:
-      ReloadGame(1);
-      break;
-
-    case IDM_LoadPrevGame:
-      ReloadGame(-1);
-      break;
-
-    case IDM_ReloadGame:
-      ReloadGame(0);
-      break;
-
-    case IDM_LoadPosition:
-      if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {
-        Reset(FALSE, TRUE);
-      }
-      number = 1;
-      f = OpenFileDialog(hwnd, "rb", "",
-			 appData.oldSaveStyle ? "pos" : "fen",
-			 POSITION_FILT,
-			 "Load Position from File", &number, fileTitle, NULL);
-      if (f != NULL) {
-	LoadPosition(f, number, fileTitle);
-      }
-      break;
-
-    case IDM_LoadNextPosition:
-      ReloadPosition(1);
-      break;
-
-    case IDM_LoadPrevPosition:
-      ReloadPosition(-1);
-      break;
-
-    case IDM_ReloadPosition:
-      ReloadPosition(0);
-      break;
-
-    case IDM_SaveGame:
-      defName = DefaultFileName(appData.oldSaveStyle ? "gam" : "pgn");
-      f = OpenFileDialog(hwnd, "a", defName,
-			 appData.oldSaveStyle ? "gam" : "pgn",
-			 GAME_FILT,
-			 "Save Game to File", NULL, fileTitle, NULL);
-      if (f != NULL) {
-	SaveGame(f, 0, "");
-      }
-      break;
-
-    case IDM_SavePosition:
-      defName = DefaultFileName(appData.oldSaveStyle ? "pos" : "fen");
-      f = OpenFileDialog(hwnd, "a", defName,
-			 appData.oldSaveStyle ? "pos" : "fen",
-			 POSITION_FILT,
-			 "Save Position to File", NULL, fileTitle, NULL);
-      if (f != NULL) {
-	SavePosition(f, 0, "");
-      }
-      break;
-
-    case IDM_SaveDiagram:
-      defName = "diagram";
-      f = OpenFileDialog(hwnd, "wb", defName,
-			 "bmp",
-			 DIAGRAM_FILT,
-			 "Save Diagram to File", NULL, fileTitle, NULL);
-      if (f != NULL) {
-	SaveDiagram(f);
-      }
-      break;
-
-    case IDM_CopyGame:
-      CopyGameToClipboard();
-      break;
-
-    case IDM_PasteGame:
-      PasteGameFromClipboard();
-      break;
-
-    case IDM_CopyGameListToClipboard:
-      CopyGameListToClipboard();
-      break;
-
-    /* [AS] Autodetect FEN or PGN data */
-    case IDM_PasteAny:
-      PasteGameOrFENFromClipboard();
-      break;
-
-    /* [AS] Move history */
-    case IDM_ShowMoveHistory:
-        if( MoveHistoryIsUp() ) {
-            MoveHistoryPopDown();
-        }
-        else {
-            MoveHistoryPopUp();
-        }
-        break;
-
-    /* [AS] Eval graph */
-    case IDM_ShowEvalGraph:
-        if( EvalGraphIsUp() ) {
-            EvalGraphPopDown();
-        }
-        else {
-            EvalGraphPopUp();
-	    SetFocus(hwndMain);
-        }
-        break;
-
-    /* [AS] Engine output */
-    case IDM_ShowEngineOutput:
-        if( EngineOutputIsUp() ) {
-            EngineOutputPopDown();
-        }
-        else {
-            EngineOutputPopUp();
-        }
-        break;
-
-    /* [AS] User adjudication */
-    case IDM_UserAdjudication_White:
-        UserAdjudicationEvent( +1 );
-        break;
-
-    case IDM_UserAdjudication_Black:
-        UserAdjudicationEvent( -1 );
-        break;
-
-    case IDM_UserAdjudication_Draw:
-        UserAdjudicationEvent( 0 );
-        break;
-
-    /* [AS] Game list options dialog */
-    case IDM_GameListOptions:
-      GameListOptions();
-      break;
-
-    case IDM_CopyPosition:
-      CopyFENToClipboard();
-      break;
-
-    case IDM_PastePosition:
-      PasteFENFromClipboard();
-      break;
-
-    case IDM_MailMove:
-      MailMoveEvent();
-      break;
-
-    case IDM_ReloadCMailMsg:
-      Reset(TRUE, TRUE);
-      ReloadCmailMsgEvent(FALSE);
-      break;
-
-    case IDM_Minimize:
-      ShowWindow(hwnd, SW_MINIMIZE);
-      break;
-
-    case IDM_Exit:
-      ExitEvent(0);
-      break;
-
-    case IDM_MachineWhite:
-      MachineWhiteEvent();
-      /*
-       * refresh the tags dialog only if it's visible
-       */
-      if (gameMode == MachinePlaysWhite && IsWindowVisible(editTagsDialog)) {
-	  char *tags;
-	  tags = PGNTags(&gameInfo);
-	  TagsPopUp(tags, CmailMsg());
-	  free(tags);
-      }
-      SAY("computer starts playing white");
-      break;
-
-    case IDM_MachineBlack:
-      MachineBlackEvent();
-      /*
-       * refresh the tags dialog only if it's visible
-       */
-      if (gameMode == MachinePlaysBlack && IsWindowVisible(editTagsDialog)) {
-	  char *tags;
-	  tags = PGNTags(&gameInfo);
-	  TagsPopUp(tags, CmailMsg());
-	  free(tags);
-      }
-      SAY("computer starts playing black");
-      break;
-
-    case IDM_TwoMachines:
-      TwoMachinesEvent();
-      /*
-       * refresh the tags dialog only if it's visible
-       */
-      if (gameMode == TwoMachinesPlay && IsWindowVisible(editTagsDialog)) {
-	  char *tags;
-	  tags = PGNTags(&gameInfo);
-	  TagsPopUp(tags, CmailMsg());
-	  free(tags);
-      }
-      SAY("programs start playing each other");
-      break;
-
-    case IDM_AnalysisMode:
-      if (!first.analysisSupport) {
-        sprintf(buf, "%s does not support analysis", first.tidy);
-        DisplayError(buf, 0);
-      } else {
-	SAY("analyzing current position");
-        /* [DM] icsEngineAnlyze [HGM] Why is this front-end??? */
-        if (appData.icsActive) {
-               if (gameMode != IcsObserving) {
-                       sprintf(buf, "You are not observing a game");
-                       DisplayError(buf, 0);
-                       /* secure check */
-                       if (appData.icsEngineAnalyze) {
-                               if (appData.debugMode) 
-                                       fprintf(debugFP, "Found unexpected active ICS engine analyze \n");
-                               ExitAnalyzeMode();
-                               ModeHighlight();
-                               break;
-                       }
-                       break;
-               } else {
-                       /* if enable, user want disable icsEngineAnalyze */
-                       if (appData.icsEngineAnalyze) {
-                               ExitAnalyzeMode();
-                               ModeHighlight();
-                               break;
-                       }
-                       appData.icsEngineAnalyze = TRUE;
-                       if (appData.debugMode) fprintf(debugFP, "ICS engine analyze starting...\n");
-               }
-        } 
-	if (!appData.showThinking) ToggleShowThinking();
-	AnalyzeModeEvent();
-      }
-      break;
-
-    case IDM_AnalyzeFile:
-      if (!first.analysisSupport) {
-        char buf[MSG_SIZ];
-        sprintf(buf, "%s does not support analysis", first.tidy);
-        DisplayError(buf, 0);
-      } else {
-	if (!appData.showThinking) ToggleShowThinking();
-	AnalyzeFileEvent();
-	LoadGameDialog(hwnd, "Analyze Game from File");
-	AnalysisPeriodicEvent(1);
-      }
-      break;
-
-    case IDM_IcsClient:
-      IcsClientEvent();
-      break;
-
-    case IDM_EditGame:
-      EditGameEvent();
-      SAY("edit game");
-      break;
-
-    case IDM_EditPosition:
-      EditPositionEvent();
-      SAY("to set up a position type a FEN");
-      break;
-
-    case IDM_Training:
-      TrainingEvent();
-      break;
-
-    case IDM_ShowGameList:
-      ShowGameListProc();
-      break;
-
-    case IDM_EditTags:
-      EditTagsProc();
-      break;
-
-    case IDM_EditComment:
-      if (commentDialogUp && editComment) {
-	CommentPopDown();
-      } else {
-	EditCommentEvent();
-      }
-      break;
-
-    case IDM_Pause:
-      PauseEvent();
-      break;
-
-    case IDM_Accept:
-      AcceptEvent();
-      break;
-
-    case IDM_Decline:
-      DeclineEvent();
-      break;
-
-    case IDM_Rematch:
-      RematchEvent();
-      break;
-
-    case IDM_CallFlag:
-      CallFlagEvent();
-      break;
-
-    case IDM_Draw:
-      DrawEvent();
-      break;
-
-    case IDM_Adjourn:
-      AdjournEvent();
-      break;
-
-    case IDM_Abort:
-      AbortEvent();
-      break;
-
-    case IDM_Resign:
-      ResignEvent();
-      break;
-
-    case IDM_StopObserving:
-      StopObservingEvent();
-      break;
-
-    case IDM_StopExamining:
-      StopExaminingEvent();
-      break;
-
-    case IDM_TypeInMove:
-      PopUpMoveDialog('\000');
-      break;
-
-    case IDM_TypeInName:
-      PopUpNameDialog('\000');
-      break;
-
-    case IDM_Backward:
-      BackwardEvent();
-      SetFocus(hwndMain);
-      break;
-
-    JAWS_MENU_ITEMS
-
-    case IDM_Forward:
-      ForwardEvent();
-      SetFocus(hwndMain);
-      break;
-
-    case IDM_ToStart:
-      ToStartEvent();
-      SetFocus(hwndMain);
-      break;
-
-    case IDM_ToEnd:
-      ToEndEvent();
-      SetFocus(hwndMain);
-      break;
-
-    case IDM_Revert:
-      RevertEvent();
-      break;
-
-    case IDM_TruncateGame:
-      TruncateGameEvent();
-      break;
-
-    case IDM_MoveNow:
-      MoveNowEvent();
-      break;
-
-    case IDM_RetractMove:
-      RetractMoveEvent();
-      break;
-
-    case IDM_FlipView:
-      flipView = !flipView;
-      DrawPosition(FALSE, NULL);
-      break;
-
-    case IDM_FlipClock:
-      flipClock = !flipClock;
-      DisplayBothClocks();
-      DrawPosition(FALSE, NULL);
-      break;
-
-    case IDM_GeneralOptions:
-      GeneralOptionsPopup(hwnd);
-      DrawPosition(TRUE, NULL);
-      break;
-
-    case IDM_BoardOptions:
-      BoardOptionsPopup(hwnd);
-      break;
-
-    case IDM_EnginePlayOptions:
-      EnginePlayOptionsPopup(hwnd);
-      break;
-
-    case IDM_Engine1Options:
-      EngineOptionsPopup(hwnd, &first);
-      break;
-
-    case IDM_Engine2Options:
-      EngineOptionsPopup(hwnd, &second);
-      break;
-
-    case IDM_OptionsUCI:
-      UciOptionsPopup(hwnd);
-      break;
-
-    case IDM_IcsOptions:
-      IcsOptionsPopup(hwnd);
-      break;
-
-    case IDM_Fonts:
-      FontsOptionsPopup(hwnd);
-      break;
-
-    case IDM_Sounds:
-      SoundOptionsPopup(hwnd);
-      break;
-
-    case IDM_CommPort:
-      CommPortOptionsPopup(hwnd);
-      break;
-
-    case IDM_LoadOptions:
-      LoadOptionsPopup(hwnd);
-      break;
-
-    case IDM_SaveOptions:
-      SaveOptionsPopup(hwnd);
-      break;
-
-    case IDM_TimeControl:
-      TimeControlOptionsPopup(hwnd);
-      break;
-
-    case IDM_SaveSettings:
-      SaveSettings(settingsFileName);
-      break;
-
-    case IDM_SaveSettingsOnExit:
-      saveSettingsOnExit = !saveSettingsOnExit;
-      (void) CheckMenuItem(GetMenu(hwndMain), IDM_SaveSettingsOnExit,
-			   MF_BYCOMMAND|(saveSettingsOnExit ?
-					 MF_CHECKED : MF_UNCHECKED));
-      break;
-
-    case IDM_Hint:
-      HintEvent();
-      break;
-
-    case IDM_Book:
-      BookEvent();
-      break;
-
-    case IDM_AboutGame:
-      AboutGameEvent();
-      break;
-
-    case IDM_Debug:
-      appData.debugMode = !appData.debugMode;
-      if (appData.debugMode) {
-	char dir[MSG_SIZ];
-	GetCurrentDirectory(MSG_SIZ, dir);
-	SetCurrentDirectory(installDir);
-	debugFP = fopen(appData.nameOfDebugFile, "w");
-        SetCurrentDirectory(dir);
-        setbuf(debugFP, NULL);
-      } else {
-	fclose(debugFP);
-        debugFP = NULL;
-      }
-      break;
-
-    case IDM_HELPCONTENTS:
-      if (!MyHelp (hwnd, "winboard.hlp", HELP_KEY,(DWORD)(LPSTR)"CONTENTS") &&
-	  !HtmlHelp(hwnd, "winboard.chm", 0, 0)	) {
-	  MessageBox (GetFocus(),
-		    "Unable to activate help",
-		    szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);
-      }
-      break;
-
-    case IDM_HELPSEARCH:
-        if (!MyHelp (hwnd, "winboard.hlp", HELP_PARTIALKEY, (DWORD)(LPSTR)"") &&
-	    !HtmlHelp(hwnd, "winboard.chm", 0, 0)	) {
-	MessageBox (GetFocus(),
-		    "Unable to activate help",
-		    szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);
-      }
-      break;
-
-    case IDM_HELPHELP:
-      if(!WinHelp(hwnd, (LPSTR)NULL, HELP_HELPONHELP, 0)) {
-	MessageBox (GetFocus(),
-		    "Unable to activate help",
-		    szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);
-      }
-      break;
-
-    case IDM_ABOUT:
-      lpProc = MakeProcInstance((FARPROC)About, hInst);
-      DialogBox(hInst, 
-	(gameInfo.event && strcmp(gameInfo.event, "Easter Egg Hunt") == 0) ?
-	"AboutBox2" : "AboutBox", hwnd, (DLGPROC)lpProc);
-      FreeProcInstance(lpProc);
-      break;
-
-    case IDM_DirectCommand1:
-      AskQuestionEvent("Direct Command",
-		       "Send to chess program:", "", "1");
-      break;
-    case IDM_DirectCommand2:
-      AskQuestionEvent("Direct Command",
-		       "Send to second chess program:", "", "2");
-      break;
-
-    case EP_WhitePawn:
-      EditPositionMenuEvent(WhitePawn, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteKnight:
-      EditPositionMenuEvent(WhiteKnight, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteBishop:
-      EditPositionMenuEvent(WhiteBishop, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteRook:
-      EditPositionMenuEvent(WhiteRook, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteQueen:
-      EditPositionMenuEvent(WhiteQueen, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteFerz:
-      EditPositionMenuEvent(WhiteFerz, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteWazir:
-      EditPositionMenuEvent(WhiteWazir, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteAlfil:
-      EditPositionMenuEvent(WhiteAlfil, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteCannon:
-      EditPositionMenuEvent(WhiteCannon, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteCardinal:
-      EditPositionMenuEvent(WhiteAngel, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteMarshall:
-      EditPositionMenuEvent(WhiteMarshall, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_WhiteKing:
-      EditPositionMenuEvent(WhiteKing, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackPawn:
-      EditPositionMenuEvent(BlackPawn, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackKnight:
-      EditPositionMenuEvent(BlackKnight, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackBishop:
-      EditPositionMenuEvent(BlackBishop, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackRook:
-      EditPositionMenuEvent(BlackRook, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackQueen:
-      EditPositionMenuEvent(BlackQueen, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackFerz:
-      EditPositionMenuEvent(BlackFerz, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackWazir:
-      EditPositionMenuEvent(BlackWazir, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackAlfil:
-      EditPositionMenuEvent(BlackAlfil, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackCannon:
-      EditPositionMenuEvent(BlackCannon, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackCardinal:
-      EditPositionMenuEvent(BlackAngel, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackMarshall:
-      EditPositionMenuEvent(BlackMarshall, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_BlackKing:
-      EditPositionMenuEvent(BlackKing, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_EmptySquare:
-      EditPositionMenuEvent(EmptySquare, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_ClearBoard:
-      EditPositionMenuEvent(ClearBoard, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_White:
-      EditPositionMenuEvent(WhitePlay, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_Black:
-      EditPositionMenuEvent(BlackPlay, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_Promote:
-      EditPositionMenuEvent(PromotePiece, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case EP_Demote:
-      EditPositionMenuEvent(DemotePiece, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case DP_Pawn:
-      DropMenuEvent(WhitePawn, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case DP_Knight:
-      DropMenuEvent(WhiteKnight, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case DP_Bishop:
-      DropMenuEvent(WhiteBishop, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case DP_Rook:
-      DropMenuEvent(WhiteRook, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    case DP_Queen:
-      DropMenuEvent(WhiteQueen, fromX, fromY);
-      fromX = fromY = -1;
-      break;
-
-    default:
-      return (DefWindowProc(hwnd, message, wParam, lParam));
-    }
-    break;
-
-  case WM_TIMER:
-    switch (wParam) {
-    case CLOCK_TIMER_ID:
-      KillTimer(hwnd, clockTimerEvent);  /* Simulate one-shot timer as in X */
-      clockTimerEvent = 0;
-      DecrementClocks(); /* call into back end */
-      break;
-    case LOAD_GAME_TIMER_ID:
-      KillTimer(hwnd, loadGameTimerEvent); /* Simulate one-shot timer as in X*/
-      loadGameTimerEvent = 0;
-      AutoPlayGameLoop(); /* call into back end */
-      break;
-    case ANALYSIS_TIMER_ID:
-      if ((gameMode == AnalyzeMode || gameMode == AnalyzeFile
-                 || appData.icsEngineAnalyze) && appData.periodicUpdates) {
-	AnalysisPeriodicEvent(0);
-      } else {
-	KillTimer(hwnd, analysisTimerEvent);
-	analysisTimerEvent = 0;
-      }
-      break;
-    case DELAYED_TIMER_ID:
-      KillTimer(hwnd, delayedTimerEvent);
-      delayedTimerEvent = 0;
-      delayedTimerCallback();
-      break;
-    }
-    break;
-
-  case WM_USER_Input:
-    InputEvent(hwnd, message, wParam, lParam);
-    break;
-
-  /* [AS] Also move "attached" child windows */
-  case WM_WINDOWPOSCHANGING:
-
-    if( hwnd == hwndMain && appData.useStickyWindows ) {
-        LPWINDOWPOS lpwp = (LPWINDOWPOS) lParam;
-
-        if( ((lpwp->flags & SWP_NOMOVE) == 0) && ((lpwp->flags & SWP_NOSIZE) != 0) ) {
-            /* Window is moving */
-            RECT rcMain;
-
-//            GetWindowRect( hwnd, &rcMain ); //[HGM] sticky: in XP this returned new position, not old
-	    rcMain.left   = boardX;           //              replace by these 4 lines to reconstruct old rect
-	    rcMain.right  = boardX + winWidth;
-	    rcMain.top    = boardY;
-	    rcMain.bottom = boardY + winHeight;
-            
-            ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, moveHistoryDialog, &wpMoveHistory );
-            ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, evalGraphDialog, &wpEvalGraph );
-            ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, engineOutputDialog, &wpEngineOutput );
-            ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, gameListDialog, &wpGameList );
-            ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, hwndConsole, &wpConsole );
-	    boardX = lpwp->x;
-            boardY = lpwp->y;
-        }
-    }
-    break;
-
-  /* [AS] Snapping */
-  case WM_ENTERSIZEMOVE:
-    if(appData.debugMode) { fprintf(debugFP, "size-move\n"); }
-    if (hwnd == hwndMain) {
-      doingSizing = TRUE;
-      lastSizing = 0;
-    }
-    return OnEnterSizeMove( &sd, hwnd, wParam, lParam );
-    break;
-
-  case WM_SIZING:
-    if(appData.debugMode) { fprintf(debugFP, "sizing\n"); }
-    if (hwnd == hwndMain) {
-      lastSizing = wParam;
-    }
-    break;
-
-  case WM_MOVING:
-    if(appData.debugMode) { fprintf(debugFP, "moving\n"); }
-      return OnMoving( &sd, hwnd, wParam, lParam );
-
-  case WM_EXITSIZEMOVE:
-    if(appData.debugMode) { fprintf(debugFP, "exit size-move, size = %d\n", squareSize); }
-    if (hwnd == hwndMain) {
-      RECT client;
-      doingSizing = FALSE;
-      InvalidateRect(hwnd, &boardRect, FALSE);
-      GetClientRect(hwnd, &client);
-      ResizeBoard(client.right, client.bottom, lastSizing);
-      lastSizing = 0;
-      if(appData.debugMode) { fprintf(debugFP, "square size = %d\n", squareSize); }
-    }
-    return OnExitSizeMove( &sd, hwnd, wParam, lParam );
-    break;
-
-  case WM_DESTROY: /* message: window being destroyed */
-    PostQuitMessage(0);
-    break;
-
-  case WM_CLOSE:
-    if (hwnd == hwndMain) {
-      ExitEvent(0);
-    }
-    break;
-
-  default:	/* Passes it on if unprocessed */
-    return (DefWindowProc(hwnd, message, wParam, lParam));
-  }
-  return 0;
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Misc utility routines
- *
-\*---------------------------------------------------------------------------*/
-
-/*
- * Decent random number generator, at least not as bad as Windows
- * standard rand, which returns a value in the range 0 to 0x7fff.
- */
-unsigned int randstate;
-
-int
-myrandom(void)
-{
-  randstate = randstate * 1664525 + 1013904223;
-  return (int) randstate & 0x7fffffff;
-}
-
-void
-mysrandom(unsigned int seed)
-{
-  randstate = seed;
-}
-
-
-/* 
- * returns TRUE if user selects a different color, FALSE otherwise 
- */
-
-BOOL
-ChangeColor(HWND hwnd, COLORREF *which)
-{
-  static BOOL firstTime = TRUE;
-  static DWORD customColors[16];
-  CHOOSECOLOR cc;
-  COLORREF newcolor;
-  int i;
-  ColorClass ccl;
-
-  if (firstTime) {
-    /* Make initial colors in use available as custom colors */
-    /* Should we put the compiled-in defaults here instead? */
-    i = 0;
-    customColors[i++] = lightSquareColor & 0xffffff;
-    customColors[i++] = darkSquareColor & 0xffffff;
-    customColors[i++] = whitePieceColor & 0xffffff;
-    customColors[i++] = blackPieceColor & 0xffffff;
-    customColors[i++] = highlightSquareColor & 0xffffff;
-    customColors[i++] = premoveHighlightColor & 0xffffff;
-
-    for (ccl = (ColorClass) 0; ccl < NColorClasses && i < 16; ccl++) {
-      customColors[i++] = textAttribs[ccl].color;
-    }
-    while (i < 16) customColors[i++] = RGB(255, 255, 255);
-    firstTime = FALSE;
-  }
-
-  cc.lStructSize = sizeof(cc);
-  cc.hwndOwner = hwnd;
-  cc.hInstance = NULL;
-  cc.rgbResult = (DWORD) (*which & 0xffffff);
-  cc.lpCustColors = (LPDWORD) customColors;
-  cc.Flags = CC_RGBINIT|CC_FULLOPEN;
-
-  if (!ChooseColor(&cc)) return FALSE;
-
-  newcolor = (COLORREF) (0x2000000 | cc.rgbResult);
-  if (newcolor == *which) return FALSE;
-  *which = newcolor;
-  return TRUE;
-
-  /*
-  InitDrawingColors();
-  InvalidateRect(hwnd, &boardRect, FALSE);
-  */
-}
-
-BOOLEAN
-MyLoadSound(MySound *ms)
-{
-  BOOL ok = FALSE;
-  struct stat st;
-  FILE *f;
-
-  if (ms->data) free(ms->data);
-  ms->data = NULL;
-
-  switch (ms->name[0]) {
-  case NULLCHAR:
-    /* Silence */
-    ok = TRUE;
-    break;
-  case '$':
-    /* System sound from Control Panel.  Don't preload here. */
-    ok = TRUE;
-    break;
-  case '!':
-    if (ms->name[1] == NULLCHAR) {
-      /* "!" alone = silence */
-      ok = TRUE;
-    } else {
-      /* Builtin wave resource.  Error if not found. */
-      HANDLE h = FindResource(hInst, ms->name + 1, "WAVE");
-      if (h == NULL) break;
-      ms->data = (void *)LoadResource(hInst, h);
-      if (h == NULL) break;
-      ok = TRUE;
-    }
-    break;
-  default:
-    /* .wav file.  Error if not found. */
-    f = fopen(ms->name, "rb");
-    if (f == NULL) break;
-    if (fstat(fileno(f), &st) < 0) break;
-    ms->data = malloc(st.st_size);
-    if (fread(ms->data, st.st_size, 1, f) < 1) break;
-    fclose(f);
-    ok = TRUE;
-    break;
-  }
-  if (!ok) {
-    char buf[MSG_SIZ];
-    sprintf(buf, "Error loading sound %s", ms->name);
-    DisplayError(buf, GetLastError());
-  }
-  return ok;
-}
-
-BOOLEAN
-MyPlaySound(MySound *ms)
-{
-  BOOLEAN ok = FALSE;
-
-  switch (ms->name[0]) {
-  case NULLCHAR:
-	if(appData.debugMode) fprintf(debugFP, "silence\n");
-    /* Silence */
-    ok = TRUE;
-    break;
-  case '$':
-    /* System sound from Control Panel (deprecated feature).
-       "$" alone or an unset sound name gets default beep (still in use). */
-    if (ms->name[1]) {
-      ok = PlaySound(ms->name + 1, NULL, SND_ALIAS|SND_ASYNC);
-    }
-    if (!ok) ok = MessageBeep(MB_OK);
-    break; 
-  case '!':
-    /* Builtin wave resource, or "!" alone for silence */
-    if (ms->name[1]) {
-      if (ms->data == NULL) return FALSE;
-      ok = PlaySound(ms->data, NULL, SND_MEMORY|SND_ASYNC);
-    } else {
-      ok = TRUE;
-    }
-    break;
-  default:
-    /* .wav file.  Error if not found. */
-    if (ms->data == NULL) return FALSE;
-    ok = PlaySound(ms->data, NULL, SND_MEMORY|SND_ASYNC);
-    break;
-  }
-  /* Don't print an error: this can happen innocently if the sound driver
-     is busy; for instance, if another instance of WinBoard is playing
-     a sound at about the same time. */
-#if 0
-  if (!ok) {
-    char buf[MSG_SIZ];
-    sprintf(buf, "Error playing sound %s", ms->name);
-    DisplayError(buf, GetLastError());
-  }
-#endif
-  return ok;
-}
-
-
-LRESULT CALLBACK
-OldOpenFileHook(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  BOOL ok;
-  OPENFILENAME *ofn;
-  static UINT *number; /* gross that this is static */
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    ofn = (OPENFILENAME *) lParam;
-    if (ofn->Flags & OFN_ENABLETEMPLATE) {
-      number = (UINT *) ofn->lCustData;
-      SendMessage(GetDlgItem(hDlg, edt2), WM_SETTEXT, 0, (LPARAM) "");
-    } else {
-      number = NULL;
-    }
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    return FALSE;  /* Allow for further processing */
-
-  case WM_COMMAND:
-    if ((LOWORD(wParam) == IDOK) && (number != NULL)) {
-      *number = GetDlgItemInt(hDlg, OPT_IndexNumberOld, &ok, FALSE);
-    }
-    return FALSE;  /* Allow for further processing */
-  }
-  return FALSE;
-}
-
-UINT APIENTRY
-OpenFileHook(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
-{
-  static UINT *number;
-  OPENFILENAME *ofname;
-  OFNOTIFY *ofnot;
-  switch (uiMsg) {
-  case WM_INITDIALOG:
-    ofname = (OPENFILENAME *)lParam;
-    number = (UINT *)(ofname->lCustData);
-    break;
-  case WM_NOTIFY:
-    ofnot = (OFNOTIFY *)lParam;
-    if (ofnot->hdr.code == CDN_FILEOK) {
-      *number = GetDlgItemInt(hdlg, OPT_IndexNumber, NULL, FALSE);
-    }
-    break;
-  }
-  return 0;
-}
-
-
-FILE *
-OpenFileDialog(HWND hwnd, char *write, char *defName, char *defExt, // [HGM] diag: type of 'write' now string
-	       char *nameFilt, char *dlgTitle, UINT *number,
-	       char fileTitle[MSG_SIZ], char fileName[MSG_SIZ])
-{
-  OPENFILENAME openFileName;
-  char buf1[MSG_SIZ];
-  FILE *f;
-
-  if (fileName == NULL) fileName = buf1;
-  if (defName == NULL) {
-    strcpy(fileName, "*.");
-    strcat(fileName, defExt);
-  } else {
-    strcpy(fileName, defName);
-  }
-  if (fileTitle) strcpy(fileTitle, "");
-  if (number) *number = 0;
-
-  openFileName.lStructSize       = sizeof(OPENFILENAME);
-  openFileName.hwndOwner         = hwnd;
-  openFileName.hInstance         = (HANDLE) hInst;
-  openFileName.lpstrFilter       = nameFilt;
-  openFileName.lpstrCustomFilter = (LPSTR) NULL;
-  openFileName.nMaxCustFilter    = 0L;
-  openFileName.nFilterIndex      = 1L;
-  openFileName.lpstrFile         = fileName;
-  openFileName.nMaxFile          = MSG_SIZ;
-  openFileName.lpstrFileTitle    = fileTitle;
-  openFileName.nMaxFileTitle     = fileTitle ? MSG_SIZ : 0;
-  openFileName.lpstrInitialDir   = NULL;
-  openFileName.lpstrTitle        = dlgTitle;
-  openFileName.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY 
-    | (write[0] != 'r' ? 0 : OFN_FILEMUSTEXIST) 
-    | (number ? OFN_ENABLETEMPLATE | OFN_ENABLEHOOK: 0)
-    | (oldDialog ? 0 : OFN_EXPLORER);
-  openFileName.nFileOffset       = 0;
-  openFileName.nFileExtension    = 0;
-  openFileName.lpstrDefExt       = defExt;
-  openFileName.lCustData         = (LONG) number;
-  openFileName.lpfnHook          = oldDialog ?
-    (LPOFNHOOKPROC) OldOpenFileHook : (LPOFNHOOKPROC) OpenFileHook;
-  openFileName.lpTemplateName    = (LPSTR)(oldDialog ? 1536 : DLG_IndexNumber);
-
-  if (write[0] != 'r' ? GetSaveFileName(&openFileName) : 
-                        GetOpenFileName(&openFileName)) {
-    /* open the file */
-    f = fopen(openFileName.lpstrFile, write);
-    if (f == NULL) {
-      MessageBox(hwnd, "File open failed", NULL,
-		 MB_OK|MB_ICONEXCLAMATION);
-      return NULL;
-    }
-  } else {
-    int err = CommDlgExtendedError();
-    if (err != 0) DisplayError("Internal error in file dialog box", err);
-    return FALSE;
-  }
-  return f;
-}
-
-
-
-VOID APIENTRY
-MenuPopup(HWND hwnd, POINT pt, HMENU hmenu, UINT def)
-{
-  HMENU hmenuTrackPopup;	/* floating pop-up menu  */
-
-  /*
-   * Get the first pop-up menu in the menu template. This is the
-   * menu that TrackPopupMenu displays.
-   */
-  hmenuTrackPopup = GetSubMenu(hmenu, 0);
-
-  SetMenuDefaultItem(hmenuTrackPopup, def, FALSE);
-
-  /*
-   * TrackPopup uses screen coordinates, so convert the
-   * coordinates of the mouse click to screen coordinates.
-   */
-  ClientToScreen(hwnd, (LPPOINT) &pt);
-
-  /* Draw and track the floating pop-up menu. */
-  TrackPopupMenu(hmenuTrackPopup, TPM_CENTERALIGN | TPM_RIGHTBUTTON,
-		 pt.x, pt.y, 0, hwnd, NULL);
-
-  /* Destroy the menu.*/
-  DestroyMenu(hmenu);
-}
-   
-typedef struct {
-  HWND hDlg, hText;
-  int sizeX, sizeY, newSizeX, newSizeY;
-  HDWP hdwp;
-} ResizeEditPlusButtonsClosure;
-
-BOOL CALLBACK
-ResizeEditPlusButtonsCallback(HWND hChild, LPARAM lparam)
-{
-  ResizeEditPlusButtonsClosure *cl = (ResizeEditPlusButtonsClosure *)lparam;
-  RECT rect;
-  POINT pt;
-
-  if (hChild == cl->hText) return TRUE;
-  GetWindowRect(hChild, &rect); /* gives screen coords */
-  pt.x = rect.left + (cl->newSizeX - cl->sizeX)/2;
-  pt.y = rect.top + cl->newSizeY - cl->sizeY;
-  ScreenToClient(cl->hDlg, &pt);
-  cl->hdwp = DeferWindowPos(cl->hdwp, hChild, NULL, 
-    pt.x, pt.y, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);
-  return TRUE;
-}
-
-/* Resize a dialog that has a (rich) edit field filling most of
-   the top, with a row of buttons below */
-VOID
-ResizeEditPlusButtons(HWND hDlg, HWND hText, int sizeX, int sizeY, int newSizeX, int newSizeY)
-{
-  RECT rectText;
-  int newTextHeight, newTextWidth;
-  ResizeEditPlusButtonsClosure cl;
-  
-  /*if (IsIconic(hDlg)) return;*/
-  if (newSizeX == sizeX && newSizeY == sizeY) return;
-  
-  cl.hdwp = BeginDeferWindowPos(8);
-
-  GetWindowRect(hText, &rectText); /* gives screen coords */
-  newTextWidth = rectText.right - rectText.left + newSizeX - sizeX;
-  newTextHeight = rectText.bottom - rectText.top + newSizeY - sizeY;
-  if (newTextHeight < 0) {
-    newSizeY += -newTextHeight;
-    newTextHeight = 0;
-  }
-  cl.hdwp = DeferWindowPos(cl.hdwp, hText, NULL, 0, 0, 
-    newTextWidth, newTextHeight, SWP_NOZORDER|SWP_NOMOVE);
-
-  cl.hDlg = hDlg;
-  cl.hText = hText;
-  cl.sizeX = sizeX;
-  cl.sizeY = sizeY;
-  cl.newSizeX = newSizeX;
-  cl.newSizeY = newSizeY;
-  EnumChildWindows(hDlg, ResizeEditPlusButtonsCallback, (LPARAM)&cl);
-
-  EndDeferWindowPos(cl.hdwp);
-}
-
-BOOL CenterWindowEx(HWND hwndChild, HWND hwndParent, int mode)
-{
-    RECT    rChild, rParent;
-    int     wChild, hChild, wParent, hParent;
-    int     wScreen, hScreen, xNew, yNew;
-    HDC     hdc;
-
-    /* Get the Height and Width of the child window */
-    GetWindowRect (hwndChild, &rChild);
-    wChild = rChild.right - rChild.left;
-    hChild = rChild.bottom - rChild.top;
-
-    /* Get the Height and Width of the parent window */
-    GetWindowRect (hwndParent, &rParent);
-    wParent = rParent.right - rParent.left;
-    hParent = rParent.bottom - rParent.top;
-
-    /* Get the display limits */
-    hdc = GetDC (hwndChild);
-    wScreen = GetDeviceCaps (hdc, HORZRES);
-    hScreen = GetDeviceCaps (hdc, VERTRES);
-    ReleaseDC(hwndChild, hdc);
-
-    /* Calculate new X position, then adjust for screen */
-    xNew = rParent.left + ((wParent - wChild) /2);
-    if (xNew < 0) {
-	xNew = 0;
-    } else if ((xNew+wChild) > wScreen) {
-	xNew = wScreen - wChild;
-    }
-
-    /* Calculate new Y position, then adjust for screen */
-    if( mode == 0 ) {
-        yNew = rParent.top  + ((hParent - hChild) /2);
-    }
-    else {
-        yNew = rParent.top + GetSystemMetrics( SM_CYCAPTION ) * 2 / 3;
-    }
-
-    if (yNew < 0) {
-	yNew = 0;
-    } else if ((yNew+hChild) > hScreen) {
-	yNew = hScreen - hChild;
-    }
-
-    /* Set it, and return */
-    return SetWindowPos (hwndChild, NULL,
-			 xNew, yNew, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
-}
-
-/* Center one window over another */
-BOOL CenterWindow (HWND hwndChild, HWND hwndParent)
-{
-    return CenterWindowEx( hwndChild, hwndParent, 0 );
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Startup Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-void
-InitComboStrings(HANDLE hwndCombo, char **cd)
-{
-  SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0);
-
-  while (*cd != NULL) {
-    SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) *cd);
-    cd++;
-  }
-}
-
-void
-InitComboStringsFromOption(HANDLE hwndCombo, char *str)
-{
-  char buf1[ARG_MAX];
-  int len;
-
-  if (str[0] == '@') {
-    FILE* f = fopen(str + 1, "r");
-    if (f == NULL) {
-      DisplayFatalError(str + 1, errno, 2);
-      return;
-    }
-    len = fread(buf1, 1, sizeof(buf1)-1, f);
-    fclose(f);
-    buf1[len] = NULLCHAR;
-    str = buf1;
-  }
-
-  SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0);
-
-  for (;;) {
-    char buf[MSG_SIZ];
-    char *end = strchr(str, '\n');
-    if (end == NULL) return;
-    memcpy(buf, str, end - str);
-    buf[end - str] = NULLCHAR;
-    SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) buf);
-    str = end + 1;
-  }
-}
-
-void
-SetStartupDialogEnables(HWND hDlg)
-{
-  EnableWindow(GetDlgItem(hDlg, OPT_ChessEngineName),
-    IsDlgButtonChecked(hDlg, OPT_ChessEngine) ||
-    (appData.zippyPlay && IsDlgButtonChecked(hDlg, OPT_ChessServer)));
-  EnableWindow(GetDlgItem(hDlg, OPT_SecondChessEngineName),
-    IsDlgButtonChecked(hDlg, OPT_ChessEngine));
-  EnableWindow(GetDlgItem(hDlg, OPT_ChessServerName),
-    IsDlgButtonChecked(hDlg, OPT_ChessServer));
-  EnableWindow(GetDlgItem(hDlg, OPT_AdditionalOptions),
-    IsDlgButtonChecked(hDlg, OPT_AnyAdditional));
-  EnableWindow(GetDlgItem(hDlg, IDOK),
-    IsDlgButtonChecked(hDlg, OPT_ChessEngine) ||
-    IsDlgButtonChecked(hDlg, OPT_ChessServer) ||
-    IsDlgButtonChecked(hDlg, OPT_View));
-}
-
-char *
-QuoteForFilename(char *filename)
-{
-  int dquote, space;
-  dquote = strchr(filename, '"') != NULL;
-  space = strchr(filename, ' ') != NULL;
-  if (dquote || space) {
-    if (dquote) {
-      return "'";
-    } else {
-      return "\"";
-    }
-  } else {
-    return "";
-  }
-}
-
-VOID
-InitEngineBox(HWND hDlg, HWND hwndCombo, char* nthcp, char* nthd, char* nthdir, char *nthnames)
-{
-  char buf[MSG_SIZ];
-  char *q;
-
-  InitComboStringsFromOption(hwndCombo, nthnames);
-  q = QuoteForFilename(nthcp);
-  sprintf(buf, "%s%s%s", q, nthcp, q);
-  if (*nthdir != NULLCHAR) {
-    q = QuoteForFilename(nthdir);
-    sprintf(buf + strlen(buf), " /%s=%s%s%s", nthd, q, nthdir, q);
-  }
-  if (*nthcp == NULLCHAR) {
-    SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0);
-  } else if (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) buf) == CB_ERR) {
-    SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0);
-    SendMessage(hwndCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) buf);
-  }
-}
-
-LRESULT CALLBACK
-StartupDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char buf[MSG_SIZ];
-  HANDLE hwndCombo;
-  char *p;
-
-  switch (message) {
-  case WM_INITDIALOG:
-    /* Center the dialog */
-    CenterWindow (hDlg, GetDesktopWindow());
-    /* Initialize the dialog items */
-    InitEngineBox(hDlg, GetDlgItem(hDlg, OPT_ChessEngineName),
-	          appData.firstChessProgram, "fd", appData.firstDirectory,
-		  firstChessProgramNames);
-    InitEngineBox(hDlg, GetDlgItem(hDlg, OPT_SecondChessEngineName),
-	          appData.secondChessProgram, "sd", appData.secondDirectory,
-		  secondChessProgramNames);
-    hwndCombo = GetDlgItem(hDlg, OPT_ChessServerName);
-    InitComboStringsFromOption(hwndCombo, icsNames);    
-    sprintf(buf, "%s /icsport=%s", appData.icsHost, appData.icsPort);
-    if (*appData.icsHelper != NULLCHAR) {
-      char *q = QuoteForFilename(appData.icsHelper);
-      sprintf(buf + strlen(buf), " /icshelper=%s%s%s", q, appData.icsHelper, q);
-    }
-    if (*appData.icsHost == NULLCHAR) {
-      SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0);
-      /*SendMessage(hwndCombo, CB_SHOWDROPDOWN, (WPARAM) TRUE, (LPARAM) 0); !!too soon */
-    } else if (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) buf) == CB_ERR) {
-      SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0);
-      SendMessage(hwndCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) buf);
-    }
-
-    if (appData.icsActive) {
-      CheckDlgButton(hDlg, OPT_ChessServer, BST_CHECKED);
-    }
-    else if (appData.noChessProgram) {
-      CheckDlgButton(hDlg, OPT_View, BST_CHECKED);
-    }
-    else {
-      CheckDlgButton(hDlg, OPT_ChessEngine, BST_CHECKED);
-    }
-
-    SetStartupDialogEnables(hDlg);
-    return TRUE;
-
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      if (IsDlgButtonChecked(hDlg, OPT_ChessEngine)) {
-        strcpy(buf, "/fcp=");
-	GetDlgItemText(hDlg, OPT_ChessEngineName, buf + strlen(buf), sizeof(buf) - strlen(buf));
-        p = buf;
-	ParseArgs(StringGet, &p);
-        strcpy(buf, "/scp=");
-	GetDlgItemText(hDlg, OPT_SecondChessEngineName, buf + strlen(buf), sizeof(buf) - strlen(buf));
-        p = buf;
-	ParseArgs(StringGet, &p);
-	appData.noChessProgram = FALSE;
-	appData.icsActive = FALSE;
-      } else if (IsDlgButtonChecked(hDlg, OPT_ChessServer)) {
-        strcpy(buf, "/ics /icshost=");
-	GetDlgItemText(hDlg, OPT_ChessServerName, buf + strlen(buf), sizeof(buf) - strlen(buf));
-        p = buf;
-	ParseArgs(StringGet, &p);
-	if (appData.zippyPlay) {
-	  strcpy(buf, "/fcp=");
-  	  GetDlgItemText(hDlg, OPT_ChessEngineName, buf + strlen(buf), sizeof(buf) - strlen(buf));
-	  p = buf;
-	  ParseArgs(StringGet, &p);
-	}
-      } else if (IsDlgButtonChecked(hDlg, OPT_View)) {
-	appData.noChessProgram = TRUE;
-	appData.icsActive = FALSE;
-      } else {
-	MessageBox(hDlg, "Choose an option, or cancel to exit",
-		   "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	return TRUE;
-      }
-      if (IsDlgButtonChecked(hDlg, OPT_AnyAdditional)) {
-	GetDlgItemText(hDlg, OPT_AdditionalOptions, buf, sizeof(buf));
-	p = buf;
-	ParseArgs(StringGet, &p);
-      }
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      ExitEvent(0);
-      return TRUE;
-
-    case IDM_HELPCONTENTS:
-      if (!WinHelp (hDlg, "winboard.hlp", HELP_KEY,(DWORD)(LPSTR)"CONTENTS")) {
-	MessageBox (GetFocus(),
-		    "Unable to activate help",
-		    szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);
-      }
-      break;
-
-    default:
-      SetStartupDialogEnables(hDlg);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * About box dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-/* Process messages for "About" dialog box */
-LRESULT CALLBACK
-About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    SetDlgItemText(hDlg, ABOUTBOX_Version, programVersion);
-    JAWS_COPYRIGHT
-    return (TRUE);
-
-  case WM_COMMAND: /* message: received a command */
-    if (LOWORD(wParam) == IDOK /* "OK" box selected? */
-	|| LOWORD(wParam) == IDCANCEL) { /* System menu close command? */
-      EndDialog(hDlg, TRUE); /* Exit the dialog */
-      return (TRUE);
-    }
-    break;
-  }
-  return (FALSE);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Comment Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-LRESULT CALLBACK
-CommentDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static HANDLE hwndText = NULL;
-  int len, newSizeX, newSizeY, flags;
-  static int sizeX, sizeY;
-  char *str;
-  RECT rect;
-  MINMAXINFO *mmi;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Initialize the dialog items */
-    hwndText = GetDlgItem(hDlg, OPT_CommentText);
-    SetDlgItemText(hDlg, OPT_CommentText, commentText);
-    EnableWindow(GetDlgItem(hDlg, OPT_CancelComment), editComment);
-    EnableWindow(GetDlgItem(hDlg, OPT_ClearComment), editComment);
-    EnableWindow(GetDlgItem(hDlg, OPT_EditComment), !editComment);
-    SendMessage(hwndText, EM_SETREADONLY, !editComment, 0);
-    SetWindowText(hDlg, commentTitle);
-    if (editComment) {
-      SetFocus(hwndText);
-    } else {
-      SetFocus(GetDlgItem(hDlg, IDOK));
-    }
-    SendMessage(GetDlgItem(hDlg, OPT_CommentText),
-		WM_SETFONT, (WPARAM)font[boardSize][COMMENT_FONT]->hf,
-		MAKELPARAM(FALSE, 0));
-    /* Size and position the dialog */
-    if (!commentDialog) {
-      commentDialog = hDlg;
-      flags = SWP_NOZORDER;
-      GetClientRect(hDlg, &rect);
-      sizeX = rect.right;
-      sizeY = rect.bottom;
-      if (commentX != CW_USEDEFAULT && commentY != CW_USEDEFAULT &&
-	  commentW != CW_USEDEFAULT && commentH != CW_USEDEFAULT) {
-	WINDOWPLACEMENT wp;
-	EnsureOnScreen(&commentX, &commentY, 0, 0);
-	wp.length = sizeof(WINDOWPLACEMENT);
-	wp.flags = 0;
-	wp.showCmd = SW_SHOW;
-	wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;
-	wp.rcNormalPosition.left = commentX;
-	wp.rcNormalPosition.right = commentX + commentW;
-	wp.rcNormalPosition.top = commentY;
-	wp.rcNormalPosition.bottom = commentY + commentH;
-	SetWindowPlacement(hDlg, &wp);
-
-	GetClientRect(hDlg, &rect);
-	newSizeX = rect.right;
-	newSizeY = rect.bottom;
-        ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY,
-			      newSizeX, newSizeY);
-	sizeX = newSizeX;
-	sizeY = newSizeY;
-      }
-    }
-    return FALSE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      if (editComment) {
-	char *p, *q;
-	/* Read changed options from the dialog box */
-	hwndText = GetDlgItem(hDlg, OPT_CommentText);
-	len = GetWindowTextLength(hwndText);
-	str = (char *) malloc(len + 1);
-	GetWindowText(hwndText, str, len + 1);
-	p = q = str;
-	while (*q) {
-	  if (*q == '\r')
-	    q++;
-	  else
-	    *p++ = *q++;
-	}
-	*p = NULLCHAR;
-	ReplaceComment(commentIndex, str);
-	free(str);
-      }
-      CommentPopDown();
-      return TRUE;
-
-    case IDCANCEL:
-    case OPT_CancelComment:
-      CommentPopDown();
-      return TRUE;
-
-    case OPT_ClearComment:
-      SetDlgItemText(hDlg, OPT_CommentText, "");
-      break;
-
-    case OPT_EditComment:
-      EditCommentEvent();
-      return TRUE;
-
-    default:
-      break;
-    }
-    break;
-
-  case WM_SIZE:
-    newSizeX = LOWORD(lParam);
-    newSizeY = HIWORD(lParam);
-    ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY);
-    sizeX = newSizeX;
-    sizeY = newSizeY;
-    break;
-
-  case WM_GETMINMAXINFO:
-    /* Prevent resizing window too small */
-    mmi = (MINMAXINFO *) lParam;
-    mmi->ptMinTrackSize.x = 100;
-    mmi->ptMinTrackSize.y = 100;
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-EitherCommentPopUp(int index, char *title, char *str, BOOLEAN edit)
-{
-  FARPROC lpProc;
-  char *p, *q;
-
-  CheckMenuItem(GetMenu(hwndMain), IDM_EditComment, edit ? MF_CHECKED : MF_UNCHECKED);
-
-  if (str == NULL) str = "";
-  p = (char *) malloc(2 * strlen(str) + 2);
-  q = p;
-  while (*str) {
-    if (*str == '\n') *q++ = '\r';
-    *q++ = *str++;
-  }
-  *q = NULLCHAR;
-  if (commentText != NULL) free(commentText);
-
-  commentIndex = index;
-  commentTitle = title;
-  commentText = p;
-  editComment = edit;
-
-  if (commentDialog) {
-    SendMessage(commentDialog, WM_INITDIALOG, 0, 0);
-    if (!commentDialogUp) ShowWindow(commentDialog, SW_SHOW);
-  } else {
-    lpProc = MakeProcInstance((FARPROC)CommentDialog, hInst);
-    CreateDialog(hInst, MAKEINTRESOURCE(DLG_EditComment),
-		 hwndMain, (DLGPROC)lpProc);
-    FreeProcInstance(lpProc);
-  }
-  commentDialogUp = TRUE;
-}
-
-
-/*---------------------------------------------------------------------------*\
- *
- * Type-in move dialog functions
- * 
-\*---------------------------------------------------------------------------*/
-
-LRESULT CALLBACK
-TypeInMoveDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char move[MSG_SIZ];
-  HWND hInput;
-  ChessMove moveType;
-  int fromX, fromY, toX, toY;
-  char promoChar;
-
-  switch (message) {
-  case WM_INITDIALOG:
-    move[0] = (char) lParam;
-    move[1] = NULLCHAR;
-    CenterWindowEx(hDlg, GetWindow(hDlg, GW_OWNER), 1 );
-    hInput = GetDlgItem(hDlg, OPT_Move);
-    SetWindowText(hInput, move);
-    SetFocus(hInput);
-    SendMessage(hInput, EM_SETSEL, (WPARAM)9999, (LPARAM)9999);
-    return FALSE;
-
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      GetDlgItemText(hDlg, OPT_Move, move, sizeof(move));
-      { int n; Board board;
-	// [HGM] FENedit
-	if(gameMode == EditPosition && ParseFEN(board, &n, move) ) {
-		EditPositionPasteFEN(move);
-		EndDialog(hDlg, TRUE);
-		return TRUE;
-	}
-	// [HGM] movenum: allow move number to be typed in any mode
-	if(sscanf(move, "%d", &n) == 1 && n != 0 ) {
-	  currentMove = 2*n-1;
-	  if(currentMove > forwardMostMove)  currentMove = forwardMostMove;
-	  if(currentMove < backwardMostMove) currentMove = backwardMostMove;
-	  EndDialog(hDlg, TRUE);
-	  DrawPosition(TRUE, boards[currentMove]);
-	  if(currentMove > backwardMostMove) DisplayMove(currentMove - 1);
-	  else DisplayMessage("", "");
-	  return TRUE;
-	}
-      }
-      if (gameMode != EditGame && currentMove != forwardMostMove && 
-	gameMode != Training) {
-	DisplayMoveError("Displayed move is not current");
-      } else {
-//	GetDlgItemText(hDlg, OPT_Move, move, sizeof(move)); // moved upstream
-	int ok = ParseOneMove(move, gameMode == EditPosition ? blackPlaysFirst : currentMove, 
-	  &moveType, &fromX, &fromY, &toX, &toY, &promoChar);
-	if(!ok && move[0] >= 'a') { move[0] += 'A' - 'a'; ok = 2; } // [HGM] try also capitalized
-	if (ok==1 || ok && ParseOneMove(move, gameMode == EditPosition ? blackPlaysFirst : currentMove, 
-	  &moveType, &fromX, &fromY, &toX, &toY, &promoChar)) {
-	  if (gameMode != Training)
-	      forwardMostMove = currentMove;
-	  UserMoveEvent(fromX, fromY, toX, toY, promoChar);	
-	} else {
-	  DisplayMoveError("Could not parse move");
-	}
-      }
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-    default:
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-PopUpMoveDialog(char firstchar)
-{
-    FARPROC lpProc;
-    
-    if ((gameMode == BeginningOfGame && !appData.icsActive) || 
-        gameMode == MachinePlaysWhite || gameMode == MachinePlaysBlack ||
-	gameMode == AnalyzeMode || gameMode == EditGame || 
-	gameMode == EditPosition || gameMode == IcsExamining ||
-	gameMode == IcsPlayingWhite || gameMode == IcsPlayingBlack ||
-	isdigit(firstchar) && // [HGM] movenum: allow typing in of move nr in 'passive' modes
-		( gameMode == AnalyzeFile || gameMode == PlayFromGameFile ||
-		  gameMode == IcsObserving || gameMode == TwoMachinesPlay    ) ||
-	gameMode == Training) {
-      lpProc = MakeProcInstance((FARPROC)TypeInMoveDialog, hInst);
-      DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_TypeInMove),
-	hwndMain, (DLGPROC)lpProc, (LPARAM)firstchar);
-      FreeProcInstance(lpProc);
-    }
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Type-in name dialog functions
- * 
-\*---------------------------------------------------------------------------*/
-
-LRESULT CALLBACK
-TypeInNameDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char move[MSG_SIZ];
-  HWND hInput;
-
-  switch (message) {
-  case WM_INITDIALOG:
-    move[0] = (char) lParam;
-    move[1] = NULLCHAR;
-    CenterWindowEx(hDlg, GetWindow(hDlg, GW_OWNER), 1 );
-    hInput = GetDlgItem(hDlg, OPT_Name);
-    SetWindowText(hInput, move);
-    SetFocus(hInput);
-    SendMessage(hInput, EM_SETSEL, (WPARAM)9999, (LPARAM)9999);
-    return FALSE;
-
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      GetDlgItemText(hDlg, OPT_Name, move, sizeof(move));
-      appData.userName = strdup(move);
-      SetUserLogo();
-
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-    default:
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-PopUpNameDialog(char firstchar)
-{
-    FARPROC lpProc;
-    
-      lpProc = MakeProcInstance((FARPROC)TypeInNameDialog, hInst);
-      DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_TypeInName),
-	hwndMain, (DLGPROC)lpProc, (LPARAM)firstchar);
-      FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- *  Error dialogs
- * 
-\*---------------------------------------------------------------------------*/
-
-/* Nonmodal error box */
-LRESULT CALLBACK ErrorDialog(HWND hDlg, UINT message,
-			     WPARAM wParam, LPARAM lParam);
-
-VOID
-ErrorPopUp(char *title, char *content)
-{
-  FARPROC lpProc;
-  char *p, *q;
-  BOOLEAN modal = hwndMain == NULL;
-
-  p = content;
-  q = errorMessage;
-  while (*p) {
-    if (*p == '\n') {
-      if (modal) {
-	*q++ = ' ';
-	p++;
-      } else {
-	*q++ = '\r';
-	*q++ = *p++;
-      }
-    } else {
-      *q++ = *p++;
-    }
-  }
-  *q = NULLCHAR;
-  strncpy(errorTitle, title, sizeof(errorTitle));
-  errorTitle[sizeof(errorTitle) - 1] = '\0';
-  
-  if (modal) {
-    MessageBox(NULL, errorMessage, errorTitle, MB_OK|MB_ICONEXCLAMATION);
-  } else {
-    lpProc = MakeProcInstance((FARPROC)ErrorDialog, hInst);
-    CreateDialog(hInst, MAKEINTRESOURCE(DLG_Error),
-		 hwndMain, (DLGPROC)lpProc);
-    FreeProcInstance(lpProc);
-  }
-}
-
-VOID
-ErrorPopDown()
-{
-  if (!appData.popupMoveErrors && moveErrorMessageUp) DisplayMessage("", "");
-  if (errorDialog == NULL) return;
-  DestroyWindow(errorDialog);
-  errorDialog = NULL;
-}
-
-LRESULT CALLBACK
-ErrorDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  HANDLE hwndText;
-  RECT rChild;
-
-  switch (message) {
-  case WM_INITDIALOG:
-    GetWindowRect(hDlg, &rChild);
-
-    /*
-    SetWindowPos(hDlg, NULL, rChild.left,
-      rChild.top + boardRect.top - (rChild.bottom - rChild.top), 
-      0, 0, SWP_NOZORDER|SWP_NOSIZE);
-    */
-
-    /* 
-        [AS] It seems that the above code wants to move the dialog up in the "caption
-        area" of the main window, but it uses the dialog height as an hard-coded constant,
-        and it doesn't work when you resize the dialog.
-        For now, just give it a default position.
-    */
-    SetWindowPos(hDlg, NULL, boardRect.left+8, boardRect.top+8, 0, 0, SWP_NOZORDER|SWP_NOSIZE);
-
-    errorDialog = hDlg;
-    SetWindowText(hDlg, errorTitle);
-    hwndText = GetDlgItem(hDlg, OPT_ErrorText);
-    SetDlgItemText(hDlg, OPT_ErrorText, errorMessage);
-    return FALSE;
-
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDOK:
-    case IDCANCEL:
-      if (errorDialog == hDlg) errorDialog = NULL;
-      DestroyWindow(hDlg);
-      return TRUE;
-
-    default:
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-#ifdef GOTHIC
-HWND gothicDialog = NULL;
-
-LRESULT CALLBACK
-GothicDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  HANDLE hwndText;
-  RECT rChild;
-  int height = GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYFRAME);
-
-  switch (message) {
-  case WM_INITDIALOG:
-    GetWindowRect(hDlg, &rChild);
-
-    SetWindowPos(hDlg, NULL, boardX, boardY-height, winWidth, height,
-                                                             SWP_NOZORDER);
-
-    /* 
-        [AS] It seems that the above code wants to move the dialog up in the "caption
-        area" of the main window, but it uses the dialog height as an hard-coded constant,
-        and it doesn't work when you resize the dialog.
-        For now, just give it a default position.
-    */
-    gothicDialog = hDlg;
-    SetWindowText(hDlg, errorTitle);
-    hwndText = GetDlgItem(hDlg, OPT_ErrorText);
-    SetDlgItemText(hDlg, OPT_ErrorText, errorMessage);
-    return FALSE;
-
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDOK:
-    case IDCANCEL:
-      if (errorDialog == hDlg) errorDialog = NULL;
-      DestroyWindow(hDlg);
-      return TRUE;
-
-    default:
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-GothicPopUp(char *title, VariantClass variant)
-{
-  FARPROC lpProc;
-  static char *lastTitle;
-
-  strncpy(errorTitle, title, sizeof(errorTitle));
-  errorTitle[sizeof(errorTitle) - 1] = '\0';
-
-  if(lastTitle != title && gothicDialog != NULL) {
-    DestroyWindow(gothicDialog);
-    gothicDialog = NULL;
-  }
-  if(variant != VariantNormal && gothicDialog == NULL) {
-    title = lastTitle;
-    lpProc = MakeProcInstance((FARPROC)GothicDialog, hInst);
-    CreateDialog(hInst, MAKEINTRESOURCE(DLG_Error),
-		 hwndMain, (DLGPROC)lpProc);
-    FreeProcInstance(lpProc);
-  }
-}
-#endif
-
-/*---------------------------------------------------------------------------*\
- *
- *  Ics Interaction console functions
- *
-\*---------------------------------------------------------------------------*/
-
-#define HISTORY_SIZE 64
-static char *history[HISTORY_SIZE];
-int histIn = 0, histP = 0;
-
-VOID
-SaveInHistory(char *cmd)
-{
-  if (history[histIn] != NULL) {
-    free(history[histIn]);
-    history[histIn] = NULL;
-  }
-  if (*cmd == NULLCHAR) return;
-  history[histIn] = StrSave(cmd);
-  histIn = (histIn + 1) % HISTORY_SIZE;
-  if (history[histIn] != NULL) {
-    free(history[histIn]);
-    history[histIn] = NULL;
-  }
-  histP = histIn;
-}
-
-char *
-PrevInHistory(char *cmd)
-{
-  int newhp;
-  if (histP == histIn) {
-    if (history[histIn] != NULL) free(history[histIn]);
-    history[histIn] = StrSave(cmd);
-  }
-  newhp = (histP - 1 + HISTORY_SIZE) % HISTORY_SIZE;
-  if (newhp == histIn || history[newhp] == NULL) return NULL;
-  histP = newhp;
-  return history[histP];
-}
-
-char *
-NextInHistory()
-{
-  if (histP == histIn) return NULL;
-  histP = (histP + 1) % HISTORY_SIZE;
-  return history[histP];
-}
-
-typedef struct {
-  char *item;
-  char *command;
-  BOOLEAN getname;
-  BOOLEAN immediate;
-} IcsTextMenuEntry;
-#define ICS_TEXT_MENU_SIZE (IDM_CommandXLast - IDM_CommandX + 1)
-IcsTextMenuEntry icsTextMenuEntry[ICS_TEXT_MENU_SIZE];
-
-void
-ParseIcsTextMenu(char *icsTextMenuString)
-{
-//  int flags = 0;
-  IcsTextMenuEntry *e = icsTextMenuEntry;
-  char *p = icsTextMenuString;
-  while (e->item != NULL && e < icsTextMenuEntry + ICS_TEXT_MENU_SIZE) {
-    free(e->item);
-    e->item = NULL;
-    if (e->command != NULL) {
-      free(e->command);
-      e->command = NULL;
-    }
-    e++;
-  }
-  e = icsTextMenuEntry;
-  while (*p && e < icsTextMenuEntry + ICS_TEXT_MENU_SIZE) {
-    if (*p == ';' || *p == '\n') {
-      e->item = strdup("-");
-      e->command = NULL;
-      p++;
-    } else if (*p == '-') {
-      e->item = strdup("-");
-      e->command = NULL;
-      p++;
-      if (*p) p++;
-    } else {
-      char *q, *r, *s, *t;
-      char c;
-      q = strchr(p, ',');
-      if (q == NULL) break;
-      *q = NULLCHAR;
-      r = strchr(q + 1, ',');
-      if (r == NULL) break;
-      *r = NULLCHAR;
-      s = strchr(r + 1, ',');
-      if (s == NULL) break;
-      *s = NULLCHAR;
-      c = ';';
-      t = strchr(s + 1, c);
-      if (t == NULL) {
-	c = '\n';
-	t = strchr(s + 1, c);
-      }
-      if (t != NULL) *t = NULLCHAR;
-      e->item = strdup(p);
-      e->command = strdup(q + 1);
-      e->getname = *(r + 1) != '0';
-      e->immediate = *(s + 1) != '0';
-      *q = ',';
-      *r = ',';
-      *s = ',';
-      if (t == NULL) break;
-      *t = c;
-      p = t + 1;
-    }
-    e++;
-  } 
-}
-
-HMENU
-LoadIcsTextMenu(IcsTextMenuEntry *e)
-{
-  HMENU hmenu, h;
-  int i = 0;
-  hmenu = LoadMenu(hInst, "TextMenu");
-  h = GetSubMenu(hmenu, 0);
-  while (e->item) {
-    if (strcmp(e->item, "-") == 0) {
-      AppendMenu(h, MF_SEPARATOR, 0, 0);
-    } else {
-      if (e->item[0] == '|') {
-	AppendMenu(h, MF_STRING|MF_MENUBARBREAK,
-		   IDM_CommandX + i, &e->item[1]);
-      } else {
-	AppendMenu(h, MF_STRING, IDM_CommandX + i, e->item);
-      }
-    }
-    e++;
-    i++;
-  } 
-  return hmenu;
-}
-
-WNDPROC consoleTextWindowProc;
-
-void
-CommandX(HWND hwnd, char *command, BOOLEAN getname, BOOLEAN immediate)
-{
-  char buf[MSG_SIZ], name[MSG_SIZ];
-  HWND hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-  CHARRANGE sel;
-
-  if (!getname) {
-    SetWindowText(hInput, command);
-    if (immediate) {
-      SendMessage(hInput, WM_CHAR, '\r', 0);
-    } else {
-      sel.cpMin = 999999;
-      sel.cpMax = 999999;
-      SendMessage(hInput, EM_EXSETSEL, 0, (LPARAM)&sel);
-      SetFocus(hInput);
-    }
-    return;
-  }    
-  SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel);
-  if (sel.cpMin == sel.cpMax) {
-    /* Expand to surrounding word */
-    TEXTRANGE tr;
-    do {
-      tr.chrg.cpMax = sel.cpMin;
-      tr.chrg.cpMin = --sel.cpMin;
-      if (sel.cpMin < 0) break;
-      tr.lpstrText = name;
-      SendMessage(hwnd, EM_GETTEXTRANGE, 0, (LPARAM) &tr);
-    } while (isalpha(name[0]) || isdigit(name[0]) || name[0] == '-');
-    sel.cpMin++;
-
-    do {
-      tr.chrg.cpMin = sel.cpMax;
-      tr.chrg.cpMax = ++sel.cpMax;
-      tr.lpstrText = name;
-      if (SendMessage(hwnd, EM_GETTEXTRANGE, 0, (LPARAM) &tr) < 1) break;
-    } while (isalpha(name[0]) || isdigit(name[0]) || name[0] == '-');
-    sel.cpMax--;
-
-    if (sel.cpMax == sel.cpMin || sel.cpMax - sel.cpMin > MSG_SIZ/2) {
-      MessageBeep(MB_ICONEXCLAMATION);
-      return;
-    }
-    tr.chrg = sel;
-    tr.lpstrText = name;
-    SendMessage(hwnd, EM_GETTEXTRANGE, 0, (LPARAM) &tr);
-  } else {
-    if (sel.cpMax - sel.cpMin > MSG_SIZ/2) {
-      MessageBeep(MB_ICONEXCLAMATION);
-      return;
-    }
-    SendMessage(hwnd, EM_GETSELTEXT, 0, (LPARAM) name);
-  }
-  if (immediate) {
-    sprintf(buf, "%s %s", command, name);
-    SetWindowText(hInput, buf);
-    SendMessage(hInput, WM_CHAR, '\r', 0);
-  } else {
-    sprintf(buf, "%s %s ", command, name); /* trailing space */
-    SetWindowText(hInput, buf);
-    sel.cpMin = 999999;
-    sel.cpMax = 999999;
-    SendMessage(hInput, EM_EXSETSEL, 0, (LPARAM)&sel);
-    SetFocus(hInput);
-  }
-}
-
-LRESULT CALLBACK 
-ConsoleTextSubclass(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  HWND hInput;
-  CHARRANGE sel;
-
-  switch (message) {
-  case WM_KEYDOWN:
-    if (!(GetKeyState(VK_CONTROL) & ~1)) break;
-    switch (wParam) {
-    case VK_PRIOR:
-      SendMessage(hwnd, EM_LINESCROLL, 0, -999999);
-      return 0;
-    case VK_NEXT:
-      sel.cpMin = 999999;
-      sel.cpMax = 999999;
-      SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel);
-      SendMessage(hwnd, EM_SCROLLCARET, 0, 0);
-      return 0;
-    }
-    break;
-  case WM_CHAR:
-   if(wParam != '\022') {
-    if (wParam == '\t') {
-      if (GetKeyState(VK_SHIFT) < 0) {
-	/* shifted */
-	if (IsIconic(hwndMain)) ShowWindow(hwndMain, SW_RESTORE);
-	if (buttonDesc[0].hwnd) {
-	  SetFocus(buttonDesc[0].hwnd);
-	} else {
-	  SetFocus(hwndMain);
-	}
-      } else {
-	/* unshifted */
-	SetFocus(GetDlgItem(hwndConsole, OPT_ConsoleInput));
-      }
-    } else {
-      hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-      JAWS_DELETE( SetFocus(hInput); )
-      SendMessage(hInput, message, wParam, lParam);
-    }
-    return 0;
-   } // [HGM] navigate: for Ctrl+R, flow into nex case (moved up here) to summon up menu
-  case WM_RBUTTONUP:
-    if (GetKeyState(VK_SHIFT) & ~1) {
-      SendDlgItemMessage(hwndConsole, OPT_ConsoleText, 
-        WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0);
-    } else {
-      POINT pt;
-      HMENU hmenu = LoadIcsTextMenu(icsTextMenuEntry);
-      SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel);
-      if (sel.cpMin == sel.cpMax) {
-        EnableMenuItem(hmenu, IDM_Copy, MF_BYCOMMAND|MF_GRAYED);
-        EnableMenuItem(hmenu, IDM_QuickPaste, MF_BYCOMMAND|MF_GRAYED);
-      }
-      if (!IsClipboardFormatAvailable(CF_TEXT)) {
-        EnableMenuItem(hmenu, IDM_Paste, MF_BYCOMMAND|MF_GRAYED);
-      }
-      pt.x = LOWORD(lParam);
-      pt.y = HIWORD(lParam);
-      MenuPopup(hwnd, pt, hmenu, -1);
-    }
-    return 0;
-  case WM_PASTE:
-    hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-    SetFocus(hInput);
-    return SendMessage(hInput, message, wParam, lParam);
-  case WM_MBUTTONDOWN:
-    return SendMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0);
-  case WM_RBUTTONDOWN:
-    if (!(GetKeyState(VK_SHIFT) & ~1)) {
-      /* Move selection here if it was empty */
-      POINT pt;
-      pt.x = LOWORD(lParam);
-      pt.y = HIWORD(lParam);
-      SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel);
-      if (sel.cpMin == sel.cpMax) {
-        sel.cpMin = SendMessage(hwnd, EM_CHARFROMPOS, 0, (LPARAM)&pt); /*doc is wrong*/
-	sel.cpMax = sel.cpMin;
-	SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel);
-      }
-      SendMessage(hwnd, EM_HIDESELECTION, FALSE, FALSE);
-    }
-    return 0;
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDM_QuickPaste:
-      {
-        SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel);
-	if (sel.cpMin == sel.cpMax) {
-	  MessageBeep(MB_ICONEXCLAMATION);
-          return 0;
-	}
-	SendMessage(hwnd, WM_COPY, 0, 0);
-	hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-        SendMessage(hInput, WM_PASTE, 0, 0);
-        SetFocus(hInput);
-        return 0;
-      }
-    case IDM_Cut:
-      SendMessage(hwnd, WM_CUT, 0, 0);
-      return 0;
-    case IDM_Paste:
-      SendMessage(hwnd, WM_PASTE, 0, 0);
-      return 0;
-    case IDM_Copy:
-      SendMessage(hwnd, WM_COPY, 0, 0);
-      return 0;
-    default:
-      {
-	int i = LOWORD(wParam) - IDM_CommandX;
-	if (i >= 0 && i < ICS_TEXT_MENU_SIZE &&
-	    icsTextMenuEntry[i].command != NULL) {
-	  CommandX(hwnd, icsTextMenuEntry[i].command,
-		   icsTextMenuEntry[i].getname,
-		   icsTextMenuEntry[i].immediate);
-	  return 0;
-	}
-      }
-      break;
-    }
-    break;
-  }
-  return (*consoleTextWindowProc)(hwnd, message, wParam, lParam);
-}
-
-WNDPROC consoleInputWindowProc;
-
-LRESULT CALLBACK
-ConsoleInputSubclass(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char buf[MSG_SIZ];
-  char *p;
-  static BOOL sendNextChar = FALSE;
-  static BOOL quoteNextChar = FALSE;
-  InputSource *is = consoleInputSource;
-  CHARFORMAT cf;
-  CHARRANGE sel;
-
-  switch (message) {
-  case WM_CHAR:
-    if (!appData.localLineEditing || sendNextChar) {
-      is->buf[0] = (CHAR) wParam;
-      is->count = 1;
-      SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is);
-      sendNextChar = FALSE;
-      return 0;
-    }
-    if (quoteNextChar) {
-      buf[0] = (char) wParam;
-      buf[1] = NULLCHAR;
-      SendMessage(hwnd, EM_REPLACESEL, TRUE, (LPARAM) buf);
-      quoteNextChar = FALSE;
-      return 0;
-    }
-    switch (wParam) {
-    case '\r':   /* Enter key */
-      is->count = GetWindowText(hwnd, is->buf, INPUT_SOURCE_BUF_SIZE-1);     
-      if (consoleEcho) SaveInHistory(is->buf);
-      is->buf[is->count++] = '\n';
-      is->buf[is->count] = NULLCHAR;
-      SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is);
-      if (consoleEcho) {
-	ConsoleOutput(is->buf, is->count, TRUE);
-      } else if (appData.localLineEditing) {
-	ConsoleOutput("\n", 1, TRUE);
-      }
-      /* fall thru */
-    case '\033': /* Escape key */
-      SetWindowText(hwnd, "");
-      cf.cbSize = sizeof(CHARFORMAT);
-      cf.dwMask = CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT;
-      if (consoleEcho) {
-        cf.crTextColor = textAttribs[ColorNormal].color;
-      } else {
-	cf.crTextColor = COLOR_ECHOOFF;
-      }
-      cf.dwEffects = textAttribs[ColorNormal].effects;
-      SendMessage(hwnd, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
-      return 0;
-    case '\t':   /* Tab key */
-      if (GetKeyState(VK_SHIFT) < 0) {
-	/* shifted */
-	SetFocus(GetDlgItem(hwndConsole, OPT_ConsoleText));
-      } else {
-	/* unshifted */
-	if (IsIconic(hwndMain)) ShowWindow(hwndMain, SW_RESTORE);
-	if (buttonDesc[0].hwnd) {
-	  SetFocus(buttonDesc[0].hwnd);
-	} else {
-	  SetFocus(hwndMain);
-	}
-      }
-      return 0;
-    case '\023': /* Ctrl+S */
-      sendNextChar = TRUE;
-      return 0;
-    case '\021': /* Ctrl+Q */
-      quoteNextChar = TRUE;
-      return 0;
-    JAWS_REPLAY
-    default:
-      break;
-    }
-    break;
-  case WM_KEYDOWN:
-    switch (wParam) {
-    case VK_UP:
-      GetWindowText(hwnd, buf, MSG_SIZ);
-      p = PrevInHistory(buf);
-      if (p != NULL) {
-	SetWindowText(hwnd, p);
-	sel.cpMin = 999999;
-	sel.cpMax = 999999;
-	SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel);
-        return 0;
-      }
-      break;
-    case VK_DOWN:
-      p = NextInHistory();
-      if (p != NULL) {
-	SetWindowText(hwnd, p);
-	sel.cpMin = 999999;
-	sel.cpMax = 999999;
-	SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel);
-        return 0;
-      }
-      break;
-    case VK_HOME:
-    case VK_END:
-      if (!(GetKeyState(VK_CONTROL) & ~1)) break;
-      /* fall thru */
-    case VK_PRIOR:
-    case VK_NEXT:
-      SendDlgItemMessage(hwndConsole, OPT_ConsoleText, message, wParam, lParam);
-      return 0;
-    }
-    break;
-  case WM_MBUTTONDOWN:
-    SendDlgItemMessage(hwndConsole, OPT_ConsoleText, 
-      WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0);
-    break;
-  case WM_RBUTTONUP:
-    if (GetKeyState(VK_SHIFT) & ~1) {
-      SendDlgItemMessage(hwndConsole, OPT_ConsoleText, 
-        WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0);
-    } else {
-      POINT pt;
-      HMENU hmenu;
-      hmenu = LoadMenu(hInst, "InputMenu");
-      SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel);
-      if (sel.cpMin == sel.cpMax) {
-        EnableMenuItem(hmenu, IDM_Copy, MF_BYCOMMAND|MF_GRAYED);
-        EnableMenuItem(hmenu, IDM_Cut, MF_BYCOMMAND|MF_GRAYED);
-      }
-      if (!IsClipboardFormatAvailable(CF_TEXT)) {
-        EnableMenuItem(hmenu, IDM_Paste, MF_BYCOMMAND|MF_GRAYED);
-      }
-      pt.x = LOWORD(lParam);
-      pt.y = HIWORD(lParam);
-      MenuPopup(hwnd, pt, hmenu, -1);
-    }
-    return 0;
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) { 
-    case IDM_Undo:
-      SendMessage(hwnd, EM_UNDO, 0, 0);
-      return 0;
-    case IDM_SelectAll:
-      sel.cpMin = 0;
-      sel.cpMax = -1; /*999999?*/
-      SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel);
-      return 0;
-    case IDM_Cut:
-      SendMessage(hwnd, WM_CUT, 0, 0);
-      return 0;
-    case IDM_Paste:
-      SendMessage(hwnd, WM_PASTE, 0, 0);
-      return 0;
-    case IDM_Copy:
-      SendMessage(hwnd, WM_COPY, 0, 0);
-      return 0;
-    }
-    break;
-  }
-  return (*consoleInputWindowProc)(hwnd, message, wParam, lParam);
-}
-
-#define CO_MAX  100000
-#define CO_TRIM   1000
-
-LRESULT CALLBACK
-ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static SnapData sd;
-  static HWND hText, hInput /*, hFocus*/;
-//  InputSource *is = consoleInputSource;
-  RECT rect;
-  static int sizeX, sizeY;
-  int newSizeX, newSizeY;
-  MINMAXINFO *mmi;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    hwndConsole = hDlg;
-    hText = GetDlgItem(hDlg, OPT_ConsoleText);
-    hInput = GetDlgItem(hDlg, OPT_ConsoleInput);
-    SetFocus(hInput);
-    consoleTextWindowProc = (WNDPROC)
-      SetWindowLong(hText, GWL_WNDPROC, (LONG) ConsoleTextSubclass);
-    SendMessage(hText, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor);
-    consoleInputWindowProc = (WNDPROC)
-      SetWindowLong(hInput, GWL_WNDPROC, (LONG) ConsoleInputSubclass);
-    SendMessage(hInput, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor);
-    Colorize(ColorNormal, TRUE);
-    SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &consoleCF);
-    ChangedConsoleFont();
-    GetClientRect(hDlg, &rect);
-    sizeX = rect.right;
-    sizeY = rect.bottom;
-    if (wpConsole.x != CW_USEDEFAULT && wpConsole.y != CW_USEDEFAULT &&
-	wpConsole.width != CW_USEDEFAULT && wpConsole.height != CW_USEDEFAULT) {
-      WINDOWPLACEMENT wp;
-      EnsureOnScreen(&wpConsole.x, &wpConsole.y, 0, 0);
-      wp.length = sizeof(WINDOWPLACEMENT);
-      wp.flags = 0;
-      wp.showCmd = SW_SHOW;
-      wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;
-      wp.rcNormalPosition.left = wpConsole.x;
-      wp.rcNormalPosition.right = wpConsole.x + wpConsole.width;
-      wp.rcNormalPosition.top = wpConsole.y;
-      wp.rcNormalPosition.bottom = wpConsole.y + wpConsole.height;
-      SetWindowPlacement(hDlg, &wp);
-    }
-#if 1
-   // [HGM] Chessknight's change 2004-07-13
-   else { /* Determine Defaults */
-       WINDOWPLACEMENT wp;
-       wpConsole.x = winWidth + 1;
-       wpConsole.y = boardY;
-       wpConsole.width = screenWidth -  winWidth;
-       wpConsole.height = winHeight;
-       EnsureOnScreen(&wpConsole.x, &wpConsole.y, 0, 0);
-       wp.length = sizeof(WINDOWPLACEMENT);
-       wp.flags = 0;
-       wp.showCmd = SW_SHOW;
-       wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;
-       wp.rcNormalPosition.left = wpConsole.x;
-       wp.rcNormalPosition.right = wpConsole.x + wpConsole.width;
-       wp.rcNormalPosition.top = wpConsole.y;
-       wp.rcNormalPosition.bottom = wpConsole.y + wpConsole.height;
-       SetWindowPlacement(hDlg, &wp);
-    }
-#endif
-    return FALSE;
-
-  case WM_SETFOCUS:
-    SetFocus(hInput);
-    return 0;
-
-  case WM_CLOSE:
-    ExitEvent(0);
-    /* not reached */
-    break;
-
-  case WM_SIZE:
-    if (IsIconic(hDlg)) break;
-    newSizeX = LOWORD(lParam);
-    newSizeY = HIWORD(lParam);
-    if (sizeX != newSizeX || sizeY != newSizeY) {
-      RECT rectText, rectInput;
-      POINT pt;
-      int newTextHeight, newTextWidth;
-      GetWindowRect(hText, &rectText);
-      newTextWidth = rectText.right - rectText.left + newSizeX - sizeX;
-      newTextHeight = rectText.bottom - rectText.top + newSizeY - sizeY;
-      if (newTextHeight < 0) {
-	newSizeY += -newTextHeight;
-        newTextHeight = 0;
-      }
-      SetWindowPos(hText, NULL, 0, 0,
-	newTextWidth, newTextHeight, SWP_NOZORDER|SWP_NOMOVE);
-      GetWindowRect(hInput, &rectInput); /* gives screen coords */
-      pt.x = rectInput.left;
-      pt.y = rectInput.top + newSizeY - sizeY;
-      ScreenToClient(hDlg, &pt);
-      SetWindowPos(hInput, NULL, 
-	pt.x, pt.y, /* needs client coords */	
-	rectInput.right - rectInput.left + newSizeX - sizeX,
-	rectInput.bottom - rectInput.top, SWP_NOZORDER);
-    }
-    sizeX = newSizeX;
-    sizeY = newSizeY;
-    break;
-
-  case WM_GETMINMAXINFO:
-    /* Prevent resizing window too small */
-    mmi = (MINMAXINFO *) lParam;
-    mmi->ptMinTrackSize.x = 100;
-    mmi->ptMinTrackSize.y = 100;
-    break;
-
-  /* [AS] Snapping */
-  case WM_ENTERSIZEMOVE:
-    return OnEnterSizeMove( &sd, hDlg, wParam, lParam );
-
-  case WM_SIZING:
-    return OnSizing( &sd, hDlg, wParam, lParam );
-
-  case WM_MOVING:
-    return OnMoving( &sd, hDlg, wParam, lParam );
-
-  case WM_EXITSIZEMOVE:
-    return OnExitSizeMove( &sd, hDlg, wParam, lParam );
-  }
-
-  return DefWindowProc(hDlg, message, wParam, lParam);
-}
-
-
-VOID
-ConsoleCreate()
-{
-  HWND hCons;
-  if (hwndConsole) return;
-  hCons = CreateDialog(hInst, szConsoleName, 0, NULL);
-  SendMessage(hCons, WM_INITDIALOG, 0, 0);
-}
-
-
-VOID
-ConsoleOutput(char* data, int length, int forceVisible)
-{
-  HWND hText;
-  int trim, exlen;
-  char *p, *q;
-  char buf[CO_MAX+1];
-  POINT pEnd;
-  RECT rect;
-  static int delayLF = 0;
-  CHARRANGE savesel, sel;
-
-  if (hwndConsole == NULL || length > CO_MAX-100 || length == 0) return;
-  p = data;
-  q = buf;
-  if (delayLF) {
-    *q++ = '\r';
-    *q++ = '\n';
-    delayLF = 0;
-  }
-  while (length--) {
-    if (*p == '\n') {
-      if (*++p) {
-	*q++ = '\r';
-	*q++ = '\n';
-      } else {
-	delayLF = 1;
-      }
-    } else if (*p == '\007') {
-       MyPlaySound(&sounds[(int)SoundBell]);
-       p++;
-    } else {
-      *q++ = *p++;
-    }
-  }
-  *q = NULLCHAR;
-  hText = GetDlgItem(hwndConsole, OPT_ConsoleText);
-  SendMessage(hText, EM_HIDESELECTION, TRUE, FALSE);
-  /* Save current selection */
-  SendMessage(hText, EM_EXGETSEL, 0, (LPARAM)&savesel);
-  exlen = GetWindowTextLength(hText);
-  /* Find out whether current end of text is visible */
-  SendMessage(hText, EM_GETRECT, 0, (LPARAM) &rect);
-  SendMessage(hText, EM_POSFROMCHAR, (WPARAM) &pEnd, exlen);
-  /* Trim existing text if it's too long */
-  if (exlen + (q - buf) > CO_MAX) {
-    trim = (CO_TRIM > (q - buf)) ? CO_TRIM : (q - buf);
-    sel.cpMin = 0;
-    sel.cpMax = trim;
-    SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel);
-    SendMessage(hText, EM_REPLACESEL, 0, (LPARAM)"");
-    exlen -= trim;
-    savesel.cpMin -= trim;
-    savesel.cpMax -= trim;
-    if (exlen < 0) exlen = 0;
-    if (savesel.cpMin < 0) savesel.cpMin = 0;
-    if (savesel.cpMax < savesel.cpMin) savesel.cpMax = savesel.cpMin;
-  }
-  /* Append the new text */
-  sel.cpMin = exlen;
-  sel.cpMax = exlen;
-  SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel);
-  SendMessage(hText, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&consoleCF);
-  SendMessage(hText, EM_REPLACESEL, 0, (LPARAM) buf);
-  if (forceVisible || exlen == 0 ||
-      (rect.left <= pEnd.x && pEnd.x < rect.right &&
-       rect.top <= pEnd.y && pEnd.y < rect.bottom)) {
-    /* Scroll to make new end of text visible if old end of text
-       was visible or new text is an echo of user typein */
-    sel.cpMin = 9999999;
-    sel.cpMax = 9999999;
-    SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel);
-    SendMessage(hText, EM_HIDESELECTION, FALSE, FALSE);
-    SendMessage(hText, EM_SCROLLCARET, 0, 0);
-    SendMessage(hText, EM_HIDESELECTION, TRUE, FALSE);
-  }
-  if (savesel.cpMax == exlen || forceVisible) {
-    /* Move insert point to new end of text if it was at the old
-       end of text or if the new text is an echo of user typein */
-    sel.cpMin = 9999999;
-    sel.cpMax = 9999999;
-    SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel);
-  } else {
-    /* Restore previous selection */
-    SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&savesel);
-  }
-  SendMessage(hText, EM_HIDESELECTION, FALSE, FALSE);
-}
-
-/*---------*/
-
-
-void
-DisplayHoldingsCount(HDC hdc, int x, int y, int rightAlign, int copyNumber)
-{
-  char buf[100];
-  char *str;
-  COLORREF oldFg, oldBg;
-  HFONT oldFont;
-  RECT rect;
-
-  if(copyNumber > 1) sprintf(buf, "%d", copyNumber); else buf[0] = 0;
-
-  oldFg = SetTextColor(hdc, RGB(255, 255, 255)); /* white */
-  oldBg = SetBkColor(hdc, RGB(0, 0, 0)); /* black */
-  oldFont = SelectObject(hdc, font[boardSize][CLOCK_FONT]->hf);
-
-  rect.left = x;
-  rect.right = x + squareSize;
-  rect.top  = y;
-  rect.bottom = y + squareSize;
-  str = buf;
-
-  ExtTextOut(hdc, x + MESSAGE_LINE_LEFTMARGIN
-                    + (rightAlign ? (squareSize*2)/3 : 0),
-             y, ETO_CLIPPED|ETO_OPAQUE,
-             &rect, str, strlen(str), NULL);
-
-  (void) SetTextColor(hdc, oldFg);
-  (void) SetBkColor(hdc, oldBg);
-  (void) SelectObject(hdc, oldFont);
-}
-
-void
-DisplayAClock(HDC hdc, int timeRemaining, int highlight,
-              RECT *rect, char *color, char *flagFell)
-{
-  char buf[100];
-  char *str;
-  COLORREF oldFg, oldBg;
-  HFONT oldFont;
-
-  if (appData.clockMode) {
-    if (tinyLayout)
-      sprintf(buf, "%c %s %s", color[0], TimeString(timeRemaining), flagFell);
-    else
-      sprintf(buf, "%s:%c%s %s", color, (logoHeight>0 ? 0 : ' '), TimeString(timeRemaining), flagFell);
-    str = buf;
-  } else {
-    str = color;
-  }
-
-  if (highlight) {
-    oldFg = SetTextColor(hdc, RGB(255, 255, 255)); /* white */
-    oldBg = SetBkColor(hdc, RGB(0, 0, 0)); /* black */
-  } else {
-    oldFg = SetTextColor(hdc, RGB(0, 0, 0)); /* black */
-    oldBg = SetBkColor(hdc, RGB(255, 255, 255)); /* white */
-  }
-  oldFont = SelectObject(hdc, font[boardSize][CLOCK_FONT]->hf);
-
-  JAWS_SILENCE
-
-  ExtTextOut(hdc, rect->left + MESSAGE_LINE_LEFTMARGIN,
-	     rect->top, ETO_CLIPPED|ETO_OPAQUE,
-	     rect, str, strlen(str), NULL);
-  if(logoHeight > 0 && appData.clockMode) {
-      RECT r;
-      sprintf(buf, "%s %s", buf+7, flagFell);
-      r.top = rect->top + logoHeight/2;
-      r.left = rect->left;
-      r.right = rect->right;
-      r.bottom = rect->bottom;
-      ExtTextOut(hdc, rect->left + MESSAGE_LINE_LEFTMARGIN,
-	         r.top, ETO_CLIPPED|ETO_OPAQUE,
-	         &r, str, strlen(str), NULL);
-  }
-  (void) SetTextColor(hdc, oldFg);
-  (void) SetBkColor(hdc, oldBg);
-  (void) SelectObject(hdc, oldFont);
-}
-
-
-int
-DoReadFile(HANDLE hFile, char *buf, int count, DWORD *outCount,
-	   OVERLAPPED *ovl)
-{
-  int ok, err;
-
-  /* [AS]  */
-  if( count <= 0 ) {
-    if (appData.debugMode) {
-      fprintf( debugFP, "DoReadFile: trying to read past end of buffer, overflow = %d\n", count );
-    }
-
-    return ERROR_INVALID_USER_BUFFER;
-  }
-
-  ResetEvent(ovl->hEvent);
-  ovl->Offset = ovl->OffsetHigh = 0;
-  ok = ReadFile(hFile, buf, count, outCount, ovl);
-  if (ok) {
-    err = NO_ERROR;
-  } else {
-    err = GetLastError();
-    if (err == ERROR_IO_PENDING) {
-      ok = GetOverlappedResult(hFile, ovl, outCount, TRUE);
-      if (ok)
-	err = NO_ERROR;
-      else
-	err = GetLastError();
-    }
-  }
-  return err;
-}
-
-int
-DoWriteFile(HANDLE hFile, char *buf, int count, DWORD *outCount,
-	    OVERLAPPED *ovl)
-{
-  int ok, err;
-
-  ResetEvent(ovl->hEvent);
-  ovl->Offset = ovl->OffsetHigh = 0;
-  ok = WriteFile(hFile, buf, count, outCount, ovl);
-  if (ok) {
-    err = NO_ERROR;
-  } else {
-    err = GetLastError();
-    if (err == ERROR_IO_PENDING) {
-      ok = GetOverlappedResult(hFile, ovl, outCount, TRUE);
-      if (ok)
-	err = NO_ERROR;
-      else
-	err = GetLastError();
-    }
-  }
-  return err;
-}
-
-/* [AS] If input is line by line and a line exceed the buffer size, force an error */
-void CheckForInputBufferFull( InputSource * is )
-{
-    if( is->lineByLine && (is->next - is->buf) >= INPUT_SOURCE_BUF_SIZE ) {
-        /* Look for end of line */
-        char * p = is->buf;
-        
-        while( p < is->next && *p != '\n' ) {
-            p++;
-        }
-
-        if( p >= is->next ) {
-            if (appData.debugMode) {
-                fprintf( debugFP, "Input line exceeded buffer size (source id=%lu)\n", is->id );
-            }
-
-            is->error = ERROR_BROKEN_PIPE; /* [AS] Just any non-successful code! */
-            is->count = (DWORD) -1;
-            is->next = is->buf;
-        }
-    }
-}
-
-DWORD
-InputThread(LPVOID arg)
-{
-  InputSource *is;
-  OVERLAPPED ovl;
-
-  is = (InputSource *) arg;
-  ovl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-  ovl.Internal = ovl.InternalHigh = ovl.Offset = ovl.OffsetHigh = 0;
-  while (is->hThread != NULL) {
-    is->error = DoReadFile(is->hFile, is->next,
-			   INPUT_SOURCE_BUF_SIZE - (is->next - is->buf),
-			   &is->count, &ovl);
-    if (is->error == NO_ERROR) {
-      is->next += is->count;
-    } else {
-      if (is->error == ERROR_BROKEN_PIPE) {
-	/* Correct for MS brain damage.  EOF reading a pipe is not an error. */
-	is->count = 0;
-      } else {
-	is->count = (DWORD) -1;
-        /* [AS] The (is->count <= 0) check below is not useful for unsigned values! */
-        break; 
-      }
-    }
-
-    CheckForInputBufferFull( is );
-
-    SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is);
-
-    if( is->count == ((DWORD) -1) ) break; /* [AS] */
-
-    if (is->count <= 0) break;  /* Quit on EOF or error */
-  }
-
-  CloseHandle(ovl.hEvent);
-  CloseHandle(is->hFile);
-
-  if (appData.debugMode) {
-    fprintf( debugFP, "Input thread terminated (id=%lu, error=%d, count=%ld)\n", is->id, is->error, is->count );
-  }
-
-  return 0;
-}
-
-
-/* Windows 95 beta 2 won't let you do overlapped i/o on a console or pipe */
-DWORD
-NonOvlInputThread(LPVOID arg)
-{
-  InputSource *is;
-  char *p, *q;
-  int i;
-  char prev;
-
-  is = (InputSource *) arg;
-  while (is->hThread != NULL) {
-    is->error = ReadFile(is->hFile, is->next,
-			 INPUT_SOURCE_BUF_SIZE - (is->next - is->buf),
-			 &is->count, NULL) ? NO_ERROR : GetLastError();
-    if (is->error == NO_ERROR) {
-      /* Change CRLF to LF */
-      if (is->next > is->buf) {
-	p = is->next - 1;
-	i = is->count + 1;
-      } else {
-	p = is->next;
-	i = is->count;
-      }
-      q = p;
-      prev = NULLCHAR;
-      while (i > 0) {
-	if (prev == '\r' && *p == '\n') {
-	  *(q-1) = '\n';
-	  is->count--;
-	} else { 
-	  *q++ = *p;
-	}
-	prev = *p++;
-	i--;
-      }
-      *q = NULLCHAR;
-      is->next = q;
-    } else {
-      if (is->error == ERROR_BROKEN_PIPE) {
-	/* Correct for MS brain damage.  EOF reading a pipe is not an error. */
-	is->count = 0; 
-      } else {
-	is->count = (DWORD) -1;
-      }
-    }
-
-    CheckForInputBufferFull( is );
-
-    SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is);
-
-    if( is->count == ((DWORD) -1) ) break; /* [AS] */
-
-    if (is->count < 0) break;  /* Quit on error */
-  }
-  CloseHandle(is->hFile);
-  return 0;
-}
-
-DWORD
-SocketInputThread(LPVOID arg)
-{
-  InputSource *is;
-
-  is = (InputSource *) arg;
-  while (is->hThread != NULL) {
-    is->count = recv(is->sock, is->buf, INPUT_SOURCE_BUF_SIZE, 0);
-    if ((int)is->count == SOCKET_ERROR) {
-      is->count = (DWORD) -1;
-      is->error = WSAGetLastError();
-    } else {
-      is->error = NO_ERROR;
-      is->next += is->count;
-      if (is->count == 0 && is->second == is) {
-	/* End of file on stderr; quit with no message */
-	break;
-      }
-    }
-    SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is);
-
-    if( is->count == ((DWORD) -1) ) break; /* [AS] */
-
-    if (is->count <= 0) break;  /* Quit on EOF or error */
-  }
-  return 0;
-}
-
-VOID
-InputEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  InputSource *is;
-
-  is = (InputSource *) lParam;
-  if (is->lineByLine) {
-    /* Feed in lines one by one */
-    char *p = is->buf;
-    char *q = p;
-    while (q < is->next) {
-      if (*q++ == '\n') {
-	(is->func)(is, is->closure, p, q - p, NO_ERROR);
-	p = q;
-      }
-    }
-    
-    /* Move any partial line to the start of the buffer */
-    q = is->buf;
-    while (p < is->next) {
-      *q++ = *p++;
-    }
-    is->next = q;
-
-    if (is->error != NO_ERROR || is->count == 0) {
-      /* Notify backend of the error.  Note: If there was a partial
-	 line at the end, it is not flushed through. */
-      (is->func)(is, is->closure, is->buf, is->count, is->error);   
-    }
-  } else {
-    /* Feed in the whole chunk of input at once */
-    (is->func)(is, is->closure, is->buf, is->count, is->error);
-    is->next = is->buf;
-  }
-}
-
-/*---------------------------------------------------------------------------*\
- *
- *  Menu enables. Used when setting various modes.
- *
-\*---------------------------------------------------------------------------*/
-
-typedef struct {
-  int item;
-  int flags;
-} Enables;
-
-VOID
-SetMenuEnables(HMENU hmenu, Enables *enab)
-{
-  while (enab->item > 0) {
-    (void) EnableMenuItem(hmenu, enab->item, enab->flags);
-    enab++;
-  }
-}
-
-Enables gnuEnables[] = {
-  { IDM_MailMove, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_IcsClient, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Accept, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Decline, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Rematch, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Adjourn, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_StopExamining, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_StopObserving, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Revert, MF_BYCOMMAND|MF_GRAYED },
-  { -1, -1 }
-};
-
-Enables icsEnables[] = {
-  { IDM_MailMove, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MachineWhite, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MachineBlack, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_TwoMachines, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_AnalysisMode, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_AnalyzeFile, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_TimeControl, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MoveNow, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Hint, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Book, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_IcsOptions, MF_BYCOMMAND|MF_ENABLED },
-  { -1, -1 }
-};
-
-#ifdef ZIPPY
-Enables zippyEnables[] = {
-  { IDM_MoveNow, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_Hint, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_Book, MF_BYCOMMAND|MF_ENABLED },
-  { -1, -1 }
-};
-#endif
-
-Enables ncpEnables[] = {
-  { IDM_MailMove, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MachineWhite, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MachineBlack, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_TwoMachines, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_AnalysisMode, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_AnalyzeFile, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_IcsClient, MF_BYCOMMAND|MF_GRAYED },
-  { ACTION_POS, MF_BYPOSITION|MF_GRAYED },
-  { IDM_Revert, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MoveNow, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_RetractMove, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_TimeControl, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Hint, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Book, MF_BYCOMMAND|MF_GRAYED },
-  { -1, -1 }
-};
-
-Enables trainingOnEnables[] = {
-  { IDM_EditComment, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Pause, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Forward, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Backward, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_ToEnd, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_ToStart, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MoveNow, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_TruncateGame, MF_BYCOMMAND|MF_GRAYED },
-  { -1, -1 }
-};
-
-Enables trainingOffEnables[] = {
-  { IDM_EditComment, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_Pause, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_Forward, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_Backward, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_ToEnd, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_ToStart, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_MoveNow, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_TruncateGame, MF_BYCOMMAND|MF_ENABLED },
-  { -1, -1 }
-};
-
-/* These modify either ncpEnables or gnuEnables */
-Enables cmailEnables[] = {
-  { IDM_MailMove, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_ENABLED },
-  { ACTION_POS, MF_BYPOSITION|MF_ENABLED },
-  { IDM_CallFlag, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Draw, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_Adjourn, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_Abort, MF_BYCOMMAND|MF_GRAYED },
-  { -1, -1 }
-};
-
-Enables machineThinkingEnables[] = {
-  { IDM_LoadGame, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_LoadNextGame, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_LoadPrevGame, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_ReloadGame, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_PasteGame, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_LoadPosition, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_LoadNextPosition, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_LoadPrevPosition, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_ReloadPosition, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_PastePosition, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MachineWhite, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_MachineBlack, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_TwoMachines, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_TypeInMove, MF_BYCOMMAND|MF_GRAYED },
-  { IDM_RetractMove, MF_BYCOMMAND|MF_GRAYED },
-  { -1, -1 }
-};
-
-Enables userThinkingEnables[] = {
-  { IDM_LoadGame, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_LoadNextGame, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_LoadPrevGame, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_ReloadGame, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_PasteGame, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_LoadPosition, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_LoadNextPosition, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_LoadPrevPosition, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_ReloadPosition, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_PastePosition, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_MachineWhite, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_MachineBlack, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_TwoMachines, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_TypeInMove, MF_BYCOMMAND|MF_ENABLED },
-  { IDM_RetractMove, MF_BYCOMMAND|MF_ENABLED },
-  { -1, -1 }
-};
-
-/*---------------------------------------------------------------------------*\
- *
- *  Front-end interface functions exported by XBoard.
- *  Functions appear in same order as prototypes in frontend.h.
- * 
-\*---------------------------------------------------------------------------*/
-VOID
-ModeHighlight()
-{
-  static UINT prevChecked = 0;
-  static int prevPausing = 0;
-  UINT nowChecked;
-
-  if (pausing != prevPausing) {
-    prevPausing = pausing;
-    (void) CheckMenuItem(GetMenu(hwndMain), IDM_Pause,
-			 MF_BYCOMMAND|(pausing ? MF_CHECKED : MF_UNCHECKED));
-    if (hwndPause) SetWindowText(hwndPause, pausing ? "C" : "P");
-  }
-
-  switch (gameMode) {
-  case BeginningOfGame:
-    if (appData.icsActive)
-      nowChecked = IDM_IcsClient;
-    else if (appData.noChessProgram)
-      nowChecked = IDM_EditGame;
-    else
-      nowChecked = IDM_MachineBlack;
-    break;
-  case MachinePlaysBlack:
-    nowChecked = IDM_MachineBlack;
-    break;
-  case MachinePlaysWhite:
-    nowChecked = IDM_MachineWhite;
-    break;
-  case TwoMachinesPlay:
-    nowChecked = IDM_TwoMachines;
-    break;
-  case AnalyzeMode:
-    nowChecked = IDM_AnalysisMode;
-    break;
-  case AnalyzeFile:
-    nowChecked = IDM_AnalyzeFile;
-    break;
-  case EditGame:
-    nowChecked = IDM_EditGame;
-    break;
-  case PlayFromGameFile:
-    nowChecked = IDM_LoadGame;
-    break;
-  case EditPosition:
-    nowChecked = IDM_EditPosition;
-    break;
-  case Training:
-    nowChecked = IDM_Training;
-    break;
-  case IcsPlayingWhite:
-  case IcsPlayingBlack:
-  case IcsObserving:
-  case IcsIdle:
-    nowChecked = IDM_IcsClient;
-    break;
-  default:
-  case EndOfGame:
-    nowChecked = 0;
-    break;
-  }
-  if (prevChecked != 0)
-    (void) CheckMenuItem(GetMenu(hwndMain),
-			 prevChecked, MF_BYCOMMAND|MF_UNCHECKED);
-  if (nowChecked != 0)
-    (void) CheckMenuItem(GetMenu(hwndMain),
-			 nowChecked, MF_BYCOMMAND|MF_CHECKED);
-
-  if (nowChecked == IDM_LoadGame || nowChecked == IDM_Training) {
-    (void) EnableMenuItem(GetMenu(hwndMain), IDM_Training, 
-			  MF_BYCOMMAND|MF_ENABLED);
-  } else {
-    (void) EnableMenuItem(GetMenu(hwndMain), 
-			  IDM_Training, MF_BYCOMMAND|MF_GRAYED);
-  }
-
-  prevChecked = nowChecked;
-
-  /* [DM] icsEngineAnalyze - Do a sceure check too */
-  if (appData.icsActive) {
-       if (appData.icsEngineAnalyze) {
-               (void) CheckMenuItem(GetMenu(hwndMain), IDM_AnalysisMode,
-                       MF_BYCOMMAND|MF_CHECKED);
-       } else {
-               (void) CheckMenuItem(GetMenu(hwndMain), IDM_AnalysisMode,
-                       MF_BYCOMMAND|MF_UNCHECKED);
-       }
-  }
-}
-
-VOID
-SetICSMode()
-{
-  HMENU hmenu = GetMenu(hwndMain);
-  SetMenuEnables(hmenu, icsEnables);
-  EnableMenuItem(GetSubMenu(hmenu, OPTIONS_POS), ICS_POS,
-    MF_BYPOSITION|MF_ENABLED);
-#ifdef ZIPPY
-  if (appData.zippyPlay) {
-    SetMenuEnables(hmenu, zippyEnables);
-    if (!appData.noChessProgram)     /* [DM] icsEngineAnalyze */
-         (void) EnableMenuItem(GetMenu(hwndMain), IDM_AnalysisMode,
-          MF_BYCOMMAND|MF_ENABLED);
-  }
-#endif
-}
-
-VOID
-SetGNUMode()
-{
-  SetMenuEnables(GetMenu(hwndMain), gnuEnables);
-}
-
-VOID
-SetNCPMode()
-{
-  HMENU hmenu = GetMenu(hwndMain);
-  SetMenuEnables(hmenu, ncpEnables);
-  EnableMenuItem(GetSubMenu(hmenu, OPTIONS_POS), SOUNDS_POS,
-    MF_BYPOSITION|MF_GRAYED);
-    DrawMenuBar(hwndMain);
-}
-
-VOID
-SetCmailMode()
-{
-  SetMenuEnables(GetMenu(hwndMain), cmailEnables);
-}
-
-VOID 
-SetTrainingModeOn()
-{
-  int i;
-  SetMenuEnables(GetMenu(hwndMain), trainingOnEnables);
-  for (i = 0; i < N_BUTTONS; i++) {
-    if (buttonDesc[i].hwnd != NULL)
-      EnableWindow(buttonDesc[i].hwnd, FALSE);
-  }
-  CommentPopDown();
-}
-
-VOID SetTrainingModeOff()
-{
-  int i;
-  SetMenuEnables(GetMenu(hwndMain), trainingOffEnables);
-  for (i = 0; i < N_BUTTONS; i++) {
-    if (buttonDesc[i].hwnd != NULL)
-      EnableWindow(buttonDesc[i].hwnd, TRUE);
-  }
-}
-
-
-VOID
-SetUserThinkingEnables()
-{
-  SetMenuEnables(GetMenu(hwndMain), userThinkingEnables);
-}
-
-VOID
-SetMachineThinkingEnables()
-{
-  HMENU hMenu = GetMenu(hwndMain);
-  int flags = MF_BYCOMMAND|MF_ENABLED;
-
-  SetMenuEnables(hMenu, machineThinkingEnables);
-
-  if (gameMode == MachinePlaysBlack) {
-    (void)EnableMenuItem(hMenu, IDM_MachineBlack, flags);
-  } else if (gameMode == MachinePlaysWhite) {
-    (void)EnableMenuItem(hMenu, IDM_MachineWhite, flags);
-  } else if (gameMode == TwoMachinesPlay) {
-    (void)EnableMenuItem(hMenu, IDM_TwoMachines, flags);
-  }
-}
-
-
-VOID
-DisplayTitle(char *str)
-{
-  char title[MSG_SIZ], *host;
-  if (str[0] != NULLCHAR) {
-    strcpy(title, str);
-  } else if (appData.icsActive) {
-    if (appData.icsCommPort[0] != NULLCHAR)
-      host = "ICS";
-    else 
-      host = appData.icsHost;
-    sprintf(title, "%s: %s", szTitle, host);
-  } else if (appData.noChessProgram) {
-    strcpy(title, szTitle);
-  } else {
-    strcpy(title, szTitle);
-    strcat(title, ": ");
-    strcat(title, first.tidy);
-  }
-  SetWindowText(hwndMain, title);
-}
-
-
-VOID
-DisplayMessage(char *str1, char *str2)
-{
-  HDC hdc;
-  HFONT oldFont;
-  int remain = MESSAGE_TEXT_MAX - 1;
-  int len;
-
-  moveErrorMessageUp = FALSE; /* turned on later by caller if needed */
-  messageText[0] = NULLCHAR;
-  if (*str1) {
-    len = strlen(str1);
-    if (len > remain) len = remain;
-    strncpy(messageText, str1, len);
-    messageText[len] = NULLCHAR;
-    remain -= len;
-  }
-  if (*str2 && remain >= 2) {
-    if (*str1) {
-      strcat(messageText, "  ");
-      remain -= 2;
-    }
-    len = strlen(str2);
-    if (len > remain) len = remain;
-    strncat(messageText, str2, len);
-  }
-  messageText[MESSAGE_TEXT_MAX - 1] = NULLCHAR;
-
-  if (hwndMain == NULL || IsIconic(hwndMain)) return;
-
-  SAYMACHINEMOVE();
-
-  hdc = GetDC(hwndMain);
-  oldFont = SelectObject(hdc, font[boardSize][MESSAGE_FONT]->hf);
-  ExtTextOut(hdc, messageRect.left, messageRect.top, ETO_CLIPPED|ETO_OPAQUE,
-	     &messageRect, messageText, strlen(messageText), NULL);
-  (void) SelectObject(hdc, oldFont);
-  (void) ReleaseDC(hwndMain, hdc);
-}
-
-VOID
-DisplayError(char *str, int error)
-{
-  char buf[MSG_SIZ*2], buf2[MSG_SIZ];
-  int len;
-
-  if (error == 0) {
-    strcpy(buf, str);
-  } else {
-    len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
-			NULL, error, LANG_NEUTRAL,
-			(LPSTR) buf2, MSG_SIZ, NULL);
-    if (len > 0) {
-      sprintf(buf, "%s:\n%s", str, buf2);
-    } else {
-      ErrorMap *em = errmap;
-      while (em->err != 0 && em->err != error) em++;
-      if (em->err != 0) {
-	sprintf(buf, "%s:\n%s", str, em->msg);
-      } else {
-	sprintf(buf, "%s:\nError code %d", str, error);
-      }
-    }
-  }
-  
-  ErrorPopUp("Error", buf);
-}
-
-
-VOID
-DisplayMoveError(char *str)
-{
-  fromX = fromY = -1;
-  ClearHighlights();
-  DrawPosition(FALSE, NULL);
-  if (appData.popupMoveErrors) {
-    ErrorPopUp("Error", str);
-  } else {
-    DisplayMessage(str, "");
-    moveErrorMessageUp = TRUE;
-  }
-}
-
-VOID
-DisplayFatalError(char *str, int error, int exitStatus)
-{
-  char buf[2*MSG_SIZ], buf2[MSG_SIZ];
-  int len;
-  char *label = exitStatus ? "Fatal Error" : "Exiting";
-
-  if (error != 0) {
-    len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
-			NULL, error, LANG_NEUTRAL,
-			(LPSTR) buf2, MSG_SIZ, NULL);
-    if (len > 0) {
-      sprintf(buf, "%s:\n%s", str, buf2);
-    } else {
-      ErrorMap *em = errmap;
-      while (em->err != 0 && em->err != error) em++;
-      if (em->err != 0) {
-	sprintf(buf, "%s:\n%s", str, em->msg);
-      } else {
-	sprintf(buf, "%s:\nError code %d", str, error);
-      }
-    }
-    str = buf;
-  }
-  if (appData.debugMode) {
-    fprintf(debugFP, "%s: %s\n", label, str);
-  }
-  if (appData.popupExitMessage) {
-    (void) MessageBox(hwndMain, str, label, MB_OK|
-		      (exitStatus ? MB_ICONSTOP : MB_ICONINFORMATION));
-  }
-  ExitEvent(exitStatus);
-}
-
-
-VOID
-DisplayInformation(char *str)
-{
-  (void) MessageBox(hwndMain, str, "Information", MB_OK|MB_ICONINFORMATION);
-}
-
-
-VOID
-DisplayNote(char *str)
-{
-  ErrorPopUp("Note", str);
-}
-
-
-typedef struct {
-  char *title, *question, *replyPrefix;
-  ProcRef pr;
-} QuestionParams;
-
-LRESULT CALLBACK
-QuestionDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static QuestionParams *qp;
-  char reply[MSG_SIZ];
-  int len, err;
-
-  switch (message) {
-  case WM_INITDIALOG:
-    qp = (QuestionParams *) lParam;
-    CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));
-    SetWindowText(hDlg, qp->title);
-    SetDlgItemText(hDlg, OPT_QuestionText, qp->question);
-    SetFocus(GetDlgItem(hDlg, OPT_QuestionInput));
-    return FALSE;
-
-  case WM_COMMAND:
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      strcpy(reply, qp->replyPrefix);
-      if (*reply) strcat(reply, " ");
-      len = strlen(reply);
-      GetDlgItemText(hDlg, OPT_QuestionInput, reply + len, sizeof(reply) - len);
-      strcat(reply, "\n");
-      OutputToProcess(qp->pr, reply, strlen(reply), &err);
-      EndDialog(hDlg, TRUE);
-      if (err) DisplayFatalError("Error writing to chess program", err, 1);
-      return TRUE;
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-    default:
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-AskQuestion(char* title, char *question, char *replyPrefix, ProcRef pr)
-{
-    QuestionParams qp;
-    FARPROC lpProc;
-    
-    qp.title = title;
-    qp.question = question;
-    qp.replyPrefix = replyPrefix;
-    qp.pr = pr;
-    lpProc = MakeProcInstance((FARPROC)QuestionDialog, hInst);
-    DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_Question),
-      hwndMain, (DLGPROC)lpProc, (LPARAM)&qp);
-    FreeProcInstance(lpProc);
-}
-
-/* [AS] Pick FRC position */
-LRESULT CALLBACK NewGameFRC_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-    static int * lpIndexFRC;
-    BOOL index_is_ok;
-    char buf[16];
-
-    switch( message )
-    {
-    case WM_INITDIALOG:
-        lpIndexFRC = (int *) lParam;
-
-        CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));
-
-        SendDlgItemMessage( hDlg, IDC_NFG_Edit, EM_SETLIMITTEXT, sizeof(buf)-1, 0 );
-        SetDlgItemInt( hDlg, IDC_NFG_Edit, *lpIndexFRC, TRUE );
-        SendDlgItemMessage( hDlg, IDC_NFG_Edit, EM_SETSEL, 0, -1 );
-        SetFocus(GetDlgItem(hDlg, IDC_NFG_Edit));
-
-        break;
-
-    case WM_COMMAND:
-        switch( LOWORD(wParam) ) {
-        case IDOK:
-            *lpIndexFRC = GetDlgItemInt(hDlg, IDC_NFG_Edit, &index_is_ok, TRUE );
-            EndDialog( hDlg, 0 );
-	    shuffleOpenings = TRUE; /* [HGM] shuffle: switch shuffling on for as long as we stay in current variant */
-            return TRUE;
-        case IDCANCEL:
-            EndDialog( hDlg, 1 );   
-            return TRUE;
-        case IDC_NFG_Edit:
-            if( HIWORD(wParam) == EN_CHANGE ) {
-                GetDlgItemInt(hDlg, IDC_NFG_Edit, &index_is_ok, TRUE );
-
-                EnableWindow( GetDlgItem(hDlg, IDOK), index_is_ok );
-            }
-            return TRUE;
-        case IDC_NFG_Random:
-            sprintf( buf, "%d", myrandom() ); /* [HGM] shuffle: no longer limit to 960 */
-            SetDlgItemText(hDlg, IDC_NFG_Edit, buf );
-            return TRUE;
-        }
-
-        break;
-    }
-
-    return FALSE;
-}
-
-int NewGameFRC()
-{
-    int result;
-    int index = appData.defaultFrcPosition;
-    FARPROC lpProc = MakeProcInstance( (FARPROC) NewGameFRC_Proc, hInst );
-
-    result = DialogBoxParam( hInst, MAKEINTRESOURCE(DLG_NewGameFRC), hwndMain, (DLGPROC)lpProc, (LPARAM)&index );
-
-    if( result == 0 ) {
-        appData.defaultFrcPosition = index;
-    }
-
-    return result;
-}
-
-/* [AS] Game list options */
-typedef struct {
-    char id;
-    char * name;
-} GLT_Item;
-
-static GLT_Item GLT_ItemInfo[] = {
-    { GLT_EVENT,      "Event" },
-    { GLT_SITE,       "Site" },
-    { GLT_DATE,       "Date" },
-    { GLT_ROUND,      "Round" },
-    { GLT_PLAYERS,    "Players" },
-    { GLT_RESULT,     "Result" },
-    { GLT_WHITE_ELO,  "White Rating" },
-    { GLT_BLACK_ELO,  "Black Rating" },
-    { GLT_TIME_CONTROL,"Time Control" },
-    { GLT_VARIANT,    "Variant" },
-    { GLT_OUT_OF_BOOK,PGN_OUT_OF_BOOK },
-    { 0, 0 }
-};
-
-const char * GLT_FindItem( char id )
-{
-    const char * result = 0;
-
-    GLT_Item * list = GLT_ItemInfo;
-
-    while( list->id != 0 ) {
-        if( list->id == id ) {
-            result = list->name;
-            break;
-        }
-
-        list++;
-    }
-
-    return result;
-}
-
-void GLT_AddToList( HWND hDlg, int iDlgItem, char id, int index )
-{
-    const char * name = GLT_FindItem( id );
-
-    if( name != 0 ) {
-        if( index >= 0 ) {
-            SendDlgItemMessage( hDlg, iDlgItem, LB_INSERTSTRING, index, (LPARAM) name );
-        }
-        else {
-            SendDlgItemMessage( hDlg, iDlgItem, LB_ADDSTRING, 0, (LPARAM) name );
-        }
-    }
-}
-
-void GLT_TagsToList( HWND hDlg, char * tags )
-{
-    char * pc = tags;
-
-    SendDlgItemMessage( hDlg, IDC_GameListTags, LB_RESETCONTENT, 0, 0 );
-
-    while( *pc ) {
-        GLT_AddToList( hDlg, IDC_GameListTags, *pc, -1 );
-        pc++;
-    }
-
-    SendDlgItemMessage( hDlg, IDC_GameListTags, LB_ADDSTRING, 0, (LPARAM) "\t --- Hidden tags ---" );
-
-    pc = GLT_ALL_TAGS;
-
-    while( *pc ) {
-        if( strchr( tags, *pc ) == 0 ) {
-            GLT_AddToList( hDlg, IDC_GameListTags, *pc, -1 );
-        }
-        pc++;
-    }
-
-    SendDlgItemMessage( hDlg, IDC_GameListTags, LB_SETCURSEL, 0, 0 );
-}
-
-char GLT_ListItemToTag( HWND hDlg, int index )
-{
-    char result = '\0';
-    char name[128];
-
-    GLT_Item * list = GLT_ItemInfo;
-
-    if( SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETTEXT, index, (LPARAM) name ) != LB_ERR ) {
-        while( list->id != 0 ) {
-            if( strcmp( list->name, name ) == 0 ) {
-                result = list->id;
-                break;
-            }
-
-            list++;
-        }
-    }
-
-    return result;
-}
-
-void GLT_MoveSelection( HWND hDlg, int delta )
-{
-    int idx1 = (int) SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETCURSEL, 0, 0 );
-    int idx2 = idx1 + delta;
-    int count = (int) SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETCOUNT, 0, 0 );
-
-    if( idx1 >=0 && idx1 < count && idx2 >= 0 && idx2 < count ) {
-        char buf[128];
-
-        SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETTEXT, idx1, (LPARAM) buf );
-        SendDlgItemMessage( hDlg, IDC_GameListTags, LB_DELETESTRING, idx1, 0 );
-        SendDlgItemMessage( hDlg, IDC_GameListTags, LB_INSERTSTRING, idx2, (LPARAM) buf );
-        SendDlgItemMessage( hDlg, IDC_GameListTags, LB_SETCURSEL, idx2, 0 );
-    }
-}
-
-LRESULT CALLBACK GameListOptions_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-    static char glt[64];
-    static char * lpUserGLT;
-
-    switch( message )
-    {
-    case WM_INITDIALOG:
-        lpUserGLT = (char *) lParam;
-        
-        strcpy( glt, lpUserGLT );
-
-        CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));
-
-        /* Initialize list */
-        GLT_TagsToList( hDlg, glt );
-
-        SetFocus( GetDlgItem(hDlg, IDC_GameListTags) );
-
-        break;
-
-    case WM_COMMAND:
-        switch( LOWORD(wParam) ) {
-        case IDOK:
-            {
-                char * pc = lpUserGLT;
-                int idx = 0;
-//                int cnt = (int) SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETCOUNT, 0, 0 );
-                char id;
-
-                do {
-                    id = GLT_ListItemToTag( hDlg, idx );
-
-                    *pc++ = id;
-                    idx++;
-                } while( id != '\0' );
-            }
-            EndDialog( hDlg, 0 );
-            return TRUE;
-        case IDCANCEL:
-            EndDialog( hDlg, 1 );
-            return TRUE;
-
-        case IDC_GLT_Default:
-            strcpy( glt, GLT_DEFAULT_TAGS );
-            GLT_TagsToList( hDlg, glt );
-            return TRUE;
-
-        case IDC_GLT_Restore:
-            strcpy( glt, lpUserGLT );
-            GLT_TagsToList( hDlg, glt );
-            return TRUE;
-
-        case IDC_GLT_Up:
-            GLT_MoveSelection( hDlg, -1 );
-            return TRUE;
-
-        case IDC_GLT_Down:
-            GLT_MoveSelection( hDlg, +1 );
-            return TRUE;
-        }
-
-        break;
-    }
-
-    return FALSE;
-}
-
-int GameListOptions()
-{
-    char glt[64];
-    int result;
-    FARPROC lpProc = MakeProcInstance( (FARPROC) GameListOptions_Proc, hInst );
-
-    strcpy( glt, appData.gameListTags );
-
-    result = DialogBoxParam( hInst, MAKEINTRESOURCE(DLG_GameListOptions), hwndMain, (DLGPROC)lpProc, (LPARAM)glt );
-
-    if( result == 0 ) {
-        /* [AS] Memory leak here! */
-        appData.gameListTags = strdup( glt ); 
-    }
-
-    return result;
-}
-
-
-VOID
-DisplayIcsInteractionTitle(char *str)
-{
-  char consoleTitle[MSG_SIZ];
-
-  sprintf(consoleTitle, "%s: %s", szConsoleTitle, str);
-  SetWindowText(hwndConsole, consoleTitle);
-}
-
-void
-DrawPosition(int fullRedraw, Board board)
-{
-  HDCDrawPosition(NULL, (BOOLEAN) fullRedraw, board); 
-}
-
-
-VOID
-ResetFrontEnd()
-{
-  fromX = fromY = -1;
-  if (dragInfo.pos.x != -1 || dragInfo.pos.y != -1) {
-    dragInfo.pos.x = dragInfo.pos.y = -1;
-    dragInfo.pos.x = dragInfo.pos.y = -1;
-    dragInfo.lastpos = dragInfo.pos;
-    dragInfo.start.x = dragInfo.start.y = -1;
-    dragInfo.from = dragInfo.start;
-    ReleaseCapture();
-    DrawPosition(TRUE, NULL);
-  }
-}
-
-
-VOID
-CommentPopUp(char *title, char *str)
-{
-  HWND hwnd = GetActiveWindow();
-  EitherCommentPopUp(0, title, str, FALSE);
-  SetActiveWindow(hwnd);
-}
-
-VOID
-CommentPopDown(void)
-{
-  CheckMenuItem(GetMenu(hwndMain), IDM_EditComment, MF_UNCHECKED);
-  if (commentDialog) {
-    ShowWindow(commentDialog, SW_HIDE);
-  }
-  commentDialogUp = FALSE;
-}
-
-VOID
-EditCommentPopUp(int index, char *title, char *str)
-{
-  EitherCommentPopUp(index, title, str, TRUE);
-}
-
-
-VOID
-RingBell()
-{
-  MyPlaySound(&sounds[(int)SoundMove]);
-}
-
-VOID PlayIcsWinSound()
-{
-  MyPlaySound(&sounds[(int)SoundIcsWin]);
-}
-
-VOID PlayIcsLossSound()
-{
-  MyPlaySound(&sounds[(int)SoundIcsLoss]);
-}
-
-VOID PlayIcsDrawSound()
-{
-  MyPlaySound(&sounds[(int)SoundIcsDraw]);
-}
-
-VOID PlayIcsUnfinishedSound()
-{
-  MyPlaySound(&sounds[(int)SoundIcsUnfinished]);
-}
-
-VOID
-PlayAlarmSound()
-{
-  MyPlaySound(&sounds[(int)SoundAlarm]);
-}
-
-
-VOID
-EchoOn()
-{
-  HWND hInput;
-  consoleEcho = TRUE;
-  hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-  SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&consoleCF);
-  SendMessage(hInput, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor);
-}
-
-
-VOID
-EchoOff()
-{
-  CHARFORMAT cf;
-  HWND hInput;
-  consoleEcho = FALSE;
-  hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput);
-  /* This works OK: set text and background both to the same color */
-  cf = consoleCF;
-  cf.crTextColor = COLOR_ECHOOFF;
-  SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
-  SendMessage(hInput, EM_SETBKGNDCOLOR, FALSE, cf.crTextColor);
-}
-
-/* No Raw()...? */
-
-void Colorize(ColorClass cc, int continuation)
-{
-  currentColorClass = cc;
-  consoleCF.dwMask = CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT;
-  consoleCF.crTextColor = textAttribs[cc].color;
-  consoleCF.dwEffects = textAttribs[cc].effects;
-  if (!continuation) MyPlaySound(&textAttribs[cc].sound);
-}
-
-char *
-UserName()
-{
-  static char buf[MSG_SIZ];
-  DWORD bufsiz = MSG_SIZ;
-
-  if(appData.userName != NULL && appData.userName[0] != 0) { 
-	return appData.userName; /* [HGM] username: prefer name selected by user over his system login */
-  }
-  if (!GetUserName(buf, &bufsiz)) {
-    /*DisplayError("Error getting user name", GetLastError());*/
-    strcpy(buf, "User");
-  }
-  return buf;
-}
-
-char *
-HostName()
-{
-  static char buf[MSG_SIZ];
-  DWORD bufsiz = MSG_SIZ;
-
-  if (!GetComputerName(buf, &bufsiz)) {
-    /*DisplayError("Error getting host name", GetLastError());*/
-    strcpy(buf, "Unknown");
-  }
-  return buf;
-}
-
-
-int
-ClockTimerRunning()
-{
-  return clockTimerEvent != 0;
-}
-
-int
-StopClockTimer()
-{
-  if (clockTimerEvent == 0) return FALSE;
-  KillTimer(hwndMain, clockTimerEvent);
-  clockTimerEvent = 0;
-  return TRUE;
-}
-
-void
-StartClockTimer(long millisec)
-{
-  clockTimerEvent = SetTimer(hwndMain, (UINT) CLOCK_TIMER_ID,
-			     (UINT) millisec, NULL);
-}
-
-void
-DisplayWhiteClock(long timeRemaining, int highlight)
-{
-  HDC hdc;
-  char *flag = whiteFlag && gameMode == TwoMachinesPlay ? "(!)" : "";
-
-  if(appData.noGUI) return;
-  hdc = GetDC(hwndMain);
-  if (!IsIconic(hwndMain)) {
-    DisplayAClock(hdc, timeRemaining, highlight, 
-			flipClock ? &blackRect : &whiteRect, "White", flag);
-  }
-  if (highlight && iconCurrent == iconBlack) {
-    iconCurrent = iconWhite;
-    PostMessage(hwndMain, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent);
-    if (IsIconic(hwndMain)) {
-      DrawIcon(hdc, 2, 2, iconCurrent);
-    }
-  }
-  (void) ReleaseDC(hwndMain, hdc);
-  if (hwndConsole)
-    PostMessage(hwndConsole, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent);
-}
-
-void
-DisplayBlackClock(long timeRemaining, int highlight)
-{
-  HDC hdc;
-  char *flag = blackFlag && gameMode == TwoMachinesPlay ? "(!)" : "";
-
-  if(appData.noGUI) return;
-  hdc = GetDC(hwndMain);
-  if (!IsIconic(hwndMain)) {
-    DisplayAClock(hdc, timeRemaining, highlight, 
-			flipClock ? &whiteRect : &blackRect, "Black", flag);
-  }
-  if (highlight && iconCurrent == iconWhite) {
-    iconCurrent = iconBlack;
-    PostMessage(hwndMain, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent);
-    if (IsIconic(hwndMain)) {
-      DrawIcon(hdc, 2, 2, iconCurrent);
-    }
-  }
-  (void) ReleaseDC(hwndMain, hdc);
-  if (hwndConsole)
-    PostMessage(hwndConsole, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent);
-}
-
-
-int
-LoadGameTimerRunning()
-{
-  return loadGameTimerEvent != 0;
-}
-
-int
-StopLoadGameTimer()
-{
-  if (loadGameTimerEvent == 0) return FALSE;
-  KillTimer(hwndMain, loadGameTimerEvent);
-  loadGameTimerEvent = 0;
-  return TRUE;
-}
-
-void
-StartLoadGameTimer(long millisec)
-{
-  loadGameTimerEvent = SetTimer(hwndMain, (UINT) LOAD_GAME_TIMER_ID,
-				(UINT) millisec, NULL);
-}
-
-void
-AutoSaveGame()
-{
-  char *defName;
-  FILE *f;
-  char fileTitle[MSG_SIZ];
-
-  defName = DefaultFileName(appData.oldSaveStyle ? "gam" : "pgn");
-  f = OpenFileDialog(hwndMain, "a", defName,
-		     appData.oldSaveStyle ? "gam" : "pgn",
-		     GAME_FILT, 
-		     "Save Game to File", NULL, fileTitle, NULL);
-  if (f != NULL) {
-    SaveGame(f, 0, "");
-    fclose(f);
-  }
-}
-
-
-void
-ScheduleDelayedEvent(DelayedEventCallback cb, long millisec)
-{
-  if (delayedTimerEvent != 0) {
-    if (appData.debugMode) {
-      fprintf(debugFP, "ScheduleDelayedEvent: event already scheduled\n");
-    }
-    KillTimer(hwndMain, delayedTimerEvent);
-    delayedTimerEvent = 0;
-    delayedTimerCallback();
-  }
-  delayedTimerCallback = cb;
-  delayedTimerEvent = SetTimer(hwndMain, (UINT) DELAYED_TIMER_ID,
-				(UINT) millisec, NULL);
-}
-
-DelayedEventCallback
-GetDelayedEvent()
-{
-  if (delayedTimerEvent) {
-    return delayedTimerCallback;
-  } else {
-    return NULL;
-  }
-}
-
-void
-CancelDelayedEvent()
-{
-  if (delayedTimerEvent) {
-    KillTimer(hwndMain, delayedTimerEvent);
-    delayedTimerEvent = 0;
-  }
-}
-
-DWORD GetWin32Priority(int nice)
-{ // [HGM] nice: translate Unix nice() value to indows priority class. (Code stolen from Polyglot 1.4w11)
-/*
-REALTIME_PRIORITY_CLASS     0x00000100
-HIGH_PRIORITY_CLASS         0x00000080
-ABOVE_NORMAL_PRIORITY_CLASS 0x00008000
-NORMAL_PRIORITY_CLASS       0x00000020
-BELOW_NORMAL_PRIORITY_CLASS 0x00004000
-IDLE_PRIORITY_CLASS         0x00000040
-*/
-        if (nice < -15) return 0x00000080;
-        if (nice < 0)   return 0x00008000;
-        if (nice == 0)  return 0x00000020;
-        if (nice < 15)  return 0x00004000;
-        return 0x00000040;
-}
-
-/* Start a child process running the given program.
-   The process's standard output can be read from "from", and its
-   standard input can be written to "to".
-   Exit with fatal error if anything goes wrong.
-   Returns an opaque pointer that can be used to destroy the process
-   later.
-*/
-int
-StartChildProcess(char *cmdLine, char *dir, ProcRef *pr)
-{
-#define BUFSIZE 4096
-
-  HANDLE hChildStdinRd, hChildStdinWr,
-    hChildStdoutRd, hChildStdoutWr;
-  HANDLE hChildStdinWrDup, hChildStdoutRdDup;
-  SECURITY_ATTRIBUTES saAttr;
-  BOOL fSuccess;
-  PROCESS_INFORMATION piProcInfo;
-  STARTUPINFO siStartInfo;
-  ChildProc *cp;
-  char buf[MSG_SIZ];
-  DWORD err;
-
-  if (appData.debugMode) {
-    fprintf(debugFP, "StartChildProcess (dir=\"%s\") %s\n", dir, cmdLine);
-  }
-
-  *pr = NoProc;
-
-  /* Set the bInheritHandle flag so pipe handles are inherited. */
-  saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
-  saAttr.bInheritHandle = TRUE;
-  saAttr.lpSecurityDescriptor = NULL;
-
-  /*
-   * The steps for redirecting child's STDOUT:
-   *     1. Create anonymous pipe to be STDOUT for child.
-   *     2. Create a noninheritable duplicate of read handle,
-   *         and close the inheritable read handle.
-   */
-
-  /* Create a pipe for the child's STDOUT. */
-  if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) {
-    return GetLastError();
-  }
-
-  /* Duplicate the read handle to the pipe, so it is not inherited. */
-  fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdoutRd,
-			     GetCurrentProcess(), &hChildStdoutRdDup, 0,
-			     FALSE,	/* not inherited */
-			     DUPLICATE_SAME_ACCESS);
-  if (! fSuccess) {
-    return GetLastError();
-  }
-  CloseHandle(hChildStdoutRd);
-
-  /*
-   * The steps for redirecting child's STDIN:
-   *     1. Create anonymous pipe to be STDIN for child.
-   *     2. Create a noninheritable duplicate of write handle,
-   *         and close the inheritable write handle.
-   */
-
-  /* Create a pipe for the child's STDIN. */
-  if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) {
-    return GetLastError();
-  }
-
-  /* Duplicate the write handle to the pipe, so it is not inherited. */
-  fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdinWr,
-			     GetCurrentProcess(), &hChildStdinWrDup, 0,
-			     FALSE,	/* not inherited */
-			     DUPLICATE_SAME_ACCESS);
-  if (! fSuccess) {
-    return GetLastError();
-  }
-  CloseHandle(hChildStdinWr);
-
-  /* Arrange to (1) look in dir for the child .exe file, and
-   * (2) have dir be the child's working directory.  Interpret
-   * dir relative to the directory WinBoard loaded from. */
-  GetCurrentDirectory(MSG_SIZ, buf);
-  SetCurrentDirectory(installDir);
-  SetCurrentDirectory(dir);
-
-  /* Now create the child process. */
-
-  siStartInfo.cb = sizeof(STARTUPINFO);
-  siStartInfo.lpReserved = NULL;
-  siStartInfo.lpDesktop = NULL;
-  siStartInfo.lpTitle = NULL;
-  siStartInfo.dwFlags = STARTF_USESTDHANDLES;
-  siStartInfo.cbReserved2 = 0;
-  siStartInfo.lpReserved2 = NULL;
-  siStartInfo.hStdInput = hChildStdinRd;
-  siStartInfo.hStdOutput = hChildStdoutWr;
-  siStartInfo.hStdError = hChildStdoutWr;
-
-  fSuccess = CreateProcess(NULL,
-			   cmdLine,	   /* command line */
-			   NULL,	   /* process security attributes */
-			   NULL,	   /* primary thread security attrs */
-			   TRUE,	   /* handles are inherited */
-			   DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP,
-			   NULL,	   /* use parent's environment */
-			   NULL,
-			   &siStartInfo, /* STARTUPINFO pointer */
-			   &piProcInfo); /* receives PROCESS_INFORMATION */
-
-  err = GetLastError();
-  SetCurrentDirectory(buf); /* return to prev directory */
-  if (! fSuccess) {
-    return err;
-  }
-
-  if (appData.niceEngines){ // [HGM] nice: adjust engine proc priority
-    if(appData.debugMode) fprintf(debugFP, "nice engine proc to %d\n", appData.niceEngines);
-    SetPriorityClass(piProcInfo.hProcess, GetWin32Priority(appData.niceEngines));
-  }
-
-  /* Close the handles we don't need in the parent */
-  CloseHandle(piProcInfo.hThread);
-  CloseHandle(hChildStdinRd);
-  CloseHandle(hChildStdoutWr);
-
-  /* Prepare return value */
-  cp = (ChildProc *) calloc(1, sizeof(ChildProc));
-  cp->kind = CPReal;
-  cp->hProcess = piProcInfo.hProcess;
-  cp->pid = piProcInfo.dwProcessId;
-  cp->hFrom = hChildStdoutRdDup;
-  cp->hTo = hChildStdinWrDup;
-
-  *pr = (void *) cp;
-
-  /* Klaus Friedel says that this Sleep solves a problem under Windows
-     2000 where engines sometimes don't see the initial command(s)
-     from WinBoard and hang.  I don't understand how that can happen,
-     but the Sleep is harmless, so I've put it in.  Others have also
-     reported what may be the same problem, so hopefully this will fix
-     it for them too.  */
-  Sleep(500);
-
-  return NO_ERROR;
-}
-
-
-void
-DestroyChildProcess(ProcRef pr, int/*boolean*/ signal)
-{
-  ChildProc *cp; int result;
-
-  cp = (ChildProc *) pr;
-  if (cp == NULL) return;
-
-  switch (cp->kind) {
-  case CPReal:
-    /* TerminateProcess is considered harmful, so... */
-    CloseHandle(cp->hTo); /* Closing this will give the child an EOF and hopefully kill it */
-    if (cp->hFrom) CloseHandle(cp->hFrom);  /* if NULL, InputThread will close it */
-    /* The following doesn't work because the chess program
-       doesn't "have the same console" as WinBoard.  Maybe
-       we could arrange for this even though neither WinBoard
-       nor the chess program uses a console for stdio? */
-    /*!!if (signal) GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, cp->pid);*/
-
-    /* [AS] Special termination modes for misbehaving programs... */
-    if( signal == 9 ) { 
-        result = TerminateProcess( cp->hProcess, 0 );
-
-        if ( appData.debugMode) {
-            fprintf( debugFP, "Terminating process %lu, result=%d\n", cp->pid, result );
-        }
-    }
-    else if( signal == 10 ) {
-        DWORD dw = WaitForSingleObject( cp->hProcess, 3*1000 ); // Wait 3 seconds at most
-
-        if( dw != WAIT_OBJECT_0 ) {
-            result = TerminateProcess( cp->hProcess, 0 );
-
-            if ( appData.debugMode) {
-                fprintf( debugFP, "Process %lu still alive after timeout, killing... result=%d\n", cp->pid, result );
-            }
-
-        }
-    }
-
-    CloseHandle(cp->hProcess);
-    break;
-
-  case CPComm:
-    if (cp->hFrom) CloseHandle(cp->hFrom);
-    break;
-
-  case CPSock:
-    closesocket(cp->sock);
-    WSACleanup();
-    break;
-
-  case CPRcmd:
-    if (signal) send(cp->sock2, "\017", 1, 0);  /* 017 = 15 = SIGTERM */
-    closesocket(cp->sock);
-    closesocket(cp->sock2);
-    WSACleanup();
-    break;
-  }
-  free(cp);
-}
-
-void
-InterruptChildProcess(ProcRef pr)
-{
-  ChildProc *cp;
-
-  cp = (ChildProc *) pr;
-  if (cp == NULL) return;
-  switch (cp->kind) {
-  case CPReal:
-    /* The following doesn't work because the chess program
-       doesn't "have the same console" as WinBoard.  Maybe
-       we could arrange for this even though neither WinBoard
-       nor the chess program uses a console for stdio */
-    /*!!GenerateConsoleCtrlEvent(CTRL_C_EVENT, cp->pid);*/
-    break;
-
-  case CPComm:
-  case CPSock:
-    /* Can't interrupt */
-    break;
-
-  case CPRcmd:
-    send(cp->sock2, "\002", 1, 0);  /* 2 = SIGINT */
-    break;
-  }
-}
-
-
-int
-OpenTelnet(char *host, char *port, ProcRef *pr)
-{
-  char cmdLine[MSG_SIZ];
-
-  if (port[0] == NULLCHAR) {
-    sprintf(cmdLine, "%s %s", appData.telnetProgram, host);
-  } else {
-    sprintf(cmdLine, "%s %s %s", appData.telnetProgram, host, port);
-  }
-  return StartChildProcess(cmdLine, "", pr);
-}
-
-
-/* Code to open TCP sockets */
-
-int
-OpenTCP(char *host, char *port, ProcRef *pr)
-{
-  ChildProc *cp;
-  int err;
-  SOCKET s;
-  struct sockaddr_in sa, mysa;
-  struct hostent FAR *hp;
-  unsigned short uport;
-  WORD wVersionRequested;
-  WSADATA wsaData;
-
-  /* Initialize socket DLL */
-  wVersionRequested = MAKEWORD(1, 1);
-  err = WSAStartup(wVersionRequested, &wsaData);
-  if (err != 0) return err;
-
-  /* Make socket */
-  if ((s = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
-    err = WSAGetLastError();
-    WSACleanup();
-    return err;
-  }
-
-  /* Bind local address using (mostly) don't-care values.
-   */
-  memset((char *) &mysa, 0, sizeof(struct sockaddr_in));
-  mysa.sin_family = AF_INET;
-  mysa.sin_addr.s_addr = INADDR_ANY;
-  uport = (unsigned short) 0;
-  mysa.sin_port = htons(uport);
-  if (bind(s, (struct sockaddr *) &mysa, sizeof(struct sockaddr_in))
-      == SOCKET_ERROR) {
-    err = WSAGetLastError();
-    WSACleanup();
-    return err;
-  }
-
-  /* Resolve remote host name */
-  memset((char *) &sa, 0, sizeof(struct sockaddr_in));
-  if (!(hp = gethostbyname(host))) {
-    unsigned int b0, b1, b2, b3;
-
-    err = WSAGetLastError();
-
-    if (sscanf(host, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) == 4) {
-      hp = (struct hostent *) calloc(1, sizeof(struct hostent));
-      hp->h_addrtype = AF_INET;
-      hp->h_length = 4;
-      hp->h_addr_list = (char **) calloc(2, sizeof(char *));
-      hp->h_addr_list[0] = (char *) malloc(4);
-      hp->h_addr_list[0][0] = (char) b0;
-      hp->h_addr_list[0][1] = (char) b1;
-      hp->h_addr_list[0][2] = (char) b2;
-      hp->h_addr_list[0][3] = (char) b3;
-    } else {
-      WSACleanup();
-      return err;
-    }
-  }
-  sa.sin_family = hp->h_addrtype;
-  uport = (unsigned short) atoi(port);
-  sa.sin_port = htons(uport);
-  memcpy((char *) &sa.sin_addr, hp->h_addr, hp->h_length);
-
-  /* Make connection */
-  if (connect(s, (struct sockaddr *) &sa,
-	      sizeof(struct sockaddr_in)) == SOCKET_ERROR) {
-    err = WSAGetLastError();
-    WSACleanup();
-    return err;
-  }
-
-  /* Prepare return value */
-  cp = (ChildProc *) calloc(1, sizeof(ChildProc));
-  cp->kind = CPSock;
-  cp->sock = s;
-  *pr = (ProcRef *) cp;
-
-  return NO_ERROR;
-}
-
-int
-OpenCommPort(char *name, ProcRef *pr)
-{
-  HANDLE h;
-  COMMTIMEOUTS ct;
-  ChildProc *cp;
-  char fullname[MSG_SIZ];
-
-  if (*name != '\\')
-    sprintf(fullname, "\\\\.\\%s", name);
-  else
-    strcpy(fullname, name);
-
-  h = CreateFile(name, GENERIC_READ | GENERIC_WRITE,
-		 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
-  if (h == (HANDLE) -1) {
-    return GetLastError();
-  }
-  hCommPort = h;
-
-  if (!SetCommState(h, (LPDCB) &dcb)) return GetLastError();
-
-  /* Accumulate characters until a 100ms pause, then parse */
-  ct.ReadIntervalTimeout = 100;
-  ct.ReadTotalTimeoutMultiplier = 0;
-  ct.ReadTotalTimeoutConstant = 0;
-  ct.WriteTotalTimeoutMultiplier = 0;
-  ct.WriteTotalTimeoutConstant = 0;
-  if (!SetCommTimeouts(h, (LPCOMMTIMEOUTS) &ct)) return GetLastError();
-
-  /* Prepare return value */
-  cp = (ChildProc *) calloc(1, sizeof(ChildProc));
-  cp->kind = CPComm;
-  cp->hFrom = h;
-  cp->hTo = h;
-  *pr = (ProcRef *) cp;
-
-  return NO_ERROR;
-}
-
-int
-OpenLoopback(ProcRef *pr)
-{
-  DisplayFatalError("Not implemented", 0, 1);
-  return NO_ERROR;
-}
-
-
-int
-OpenRcmd(char* host, char* user, char* cmd, ProcRef* pr)
-{
-  ChildProc *cp;
-  int err;
-  SOCKET s, s2, s3;
-  struct sockaddr_in sa, mysa;
-  struct hostent FAR *hp;
-  unsigned short uport;
-  WORD wVersionRequested;
-  WSADATA wsaData;
-  int fromPort;
-  char stderrPortStr[MSG_SIZ];
-
-  /* Initialize socket DLL */
-  wVersionRequested = MAKEWORD(1, 1);
-  err = WSAStartup(wVersionRequested, &wsaData);
-  if (err != 0) return err;
-
-  /* Resolve remote host name */
-  memset((char *) &sa, 0, sizeof(struct sockaddr_in));
-  if (!(hp = gethostbyname(host))) {
-    unsigned int b0, b1, b2, b3;
-
-    err = WSAGetLastError();
-
-    if (sscanf(host, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) == 4) {
-      hp = (struct hostent *) calloc(1, sizeof(struct hostent));
-      hp->h_addrtype = AF_INET;
-      hp->h_length = 4;
-      hp->h_addr_list = (char **) calloc(2, sizeof(char *));
-      hp->h_addr_list[0] = (char *) malloc(4);
-      hp->h_addr_list[0][0] = (char) b0;
-      hp->h_addr_list[0][1] = (char) b1;
-      hp->h_addr_list[0][2] = (char) b2;
-      hp->h_addr_list[0][3] = (char) b3;
-    } else {
-      WSACleanup();
-      return err;
-    }
-  }
-  sa.sin_family = hp->h_addrtype;
-  uport = (unsigned short) 514;
-  sa.sin_port = htons(uport);
-  memcpy((char *) &sa.sin_addr, hp->h_addr, hp->h_length);
-
-  /* Bind local socket to unused "privileged" port address
-   */
-  s = INVALID_SOCKET;
-  memset((char *) &mysa, 0, sizeof(struct sockaddr_in));
-  mysa.sin_family = AF_INET;
-  mysa.sin_addr.s_addr = INADDR_ANY;
-  for (fromPort = 1023;; fromPort--) {
-    if (fromPort < 0) {
-      WSACleanup();
-      return WSAEADDRINUSE;
-    }
-    if (s == INVALID_SOCKET) {
-      if ((s = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
-	err = WSAGetLastError();
-	WSACleanup();
-	return err;
-      }
-    }
-    uport = (unsigned short) fromPort;
-    mysa.sin_port = htons(uport);
-    if (bind(s, (struct sockaddr *) &mysa, sizeof(struct sockaddr_in))
-	== SOCKET_ERROR) {
-      err = WSAGetLastError();
-      if (err == WSAEADDRINUSE) continue;
-      WSACleanup();
-      return err;
-    }
-    if (connect(s, (struct sockaddr *) &sa,
-      sizeof(struct sockaddr_in)) == SOCKET_ERROR) {
-      err = WSAGetLastError();
-      if (err == WSAEADDRINUSE) {
-	closesocket(s);
-        s = -1;
-	continue;
-      }
-      WSACleanup();
-      return err;
-    }
-    break;
-  }
-
-  /* Bind stderr local socket to unused "privileged" port address
-   */
-  s2 = INVALID_SOCKET;
-  memset((char *) &mysa, 0, sizeof(struct sockaddr_in));
-  mysa.sin_family = AF_INET;
-  mysa.sin_addr.s_addr = INADDR_ANY;
-  for (fromPort = 1023;; fromPort--) {
-    if (fromPort == prevStderrPort) continue; // don't reuse port
-    if (fromPort < 0) {
-      (void) closesocket(s);
-      WSACleanup();
-      return WSAEADDRINUSE;
-    }
-    if (s2 == INVALID_SOCKET) {
-      if ((s2 = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
-	err = WSAGetLastError();
-	closesocket(s);
-	WSACleanup();
-	return err;
-      }
-    }
-    uport = (unsigned short) fromPort;
-    mysa.sin_port = htons(uport);
-    if (bind(s2, (struct sockaddr *) &mysa, sizeof(struct sockaddr_in))
-	== SOCKET_ERROR) {
-      err = WSAGetLastError();
-      if (err == WSAEADDRINUSE) continue;
-      (void) closesocket(s);
-      WSACleanup();
-      return err;
-    }
-    if (listen(s2, 1) == SOCKET_ERROR) {
-      err = WSAGetLastError();
-      if (err == WSAEADDRINUSE) {
-	closesocket(s2);
-	s2 = INVALID_SOCKET;
-	continue;
-      }
-      (void) closesocket(s);
-      (void) closesocket(s2);
-      WSACleanup();
-      return err;
-    }
-    break;
-  }
-  prevStderrPort = fromPort; // remember port used
-  sprintf(stderrPortStr, "%d", fromPort);
-
-  if (send(s, stderrPortStr, strlen(stderrPortStr) + 1, 0) == SOCKET_ERROR) {
-    err = WSAGetLastError();
-    (void) closesocket(s);
-    (void) closesocket(s2);
-    WSACleanup();
-    return err;
-  }
-
-  if (send(s, UserName(), strlen(UserName()) + 1, 0) == SOCKET_ERROR) {
-    err = WSAGetLastError();
-    (void) closesocket(s);
-    (void) closesocket(s2);
-    WSACleanup();
-    return err;
-  }
-  if (*user == NULLCHAR) user = UserName();
-  if (send(s, user, strlen(user) + 1, 0) == SOCKET_ERROR) {
-    err = WSAGetLastError();
-    (void) closesocket(s);
-    (void) closesocket(s2);
-    WSACleanup();
-    return err;
-  }
-  if (send(s, cmd, strlen(cmd) + 1, 0) == SOCKET_ERROR) {
-    err = WSAGetLastError();
-    (void) closesocket(s);
-    (void) closesocket(s2);
-    WSACleanup();
-    return err;
-  }
-
-  if ((s3 = accept(s2, NULL, NULL)) == INVALID_SOCKET) {
-    err = WSAGetLastError();
-    (void) closesocket(s);
-    (void) closesocket(s2);
-    WSACleanup();
-    return err;
-  }
-  (void) closesocket(s2);  /* Stop listening */
-
-  /* Prepare return value */
-  cp = (ChildProc *) calloc(1, sizeof(ChildProc));
-  cp->kind = CPRcmd;
-  cp->sock = s;
-  cp->sock2 = s3;
-  *pr = (ProcRef *) cp;
-
-  return NO_ERROR;
-}
-
-
-InputSourceRef
-AddInputSource(ProcRef pr, int lineByLine,
-	       InputCallback func, VOIDSTAR closure)
-{
-  InputSource *is, *is2 = NULL;
-  ChildProc *cp = (ChildProc *) pr;
-
-  is = (InputSource *) calloc(1, sizeof(InputSource));
-  is->lineByLine = lineByLine;
-  is->func = func;
-  is->closure = closure;
-  is->second = NULL;
-  is->next = is->buf;
-  if (pr == NoProc) {
-    is->kind = CPReal;
-    consoleInputSource = is;
-  } else {
-    is->kind = cp->kind;
-    /* 
-        [AS] Try to avoid a race condition if the thread is given control too early:
-        we create all threads suspended so that the is->hThread variable can be
-        safely assigned, then let the threads start with ResumeThread.
-    */
-    switch (cp->kind) {
-    case CPReal:
-      is->hFile = cp->hFrom;
-      cp->hFrom = NULL; /* now owned by InputThread */
-      is->hThread =
-	CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) NonOvlInputThread,
-		     (LPVOID) is, CREATE_SUSPENDED, &is->id);
-      break;
-
-    case CPComm:
-      is->hFile = cp->hFrom;
-      cp->hFrom = NULL; /* now owned by InputThread */
-      is->hThread =
-	CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) InputThread,
-		     (LPVOID) is, CREATE_SUSPENDED, &is->id);
-      break;
-
-    case CPSock:
-      is->sock = cp->sock;
-      is->hThread =
-	CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) SocketInputThread,
-		     (LPVOID) is, CREATE_SUSPENDED, &is->id);
-      break;
-
-    case CPRcmd:
-      is2 = (InputSource *) calloc(1, sizeof(InputSource));
-      *is2 = *is;
-      is->sock = cp->sock;
-      is->second = is2;
-      is2->sock = cp->sock2;
-      is2->second = is2;
-      is->hThread =
-	CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) SocketInputThread,
-		     (LPVOID) is, CREATE_SUSPENDED, &is->id);
-      is2->hThread =
-	CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) SocketInputThread,
-		     (LPVOID) is2, CREATE_SUSPENDED, &is2->id);
-      break;
-    }
-
-    if( is->hThread != NULL ) {
-        ResumeThread( is->hThread );
-    }
-
-    if( is2 != NULL && is2->hThread != NULL ) {
-        ResumeThread( is2->hThread );
-    }
-  }
-
-  return (InputSourceRef) is;
-}
-
-void
-RemoveInputSource(InputSourceRef isr)
-{
-  InputSource *is;
-
-  is = (InputSource *) isr;
-  is->hThread = NULL;  /* tell thread to stop */
-  CloseHandle(is->hThread);
-  if (is->second != NULL) {
-    is->second->hThread = NULL;
-    CloseHandle(is->second->hThread);
-  }
-}
-
-
-int
-OutputToProcess(ProcRef pr, char *message, int count, int *outError)
-{
-  DWORD dOutCount;
-  int outCount = SOCKET_ERROR;
-  ChildProc *cp = (ChildProc *) pr;
-  static OVERLAPPED ovl;
-
-  if (pr == NoProc) {
-    ConsoleOutput(message, count, FALSE);
-    return count;
-  } 
-
-  if (ovl.hEvent == NULL) {
-    ovl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-  }
-  ovl.Internal = ovl.InternalHigh = ovl.Offset = ovl.OffsetHigh = 0;
-
-  switch (cp->kind) {
-  case CPSock:
-  case CPRcmd:
-    outCount = send(cp->sock, message, count, 0);
-    if (outCount == SOCKET_ERROR) {
-      *outError = WSAGetLastError();
-    } else {
-      *outError = NO_ERROR;
-    }
-    break;
-
-  case CPReal:
-    if (WriteFile(((ChildProc *)pr)->hTo, message, count,
-		  &dOutCount, NULL)) {
-      *outError = NO_ERROR;
-      outCount = (int) dOutCount;
-    } else {
-      *outError = GetLastError();
-    }
-    break;
-
-  case CPComm:
-    *outError = DoWriteFile(((ChildProc *)pr)->hTo, message, count,
-			    &dOutCount, &ovl);
-    if (*outError == NO_ERROR) {
-      outCount = (int) dOutCount;
-    }
-    break;
-  }
-  return outCount;
-}
-
-int
-OutputToProcessDelayed(ProcRef pr, char *message, int count, int *outError,
-		       long msdelay)
-{
-  /* Ignore delay, not implemented for WinBoard */
-  return OutputToProcess(pr, message, count, outError);
-}
-
-
-void
-CmailSigHandlerCallBack(InputSourceRef isr, VOIDSTAR closure,
-			char *buf, int count, int error)
-{
-  DisplayFatalError("Not implemented", 0, 1);
-}
-
-/* see wgamelist.c for Game List functions */
-/* see wedittags.c for Edit Tags functions */
-
-
-VOID
-ICSInitScript()
-{
-  FILE *f;
-  char buf[MSG_SIZ];
-  char *dummy;
-
-  if (SearchPath(installDir, appData.icsLogon, NULL, MSG_SIZ, buf, &dummy)) {
-    f = fopen(buf, "r");
-    if (f != NULL) {
-      ProcessICSInitScript(f);
-      fclose(f);
-    }
-  }
-}
-
-
-VOID
-StartAnalysisClock()
-{
-  if (analysisTimerEvent) return;
-  analysisTimerEvent = SetTimer(hwndMain, (UINT) ANALYSIS_TIMER_ID,
-		                        (UINT) 2000, NULL);
-}
-
-LRESULT CALLBACK
-AnalysisDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static HANDLE hwndText;
-  RECT rect;
-  static int sizeX, sizeY;
-  int newSizeX, newSizeY, flags;
-  MINMAXINFO *mmi;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Initialize the dialog items */
-    hwndText = GetDlgItem(hDlg, OPT_AnalysisText);
-    SetWindowText(hDlg, analysisTitle);
-    SetDlgItemText(hDlg, OPT_AnalysisText, analysisText);
-    /* Size and position the dialog */
-    if (!analysisDialog) {
-      analysisDialog = hDlg;
-      flags = SWP_NOZORDER;
-      GetClientRect(hDlg, &rect);
-      sizeX = rect.right;
-      sizeY = rect.bottom;
-      if (analysisX != CW_USEDEFAULT && analysisY != CW_USEDEFAULT &&
-	  analysisW != CW_USEDEFAULT && analysisH != CW_USEDEFAULT) {
-	WINDOWPLACEMENT wp;
-	EnsureOnScreen(&analysisX, &analysisY, 0, 0);
-	wp.length = sizeof(WINDOWPLACEMENT);
-	wp.flags = 0;
-	wp.showCmd = SW_SHOW;
-	wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;
-	wp.rcNormalPosition.left = analysisX;
-	wp.rcNormalPosition.right = analysisX + analysisW;
-	wp.rcNormalPosition.top = analysisY;
-	wp.rcNormalPosition.bottom = analysisY + analysisH;
-	SetWindowPlacement(hDlg, &wp);
-
-	GetClientRect(hDlg, &rect);
-	newSizeX = rect.right;
-	newSizeY = rect.bottom;
-        ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY,
-			      newSizeX, newSizeY);
-	sizeX = newSizeX;
-	sizeY = newSizeY;
-      }
-    }
-    return FALSE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDCANCEL:
-      if (appData.icsActive && appData.icsEngineAnalyze) { /* [DM] icsEngineAnalyze */
-          ExitAnalyzeMode();
-          ModeHighlight();
-          return TRUE;
-      }
-      EditGameEvent();
-      return TRUE;
-    default:
-      break;
-    }
-    break;
-
-  case WM_SIZE:
-    newSizeX = LOWORD(lParam);
-    newSizeY = HIWORD(lParam);
-    ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY);
-    sizeX = newSizeX;
-    sizeY = newSizeY;
-    break;
-
-  case WM_GETMINMAXINFO:
-    /* Prevent resizing window too small */
-    mmi = (MINMAXINFO *) lParam;
-    mmi->ptMinTrackSize.x = 100;
-    mmi->ptMinTrackSize.y = 100;
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-AnalysisPopUp(char* title, char* str)
-{
-  FARPROC lpProc;
-  char *p, *q;
-
-  /* [AS] */
-  EngineOutputPopUp();
-  return;
-
-  if (str == NULL) str = "";
-  p = (char *) malloc(2 * strlen(str) + 2);
-  q = p;
-  while (*str) {
-    if (*str == '\n') *q++ = '\r';
-    *q++ = *str++;
-  }
-  *q = NULLCHAR;
-  if (analysisText != NULL) free(analysisText);
-  analysisText = p;
-
-  if (analysisDialog) {
-    SetWindowText(analysisDialog, title);
-    SetDlgItemText(analysisDialog, OPT_AnalysisText, analysisText);
-    ShowWindow(analysisDialog, SW_SHOW);
-  } else {
-    analysisTitle = title;
-    lpProc = MakeProcInstance((FARPROC)AnalysisDialog, hInst);
-    CreateDialog(hInst, MAKEINTRESOURCE(DLG_Analysis),
-		 hwndMain, (DLGPROC)lpProc);
-    FreeProcInstance(lpProc);
-  }
-  analysisDialogUp = TRUE;  
-}
-
-VOID
-AnalysisPopDown()
-{
-  if (analysisDialog) {
-    ShowWindow(analysisDialog, SW_HIDE);
-  }
-  analysisDialogUp = FALSE;  
-}
-
-
-VOID
-SetHighlights(int fromX, int fromY, int toX, int toY)
-{
-  highlightInfo.sq[0].x = fromX;
-  highlightInfo.sq[0].y = fromY;
-  highlightInfo.sq[1].x = toX;
-  highlightInfo.sq[1].y = toY;
-}
-
-VOID
-ClearHighlights()
-{
-  highlightInfo.sq[0].x = highlightInfo.sq[0].y = 
-    highlightInfo.sq[1].x = highlightInfo.sq[1].y = -1;
-}
-
-VOID
-SetPremoveHighlights(int fromX, int fromY, int toX, int toY)
-{
-  premoveHighlightInfo.sq[0].x = fromX;
-  premoveHighlightInfo.sq[0].y = fromY;
-  premoveHighlightInfo.sq[1].x = toX;
-  premoveHighlightInfo.sq[1].y = toY;
-}
-
-VOID
-ClearPremoveHighlights()
-{
-  premoveHighlightInfo.sq[0].x = premoveHighlightInfo.sq[0].y = 
-    premoveHighlightInfo.sq[1].x = premoveHighlightInfo.sq[1].y = -1;
-}
-
-VOID
-ShutDownFrontEnd()
-{
-  if (saveSettingsOnExit) SaveSettings(settingsFileName);
-  DeleteClipboardTempFiles();
-}
-
-void
-BoardToTop()
-{
-    if (IsIconic(hwndMain))
-      ShowWindow(hwndMain, SW_RESTORE);
-
-    SetActiveWindow(hwndMain);
-}
-
-/*
- * Prototypes for animation support routines
- */
-static void ScreenSquare(int column, int row, POINT * pt);
-static void Tween( POINT * start, POINT * mid, POINT * finish, int factor,
-     POINT frames[], int * nFrames);
-
-
-void
-AnimateAtomicCapture(int fromX, int fromY, int toX, int toY, int nFrames)
-{	// [HGM] atomic: animate blast wave
-	int i;
-if(appData.debugMode) fprintf(debugFP, "exploding (%d,%d)\n", toX, toY);
-	explodeInfo.fromX = fromX;
-	explodeInfo.fromY = fromY;
-	explodeInfo.toX = toX;
-	explodeInfo.toY = toY;
-	for(i=1; i<nFrames; i++) {
-	    explodeInfo.radius = (i*180)/(nFrames-1);
-	    DrawPosition(FALSE, NULL);
-	    Sleep(appData.animSpeed);
-	}
-	explodeInfo.radius = 0;
-	DrawPosition(TRUE, NULL);
-}
-
-#define kFactor 4
-
-void
-AnimateMove(board, fromX, fromY, toX, toY)
-     Board board;
-     int fromX;
-     int fromY;
-     int toX;
-     int toY;
-{
-  ChessSquare piece;
-  POINT start, finish, mid;
-  POINT frames[kFactor * 2 + 1];
-  int nFrames, n;
-
-  if (!appData.animate) return;
-  if (doingSizing) return;
-  if (fromY < 0 || fromX < 0) return;
-  piece = board[fromY][fromX];
-  if (piece >= EmptySquare) return;
-
-  ScreenSquare(fromX, fromY, &start);
-  ScreenSquare(toX, toY, &finish);
-
-  /* All pieces except knights move in straight line */
-  if (piece != WhiteKnight && piece != BlackKnight) {
-    mid.x = start.x + (finish.x - start.x) / 2;
-    mid.y = start.y + (finish.y - start.y) / 2;
-  } else {
-    /* Knight: make diagonal movement then straight */
-    if (abs(toY - fromY) < abs(toX - fromX)) {
-       mid.x = start.x + (finish.x - start.x) / 2;
-       mid.y = finish.y;
-     } else {
-       mid.x = finish.x;
-       mid.y = start.y + (finish.y - start.y) / 2;
-     }
-  }
-  
-  /* Don't use as many frames for very short moves */
-  if (abs(toY - fromY) + abs(toX - fromX) <= 2)
-    Tween(&start, &mid, &finish, kFactor - 1, frames, &nFrames);
-  else
-    Tween(&start, &mid, &finish, kFactor, frames, &nFrames);
-
-  animInfo.from.x = fromX;
-  animInfo.from.y = fromY;
-  animInfo.to.x = toX;
-  animInfo.to.y = toY;
-  animInfo.lastpos = start;
-  animInfo.piece = piece;
-  for (n = 0; n < nFrames; n++) {
-    animInfo.pos = frames[n];
-    DrawPosition(FALSE, NULL);
-    animInfo.lastpos = animInfo.pos;
-    Sleep(appData.animSpeed);
-  }
-  animInfo.pos = finish;
-  DrawPosition(FALSE, NULL);
-  animInfo.piece = EmptySquare;
-  if(gameInfo.variant == VariantAtomic && 
-     (board[toY][toX] != EmptySquare || fromX != toX && (piece == WhitePawn || piece == BlackPawn) ) )
-	AnimateAtomicCapture(fromX, fromY, toX, toY, 2*nFrames);
-}
-
-/*      Convert board position to corner of screen rect and color       */
-
-static void
-ScreenSquare(column, row, pt)
-     int column; int row; POINT * pt;
-{
-  if (flipView) {
-    pt->x = lineGap + ((BOARD_WIDTH-1)-column) * (squareSize + lineGap);
-    pt->y = lineGap + row * (squareSize + lineGap);
-  } else {
-    pt->x = lineGap + column * (squareSize + lineGap);
-    pt->y = lineGap + ((BOARD_HEIGHT-1)-row) * (squareSize + lineGap);
-  }
-}
-
-/*      Generate a series of frame coords from start->mid->finish.
-        The movement rate doubles until the half way point is
-        reached, then halves back down to the final destination,
-        which gives a nice slow in/out effect. The algorithmn
-        may seem to generate too many intermediates for short
-        moves, but remember that the purpose is to attract the
-        viewers attention to the piece about to be moved and
-        then to where it ends up. Too few frames would be less
-        noticeable.                                             */
-
-static void
-Tween(start, mid, finish, factor, frames, nFrames)
-     POINT * start; POINT * mid;
-     POINT * finish; int factor;
-     POINT frames[]; int * nFrames;
-{
-  int n, fraction = 1, count = 0;
-
-  /* Slow in, stepping 1/16th, then 1/8th, ... */
-  for (n = 0; n < factor; n++)
-    fraction *= 2;
-  for (n = 0; n < factor; n++) {
-    frames[count].x = start->x + (mid->x - start->x) / fraction;
-    frames[count].y = start->y + (mid->y - start->y) / fraction;
-    count ++;
-    fraction = fraction / 2;
-  }
-  
-  /* Midpoint */
-  frames[count] = *mid;
-  count ++;
-  
-  /* Slow out, stepping 1/2, then 1/4, ... */
-  fraction = 2;
-  for (n = 0; n < factor; n++) {
-    frames[count].x = finish->x - (finish->x - mid->x) / fraction;
-    frames[count].y = finish->y - (finish->y - mid->y) / fraction;
-    count ++;
-    fraction = fraction * 2;
-  }
-  *nFrames = count;
-}
-
-void
-HistorySet( char movelist[][2*MOVE_LEN], int first, int last, int current )
-{
-#if 0
-    char buf[256];
-
-    sprintf( buf, "HistorySet: first=%d, last=%d, current=%d (%s)\n",
-        first, last, current, current >= 0 ? movelist[current] : "n/a" );
-
-    OutputDebugString( buf );
-#endif
-
-    MoveHistorySet( movelist, first, last, current, pvInfoList );
-
-    EvalGraphSet( first, last, current, pvInfoList );
-}
-
-void SetProgramStats( FrontEndProgramStats * stats )
-{
-#if 0
-    char buf[1024];
-
-    sprintf( buf, "SetStats for %d: depth=%d, nodes=%lu, score=%5.2f, time=%5.2f, pv=%s\n",
-        stats->which, stats->depth, stats->nodes, stats->score / 100.0, stats->time / 100.0, stats->pv == 0 ? "n/a" : stats->pv );
-
-    OutputDebugString( buf );
-#endif
-
-    EngineOutputUpdate( stats );
-}
diff --git a/winboard/winboard.dsp b/winboard/winboard.dsp
deleted file mode 100644
index 5db2925..0000000
--- a/winboard/winboard.dsp
+++ /dev/null
@@ -1,272 +0,0 @@
-# Microsoft Developer Studio Project File - Name="winboard" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Application" 0x0101
-
-CFG=winboard - Win32 Jaws Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "winboard.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "winboard.mak" CFG="winboard - Win32 Jaws Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "winboard - Win32 Release" (based on "Win32 (x86) Application")
-!MESSAGE "winboard - Win32 Debug" (based on "Win32 (x86) Application")
-!MESSAGE "winboard - Win32 Jaws Debug" (based on "Win32 (x86) Application")
-!MESSAGE "winboard - Win32 Jaws Release" (based on "Win32 (x86) Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "winboard - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Og /Os /Oy /Gf /I "." /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /YX /Zl /FD /Gs /GA /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /i ".." /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
-# ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrt.lib /nologo /subsystem:windows /pdb:none /machine:I386
-
-!ELSEIF  "$(CFG)" == "winboard - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /i ".." /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrtd.lib /nologo /subsystem:windows /map /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "winboard - Win32 Jaws Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "winboard___Win32_Jaws_Debug"
-# PROP BASE Intermediate_Dir "winboard___Win32_Jaws_Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Jaws-Debug"
-# PROP Intermediate_Dir "Jaws-Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /D "JAWS" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /i ".." /d "_DEBUG"
-# ADD RSC /l 0x409 /i ".." /d "_DEBUG" /d "JAWS"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrtd.lib /nologo /subsystem:windows /map /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrtd.lib /nologo /subsystem:windows /map /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "winboard - Win32 Jaws Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "winboard___Win32_Jaws_Release"
-# PROP BASE Intermediate_Dir "winboard___Win32_Jaws_Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Jaws-Release"
-# PROP Intermediate_Dir "Jaws-Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /Og /Os /Oy /Gf /I "." /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /YX /Zl /FD /Gs /GA /c
-# ADD CPP /nologo /MD /W3 /GX /Og /Os /Oy /Gf /I "." /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /D "JAWS" /YX /Zl /FD /Gs /GA /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /i ".." /d "NDEBUG"
-# ADD RSC /l 0x409 /i ".." /d "NDEBUG" /d "JAWS"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrt.lib /nologo /subsystem:windows /pdb:none /machine:I386
-# ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrt.lib /nologo /subsystem:windows /pdb:none /machine:I386
-
-!ENDIF 
-
-# Begin Target
-
-# Name "winboard - Win32 Release"
-# Name "winboard - Win32 Debug"
-# Name "winboard - Win32 Jaws Debug"
-# Name "winboard - Win32 Jaws Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\backend.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\book.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\gamelist.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\help.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lists.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\moves.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\parser.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\pgntags.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\uci.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wclipbrd.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wedittags.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wengineo.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wevalgraph.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wgamelist.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\whistory.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\winboard.c
-
-!IF  "$(CFG)" == "winboard - Win32 Release"
-
-!ELSEIF  "$(CFG)" == "winboard - Win32 Debug"
-
-!ELSEIF  "$(CFG)" == "winboard - Win32 Jaws Debug"
-
-# ADD CPP /D WINVER=0x500
-# SUBTRACT CPP /D WINVER=0x400
-
-!ELSEIF  "$(CFG)" == "winboard - Win32 Jaws Release"
-
-# ADD CPP /D WINVER=0x500
-# SUBTRACT CPP /D WINVER=0x400
-
-!ENDIF 
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\winboard.rc
-# ADD BASE RSC /l 0x409
-# ADD RSC /l 0x409
-# End Source File
-# Begin Source File
-
-SOURCE=.\wlayout.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\woptions.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wsettings.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wsnap.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wsockerr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\zippy.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/winboard/winboard.dsw b/winboard/winboard.dsw
deleted file mode 100644
index e0bf89c..0000000
--- a/winboard/winboard.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "winboard"=".\winboard.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/winboard/winboard.h b/winboard/winboard.h
deleted file mode 100644
index fab659e..0000000
--- a/winboard/winboard.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * WinBoard.h -- Definitions for Windows NT front end to XBoard
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts. 
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "resource.h"
-#include <dlgs.h>
-
-/* Types */
-typedef struct {
-  char faceName[LF_FACESIZE];
-  float pointSize;
-  BYTE bold, italic, underline, strikeout;
-} MyFontParams;
-
-typedef struct {
-  char *def;
-  MyFontParams mfp;
-  LOGFONT lf;
-  HFONT hf;
-} MyFont;
-
-typedef enum { 
-  SizeTiny, SizeTeeny, SizeDinky, SizePetite, SizeSlim, SizeSmall,
-  SizeMediocre, SizeMiddling, SizeAverage, SizeModerate, SizeMedium,
-  SizeBulky, SizeLarge, SizeBig, SizeHuge, SizeGiant, SizeColossal,
-  SizeTitanic, NUM_SIZES 
-} BoardSize;
-
-typedef struct {
-    COLORREF color;
-    int effects;
-    char *name;
-} MyColorizeAttribs;
-
-typedef struct {
-  char* name;
-  void* data;
-} MySound;
-
-typedef struct {
-    COLORREF color;
-    int effects;
-    MySound sound;
-} MyTextAttribs;
-
-/* Functions */
-
-BOOL InitApplication(HINSTANCE);
-BOOL InitInstance(HINSTANCE, int, LPSTR);
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK BoardSizeDlg(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK ButtonProc(HWND, UINT, WPARAM, LPARAM);
-VOID InitAppData(LPSTR);
-VOID InitDrawingColors(VOID);
-VOID InitDrawingSizes(BoardSize boardSize, int flags);
-VOID InitMenuChecks(VOID);
-VOID ICSInitScript(VOID);
-BOOL CenterWindow(HWND hwndChild, HWND hwndParent);
-VOID ResizeEditPlusButtons(HWND hDlg, HWND hText, int sizeX, int sizeY, int newSizeX, int newSizeY);
-VOID PromotionPopup(HWND hwnd);
-FILE *OpenFileDialog(HWND hWnd, char *write, char *defName, char *defExt, 
-		     char *nameFilt, char *dlgTitle, UINT *number,
-		     char fileTitle[MSG_SIZ], char fileName[MSG_SIZ]);
-VOID InputEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
-DWORD InputThread(LPVOID arg);
-DWORD NonOvlInputThread(LPVOID arg);
-DWORD SocketInputThread(LPVOID arg);
-BOOL ChangeColor(HWND hwnd, COLORREF *which);
-VOID ChangeBoardSize(BoardSize newSize);
-BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font);
-VOID ErrorPopDown(VOID);
-VOID EnsureOnScreen(int *x, int *y, int minX, int minY);
-typedef char GetFunc(void *getClosure);
-VOID ParseArgs(GetFunc get, void *cl);
-HBITMAP 
-DoLoadBitmap(HINSTANCE hinst, char *piece, int squareSize, char *suffix);
-COLORREF ParseColorName(char *name);
-void ParseAttribs(COLORREF *color, int *effects, char* argValue);
-VOID CreateFontInMF(MyFont *mf);
-VOID ChangedConsoleFont();
-VOID ParseFontName(char *name, MyFontParams *mfp);
-void InitComboStrings(HANDLE hwndCombo, char **cd);
-BOOLEAN MyLoadSound(MySound *ms);
-BOOLEAN MyPlaySound(MySound *ms);
-VOID ExitArgError(char *msg, char *badArg);
-
-/* Constants */
-
-#define CLOCK_FONT 0
-#define MESSAGE_FONT 1
-#define COORD_FONT 2
-#define CONSOLE_FONT 3
-#define COMMENT_FONT 4
-#define EDITTAGS_FONT 5
-#define MOVEHISTORY_FONT 6
-#define NUM_FONTS 7
-
-/* Positions of some menu items.  Origin is zero and separator lines count. */
-/* It's gross that these are needed. */
-#define ACTION_POS 2	 /* Posn of "Action" on menu bar */
-#define OPTIONS_POS 4	 /* Posn of "Options" on menu bar */
-#define ICS_POS 4 	 /* Posn of "ICS " on Options menu */
-#define SOUNDS_POS 6     /* Posn of "Sounds" on Options menu */
-/* end grossness */
-
-extern MyFont *font[NUM_SIZES][NUM_FONTS];
-
-#define WM_USER_Input                 (WM_USER + 4242)
-#define WM_USER_Mouseleave            (WM_USER + 4243)
-#define WM_USER_GetConsoleBackground  (WM_USER + 4244)
-
-#define CLOCK_TIMER_ID        51
-#define LOAD_GAME_TIMER_ID    52
-#define ANALYSIS_TIMER_ID     53
-#define MOUSE_TIMER_ID        54
-#define DELAYED_TIMER_ID      55
-
-#define SOLID_PIECE           0
-#define OUTLINE_PIECE         1
-#define WHITE_PIECE           2
-
-#define COPY_TMP "wbcopy.tmp"
-#define PASTE_TMP "wbpaste.tmp"
-
-/* [AS] Layout management */
-typedef struct {
-    Boolean visible;
-    int x;
-    int y;
-    int width;
-    int height;
-} WindowPlacement;
-
-VOID InitWindowPlacement( WindowPlacement * wp );
-
-VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp );
-
-VOID ReattachAfterMove( LPRECT lprcOldPos, int new_x, int new_y, HWND hWndChild, WindowPlacement * pwpChild );
-
-VOID ReattachAfterSize( LPRECT lprcOldPos, int new_w, int new_h, HWND hWndChild, WindowPlacement * pwpChild );
diff --git a/winboard/winboard.hpj b/winboard/winboard.hpj
deleted file mode 100644
index ea47092..0000000
--- a/winboard/winboard.hpj
+++ /dev/null
@@ -1,19 +0,0 @@
-; This file is maintained by HCW. Do not modify this file directly.
-
-; This help project requires hc 3.1
-[OPTIONS]
-ERRORLOG=winboard.err
-LCID=0x409 0x0 0x0 ; English (United States)
-REPORT=Yes
-TITLE=WinBoard Help
-BMROOT=bitmaps
-HLP=.\winboard.hlp
-
-[FILES]
-winboard.rtf
-
-[WINDOWS]
-main="WinBoard Help",,60676,,(r12632256),f2
-
-[CONFIG]
-BrowseButtons()
diff --git a/winboard/winboard.rc b/winboard/winboard.rc
deleted file mode 100644
index 0e9cb38..0000000
--- a/winboard/winboard.rc
+++ /dev/null
@@ -1,2116 +0,0 @@
-//Microsoft Developer Studio generated resource script.
-//
-#include "resource.h"
-#include "config.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#define APSTUDIO_HIDDEN_SYMBOLS
-#include "windows.h"
-#undef APSTUDIO_HIDDEN_SYMBOLS
-#include "dlgs.h"
-
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-// moved to "res" subdir to make testing easier-- don't want it in the root
-MANIFEST_RESOURCE_ID    24      MOVEABLE PURE   "res\\winboard.exe.manifest"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-ABOUTBOX DIALOG DISCARDABLE  22, 17, 180, 108
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "About WinBoard"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,126,89,50,14,WS_GROUP
-    ICON            "icon_white",IDC_STATIC,3,6,20,20
-    LTEXT           "Chessboard for Windows",400,25,15,121,8
-    LTEXT           "Copyright 1991 Digital Equipment Corporation",201,6,34,
-                    149,8
-    LTEXT           "Enhancements Copyright 1992-2009   Free Software Foundation",
-                    OPT_TCtext1,6,45,121,17
-    CONTROL         "",OPT_TCTime,"Static",SS_BLACKRECT,4,28,159,1
-    LTEXT           "WinBoard 0.0.0",ABOUTBOX_Version,25,5,160,8
-    LTEXT           "Enhancements Copyright 2005\r\nAlessandro Scotti",
-                    IDC_STATIC,6,65,120,24
-    LTEXT           "",
-                    OPT_MESS,6,85,120,16
-END
-
-DLG_TimeControl DIALOG DISCARDABLE  6, 18, 263, 172
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Time Control"
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "Use arrow keys to specify which clock setting type, then press tab to alter values.",
-                    IDC_STATIC,9,9,231,20
-    CONTROL         "Conventional chess clock",OPT_TCUseMoves,"Button",
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,36,113,10
-    CONTROL         "Incremental clock",OPT_TCUseInc,"Button",
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,7,73,107,10
-    LTEXT           "Number of moves:",OPT_TCtext1,15,52,58,8,NOT WS_GROUP
-    EDITTEXT        OPT_TCMoves,77,52,22,12,ES_AUTOHSCROLL | WS_GROUP
-    LTEXT           "Within number of minutes:",OPT_TCtext2,113,54,81,8,NOT 
-                    WS_GROUP
-    EDITTEXT        OPT_TCTime,197,52,32,12,ES_AUTOHSCROLL
-    LTEXT           "Initial number of minutes:",405,15,89,106,8,NOT 
-                    WS_GROUP
-    EDITTEXT        OPT_TCTime2,127,87,32,12,ES_AUTOHSCROLL | WS_GROUP
-    LTEXT           "Plus number of seconds per move:",406,15,105,109,8,NOT 
-                    WS_GROUP
-    EDITTEXT        OPT_TCInc,127,103,32,12,ES_AUTOHSCROLL
-    LTEXT           "",408,185,108,67,8,NOT WS_GROUP
-    LTEXT           "Time-Odds Factors:",IDC_STATIC,6,118,150,8,NOT WS_GROUP
-    EDITTEXT        OPT_TCOdds1,47,131,26,12,ES_AUTOHSCROLL | WS_GROUP
-    LTEXT           "Engine #1:",IDC_STATIC,6,133,41,8,NOT WS_GROUP
-    EDITTEXT        OPT_TCOdds2,124,131,26,12,ES_AUTOHSCROLL
-    LTEXT           "Engine #2:",IDC_STATIC,83,133,41,8,NOT WS_GROUP
-    PUSHBUTTON      "OK",IDOK,29,150,40,14,WS_GROUP
-    PUSHBUTTON      "Cancel",IDCANCEL,85,150,40,14
-END
-
-DLG_LoadOptions DIALOG DISCARDABLE  10, 18, 136, 55
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Load Game Options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    CONTROL         "Load games with automatic stepping",OPT_Autostep,"Button",
-                    BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,4,130,10
-    EDITTEXT        OPT_ASTimeDelay,16,16,28,14,ES_AUTOHSCROLL
-    LTEXT           "seconds per move",OPT_AStext1,46,20,60,8,NOT WS_GROUP
-    PUSHBUTTON      "OK",IDOK,26,36,50,14,WS_GROUP
-    PUSHBUTTON      "Cancel",IDCANCEL,82,36,50,14
-END
-
-DLG_SaveOptions DIALOG DISCARDABLE  6, 17, 178, 119
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Save Game Options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    CONTROL         "Save games automatically",OPT_Autosave,"Button",
-                    BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,4,97,10
-    CONTROL         "Prompt for filename",OPT_AVPrompt,"Button",
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,18,75,10
-    CONTROL         "To file:",OPT_AVToFile,"Button",BS_AUTORADIOBUTTON,16,
-                    32,36,10
-    EDITTEXT        OPT_AVFilename,54,30,97,14,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",OPT_AVBrowse,156,30,18,14
-    GROUPBOX        "Save As: ",801,4,48,170,28,WS_GROUP
-    CONTROL         "PGN",OPT_PGN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,
-                    60,39,10
-    CONTROL         "Old",OPT_Old,"Button",BS_AUTORADIOBUTTON,54,60,114,10
-    CONTROL         "Save out of book info in PGN",OPT_OutOfBookInfo,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,82,109,10
-    PUSHBUTTON      "OK",IDOK,68,100,50,14,WS_GROUP
-    PUSHBUTTON      "Cancel",IDCANCEL,124,100,50,14
-END
-
-1536 DIALOG DISCARDABLE  36, 24, 264, 134
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Open"
-FONT 8, "Helv"
-BEGIN
-    LTEXT           "File &Name:",1090,6,6,76,9
-    EDITTEXT        1152,6,16,90,12,ES_AUTOHSCROLL | ES_OEMCONVERT
-    LISTBOX         1120,6,32,90,68,LBS_SORT | LBS_OWNERDRAWFIXED | 
-                    LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | 
-                    WS_TABSTOP
-    LTEXT           "&Directories:",-1,110,6,92,9
-    LTEXT           "",1088,110,18,92,9,SS_NOPREFIX | NOT WS_GROUP
-    LISTBOX         1121,110,32,92,68,LBS_SORT | LBS_OWNERDRAWFIXED | 
-                    LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | 
-                    WS_TABSTOP
-    LTEXT           "List Files of &Type:",1089,6,104,90,9
-    COMBOBOX        1136,6,114,90,36,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | 
-                    WS_BORDER | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Dri&ves:",1091,110,104,92,9
-    COMBOBOX        1137,110,114,92,68,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | 
-                    CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | 
-                    WS_VSCROLL | WS_TABSTOP
-    DEFPUSHBUTTON   "OK",IDOK,208,6,50,14,WS_GROUP
-    PUSHBUTTON      "Cancel",IDCANCEL,208,24,50,14,WS_GROUP
-    PUSHBUTTON      "&Help",1038,208,46,50,14,NOT WS_VISIBLE | WS_GROUP
-    LTEXT           "&Index number:",-1,208,74,48,8
-    EDITTEXT        OPT_IndexNumberOld,208,84,50,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "Net&work...",1037,208,113,50,14,WS_GROUP
-END
-
-DLG_CommPort DIALOG DISCARDABLE  25, 30, 220, 79
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Communication Port Settings"
-FONT 8, "Helv"
-BEGIN
-    PUSHBUTTON      "OK",IDOK,106,60,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,164,60,50,14
-    RTEXT           "&Port:",-1,4,6,40,10
-    COMBOBOX        OPT_Port,49,4,55,60,CBS_DROPDOWN | WS_VSCROLL | 
-                    WS_TABSTOP
-    RTEXT           "Data &Rate:",-1,114,6,40,10,NOT WS_GROUP
-    COMBOBOX        OPT_DataRate,159,4,55,100,CBS_DROPDOWN | WS_VSCROLL | 
-                    WS_TABSTOP
-    RTEXT           "Data &Bits:",-1,4,25,40,10,NOT WS_GROUP
-    COMBOBOX        OPT_Bits,49,22,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | 
-                    WS_VSCROLL | WS_TABSTOP
-    RTEXT           "P&arity:",-1,114,24,40,10,NOT WS_GROUP
-    COMBOBOX        OPT_Parity,159,22,55,60,CBS_DROPDOWNLIST | 
-                    CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "&Stop Bits:",-1,4,42,40,10,NOT WS_GROUP
-    COMBOBOX        OPT_StopBits,49,40,55,60,CBS_DROPDOWNLIST | 
-                    CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "F&low:",-1,114,42,40,10,NOT WS_GROUP
-    COMBOBOX        OPT_Flow,159,40,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | 
-                    WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Help",OPT_SerialHelp,4,60,50,14,NOT WS_VISIBLE
-END
-
-DLG_EditComment DIALOG DISCARDABLE  6, 18, 302, 102
-STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-CAPTION "Edit Comment"
-FONT 8, "MS Sans Serif"
-BEGIN
-    PUSHBUTTON      "OK",IDOK,194,84,50,14
-    PUSHBUTTON      "Cancel",OPT_CancelComment,250,84,50,14
-    CONTROL         "",OPT_CommentText,"RICHEDIT",ES_MULTILINE | 
-                    ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | 
-                    WS_HSCROLL | WS_TABSTOP,2,2,298,78
-    PUSHBUTTON      "&Clear",OPT_ClearComment,2,84,50,14
-    PUSHBUTTON      "&Edit",OPT_EditComment,58,84,50,14
-END
-
-DLG_PromotionKing DIALOG DISCARDABLE  98, 90, 183, 41
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Promote to:"
-FONT 8, "MS Sans Serif"
-BEGIN
-    PUSHBUTTON      "Chance&llor",PB_Chancellor,49,4,40,14,NOT WS_TABSTOP
-    PUSHBUTTON      "&Archbishop",PB_Archbishop,94,4,40,14,NOT WS_TABSTOP
-    PUSHBUTTON      "&Queen",PB_Queen,4,23,40,14,WS_GROUP
-    PUSHBUTTON      "&Rook",PB_Rook,49,23,40,14,NOT WS_TABSTOP
-    PUSHBUTTON      "&Bishop",PB_Bishop,94,23,40,14,NOT WS_TABSTOP
-    PUSHBUTTON      "K&night",PB_Knight,139,23,40,14,NOT WS_TABSTOP
-    PUSHBUTTON      "&King",PB_King,4,4,40,14,NOT WS_TABSTOP
-    PUSHBUTTON      "&Cancel",IDCANCEL,139,4,40,14,WS_GROUP
-    LTEXT           "      YES",IDC_Yes,6,25,36,10
-    LTEXT           "       NO",IDC_No,141,25,36,10
-    LTEXT           "C&entaur",IDC_Centaur,12,6,25,10
-END
-
-ABOUTBOX2 DIALOG DISCARDABLE  22, 17, 281, 223
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "About WinBoard"
-FONT 8, "MS Sans Serif"
-BEGIN
-    RTEXT           "Chessboard for Windows",DLG_TimeControl,196,154,80,8
-    LTEXT           "Copyright 1991 Digital Equipment Corporation",201,4,168,
-                    151,8
-    LTEXT           "Enhancements Copyright 1992-2003   Free Software Foundation",
-                    OPT_TCtext1,4,179,126,17
-    CONTROL         "",OPT_TCTime,"Static",SS_BLACKRECT,4,164,272,1
-    LTEXT           "WinBoard 0.0.0",ABOUTBOX_Version,4,154,64,8
-    CONTROL         "galactic",IDC_STATIC,"Static",SS_BITMAP,4,4,15,13
-    DEFPUSHBUTTON   "OK",IDOK,226,204,50,14
-    LTEXT           "Enhancements Copyright 2005\r\nAlessandro Scotti",
-                    IDC_STATIC,4,199,183,20
-    LTEXT           "(unofficial version ""X"")",IDC_STATIC,68,154,71,8
-END
-
-DLG_GameList DIALOG DISCARDABLE  6, 18, 259, 153
-STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-CAPTION "Game List"
-FONT 8, "MS Sans Serif"
-BEGIN
-    LISTBOX         OPT_GameListText,2,2,254,130,LBS_NOINTEGRALHEIGHT | 
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
-    PUSHBUTTON      "&Load",OPT_GameListLoad,2,135,32,15
-    PUSHBUTTON      "&<",OPT_GameListPrev,38,135,22,15
-    PUSHBUTTON      "&>",OPT_GameListNext,64,135,24,15
-    PUSHBUTTON      "&Close",OPT_GameListClose,92,135,32,15
-    PUSHBUTTON      "Filter",IDC_GameListDoFilter,144,136,30,14
-    EDITTEXT        IDC_GameListFilter,178,136,78,14,ES_AUTOHSCROLL
-END
-
-DLG_EditTags DIALOG DISCARDABLE  6, 18, 167, 140
-STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-CAPTION "Edit Tags"
-FONT 8, "MS Sans Serif"
-BEGIN
-    PUSHBUTTON      "OK",IDOK,58,122,50,14
-    PUSHBUTTON      "Cancel",OPT_TagsCancel,114,122,50,14
-    CONTROL         "",OPT_TagsText,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | 
-                    ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | 
-                    WS_HSCROLL | WS_TABSTOP,2,2,162,115
-    PUSHBUTTON      "&Edit",OPT_EditTags,2,122,50,14
-END
-
-WBCONSOLE DIALOG DISCARDABLE  0, 0, 335, 133
-STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION | WS_SYSMENU | 
-    WS_THICKFRAME
-CAPTION "I C S"
-CLASS "WBConsole"
-FONT 8, "Courier New"
-BEGIN
-    CONTROL         "",OPT_ConsoleText,"RICHEDIT",ES_MULTILINE | 
-                    ES_AUTOVSCROLL | ES_NOHIDESEL | ES_READONLY | ES_NUMBER | 
-                    WS_BORDER | WS_VSCROLL | WS_TABSTOP,0,0,335,119
-    CONTROL         "",OPT_ConsoleInput,"RICHEDIT",ES_MULTILINE | 
-                    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_NOHIDESEL | 
-                    ES_NUMBER | WS_BORDER | WS_TABSTOP,0,120,335,13,
-                    WS_EX_TRANSPARENT
-END
-
-DLG_Analysis DIALOG DISCARDABLE  0, 0, 294, 62
-STYLE WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | 
-    WS_THICKFRAME
-CAPTION "Dialog"
-FONT 8, "MS Sans Serif"
-BEGIN
-    CONTROL         "",OPT_AnalysisText,"RICHEDIT",ES_MULTILINE | 
-                    ES_READONLY | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | 
-                    WS_HSCROLL | WS_TABSTOP,4,4,286,54
-END
-
-DLG_Error DIALOG DISCARDABLE  0, 0, 220, 66
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Error"
-FONT 8, "MS Sans Serif"
-BEGIN
-    ICON            32515,IDC_STATIC,4,4,21,20
-    LTEXT           "Sorry Charlie",OPT_ErrorText,28,4,188,36
-    DEFPUSHBUTTON   "OK",IDOK,84,48,50,14
-END
-
-DLG_Colorize DIALOGEX 0, 0, 174, 61
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "I C S Interaction Colors"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,64,42,50,14,WS_GROUP
-    PUSHBUTTON      "Cancel",IDCANCEL,120,42,50,14
-    PUSHBUTTON      "&Color...",OPT_ChooseColor,119,4,51,14,WS_GROUP
-    CONTROL         "&Bold",OPT_Bold,"Button",BS_AUTOCHECKBOX | WS_GROUP | 
-                    WS_TABSTOP,4,24,30,10
-    CONTROL         "&Italic",OPT_Italic,"Button",BS_AUTOCHECKBOX,40,24,30,
-                    10
-    CONTROL         "&Underline",OPT_Underline,"Button",BS_AUTOCHECKBOX,76,
-                    24,45,10
-    CONTROL         "&Strikeout",OPT_Strikeout,"Button",BS_AUTOCHECKBOX,128,
-                    24,42,10
-    CONTROL         "",OPT_Sample,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_GROUP,4,4,106,15,WS_EX_CLIENTEDGE
-END
-
-DLG_Question DIALOG DISCARDABLE  0, 0, 187, 77
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Question"
-FONT 8, "MS Sans Serif"
-BEGIN
-    EDITTEXT        OPT_QuestionInput,4,36,179,14,ES_AUTOHSCROLL
-    DEFPUSHBUTTON   "OK",IDOK,78,58,50,14,WS_GROUP
-    PUSHBUTTON      "Cancel",IDCANCEL,134,58,50,14
-    LTEXT           "Enter a chess engine command or just type something stupid that will completely screw things up.",
-                    OPT_QuestionText,30,2,153,28
-    ICON            32514,IDC_STATIC,4,4,20,20
-END
-
-DLG_Startup DIALOG DISCARDABLE  0, 0, 276, 159
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "WinBoard Startup"
-FONT 8, "MS Sans Serif"
-BEGIN
-    GROUPBOX        "What would you like to do?",IDC_STATIC,4,4,211,56
-    CONTROL         "&Play against a chess engine or match two engines",
-                    OPT_ChessEngine,"Button",BS_AUTORADIOBUTTON | WS_GROUP | 
-                    WS_TABSTOP,8,17,193,10
-    CONTROL         "&Use an Internet Chess Server",OPT_ChessServer,"Button",
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,8,30,193,10
-    CONTROL         "Just &view or edit game files",OPT_View,"Button",
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,8,43,193,10
-    LTEXT           "Specify Chess &Engines:",IDC_SPECIFY_ENG_STATIC,11,63,
-                    102,10
-    COMBOBOX        OPT_ChessEngineName,17,74,194,129,CBS_DROPDOWN | 
-                    CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        OPT_SecondChessEngineName,17,92,194,129,CBS_DROPDOWN | 
-                    CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Specify Chess &Server:",IDC_SPECIFY_SERVER_STATIC,11,
-                    108,102,10
-    COMBOBOX        OPT_ChessServerName,17,122,194,129,CBS_DROPDOWN | 
-                    CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "&Additional options",OPT_AnyAdditional,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,11,142,71,10
-    EDITTEXT        OPT_AdditionalOptions,85,142,187,13,ES_AUTOHSCROLL
-    DEFPUSHBUTTON   "OK",IDOK,222,4,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,222,21,50,14
-    PUSHBUTTON      "&Help",IDM_HELPCONTENTS,222,38,50,14
-END
-
-DLG_IndexNumber DIALOG DISCARDABLE  0, 0, 236, 18
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "Inde&x number:",IDC_STATIC,5,2,46,8
-    EDITTEXT        OPT_IndexNumber,54,0,155,13,ES_AUTOHSCROLL
-END
-
-DLG_TypeInMove DIALOG DISCARDABLE  0, 0, 206, 23
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Type in a move"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,96,4,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,152,4,50,14
-    EDITTEXT        OPT_Move,4,4,86,13,ES_AUTOHSCROLL
-END
-
-DLG_TypeInName DIALOG DISCARDABLE  0, 0, 206, 23
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Type in your name"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,96,4,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,152,4,50,14
-    EDITTEXT        OPT_Name,4,4,86,13,ES_AUTOHSCROLL
-END
-
-DLG_Sound DIALOG DISCARDABLE  0, 0, 242, 105
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Sounds"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,132,86,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,188,86,50,14
-    LTEXT           "Event:",IDC_STATIC,4,7,26,9
-    COMBOBOX        CBO_Sounds,30,4,208,110,CBS_DROPDOWNLIST | WS_VSCROLL | 
-                    WS_TABSTOP
-    CONTROL         "No sound",OPT_NoSound,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP | WS_TABSTOP,12,22,47,10
-    CONTROL         "Default beep",OPT_DefaultBeep,"Button",
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,12,36,57,10
-    CONTROL         "Built-in sound:",OPT_BuiltInSound,"Button",
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,12,51,60,10
-    COMBOBOX        OPT_BuiltInSoundName,76,48,103,109,CBS_DROPDOWNLIST | 
-                    CBS_SORT | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Play",OPT_PlaySound,188,47,50,14
-    CONTROL         "WAV file:",OPT_WavFile,"Button",BS_AUTORADIOBUTTON | 
-                    WS_TABSTOP,12,66,45,10
-    EDITTEXT        OPT_WavFileName,76,65,103,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "Browse...",OPT_BrowseSound,188,64,50,14
-    PUSHBUTTON      "Defaults",OPT_DefaultSounds,6,86,50,14
-END
-
-DLG_GeneralOptions DIALOG DISCARDABLE  0, 0, 250, 183
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "General Options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,110,164,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,166,164,50,14
-    CONTROL         "Always on &Top",OPT_AlwaysOnTop,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,6,126,10
-    CONTROL         "Highlight Last &Move",OPT_HighlightLastMove,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,6,126,10
-    CONTROL         "Always &Queen            Ctrl+Shift+Q",OPT_AlwaysQueen,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,4,20,126,10
-    CONTROL         "Periodic &Updates",OPT_PeriodicUpdates,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,20,126,10
-    CONTROL         "Animate &Dragging",OPT_AnimateDragging,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,34,126,10
-    CONTROL         "Ponder &Next Move  Ctrl+Shift+P",OPT_PonderNextMove,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,34,126,10
-    CONTROL         "&Animate Moving         Ctrl+Shift+A",OPT_AnimateMoving,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,48,126,10
-    CONTROL         "&Popup Exit Message",OPT_PopupExitMessage,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,48,126,10
-    CONTROL         "Auto &Flag                   Ctrl+Shift+F",OPT_AutoFlag,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,4,62,126,10
-    CONTROL         "Popup Move &Errors",OPT_PopupMoveErrors,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,62,126,10
-    CONTROL         "Auto Flip &View",OPT_AutoFlipView,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,76,126,10
-    CONTROL         "Show Butt&on Bar",OPT_ShowButtonBar,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,76,126,10
-    CONTROL         "Auto &Raise Board",OPT_AutoRaiseBoard,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,90,71,10
-    CONTROL         "Show &Coordinates",OPT_ShowCoordinates,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,90,126,10
-    CONTROL         "&Blindfold",OPT_Blindfold,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,4,104,126,10
-    CONTROL         "&Send Engine Think",OPT_ShowThinking,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,104,126,10
-    CONTROL         "Highlight Dra&gging",OPT_HighlightDragging,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,118,126,10
-    CONTROL         "Test &Legality            Ctrl+Shift+L",OPT_TestLegality,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,118,126,10
-    CONTROL         "E&xtended PGN Info    Ctrl+Shift+X",OPT_SaveExtPGN,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,132,126,10
-    CONTROL         "&Hide Thinking          Ctrl+Shift+H",OPT_HideThinkFromHuman,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,131,132,126,10
-    CONTROL         "&Info in Move History   Ctrl+Shift+I",OPT_ExtraInfoInMoveHistory,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,146,126,10
-    CONTROL         "Highlight with Arro&w",OPT_HighlightMoveArrow,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,131,145,126,10
-END
-
-DLG_IcsOptions DIALOGEX 0, 0, 302, 255
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "ICS Options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,194,237,50,15
-    PUSHBUTTON      "Cancel",IDCANCEL,248,237,50,15
-    CONTROL         "&Auto Comment",OPT_AutoComment,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,12,63,8
-    CONTROL         "Auto &Observe",OPT_AutoObserve,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,25,63,8
-    CONTROL         "&Get Move List",OPT_GetMoveList,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,10,38,63,8
-    CONTROL         "&Local Line Editing",OPT_LocalLineEditing,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,10,51,84,8
-    CONTROL         "&Quiet Play",OPT_QuietPlay,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,64,63,8
-    CONTROL         "&Premove",OPT_Premove,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,160,12,46,10
-    CONTROL         "&White first move",OPT_PremoveWhite,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,160,26,67,10
-    EDITTEXT        OPT_PremoveWhiteText,236,22,25,14,ES_AUTOHSCROLL
-    CONTROL         "&Black first move",OPT_PremoveBlack,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,160,40,66,10
-    EDITTEXT        OPT_PremoveBlackText,236,38,25,14,ES_AUTOHSCROLL
-    CONTROL         "&Sound alarm at",OPT_IcsAlarm,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,160,72,63,10
-    EDITTEXT        OPT_IcsAlarmTime,236,68,26,14,ES_AUTOHSCROLL
-    LTEXT           "seconds",IDC_STATIC,264,72,28,8
-    PUSHBUTTON      "Choose...",OPT_ChooseShoutColor,97,101,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseSShoutColor,97,121,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseChannel1Color,97,141,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseChannelColor,97,161,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseKibitzColor,97,181,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseTellColor,246,101,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseChallengeColor,246,121,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseRequestColor,246,141,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseSeekColor,246,161,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseNormalColor,246,181,45,15
-    PUSHBUTTON      "Background...",OPT_ChooseBackgroundColor,10,208,50,16
-    PUSHBUTTON      "&Defaults...",OPT_DefaultColors,68,208,50,16
-    CONTROL         "Do &not colorize messages",OPT_DontColorize,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,192,212,97,10
-    CONTROL         "",OPT_SampleShout,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_DISABLED | WS_GROUP,10,101,75,15,
-                    WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleSShout,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_DISABLED | WS_GROUP,10,121,75,15,
-                    WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleChannel1,"RICHEDIT",ES_CENTER | 
-                    ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,10,
-                    141,75,15,WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleChannel,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_DISABLED | WS_GROUP,10,161,75,15,
-                    WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleKibitz,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_GROUP,10,181,75,15,WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleTell,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_DISABLED | WS_GROUP,159,101,75,15,
-                    WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleChallenge,"RICHEDIT",ES_CENTER | 
-                    ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,159,
-                    121,75,15,WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleRequest,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_DISABLED | WS_GROUP,159,141,75,15,
-                    WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleSeek,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_DISABLED | WS_GROUP,159,161,75,15,
-                    WS_EX_CLIENTEDGE
-    CONTROL         "",OPT_SampleNormal,"RICHEDIT",ES_CENTER | ES_MULTILINE | 
-                    ES_READONLY | WS_DISABLED | WS_GROUP,159,181,75,15,
-                    WS_EX_CLIENTEDGE
-    GROUPBOX        "Interaction Colors",IDC_STATIC,4,90,294,140
-    GROUPBOX        "Premove",IDC_STATIC,154,0,144,56
-    GROUPBOX        "General",IDC_STATIC,4,0,146,88
-    GROUPBOX        "Alarm",IDC_STATIC,154,58,144,30
-END
-
-DLG_BoardOptions DIALOG DISCARDABLE  0, 0, 194, 250
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Board Options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,84,232,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,140,232,50,14
-    CONTROL         "&Tiny",OPT_SizeTiny,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP | WS_TABSTOP,9,14,50,10
-    CONTROL         "T&eeny",OPT_SizeTeeny,"Button",BS_AUTORADIOBUTTON,9,24,
-                    50,10
-    CONTROL         "&Dinky",OPT_SizeDinky,"Button",BS_AUTORADIOBUTTON,9,34,
-                    50,10
-    CONTROL         "&Petite",OPT_SizePetite,"Button",BS_AUTORADIOBUTTON,9,
-                    44,50,10
-    CONTROL         "Sl&im",OPT_SizeSlim,"Button",BS_AUTORADIOBUTTON,9,54,50,
-                    10
-    CONTROL         "&Small",OPT_SizeSmall,"Button",BS_AUTORADIOBUTTON,9,64,
-                    50,10
-    CONTROL         "Medi&ocre",OPT_SizeMediocre,"Button",BS_AUTORADIOBUTTON,
-                    70,14,50,10
-    CONTROL         "&Middling",OPT_SizeMiddling,"Button",BS_AUTORADIOBUTTON,
-                    70,24,50,10
-    CONTROL         "&Average",OPT_SizeAverage,"Button",BS_AUTORADIOBUTTON,
-                    70,34,50,10
-    CONTROL         "Mode&rate",OPT_SizeModerate,"Button",BS_AUTORADIOBUTTON,
-                    70,44,50,10
-    CONTROL         "Medi&um",OPT_SizeMedium,"Button",BS_AUTORADIOBUTTON,70,
-                    54,50,10
-    CONTROL         "Bul&ky",OPT_SizeBulky,"Button",BS_AUTORADIOBUTTON,70,64,
-                    50,10
-    CONTROL         "&Large",OPT_SizeLarge,"Button",BS_AUTORADIOBUTTON,134,
-                    14,50,10
-    CONTROL         "&Big",OPT_SizeBig,"Button",BS_AUTORADIOBUTTON,134,24,50,
-                    10
-    CONTROL         "&Huge",OPT_SizeHuge,"Button",BS_AUTORADIOBUTTON,134,34,
-                    50,10
-    CONTROL         "&Giant",OPT_SizeGiant,"Button",BS_AUTORADIOBUTTON,134,
-                    44,50,10
-    CONTROL         "&Colossal",OPT_SizeColossal,"Button",BS_AUTORADIOBUTTON,
-                    134,54,50,10
-    CONTROL         "Tita&nic",OPT_SizeTitanic,"Button",BS_AUTORADIOBUTTON,
-                    134,64,50,10
-    PUSHBUTTON      "...",OPT_ChooseLightSquareColor,110,94,20,15
-    PUSHBUTTON      "...",OPT_ChooseDarkSquareColor,110,112,20,15
-    PUSHBUTTON      "...",OPT_ChooseWhitePieceColor,110,130,20,15
-    PUSHBUTTON      "...",OPT_ChooseBlackPieceColor,110,148,20,15
-    PUSHBUTTON      "...",OPT_ChooseHighlightSquareColor,110,166,20,15
-    PUSHBUTTON      "...",OPT_ChoosePremoveHighlightColor,110,184,20,15
-    CONTROL         "Monochrome",OPT_Monochrome,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,210,64,10
-    CONTROL         "All White",OPT_AllWhite,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,140,180,53,10
-    CONTROL         "Flip Black",OPT_UpsideDown,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,140,192,53,10
-    PUSHBUTTON      "Defaults",OPT_DefaultBoardColors,80,206,50,15
-    EDITTEXT        OPT_DarkSquareColor,80,112,25,15,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-    EDITTEXT        OPT_LightSquareColor,80,94,25,15,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-    EDITTEXT        OPT_WhitePieceColor,80,130,25,15,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-    EDITTEXT        OPT_BlackPieceColor,80,148,25,15,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-    EDITTEXT        OPT_HighlightSquareColor,80,166,25,15,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-    GROUPBOX        "Colors",IDC_STATIC,4,84,185,142
-    EDITTEXT        OPT_PremoveHighlightColor,80,184,25,15,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-    LTEXT           "Light Squares",IDC_STATIC,10,98,60,10
-    LTEXT           "Dark Squares",IDC_STATIC,10,116,60,10
-    LTEXT           "White Pieces",IDC_STATIC,10,134,60,10
-    LTEXT           "Black Pieces",IDC_STATIC,10,152,60,10
-    LTEXT           "Square Highlights",IDC_STATIC,10,170,60,10
-    LTEXT           "Premove Highlights",IDC_STATIC,10,188,70,10
-    GROUPBOX        "Size",IDC_STATIC,4,4,185,75
-    EDITTEXT        OPT_SampleLightSquare,144,96,39,36,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-    EDITTEXT        OPT_SampleDarkSquare,144,138,39,36,ES_READONLY | 
-                    WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP
-END
-
-DLG_NewVariant DIALOG DISCARDABLE  0, 0, 194, 250
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Variants"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,84,232,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,140,232,50,14
-    CONTROL         "&normal",OPT_VariantNormal,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP | WS_TABSTOP,9,14,50,10
-    CONTROL         "&FRC",OPT_VariantFRC,"Button",BS_AUTORADIOBUTTON,9,
-                    24,50,10
-    CONTROL         "&wildcastle",OPT_VariantWildcastle,"Button",BS_AUTORADIOBUTTON,9,34,
-                    50,10
-    CONTROL         "&nocastle",OPT_VariantNocastle,"Button",BS_AUTORADIOBUTTON,9,
-                    44,50,10
-    CONTROL         "&losers",OPT_VariantLosers,"Button",BS_AUTORADIOBUTTON,
-                    9,54,50,10
-    CONTROL         "&giveaway",OPT_VariantGiveaway,"Button",BS_AUTORADIOBUTTON,
-                    9,64,50,10
-    CONTROL         "s&uicide",OPT_VariantSuicide,"Button",BS_AUTORADIOBUTTON,
-                    9,74,50,10
-    CONTROL         "&3Check",OPT_Variant3Check,"Button",BS_AUTORADIOBUTTON,9,84,
-                    50,10
-    CONTROL         "&twokings",OPT_VariantTwoKings,"Button",BS_AUTORADIOBUTTON,9,94,
-                    50,10
-    CONTROL         "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON,
-                    9,104,50,10
-    CONTROL         "cra&zyhouse",OPT_VariantCrazyhouse,"Button",BS_AUTORADIOBUTTON,70,14,
-                    50,10
-    CONTROL         "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,70,24,50,
-                    10
-    CONTROL         "&Twilight",OPT_VariantTwilight,"Button",BS_AUTORADIOBUTTON,70,34,50,
-                    10
-    CONTROL         "&shogi",OPT_VariantShogi,"Button",BS_AUTORADIOBUTTON,70,
-                    44,50,10
-    CONTROL         "su&per",OPT_VariantSuper,"Button",BS_AUTORADIOBUTTON,70,
-                    54,50,10
-    CONTROL         "&knightmate",OPT_VariantKnightmate,"Button",BS_AUTORADIOBUTTON,
-                    70,64,50,10
-    CONTROL         "&Berolina",OPT_VariantBerolina,"Button",BS_AUTORADIOBUTTON,70,74,
-                    50,10
-    CONTROL         "c&ylinder",OPT_VariantCylinder,"Button",BS_AUTORADIOBUTTON,70,
-                    84,50,10
-    CONTROL         "&fairy",OPT_VariantFairy,"Button",BS_AUTORADIOBUTTON,70,
-                    94,50,10
-    CONTROL         "&gothic",OPT_VariantGothic,"Button",BS_AUTORADIOBUTTON,134,14,
-                    50,10
-    CONTROL         "&capablanca",OPT_VariantCapablanca,"Button",BS_AUTORADIOBUTTON,134,
-                    24,50,10
-    CONTROL         "&Janus",OPT_VariantJanus,"Button",BS_AUTORADIOBUTTON,134,34,
-                    50,10
-    CONTROL         "&CRC",OPT_VariantCRC,"Button",BS_AUTORADIOBUTTON,134,44,
-                    50,10
-    CONTROL         "&Falcon",OPT_VariantFalcon,"Button",BS_AUTORADIOBUTTON,134,
-                    54,50,10
-    CONTROL         "cou&rier",OPT_VariantCourier,"Button",BS_AUTORADIOBUTTON,134,64,
-                    50,10
-    CONTROL         "&Great",OPT_VariantGreat,"Button",BS_AUTORADIOBUTTON,134,74,
-                    50,10
-    CONTROL         "&Shatranj",OPT_VariantShatranj,"Button",BS_AUTORADIOBUTTON,134,
-                    84,50,10
-    CONTROL         "&xiangqi",OPT_VariantXiangqi,"Button",BS_AUTORADIOBUTTON,134,94,50,
-                    10
-    GROUPBOX        "Variant",IDC_STATIC,4,4,185,115
-    LTEXT           "Board size:",IDC_STATIC,10,135,40,8
-    EDITTEXT        IDC_Ranks,60,131,14,14,ES_AUTOHSCROLL
-    LTEXT           "ranks",IDC_STATIC,77,135,22,8
-    EDITTEXT        IDC_Files,116,131,14,14,ES_AUTOHSCROLL
-    LTEXT           "files",IDC_STATIC,133,135,37,8
-    LTEXT           "Holdings with room for:",IDC_STATIC,10,153,90,8
-    EDITTEXT        IDC_Holdings,93,149,14,14,ES_AUTOHSCROLL
-    LTEXT           "pieces",IDC_STATIC,110,153,22,8
-    LTEXT           "('-1' means defaults for selected variant)",IDC_STATIC,10,171,150,8
-END
-
-DLG_Fonts DIALOG DISCARDABLE  0, 0, 266, 226
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Fonts"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,156,208,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,212,208,50,14
-    PUSHBUTTON      "Choose...",OPT_ChooseClockFont,212,15,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseMessageFont,212,39,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseCoordFont,212,63,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseTagFont,212,101,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseCommentsFont,212,125,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseConsoleFont,212,149,45,15
-    PUSHBUTTON      "Choose...",OPT_ChooseMoveHistoryFont,212,174,45,15
-    PUSHBUTTON      "&Defaults",OPT_DefaultFonts,3,208,50,15
-    CONTROL         "",OPT_SampleCoordFont,"RICHEDIT",ES_READONLY | 
-                    WS_DISABLED | WS_BORDER,67,59,140,20
-    CONTROL         "",OPT_SampleTagFont,"RICHEDIT",ES_READONLY | 
-                    WS_DISABLED | WS_BORDER,67,97,140,20
-    CONTROL         "",OPT_SampleCommentsFont,"RICHEDIT",ES_READONLY | 
-                    WS_DISABLED | WS_BORDER,67,121,140,20
-    CONTROL         "",OPT_SampleConsoleFont,"RICHEDIT",ES_READONLY | 
-                    WS_DISABLED | WS_BORDER,67,145,140,20
-    LTEXT           "Clocks",OPT_ClockFont,13,16,45,10,NOT WS_GROUP
-    LTEXT           "Messages",OPT_MessageFont,13,40,45,10,NOT WS_GROUP
-    LTEXT           "Coordinates",OPT_CoordFont,13,64,45,10,NOT WS_GROUP
-    LTEXT           "Tags",OPT_EditTagsFont,13,102,45,10,NOT WS_GROUP
-    LTEXT           "Comments",OPT_CommentsFont,13,126,45,10,NOT WS_GROUP
-    LTEXT           "I C S Interaction",OPT_MessageFont5,13,150,50,10,NOT 
-                    WS_GROUP
-    CONTROL         "",OPT_SampleClockFont,"RICHEDIT",ES_READONLY | 
-                    WS_DISABLED | WS_BORDER,67,11,140,20
-    CONTROL         "",OPT_SampleMessageFont,"RICHEDIT",ES_READONLY | 
-                    WS_DISABLED | WS_BORDER,67,35,140,20
-    GROUPBOX        "Current Board Size",IDC_STATIC,3,1,259,83
-    GROUPBOX        "All Board Sizes",IDC_STATIC,3,87,259,109
-    CONTROL         "",OPT_SampleMoveHistoryFont,"RICHEDIT",ES_READONLY | 
-                    WS_DISABLED | WS_BORDER,67,170,140,20
-    LTEXT           "Move History, Engine Output",OPT_MessageFont6,13,171,50,20,NOT 
-                    WS_GROUP
-END
-
-DLG_NewGameFRC DIALOG DISCARDABLE  0, 0, 176, 47
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "New Shuffle Game"
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "&Start Position Number:",IDC_NFG_Label,4,7,71,8
-    EDITTEXT        IDC_NFG_Edit,76,4,42,14,ES_AUTOHSCROLL
-    PUSHBUTTON      "Random",IDC_NFG_Random,122,4,50,14
-    DEFPUSHBUTTON   "OK",IDOK,64,28,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,122,28,50,14
-END
-
-DLG_GameListOptions DIALOG DISCARDABLE  0, 0, 206, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Game List Options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "PGN &Tags:",IDC_GLT,2,2,36,8
-    LISTBOX         IDC_GameListTags,2,12,158,102,LBS_USETABSTOPS | 
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "&Up",IDC_GLT_Up,164,12,38,14
-    PUSHBUTTON      "&Down",IDC_GLT_Down,164,30,38,14
-    PUSHBUTTON      "Default",IDC_GLT_Restore,164,82,38,14
-    PUSHBUTTON      "Factory",IDC_GLT_Default,164,100,38,14
-    DEFPUSHBUTTON   "OK",IDOK,96,122,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,152,122,50,14
-    LTEXT           "Restore to:",IDC_GLT_RestoreTo,164,70,36,8
-END
-
-DLG_MoveHistory DIALOGEX 0, 0, 225, 130
-STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-EXSTYLE WS_EX_TOOLWINDOW
-CAPTION "Move History"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
-BEGIN
-    CONTROL         "",IDC_MoveHistory,"RICHEDIT",ES_MULTILINE | ES_READONLY | 
-                    WS_BORDER | WS_VSCROLL | WS_TABSTOP,2,2,222,128
-END
-
-DLG_EvalGraph DIALOGEX 0, 0, 216, 75
-STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-EXSTYLE WS_EX_TOOLWINDOW
-CAPTION "Evaluation Graph"
-FONT 8, "MS Sans Serif"
-BEGIN
-END
-
-DLG_EngineOutput DIALOGEX 0, 0, 266, 167
-STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-EXSTYLE WS_EX_TOOLWINDOW
-CAPTION "Engine output"
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "Engine #1",IDC_EngineLabel1,14,2,84,8
-    RTEXT           "NPS",IDC_Engine1_NPS,206,2,57,8
-    CONTROL         "",IDC_EngineMemo1,"RICHEDIT",ES_MULTILINE | 
-                    ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | 
-                    WS_HSCROLL | WS_TABSTOP,0,10,262,72
-    LTEXT           "Engine #2",IDC_EngineLabel2,15,84,103,8
-    RTEXT           "NPS",IDC_Engine2_NPS,210,84,55,8
-    CONTROL         "",IDC_EngineMemo2,"RICHEDIT",ES_MULTILINE | 
-                    ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | 
-                    WS_HSCROLL | WS_TABSTOP,2,92,262,74
-    ICON            IDI_UNKNOWN_14,IDC_Color1,2,4,20,20,SS_REALSIZEIMAGE
-    ICON            IDI_UNKNOWN_14,IDC_Color2,4,84,20,20
-    LTEXT           "Static",IDC_StateData1,120,2,83,8
-    ICON            IDI_TRANS_14,IDC_StateIcon1,98,0,21,20
-    LTEXT           "Static",IDC_StateData2,186,84,19,8
-    ICON            IDI_TRANS_14,IDC_StateIcon2,164,84,20,20
-END
-
-DLG_EnginePlayOptions DIALOG DISCARDABLE  0, 0, 208, 202
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Adjudications"
-FONT 8, "MS Sans Serif"
-BEGIN
-    CONTROL         "Ponder Next Move",IDC_EpPonder,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,4,4,75,10
-    CONTROL         "Enable and Show Thinking (recommended)",
-                    IDC_EpShowThinking,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
-                    4,16,152,10
-    CONTROL         "Hide Thinking when Playing against Human",
-                    IDC_EpHideThinkingHuman,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,4,28,153,10
-    CONTROL         "Periodic Updates (for Analysis Mode)",
-                    IDC_EpPeriodicUpdates,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,4,40,131,10
-    GROUPBOX        "Engine-engine matches",IDC_STATIC,4,56,200,98
-    LTEXT           "Adjudicate draw after:",IDC_STATIC,10,72,70,8
-    EDITTEXT        IDC_EpDrawMoveCount,116,68,40,14,ES_AUTOHSCROLL
-    LTEXT           "moves",IDC_STATIC,158,72,22,8
-    LTEXT           "Win/loss adjudication threshold:",IDC_STATIC,10,90,102,
-                    8
-    EDITTEXT        IDC_EpAdjudicationThreshold,116,86,40,14,ES_AUTOHSCROLL
-    LTEXT           "centipawns",IDC_STATIC,158,90,37,8
-    CONTROL         "&Verify Engine Claims",IDC_TestClaims,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,10,108,100,10
-    CONTROL         "Detect &Mates",
-                    IDC_DetectMates,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
-                    10,118,100,10
-    CONTROL         "Draw if &Insufficient Material",
-                    IDC_MaterialDraws,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,128,100,10
-    CONTROL         "Adjudicate &Trivial Draws",
-                    IDC_TrivialDraws,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,138,100,10
-    GROUPBOX        "Apply",IDC_STATIC,115,102,81,47
-    EDITTEXT        IDC_RuleMoves,120,113,20,14,ES_AUTOHSCROLL
-    LTEXT           "-move rule",IDC_STATIC,142,117,35,8
-    EDITTEXT        IDC_DrawRepeats,120,130,20,14,ES_AUTOHSCROLL
-    LTEXT           "-fold repeats",IDC_STATIC,142,134,50,8
-    CONTROL         "Engine #1 Score is Absolute",
-                    IDC_ScoreAbs1,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,156,120,10
-    CONTROL         "Engine #2 Score is Absolute",
-                    IDC_ScoreAbs2,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,10,168,120,10
-    DEFPUSHBUTTON   "OK",IDOK,98,185,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,154,185,50,14
-END
-
-DLG_OptionsUCI DIALOG DISCARDABLE  0, 0, 228, 124
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Engine Settings"
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "Polyglot Directory:",IDC_STATIC,2,8,58,8
-    EDITTEXT        IDC_PolyglotDir,62,4,140,14,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_BrowseForPolyglotDir,206,4,17,14
-    LTEXT           "Hash Size (MB):",IDC_STATIC,2,26,52,8
-    EDITTEXT        IDC_HashSize,62,22,40,14,ES_AUTOHSCROLL
-    LTEXT           "EGTB Path:",IDC_STATIC,2,44,39,8
-    EDITTEXT        IDC_PathToEGTB,62,40,140,14,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_BrowseForEGTB,206,40,17,14
-    LTEXT           "EGTB Size (MB):",IDC_STATIC,2,62,54,8
-    EDITTEXT        IDC_SizeOfEGTB,62,58,40,14,ES_AUTOHSCROLL
-    CONTROL         "Use Book:",IDC_UseBook,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,2,80,49,10
-    EDITTEXT        IDC_BookFile,62,76,140,14,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_BrowseForBook,206,76,17,14
-    LTEXT           "Max nr of CPUs:",IDC_STATIC,106,26,52,8
-    EDITTEXT        IDC_Cores,162,22,40,14,ES_AUTOHSCROLL
-    CONTROL         "First has Own Book",IDC_OwnBook1,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,2,94,100,10
-    CONTROL         "Second has Own Book",IDC_OwnBook2,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,2,107,100,10
-    DEFPUSHBUTTON   "OK",IDOK,118,106,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,174,106,50,14
-END
-
-DLG_Null DIALOG DISCARDABLE  0, 0, 186, 50
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Null"
-FONT 8, "MS Sans Serif"
-BEGIN
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    DLG_GameList, DIALOG
-    BEGIN
-        RIGHTMARGIN, 258
-    END
-
-    DLG_Colorize, DIALOG
-    BEGIN
-        BOTTOMMARGIN, 32
-    END
-
-    DLG_GeneralOptions, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 213
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 176
-    END
-
-    DLG_IcsOptions, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 295
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 248
-    END
-
-    DLG_BoardOptions, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 187
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 243
-    END
-
-    DLG_Fonts, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 259
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 219
-    END
-
-    DLG_NewGameFRC, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 169
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 40
-    END
-
-    DLG_GameListOptions, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 199
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 133
-    END
-
-    DLG_MoveHistory, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 218
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 123
-    END
-
-    DLG_EvalGraph, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 209
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 68
-    END
-
-    DLG_EngineOutput, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 259
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 160
-    END
-
-    DLG_EnginePlayOptions, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 201
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 122
-    END
-
-    DLG_OptionsUCI, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 221
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 117
-    END
-
-    DLG_Null, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 179
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 43
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_WHITE_14            ICON    DISCARDABLE     "bitmaps/white_14.ico"
-ICON_BLACK              ICON    DISCARDABLE     "bitmaps/icon_ob.ico"
-ICON_BOARD              ICON    DISCARDABLE     "bitmaps/board.ico"
-ICON_WHITE              ICON    DISCARDABLE     "bitmaps/icon_whi.ico"
-IDI_BLACK_14            ICON    DISCARDABLE     "bitmaps/black_14.ico"
-IDI_PONDER_14           ICON    DISCARDABLE     "bitmaps/ponder_14.ico"
-IDI_TRANS_14            ICON    DISCARDABLE     "bitmaps/trans_14.ico"
-IDI_CLOCK_14            ICON    DISCARDABLE     "bitmaps/clock_14.ico"
-IDI_UNKNOWN_14          ICON    DISCARDABLE     "bitmaps/unknown_14.ico"
-IDI_BALOON_14           ICON    DISCARDABLE     "bitmaps/baloon_14.ico"
-IDI_ANALYZE_14          ICON    DISCARDABLE     "bitmaps/analyze_14.ico"
-IDI_ANALYZE2_14         ICON    DISCARDABLE     "bitmaps/analyze2_14.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-WINBOARD MENU DISCARDABLE 
-BEGIN
-    POPUP "&File"
-    BEGIN
-        MENUITEM "New &Game\tCtrl-N",           IDM_NewGame
-        MENUITEM "New Shuffle Game...",         IDM_NewGameFRC
-        MENUITEM "New Variant...\tAlt+Shift+V",  IDM_NewVariant
-        MENUITEM SEPARATOR
-        MENUITEM "&Load Game...\tCtrl-O",       IDM_LoadGame
-        MENUITEM "Load &Next Game\tAlt+PgDn",   IDM_LoadNextGame
-        MENUITEM "Load &Previous Game\tAlt+PgUp", IDM_LoadPrevGame
-        MENUITEM "&Reload Same Game",           IDM_ReloadGame
-        MENUITEM "&Save Game...\tCtrl-S",       IDM_SaveGame
-        MENUITEM SEPARATOR
-        MENUITEM "&Copy Game To Clipboard\tCtrl+C", IDM_CopyGame
-        MENUITEM "Paste Game &From Clipboard\tCtrl+V", IDM_PasteGame
-        MENUITEM SEPARATOR
-        MENUITEM "Copy Game List to Clipboard", IDM_CopyGameListToClipboard
-        MENUITEM SEPARATOR
-        MENUITEM "L&oad Position...\tCtrl+Shift+O", IDM_LoadPosition
-        MENUITEM "Load N&ext Position\tAlt+Shift+PgDn", IDM_LoadNextPosition
-        MENUITEM "Load Pre&vious Position\tAlt+Shift+PgUp", 
-                                                IDM_LoadPrevPosition
-        MENUITEM "Reload Sa&me Position",       IDM_ReloadPosition
-        MENUITEM "S&ave Position...\tCtrl+Shift+S",IDM_SavePosition
-        MENUITEM "Save &Diagram...",            IDM_SaveDiagram
-        MENUITEM SEPARATOR
-        MENUITEM "Cop&y Position To Clipboard\tCtrl+Shift+C", 
-                                                IDM_CopyPosition
-        MENUITEM "Pas&te Position From Clipboard\tCtrl+Shift+V", 
-                                                IDM_PasteAny
-        MENUITEM SEPARATOR
-        MENUITEM "E&xit",                       IDM_Exit
-    END
-    POPUP "&Mode"
-    BEGIN
-        MENUITEM "Machine &White\tCtrl+W",      IDM_MachineWhite
-        MENUITEM "Machine &Black\tCtrl+B",      IDM_MachineBlack
-        MENUITEM "Two &Machines\tCtrl+T",       IDM_TwoMachines
-        MENUITEM "Machine Bot&h",               IDM_MachineBoth
-        MENUITEM "&Analysis Mode\tCtrl+A",      IDM_AnalysisMode
-        MENUITEM "Analyze &File\tCtrl+F",       IDM_AnalyzeFile
-        MENUITEM "&ICS Client",                 IDM_IcsClient
-        MENUITEM "Edit &Game\tCtrl+E",          IDM_EditGame
-        MENUITEM "&Edit Position\tShift+Ctrl+E",IDM_EditPosition
-        MENUITEM "Trai&ning",                   IDM_Training, GRAYED
-        MENUITEM SEPARATOR
-        MENUITEM "Show Engine &Output\tAlt+Shift+O",  IDM_ShowEngineOutput
-        MENUITEM "Show Evaluation Graph\tAlt+Shift+E",IDM_ShowEvalGraph
-        MENUITEM "Show Game &List\tAlt+Shift+G",      IDM_ShowGameList
-        MENUITEM "Show Move History\tAlt+Shift+H",    IDM_ShowMoveHistory
-        MENUITEM SEPARATOR
-        MENUITEM "Edit &Tags...",               IDM_EditTags
-        MENUITEM "Edit &Comment...",            IDM_EditComment
-        MENUITEM "Enter &Username...",          IDM_TypeInName
-        MENUITEM "&Pause\tPause",               IDM_Pause
-    END
-    POPUP "&Action"
-    BEGIN
-        MENUITEM "&Accept\tF3",                 IDM_Accept
-        MENUITEM "D&ecline\tF4",                IDM_Decline
-        MENUITEM "Re&match\tF12",               IDM_Rematch
-        MENUITEM SEPARATOR
-        MENUITEM "Call &Flag\tF5",              IDM_CallFlag
-        MENUITEM "&Draw\tF6",                   IDM_Draw
-        MENUITEM "Ad&journ\tF7",                IDM_Adjourn
-        MENUITEM "A&bort\tF8",                  IDM_Abort
-        MENUITEM "&Resign\tF9",                 IDM_Resign
-        MENUITEM SEPARATOR
-        MENUITEM "Stop &Observing\tF10",        IDM_StopObserving
-        MENUITEM "Stop E&xamining\tF11",        IDM_StopExamining
-        MENUITEM SEPARATOR
-        MENUITEM "Adjudicate to &White",        IDM_UserAdjudication_White
-        MENUITEM "Adjudicate to &Black",        IDM_UserAdjudication_Black
-        MENUITEM "Adjudicate &Draw",            IDM_UserAdjudication_Draw
-    END
-    POPUP "&Step"
-    BEGIN
-        MENUITEM "T&ype In Move...\tAlt+I",     IDM_TypeInMove
-        MENUITEM SEPARATOR
-        MENUITEM "&Backward\tAlt+Left",         IDM_Backward
-        MENUITEM "&Forward\tAlt+Right",         IDM_Forward
-        MENUITEM "Back to &Start\tAlt+Home",    IDM_ToStart
-        MENUITEM "Forward to &End\tAlt+End",    IDM_ToEnd
-        MENUITEM "Re&vert",                     IDM_Revert
-        MENUITEM "&Truncate Game",              IDM_TruncateGame
-        MENUITEM SEPARATOR
-        MENUITEM "&Move Now\tCtrl+M",           IDM_MoveNow
-        MENUITEM "&Retract Move\tCtrl+X",       IDM_RetractMove
-    END
-    POPUP "&Options"
-    BEGIN
-        MENUITEM "Flip &View\tF2",              IDM_FlipView
-        MENUITEM "Swap &Clocks",                IDM_FlipClock
-        MENUITEM SEPARATOR
-        MENUITEM "&General...",                 IDM_GeneralOptions
-        MENUITEM "&Board...",                   IDM_BoardOptions
-        MENUITEM "Adjudications...\tAlt+Shift+J",IDM_EnginePlayOptions
-        MENUITEM "Global Settings...\tAlt+Shift+U",IDM_OptionsUCI
-        MENUITEM "Engine #1 Settings...",       IDM_Engine1Options
-        MENUITEM "Engine #2 Settings...",       IDM_Engine2Options
-        MENUITEM "&ICS...",                     IDM_IcsOptions, GRAYED
-        MENUITEM "&Fonts...",                   IDM_Fonts
-        MENUITEM "Soun&ds...",                  IDM_Sounds
-        MENUITEM "Game List...",                IDM_GameListOptions
-        MENUITEM SEPARATOR
-        MENUITEM "Comm&unications...",          IDM_CommPort
-        MENUITEM "&Load Game...\tAlt+Shift+L",  IDM_LoadOptions
-        MENUITEM "&Save Game...\tAlt+Shift+S",  IDM_SaveOptions
-        MENUITEM "&Time Control...\tAlt+Shift+T",IDM_TimeControl
-        MENUITEM SEPARATOR
-        MENUITEM "Save Settings &Now",          IDM_SaveSettings
-        MENUITEM "Save Settings on E&xit",      IDM_SaveSettingsOnExit
-    END
-    POPUP "&Help"
-    BEGIN
-        MENUITEM "Help &Contents\tF1",          IDM_HELPCONTENTS
-        MENUITEM "Help &Index",                 IDM_HELPSEARCH
-        MENUITEM "How to &Use Help",            IDM_HELPHELP
-        MENUITEM SEPARATOR
-        MENUITEM "&Hint...",                    IDM_Hint
-        MENUITEM "&Book...",                    IDM_Book
-        MENUITEM SEPARATOR
-        MENUITEM "&About WinBoard",             IDM_ABOUT
-    END
-END
-
-PIECEMENU MENU DISCARDABLE 
-BEGIN
-    POPUP ""
-    BEGIN
-        MENUITEM "White",                       EP_White
-        MENUITEM SEPARATOR
-        MENUITEM "Promote",                     EP_Promote
-        MENUITEM SEPARATOR
-        MENUITEM "Pawn",                        EP_WhitePawn
-        MENUITEM "Knight",                      EP_WhiteKnight
-        MENUITEM "Bishop",                      EP_WhiteBishop
-        MENUITEM "Rook",                        EP_WhiteRook
-        MENUITEM "Queen",                       EP_WhiteQueen
-        MENUITEM "King",                        EP_WhiteKing
-        MENUITEM SEPARATOR
-        MENUITEM "Archbishop",                  EP_WhiteCardinal
-        MENUITEM "Chancellor",                  EP_WhiteMarshall
-        MENUITEM "Elephant",                    EP_WhiteAlfil
-        MENUITEM "Cannon",                      EP_WhiteCannon
-        MENUITEM SEPARATOR
-        MENUITEM "Empty Square",                EP_EmptySquare
-        MENUITEM "Black",                       EP_Black, MENUBARBREAK
-        MENUITEM SEPARATOR
-        MENUITEM "Demote",                      EP_Demote
-        MENUITEM SEPARATOR
-        MENUITEM "Pawn",                        EP_BlackPawn
-        MENUITEM "Knight",                      EP_BlackKnight
-        MENUITEM "Bishop",                      EP_BlackBishop
-        MENUITEM "Rook",                        EP_BlackRook
-        MENUITEM "Queen",                       EP_BlackQueen
-        MENUITEM "King",                        EP_BlackKing
-        MENUITEM SEPARATOR
-        MENUITEM "Archbishop",                  EP_BlackCardinal
-        MENUITEM "Chancellor",                  EP_BlackMarshall
-        MENUITEM "Elephant",                    EP_BlackAlfil
-        MENUITEM "Cannon",                      EP_BlackCannon
-        MENUITEM SEPARATOR
-        MENUITEM "Clear Board    ",             EP_ClearBoard
-    END
-END
-
-SHOGIPIECEMENU MENU DISCARDABLE 
-BEGIN
-    POPUP ""
-    BEGIN
-        MENUITEM "White",                       EP_White
-        MENUITEM SEPARATOR
-        MENUITEM "Pawn",                        EP_WhitePawn
-        MENUITEM "Knight",                      EP_WhiteKnight
-        MENUITEM "Bishop",                      EP_WhiteBishop
-        MENUITEM "Rook",                        EP_WhiteRook
-        MENUITEM "Lance",                       EP_WhiteQueen
-        MENUITEM "Silver",                      EP_WhiteFerz
-        MENUITEM "Gold",                        EP_WhiteWazir
-        MENUITEM "King",                        EP_WhiteKing
-        MENUITEM SEPARATOR
-        MENUITEM "Promote",                     EP_Promote
-        MENUITEM SEPARATOR
-        MENUITEM "Empty Square",                EP_EmptySquare
-        MENUITEM "Black",                       EP_Black, MENUBARBREAK
-        MENUITEM SEPARATOR
-        MENUITEM "Pawn",                        EP_BlackPawn
-        MENUITEM "Knight",                      EP_BlackKnight
-        MENUITEM "Bishop",                      EP_BlackBishop
-        MENUITEM "Rook",                        EP_BlackRook
-        MENUITEM "Lance",                       EP_BlackQueen
-        MENUITEM "Silver",                      EP_BlackFerz
-        MENUITEM "Gold",                        EP_BlackWazir
-        MENUITEM "King",                        EP_BlackKing
-        MENUITEM SEPARATOR
-        MENUITEM "Demote",                      EP_Demote
-        MENUITEM SEPARATOR
-        MENUITEM "Clear Board    ",             EP_ClearBoard
-    END
-END
-
-WHITEPIECEMENU MENU DISCARDABLE 
-BEGIN
-    POPUP ""
-    BEGIN
-        MENUITEM "White",                       EP_White
-        MENUITEM SEPARATOR
-        MENUITEM "Pawn",                        EP_WhitePawn
-        MENUITEM "Knight",                      EP_WhiteKnight
-        MENUITEM "Bishop",                      EP_WhiteBishop
-        MENUITEM "Rook",                        EP_WhiteRook
-        MENUITEM "Queen",                       EP_WhiteQueen
-        MENUITEM "King",                        EP_WhiteKing
-        MENUITEM SEPARATOR
-        MENUITEM "Empty Square",                EP_EmptySquare
-        MENUITEM "Clear Board",                 EP_ClearBoard
-    END
-END
-
-BLACKPIECEMENU MENU DISCARDABLE 
-BEGIN
-    POPUP ""
-    BEGIN
-        MENUITEM "Black",                       EP_Black
-        MENUITEM SEPARATOR
-        MENUITEM "Pawn",                        EP_BlackPawn
-        MENUITEM "Knight",                      EP_BlackKnight
-        MENUITEM "Bishop",                      EP_BlackBishop
-        MENUITEM "Rook",                        EP_BlackRook
-        MENUITEM "Queen",                       EP_BlackQueen
-        MENUITEM "King",                        EP_BlackKing
-        MENUITEM SEPARATOR
-        MENUITEM "Empty Square",                EP_EmptySquare
-        MENUITEM "Clear Board",                 EP_ClearBoard
-    END
-END
-
-DROPPIECEMENU MENU DISCARDABLE 
-BEGIN
-    POPUP ""
-    BEGIN
-        MENUITEM "Drop",                        0, INACTIVE
-        MENUITEM SEPARATOR
-        MENUITEM "Pawn",                        DP_Pawn
-        MENUITEM "Knight",                      DP_Knight
-        MENUITEM "Bishop",                      DP_Bishop
-        MENUITEM "Rook",                        DP_Rook
-        MENUITEM "Queen",                       DP_Queen
-    END
-END
-
-TEXTMENU MENU DISCARDABLE 
-BEGIN
-    POPUP ""
-    BEGIN
-        MENUITEM "Cop&y and Paste",             IDM_QuickPaste
-        MENUITEM "&Copy",                       IDM_Copy
-        MENUITEM "&Paste",                      IDM_Paste
-    END
-END
-
-INPUTMENU MENU DISCARDABLE 
-BEGIN
-    POPUP ""
-    BEGIN
-        MENUITEM "&Undo",                       IDM_Undo
-        MENUITEM SEPARATOR
-        MENUITEM "Cu&t",                        IDM_Cut
-        MENUITEM "&Copy",                       IDM_Copy
-        MENUITEM "&Paste",                      IDM_Paste
-        MENUITEM SEPARATOR
-        MENUITEM "Select &All",                 IDM_SelectAll
-    END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Accelerator
-//
-
-WINBOARD ACCELERATORS MOVEABLE PURE 
-BEGIN
-    "1",            IDM_DirectCommand1,     VIRTKEY, ALT, NOINVERT
-    "2",            IDM_DirectCommand2,     VIRTKEY, ALT, NOINVERT
-    "I",            IDM_TypeInMove,         VIRTKEY, ALT, NOINVERT
-    "N",            IDM_NewGame,            VIRTKEY, CONTROL, NOINVERT
-    "O",            IDM_LoadGame,           VIRTKEY, CONTROL, NOINVERT
-    "S",            IDM_SaveGame,           VIRTKEY, CONTROL, NOINVERT
-    "O",            IDM_LoadPosition,       VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "S",            IDM_SavePosition,       VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "C",            IDM_CopyPosition,       VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "V",            IDM_PasteAny,           VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "O",            IDM_ShowEngineOutput,   VIRTKEY, ALT, SHIFT, NOINVERT
-    "H",            IDM_ShowMoveHistory,    VIRTKEY, ALT, SHIFT, NOINVERT
-    "E",            IDM_ShowEvalGraph,      VIRTKEY, ALT, SHIFT, NOINVERT
-    "G",            IDM_ShowGameList,       VIRTKEY, ALT, SHIFT, NOINVERT
-    "B",            IDM_BoardOptions,       VIRTKEY, ALT, SHIFT, NOINVERT
-    "T",            IDM_TimeControl,        VIRTKEY, ALT, SHIFT, NOINVERT
-    "L",            IDM_LoadOptions,        VIRTKEY, ALT, SHIFT, NOINVERT
-    "S",            IDM_SaveOptions,        VIRTKEY, ALT, SHIFT, NOINVERT
-    "J",            IDM_EnginePlayOptions,  VIRTKEY, ALT, SHIFT, NOINVERT
-    "U",            IDM_OptionsUCI,         VIRTKEY, ALT, SHIFT, NOINVERT
-    "V",            IDM_NewVariant,         VIRTKEY, ALT, SHIFT, NOINVERT
-    "P",            OPT_PonderNextMove,     VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "X",            OPT_SaveExtPGN,         VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "L",            OPT_TestLegality,       VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "A",            OPT_AnimateMoving,      VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "Q",            OPT_AlwaysQueen,        VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "F",            OPT_AutoFlag,           VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "H",            OPT_HideThinkFromHuman, VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "I",            OPT_ExtraInfoInMoveHistory, VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "W",            IDM_MachineWhite,       VIRTKEY, CONTROL, NOINVERT
-    "B",            IDM_MachineBlack,       VIRTKEY, CONTROL, NOINVERT
-    "T",            IDM_TwoMachines,        VIRTKEY, CONTROL, NOINVERT
-    "E",            IDM_EditGame,           VIRTKEY, CONTROL, NOINVERT
-    "E",            IDM_EditPosition,       VIRTKEY, SHIFT, CONTROL, NOINVERT
-    "F",            IDM_AnalyzeFile,        VIRTKEY, CONTROL, NOINVERT
-    "M",            IDM_MoveNow,            VIRTKEY, CONTROL, NOINVERT
-    "X",            IDM_RetractMove,        VIRTKEY, CONTROL, NOINVERT
-    VK_DOWN,        IDM_ToEnd,              VIRTKEY, ALT, NOINVERT
-    VK_END,         IDM_ToEnd,              VIRTKEY, ALT, NOINVERT
-    VK_F1,          IDM_HELPCONTENTS,       VIRTKEY, NOINVERT
-    VK_F10,         IDM_StopObserving,      VIRTKEY, NOINVERT
-    VK_F11,         IDM_StopExamining,      VIRTKEY, NOINVERT
-    VK_F12,         IDM_Rematch,            VIRTKEY, NOINVERT
-    VK_F12,         IDM_Debug,              VIRTKEY, CONTROL, ALT, NOINVERT
-    VK_F2,          IDM_FlipView,           VIRTKEY, NOINVERT
-    VK_F3,          IDM_Accept,             VIRTKEY, NOINVERT
-    VK_F4,          IDM_Decline,            VIRTKEY, NOINVERT
-    VK_F4,          IDM_Minimize,           VIRTKEY, CONTROL, NOINVERT
-    VK_F5,          IDM_CallFlag,           VIRTKEY, NOINVERT
-    VK_F6,          IDM_Draw,               VIRTKEY, NOINVERT
-    VK_F7,          IDM_Adjourn,            VIRTKEY, NOINVERT
-    VK_F8,          IDM_Abort,              VIRTKEY, NOINVERT
-    VK_F9,          IDM_Resign,             VIRTKEY, NOINVERT
-    VK_HOME,        IDM_ToStart,            VIRTKEY, ALT, NOINVERT
-    VK_INSERT,      IDM_MoveNow,            VIRTKEY, ALT, NOINVERT
-    VK_NEXT,        IDM_LoadNextGame,       VIRTKEY, ALT, NOINVERT
-    VK_NEXT,        IDM_LoadNextPosition,   VIRTKEY, SHIFT, ALT, NOINVERT
-    VK_PAUSE,       IDM_Pause,              VIRTKEY, NOINVERT
-    VK_PAUSE,       IDM_Pause,              VIRTKEY, ALT, NOINVERT
-    VK_PRIOR,       IDM_LoadPrevGame,       VIRTKEY, ALT, NOINVERT
-    VK_PRIOR,       IDM_LoadPrevPosition,   VIRTKEY, SHIFT, ALT, NOINVERT
-    VK_LEFT,        IDM_Backward,           VIRTKEY, ALT, NOINVERT
-    VK_RIGHT,       IDM_Forward,            VIRTKEY, ALT, NOINVERT
-END
-
-NO_ALT ACCELERATORS MOVEABLE PURE 
-BEGIN
-    VK_DELETE,      IDM_RetractMove,        VIRTKEY, NOINVERT
-    VK_END,         IDM_TruncateGame,       VIRTKEY, NOINVERT
-    VK_HOME,        IDM_Revert,             VIRTKEY, NOINVERT
-    VK_INSERT,      IDM_MoveNow,            VIRTKEY, NOINVERT
-    VK_NEXT,        IDM_LoadNextGame,       VIRTKEY, NOINVERT
-    VK_NEXT,        IDM_LoadNextPosition,   VIRTKEY, SHIFT, NOINVERT
-    VK_PRIOR,       IDM_LoadPrevGame,       VIRTKEY, NOINVERT
-    VK_PRIOR,       IDM_LoadPrevPosition,   VIRTKEY, SHIFT, NOINVERT
-END
-
-NO_ICS ACCELERATORS DISCARDABLE 
-BEGIN
-    "A",            IDM_AnalysisMode,       VIRTKEY, CONTROL, NOINVERT
-    "V",            IDM_PasteAny,           VIRTKEY, CONTROL, NOINVERT
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Bitmap
-//
-
-P21O                    BITMAP  MOVEABLE PURE   "bitmaps/p21o.bmp"
-N21O                    BITMAP  MOVEABLE PURE   "bitmaps/n21o.bmp"
-B21O                    BITMAP  MOVEABLE PURE   "bitmaps/b21o.bmp"
-R21O                    BITMAP  MOVEABLE PURE   "bitmaps/r21o.bmp"
-K21O                    BITMAP  MOVEABLE PURE   "bitmaps/k21o.bmp"
-Q21O                    BITMAP  MOVEABLE PURE   "bitmaps/q21o.bmp"
-P21S                    BITMAP  MOVEABLE PURE   "bitmaps/p21s.bmp"
-N21S                    BITMAP  MOVEABLE PURE   "bitmaps/n21s.bmp"
-B21S                    BITMAP  MOVEABLE PURE   "bitmaps/b21s.bmp"
-R21S                    BITMAP  MOVEABLE PURE   "bitmaps/r21s.bmp"
-Q21S                    BITMAP  MOVEABLE PURE   "bitmaps/q21s.bmp"
-K21S                    BITMAP  MOVEABLE PURE   "bitmaps/k21s.bmp"
-P21W                    BITMAP  MOVEABLE PURE   "bitmaps/p21w.bmp"
-N21W                    BITMAP  MOVEABLE PURE   "bitmaps/n21w.bmp"
-B21W                    BITMAP  MOVEABLE PURE   "bitmaps/b21w.bmp"
-R21W                    BITMAP  MOVEABLE PURE   "bitmaps/r21w.bmp"
-Q21W                    BITMAP  MOVEABLE PURE   "bitmaps/q21w.bmp"
-K21W                    BITMAP  MOVEABLE PURE   "bitmaps/k21w.bmp"
-P25O                    BITMAP  MOVEABLE PURE   "bitmaps/p25o.bmp"
-N25O                    BITMAP  MOVEABLE PURE   "bitmaps/n25o.bmp"
-B25O                    BITMAP  MOVEABLE PURE   "bitmaps/b25o.bmp"
-R25O                    BITMAP  MOVEABLE PURE   "bitmaps/r25o.bmp"
-Q25O                    BITMAP  MOVEABLE PURE   "bitmaps/q25o.bmp"
-K25O                    BITMAP  MOVEABLE PURE   "bitmaps/k25o.bmp"
-P25S                    BITMAP  MOVEABLE PURE   "bitmaps/p25s.bmp"
-N25S                    BITMAP  MOVEABLE PURE   "bitmaps/n25s.bmp"
-B25S                    BITMAP  MOVEABLE PURE   "bitmaps/b25s.bmp"
-R25S                    BITMAP  MOVEABLE PURE   "bitmaps/r25s.bmp"
-Q25S                    BITMAP  MOVEABLE PURE   "bitmaps/q25s.bmp"
-K25S                    BITMAP  MOVEABLE PURE   "bitmaps/k25s.bmp"
-P25W                    BITMAP  MOVEABLE PURE   "bitmaps/p25w.bmp"
-N25W                    BITMAP  MOVEABLE PURE   "bitmaps/n25w.bmp"
-B25W                    BITMAP  MOVEABLE PURE   "bitmaps/b25w.bmp"
-R25W                    BITMAP  MOVEABLE PURE   "bitmaps/r25w.bmp"
-Q25W                    BITMAP  MOVEABLE PURE   "bitmaps/q25w.bmp"
-K25W                    BITMAP  MOVEABLE PURE   "bitmaps/k25w.bmp"
-P29O                    BITMAP  MOVEABLE PURE   "bitmaps/p29o.bmp"
-N29O                    BITMAP  MOVEABLE PURE   "bitmaps/n29o.bmp"
-B29O                    BITMAP  MOVEABLE PURE   "bitmaps/b29o.bmp"
-R29O                    BITMAP  MOVEABLE PURE   "bitmaps/r29o.bmp"
-Q29O                    BITMAP  MOVEABLE PURE   "bitmaps/q29o.bmp"
-K29O                    BITMAP  MOVEABLE PURE   "bitmaps/k29o.bmp"
-P29S                    BITMAP  MOVEABLE PURE   "bitmaps/p29s.bmp"
-N29S                    BITMAP  MOVEABLE PURE   "bitmaps/n29s.bmp"
-B29S                    BITMAP  MOVEABLE PURE   "bitmaps/b29s.bmp"
-R29S                    BITMAP  MOVEABLE PURE   "bitmaps/r29s.bmp"
-Q29S                    BITMAP  MOVEABLE PURE   "bitmaps/q29s.bmp"
-K29S                    BITMAP  MOVEABLE PURE   "bitmaps/k29s.bmp"
-P29W                    BITMAP  MOVEABLE PURE   "bitmaps/p29w.bmp"
-N29W                    BITMAP  MOVEABLE PURE   "bitmaps/n29w.bmp"
-B29W                    BITMAP  MOVEABLE PURE   "bitmaps/b29w.bmp"
-R29W                    BITMAP  MOVEABLE PURE   "bitmaps/r29w.bmp"
-Q29W                    BITMAP  MOVEABLE PURE   "bitmaps/q29w.bmp"
-K29W                    BITMAP  MOVEABLE PURE   "bitmaps/k29w.bmp"
-P33O                    BITMAP  MOVEABLE PURE   "bitmaps/p33o.bmp"
-N33O                    BITMAP  MOVEABLE PURE   "bitmaps/n33o.bmp"
-B33O                    BITMAP  MOVEABLE PURE   "bitmaps/b33o.bmp"
-R33O                    BITMAP  MOVEABLE PURE   "bitmaps/r33o.bmp"
-Q33O                    BITMAP  MOVEABLE PURE   "bitmaps/q33o.bmp"
-K33O                    BITMAP  MOVEABLE PURE   "bitmaps/k33o.bmp"
-P33S                    BITMAP  MOVEABLE PURE   "bitmaps/p33s.bmp"
-N33S                    BITMAP  MOVEABLE PURE   "bitmaps/n33s.bmp"
-B33S                    BITMAP  MOVEABLE PURE   "bitmaps/b33s.bmp"
-R33S                    BITMAP  MOVEABLE PURE   "bitmaps/r33s.bmp"
-Q33S                    BITMAP  MOVEABLE PURE   "bitmaps/q33s.bmp"
-K33S                    BITMAP  MOVEABLE PURE   "bitmaps/k33s.bmp"
-P33W                    BITMAP  MOVEABLE PURE   "bitmaps/p33w.bmp"
-N33W                    BITMAP  MOVEABLE PURE   "bitmaps/n33w.bmp"
-B33W                    BITMAP  MOVEABLE PURE   "bitmaps/b33w.bmp"
-R33W                    BITMAP  MOVEABLE PURE   "bitmaps/r33w.bmp"
-Q33W                    BITMAP  MOVEABLE PURE   "bitmaps/q33w.bmp"
-K33W                    BITMAP  MOVEABLE PURE   "bitmaps/k33w.bmp"
-P37O                    BITMAP  MOVEABLE PURE   "bitmaps/p37o.bmp"
-N37O                    BITMAP  MOVEABLE PURE   "bitmaps/n37o.bmp"
-B37O                    BITMAP  MOVEABLE PURE   "bitmaps/b37o.bmp"
-R37O                    BITMAP  MOVEABLE PURE   "bitmaps/r37o.bmp"
-Q37O                    BITMAP  MOVEABLE PURE   "bitmaps/q37o.bmp"
-K37O                    BITMAP  MOVEABLE PURE   "bitmaps/k37o.bmp"
-P37S                    BITMAP  MOVEABLE PURE   "bitmaps/p37s.bmp"
-N37S                    BITMAP  MOVEABLE PURE   "bitmaps/n37s.bmp"
-B37S                    BITMAP  MOVEABLE PURE   "bitmaps/b37s.bmp"
-R37S                    BITMAP  MOVEABLE PURE   "bitmaps/r37s.bmp"
-Q37S                    BITMAP  MOVEABLE PURE   "bitmaps/q37s.bmp"
-K37S                    BITMAP  MOVEABLE PURE   "bitmaps/k37s.bmp"
-P37W                    BITMAP  MOVEABLE PURE   "bitmaps/p37w.bmp"
-N37W                    BITMAP  MOVEABLE PURE   "bitmaps/n37w.bmp"
-B37W                    BITMAP  MOVEABLE PURE   "bitmaps/b37w.bmp"
-R37W                    BITMAP  MOVEABLE PURE   "bitmaps/r37w.bmp"
-Q37W                    BITMAP  MOVEABLE PURE   "bitmaps/q37w.bmp"
-K37W                    BITMAP  MOVEABLE PURE   "bitmaps/k37w.bmp"
-P40O                    BITMAP  MOVEABLE PURE   "bitmaps/p40o.bmp"
-N40O                    BITMAP  MOVEABLE PURE   "bitmaps/n40o.bmp"
-B40O                    BITMAP  MOVEABLE PURE   "bitmaps/b40o.bmp"
-R40O                    BITMAP  MOVEABLE PURE   "bitmaps/r40o.bmp"
-Q40O                    BITMAP  MOVEABLE PURE   "bitmaps/q40o.bmp"
-K40O                    BITMAP  MOVEABLE PURE   "bitmaps/k40o.bmp"
-P40S                    BITMAP  MOVEABLE PURE   "bitmaps/p40s.bmp"
-N40S                    BITMAP  MOVEABLE PURE   "bitmaps/n40s.bmp"
-B40S                    BITMAP  MOVEABLE PURE   "bitmaps/b40s.bmp"
-R40S                    BITMAP  MOVEABLE PURE   "bitmaps/r40s.bmp"
-Q40S                    BITMAP  MOVEABLE PURE   "bitmaps/q40s.bmp"
-K40S                    BITMAP  MOVEABLE PURE   "bitmaps/k40s.bmp"
-P40W                    BITMAP  MOVEABLE PURE   "bitmaps/p40w.bmp"
-N40W                    BITMAP  MOVEABLE PURE   "bitmaps/n40w.bmp"
-B40W                    BITMAP  MOVEABLE PURE   "bitmaps/b40w.bmp"
-R40W                    BITMAP  MOVEABLE PURE   "bitmaps/r40w.bmp"
-Q40W                    BITMAP  MOVEABLE PURE   "bitmaps/q40w.bmp"
-K40W                    BITMAP  MOVEABLE PURE   "bitmaps/k40w.bmp"
-P45O                    BITMAP  MOVEABLE PURE   "bitmaps/p45o.bmp"
-N45O                    BITMAP  MOVEABLE PURE   "bitmaps/n45o.bmp"
-B45O                    BITMAP  MOVEABLE PURE   "bitmaps/b45o.bmp"
-R45O                    BITMAP  MOVEABLE PURE   "bitmaps/r45o.bmp"
-Q45O                    BITMAP  MOVEABLE PURE   "bitmaps/q45o.bmp"
-K45O                    BITMAP  MOVEABLE PURE   "bitmaps/k45o.bmp"
-P45S                    BITMAP  MOVEABLE PURE   "bitmaps/p45s.bmp"
-N45S                    BITMAP  MOVEABLE PURE   "bitmaps/n45s.bmp"
-B45S                    BITMAP  MOVEABLE PURE   "bitmaps/b45s.bmp"
-R45S                    BITMAP  MOVEABLE PURE   "bitmaps/r45s.bmp"
-Q45S                    BITMAP  MOVEABLE PURE   "bitmaps/q45s.bmp"
-K45S                    BITMAP  MOVEABLE PURE   "bitmaps/k45s.bmp"
-P45W                    BITMAP  MOVEABLE PURE   "bitmaps/p45w.bmp"
-N45W                    BITMAP  MOVEABLE PURE   "bitmaps/n45w.bmp"
-B45W                    BITMAP  MOVEABLE PURE   "bitmaps/b45w.bmp"
-R45W                    BITMAP  MOVEABLE PURE   "bitmaps/r45w.bmp"
-Q45W                    BITMAP  MOVEABLE PURE   "bitmaps/q45w.bmp"
-K45W                    BITMAP  MOVEABLE PURE   "bitmaps/k45w.bmp"
-P49O                    BITMAP  MOVEABLE PURE   "bitmaps/p49o.bmp"
-N49O                    BITMAP  MOVEABLE PURE   "bitmaps/n49o.bmp"
-B49O                    BITMAP  MOVEABLE PURE   "bitmaps/b49o.bmp"
-R49O                    BITMAP  MOVEABLE PURE   "bitmaps/r49o.bmp"
-Q49O                    BITMAP  MOVEABLE PURE   "bitmaps/q49o.bmp"
-K49O                    BITMAP  MOVEABLE PURE   "bitmaps/k49o.bmp"
-P49S                    BITMAP  MOVEABLE PURE   "bitmaps/p49s.bmp"
-N49S                    BITMAP  MOVEABLE PURE   "bitmaps/n49s.bmp"
-B49S                    BITMAP  MOVEABLE PURE   "bitmaps/b49s.bmp"
-R49S                    BITMAP  MOVEABLE PURE   "bitmaps/r49s.bmp"
-Q49S                    BITMAP  MOVEABLE PURE   "bitmaps/q49s.bmp"
-K49S                    BITMAP  MOVEABLE PURE   "bitmaps/k49s.bmp"
-P49W                    BITMAP  MOVEABLE PURE   "bitmaps/p49w.bmp"
-N49W                    BITMAP  MOVEABLE PURE   "bitmaps/n49w.bmp"
-B49W                    BITMAP  MOVEABLE PURE   "bitmaps/b49w.bmp"
-R49W                    BITMAP  MOVEABLE PURE   "bitmaps/r49w.bmp"
-Q49W                    BITMAP  MOVEABLE PURE   "bitmaps/q49w.bmp"
-K49W                    BITMAP  MOVEABLE PURE   "bitmaps/k49w.bmp"
-P54O                    BITMAP  MOVEABLE PURE   "bitmaps/p54o.bmp"
-N54O                    BITMAP  MOVEABLE PURE   "bitmaps/n54o.bmp"
-B54O                    BITMAP  MOVEABLE PURE   "bitmaps/b54o.bmp"
-R54O                    BITMAP  MOVEABLE PURE   "bitmaps/r54o.bmp"
-Q54O                    BITMAP  MOVEABLE PURE   "bitmaps/q54o.bmp"
-K54O                    BITMAP  MOVEABLE PURE   "bitmaps/k54o.bmp"
-P54S                    BITMAP  MOVEABLE PURE   "bitmaps/p54s.bmp"
-N54S                    BITMAP  MOVEABLE PURE   "bitmaps/n54s.bmp"
-B54S                    BITMAP  MOVEABLE PURE   "bitmaps/b54s.bmp"
-R54S                    BITMAP  MOVEABLE PURE   "bitmaps/r54s.bmp"
-Q54S                    BITMAP  MOVEABLE PURE   "bitmaps/q54s.bmp"
-K54S                    BITMAP  MOVEABLE PURE   "bitmaps/k54s.bmp"
-P54W                    BITMAP  MOVEABLE PURE   "bitmaps/p54w.bmp"
-N54W                    BITMAP  MOVEABLE PURE   "bitmaps/n54w.bmp"
-B54W                    BITMAP  MOVEABLE PURE   "bitmaps/b54w.bmp"
-R54W                    BITMAP  MOVEABLE PURE   "bitmaps/r54w.bmp"
-Q54W                    BITMAP  MOVEABLE PURE   "bitmaps/q54w.bmp"
-K54W                    BITMAP  MOVEABLE PURE   "bitmaps/k54w.bmp"
-P58O                    BITMAP  MOVEABLE PURE   "bitmaps/p58o.bmp"
-N58O                    BITMAP  MOVEABLE PURE   "bitmaps/n58o.bmp"
-B58O                    BITMAP  MOVEABLE PURE   "bitmaps/b58o.bmp"
-R58O                    BITMAP  MOVEABLE PURE   "bitmaps/r58o.bmp"
-Q58O                    BITMAP  MOVEABLE PURE   "bitmaps/q58o.bmp"
-K58O                    BITMAP  MOVEABLE PURE   "bitmaps/k58o.bmp"
-P58S                    BITMAP  MOVEABLE PURE   "bitmaps/p58s.bmp"
-N58S                    BITMAP  MOVEABLE PURE   "bitmaps/n58s.bmp"
-B58S                    BITMAP  MOVEABLE PURE   "bitmaps/b58s.bmp"
-R58S                    BITMAP  MOVEABLE PURE   "bitmaps/r58s.bmp"
-Q58S                    BITMAP  MOVEABLE PURE   "bitmaps/q58s.bmp"
-K58S                    BITMAP  MOVEABLE PURE   "bitmaps/k58s.bmp"
-P58W                    BITMAP  MOVEABLE PURE   "bitmaps/p58w.bmp"
-N58W                    BITMAP  MOVEABLE PURE   "bitmaps/n58w.bmp"
-B58W                    BITMAP  MOVEABLE PURE   "bitmaps/b58w.bmp"
-R58W                    BITMAP  MOVEABLE PURE   "bitmaps/r58w.bmp"
-Q58W                    BITMAP  MOVEABLE PURE   "bitmaps/q58w.bmp"
-K58W                    BITMAP  MOVEABLE PURE   "bitmaps/k58w.bmp"
-P64O                    BITMAP  MOVEABLE PURE   "bitmaps/p64o.bmp"
-N64O                    BITMAP  MOVEABLE PURE   "bitmaps/n64o.bmp"
-B64O                    BITMAP  MOVEABLE PURE   "bitmaps/b64o.bmp"
-R64O                    BITMAP  MOVEABLE PURE   "bitmaps/r64o.bmp"
-Q64O                    BITMAP  MOVEABLE PURE   "bitmaps/q64o.bmp"
-K64O                    BITMAP  MOVEABLE PURE   "bitmaps/k64o.bmp"
-P64S                    BITMAP  MOVEABLE PURE   "bitmaps/p64s.bmp"
-N64S                    BITMAP  MOVEABLE PURE   "bitmaps/n64s.bmp"
-B64S                    BITMAP  MOVEABLE PURE   "bitmaps/b64s.bmp"
-R64S                    BITMAP  MOVEABLE PURE   "bitmaps/r64s.bmp"
-Q64S                    BITMAP  MOVEABLE PURE   "bitmaps/q64s.bmp"
-K64S                    BITMAP  MOVEABLE PURE   "bitmaps/k64s.bmp"
-P64W                    BITMAP  MOVEABLE PURE   "bitmaps/p64w.bmp"
-N64W                    BITMAP  MOVEABLE PURE   "bitmaps/n64w.bmp"
-B64W                    BITMAP  MOVEABLE PURE   "bitmaps/b64w.bmp"
-R64W                    BITMAP  MOVEABLE PURE   "bitmaps/r64w.bmp"
-Q64W                    BITMAP  MOVEABLE PURE   "bitmaps/q64w.bmp"
-K64W                    BITMAP  MOVEABLE PURE   "bitmaps/k64w.bmp"
-P72O                    BITMAP  MOVEABLE PURE   "bitmaps/p72o.bmp"
-N72O                    BITMAP  MOVEABLE PURE   "bitmaps/n72o.bmp"
-B72O                    BITMAP  MOVEABLE PURE   "bitmaps/b72o.bmp"
-R72O                    BITMAP  MOVEABLE PURE   "bitmaps/r72o.bmp"
-Q72O                    BITMAP  MOVEABLE PURE   "bitmaps/q72o.bmp"
-K72O                    BITMAP  MOVEABLE PURE   "bitmaps/k72o.bmp"
-P72S                    BITMAP  MOVEABLE PURE   "bitmaps/p72s.bmp"
-N72S                    BITMAP  MOVEABLE PURE   "bitmaps/n72s.bmp"
-B72S                    BITMAP  MOVEABLE PURE   "bitmaps/b72s.bmp"
-R72S                    BITMAP  MOVEABLE PURE   "bitmaps/r72s.bmp"
-Q72S                    BITMAP  MOVEABLE PURE   "bitmaps/q72s.bmp"
-K72S                    BITMAP  MOVEABLE PURE   "bitmaps/k72s.bmp"
-P72W                    BITMAP  MOVEABLE PURE   "bitmaps/p72w.bmp"
-N72W                    BITMAP  MOVEABLE PURE   "bitmaps/n72w.bmp"
-B72W                    BITMAP  MOVEABLE PURE   "bitmaps/b72w.bmp"
-R72W                    BITMAP  MOVEABLE PURE   "bitmaps/r72w.bmp"
-Q72W                    BITMAP  MOVEABLE PURE   "bitmaps/q72w.bmp"
-K72W                    BITMAP  MOVEABLE PURE   "bitmaps/k72w.bmp"
-P80O                    BITMAP  MOVEABLE PURE   "bitmaps/p80o.bmp"
-N80O                    BITMAP  MOVEABLE PURE   "bitmaps/n80o.bmp"
-B80O                    BITMAP  MOVEABLE PURE   "bitmaps/b80o.bmp"
-R80O                    BITMAP  MOVEABLE PURE   "bitmaps/r80o.bmp"
-Q80O                    BITMAP  MOVEABLE PURE   "bitmaps/q80o.bmp"
-K80O                    BITMAP  MOVEABLE PURE   "bitmaps/k80o.bmp"
-P80S                    BITMAP  MOVEABLE PURE   "bitmaps/p80s.bmp"
-N80S                    BITMAP  MOVEABLE PURE   "bitmaps/n80s.bmp"
-B80S                    BITMAP  MOVEABLE PURE   "bitmaps/b80s.bmp"
-R80S                    BITMAP  MOVEABLE PURE   "bitmaps/r80s.bmp"
-Q80S                    BITMAP  MOVEABLE PURE   "bitmaps/q80s.bmp"
-K80S                    BITMAP  MOVEABLE PURE   "bitmaps/k80s.bmp"
-P80W                    BITMAP  MOVEABLE PURE   "bitmaps/p80w.bmp"
-N80W                    BITMAP  MOVEABLE PURE   "bitmaps/n80w.bmp"
-B80W                    BITMAP  MOVEABLE PURE   "bitmaps/b80w.bmp"
-R80W                    BITMAP  MOVEABLE PURE   "bitmaps/r80w.bmp"
-Q80W                    BITMAP  MOVEABLE PURE   "bitmaps/q80w.bmp"
-K80W                    BITMAP  MOVEABLE PURE   "bitmaps/k80w.bmp"
-P87O                    BITMAP  MOVEABLE PURE   "bitmaps/p87o.bmp"
-N87O                    BITMAP  MOVEABLE PURE   "bitmaps/n87o.bmp"
-B87O                    BITMAP  MOVEABLE PURE   "bitmaps/b87o.bmp"
-R87O                    BITMAP  MOVEABLE PURE   "bitmaps/r87o.bmp"
-Q87O                    BITMAP  MOVEABLE PURE   "bitmaps/q87o.bmp"
-K87O                    BITMAP  MOVEABLE PURE   "bitmaps/k87o.bmp"
-P87S                    BITMAP  MOVEABLE PURE   "bitmaps/p87s.bmp"
-N87S                    BITMAP  MOVEABLE PURE   "bitmaps/n87s.bmp"
-B87S                    BITMAP  MOVEABLE PURE   "bitmaps/b87s.bmp"
-R87S                    BITMAP  MOVEABLE PURE   "bitmaps/r87s.bmp"
-Q87S                    BITMAP  MOVEABLE PURE   "bitmaps/q87s.bmp"
-K87S                    BITMAP  MOVEABLE PURE   "bitmaps/k87s.bmp"
-P87W                    BITMAP  MOVEABLE PURE   "bitmaps/p87w.bmp"
-N87W                    BITMAP  MOVEABLE PURE   "bitmaps/n87w.bmp"
-B87W                    BITMAP  MOVEABLE PURE   "bitmaps/b87w.bmp"
-R87W                    BITMAP  MOVEABLE PURE   "bitmaps/r87w.bmp"
-Q87W                    BITMAP  MOVEABLE PURE   "bitmaps/q87w.bmp"
-K87W                    BITMAP  MOVEABLE PURE   "bitmaps/k87w.bmp"
-P95O                    BITMAP  MOVEABLE PURE   "bitmaps/p95o.bmp"
-N95O                    BITMAP  MOVEABLE PURE   "bitmaps/n95o.bmp"
-B95O                    BITMAP  MOVEABLE PURE   "bitmaps/b95o.bmp"
-R95O                    BITMAP  MOVEABLE PURE   "bitmaps/r95o.bmp"
-Q95O                    BITMAP  MOVEABLE PURE   "bitmaps/q95o.bmp"
-K95O                    BITMAP  MOVEABLE PURE   "bitmaps/k95o.bmp"
-P95S                    BITMAP  MOVEABLE PURE   "bitmaps/p95s.bmp"
-N95S                    BITMAP  MOVEABLE PURE   "bitmaps/n95s.bmp"
-B95S                    BITMAP  MOVEABLE PURE   "bitmaps/b95s.bmp"
-R95S                    BITMAP  MOVEABLE PURE   "bitmaps/r95s.bmp"
-Q95S                    BITMAP  MOVEABLE PURE   "bitmaps/q95s.bmp"
-K95S                    BITMAP  MOVEABLE PURE   "bitmaps/k95s.bmp"
-P95W                    BITMAP  MOVEABLE PURE   "bitmaps/p95w.bmp"
-N95W                    BITMAP  MOVEABLE PURE   "bitmaps/n95w.bmp"
-B95W                    BITMAP  MOVEABLE PURE   "bitmaps/b95w.bmp"
-R95W                    BITMAP  MOVEABLE PURE   "bitmaps/r95w.bmp"
-Q95W                    BITMAP  MOVEABLE PURE   "bitmaps/q95w.bmp"
-K95W                    BITMAP  MOVEABLE PURE   "bitmaps/k95w.bmp"
-P108O                   BITMAP  MOVEABLE PURE   "bitmaps/p108o.bmp"
-N108O                   BITMAP  MOVEABLE PURE   "bitmaps/n108o.bmp"
-B108O                   BITMAP  MOVEABLE PURE   "bitmaps/b108o.bmp"
-R108O                   BITMAP  MOVEABLE PURE   "bitmaps/r108o.bmp"
-Q108O                   BITMAP  MOVEABLE PURE   "bitmaps/q108o.bmp"
-K108O                   BITMAP  MOVEABLE PURE   "bitmaps/k108o.bmp"
-P108S                   BITMAP  MOVEABLE PURE   "bitmaps/p108s.bmp"
-N108S                   BITMAP  MOVEABLE PURE   "bitmaps/n108s.bmp"
-B108S                   BITMAP  MOVEABLE PURE   "bitmaps/b108s.bmp"
-R108S                   BITMAP  MOVEABLE PURE   "bitmaps/r108s.bmp"
-Q108S                   BITMAP  MOVEABLE PURE   "bitmaps/q108s.bmp"
-K108S                   BITMAP  MOVEABLE PURE   "bitmaps/k108s.bmp"
-P108W                   BITMAP  MOVEABLE PURE   "bitmaps/p108w.bmp"
-N108W                   BITMAP  MOVEABLE PURE   "bitmaps/n108w.bmp"
-B108W                   BITMAP  MOVEABLE PURE   "bitmaps/b108w.bmp"
-R108W                   BITMAP  MOVEABLE PURE   "bitmaps/r108w.bmp"
-Q108W                   BITMAP  MOVEABLE PURE   "bitmaps/q108w.bmp"
-K108W                   BITMAP  MOVEABLE PURE   "bitmaps/k108w.bmp"
-P116O                   BITMAP  MOVEABLE PURE   "bitmaps/p116o.bmp"
-N116O                   BITMAP  MOVEABLE PURE   "bitmaps/n116o.bmp"
-B116O                   BITMAP  MOVEABLE PURE   "bitmaps/b116o.bmp"
-R116O                   BITMAP  MOVEABLE PURE   "bitmaps/r116o.bmp"
-Q116O                   BITMAP  MOVEABLE PURE   "bitmaps/q116o.bmp"
-K116O                   BITMAP  MOVEABLE PURE   "bitmaps/k116o.bmp"
-P116S                   BITMAP  MOVEABLE PURE   "bitmaps/p116s.bmp"
-N116S                   BITMAP  MOVEABLE PURE   "bitmaps/n116s.bmp"
-B116S                   BITMAP  MOVEABLE PURE   "bitmaps/b116s.bmp"
-R116S                   BITMAP  MOVEABLE PURE   "bitmaps/r116s.bmp"
-Q116S                   BITMAP  MOVEABLE PURE   "bitmaps/q116s.bmp"
-K116S                   BITMAP  MOVEABLE PURE   "bitmaps/k116s.bmp"
-P116W                   BITMAP  MOVEABLE PURE   "bitmaps/p116w.bmp"
-N116W                   BITMAP  MOVEABLE PURE   "bitmaps/n116w.bmp"
-B116W                   BITMAP  MOVEABLE PURE   "bitmaps/b116w.bmp"
-R116W                   BITMAP  MOVEABLE PURE   "bitmaps/r116w.bmp"
-Q116W                   BITMAP  MOVEABLE PURE   "bitmaps/q116w.bmp"
-K116W                   BITMAP  MOVEABLE PURE   "bitmaps/k116w.bmp"
-P129O                   BITMAP  MOVEABLE PURE   "bitmaps/p129o.bmp"
-N129O                   BITMAP  MOVEABLE PURE   "bitmaps/n129o.bmp"
-B129O                   BITMAP  MOVEABLE PURE   "bitmaps/b129o.bmp"
-R129O                   BITMAP  MOVEABLE PURE   "bitmaps/r129o.bmp"
-Q129O                   BITMAP  MOVEABLE PURE   "bitmaps/q129o.bmp"
-K129O                   BITMAP  MOVEABLE PURE   "bitmaps/k129o.bmp"
-P129S                   BITMAP  MOVEABLE PURE   "bitmaps/p129s.bmp"
-N129S                   BITMAP  MOVEABLE PURE   "bitmaps/n129s.bmp"
-B129S                   BITMAP  MOVEABLE PURE   "bitmaps/b129s.bmp"
-R129S                   BITMAP  MOVEABLE PURE   "bitmaps/r129s.bmp"
-Q129S                   BITMAP  MOVEABLE PURE   "bitmaps/q129s.bmp"
-K129S                   BITMAP  MOVEABLE PURE   "bitmaps/k129s.bmp"
-P129W                   BITMAP  MOVEABLE PURE   "bitmaps/p129w.bmp"
-N129W                   BITMAP  MOVEABLE PURE   "bitmaps/n129w.bmp"
-B129W                   BITMAP  MOVEABLE PURE   "bitmaps/b129w.bmp"
-R129W                   BITMAP  MOVEABLE PURE   "bitmaps/r129w.bmp"
-Q129W                   BITMAP  MOVEABLE PURE   "bitmaps/q129w.bmp"
-K129W                   BITMAP  MOVEABLE PURE   "bitmaps/k129w.bmp"
-GALACTIC                BITMAP  MOVEABLE PURE   "bitmaps/galactic.bmp"
-TIM                     BITMAP  MOVEABLE PURE   "bitmaps/tim.bmp"
-// [HGM] Some fairy symbols:
-E72O                    BITMAP  MOVEABLE PURE   "bitmaps/e72o.bmp"
-A72O                    BITMAP  MOVEABLE PURE   "bitmaps/a72o.bmp"
-AA72O                   BITMAP  MOVEABLE PURE   "bitmaps/as72o.bmp"
-C72O                    BITMAP  MOVEABLE PURE   "bitmaps/c72o.bmp"
-CV72O                   BITMAP  MOVEABLE PURE   "bitmaps/cv72o.bmp"
-F72O                    BITMAP  MOVEABLE PURE   "bitmaps/f72o.bmp"
-M72O                    BITMAP  MOVEABLE PURE   "bitmaps/m72o.bmp"
-W72O                    BITMAP  MOVEABLE PURE   "bitmaps/w72o.bmp"
-O72O                    BITMAP  MOVEABLE PURE   "bitmaps/o72o.bmp"
-U72O                    BITMAP  MOVEABLE PURE   "bitmaps/u72o.bmp"
-H72O                    BITMAP  MOVEABLE PURE   "bitmaps/h72o.bmp"
-G72O                    BITMAP  MOVEABLE PURE   "bitmaps/g72o.bmp"
-V72O                    BITMAP  MOVEABLE PURE   "bitmaps/v72o.bmp"
-S72O                    BITMAP  MOVEABLE PURE   "bitmaps/s72o.bmp"
-L72O                    BITMAP  MOVEABLE PURE   "bitmaps/l72o.bmp"
-DK72O                   BITMAP  MOVEABLE PURE   "bitmaps/dk72o.bmp"
-WP72O                   BITMAP  MOVEABLE PURE   "bitmaps/wp72o.bmp"
-WN72O                   BITMAP  MOVEABLE PURE   "bitmaps/wn72o.bmp"
-WL72O                   BITMAP  MOVEABLE PURE   "bitmaps/wl72o.bmp"
-WS72O                   BITMAP  MOVEABLE PURE   "bitmaps/ws72o.bmp"
-E72S                    BITMAP  MOVEABLE PURE   "bitmaps/e72s.bmp"
-A72S                    BITMAP  MOVEABLE PURE   "bitmaps/a72s.bmp"
-AA72S                   BITMAP  MOVEABLE PURE   "bitmaps/as72s.bmp"
-C72S                    BITMAP  MOVEABLE PURE   "bitmaps/c72s.bmp"
-CV72S                   BITMAP  MOVEABLE PURE   "bitmaps/cv72s.bmp"
-F72S                    BITMAP  MOVEABLE PURE   "bitmaps/f72s.bmp"
-M72S                    BITMAP  MOVEABLE PURE   "bitmaps/m72s.bmp"
-W72S                    BITMAP  MOVEABLE PURE   "bitmaps/w72s.bmp"
-O72S                    BITMAP  MOVEABLE PURE   "bitmaps/o72s.bmp"
-U72S                    BITMAP  MOVEABLE PURE   "bitmaps/u72s.bmp"
-H72S                    BITMAP  MOVEABLE PURE   "bitmaps/h72s.bmp"
-G72S                    BITMAP  MOVEABLE PURE   "bitmaps/g72s.bmp"
-V72S                    BITMAP  MOVEABLE PURE   "bitmaps/v72s.bmp"
-S72S                    BITMAP  MOVEABLE PURE   "bitmaps/s72s.bmp"
-L72S                    BITMAP  MOVEABLE PURE   "bitmaps/l72s.bmp"
-DK72S                   BITMAP  MOVEABLE PURE   "bitmaps/dk72s.bmp"
-WP72S                   BITMAP  MOVEABLE PURE   "bitmaps/wp72s.bmp"
-WN72S                   BITMAP  MOVEABLE PURE   "bitmaps/wn72s.bmp"
-WL72S                   BITMAP  MOVEABLE PURE   "bitmaps/wl72s.bmp"
-WS72S                   BITMAP  MOVEABLE PURE   "bitmaps/ws72s.bmp"
-E72W                    BITMAP  MOVEABLE PURE   "bitmaps/e72w.bmp"
-A72W                    BITMAP  MOVEABLE PURE   "bitmaps/a72w.bmp"
-AA72W                   BITMAP  MOVEABLE PURE   "bitmaps/as72w.bmp"
-C72W                    BITMAP  MOVEABLE PURE   "bitmaps/c72w.bmp"
-CV72W                   BITMAP  MOVEABLE PURE   "bitmaps/cv72w.bmp"
-F72W                    BITMAP  MOVEABLE PURE   "bitmaps/f72w.bmp"
-M72W                    BITMAP  MOVEABLE PURE   "bitmaps/m72w.bmp"
-W72W                    BITMAP  MOVEABLE PURE   "bitmaps/w72w.bmp"
-O72W                    BITMAP  MOVEABLE PURE   "bitmaps/o72w.bmp"
-U72W                    BITMAP  MOVEABLE PURE   "bitmaps/u72w.bmp"
-H72W                    BITMAP  MOVEABLE PURE   "bitmaps/h72w.bmp"
-G72W                    BITMAP  MOVEABLE PURE   "bitmaps/g72w.bmp"
-V72W                    BITMAP  MOVEABLE PURE   "bitmaps/v72w.bmp"
-S72W                    BITMAP  MOVEABLE PURE   "bitmaps/s72w.bmp"
-L72W                    BITMAP  MOVEABLE PURE   "bitmaps/l72w.bmp"
-DK72W                   BITMAP  MOVEABLE PURE   "bitmaps/dk72w.bmp"
-E49O                    BITMAP  MOVEABLE PURE   "bitmaps/e49o.bmp"
-A49O                    BITMAP  MOVEABLE PURE   "bitmaps/a49o.bmp"
-AA49O                   BITMAP  MOVEABLE PURE   "bitmaps/as49o.bmp"
-C49O                    BITMAP  MOVEABLE PURE   "bitmaps/c49o.bmp"
-CV49O                   BITMAP  MOVEABLE PURE   "bitmaps/cv49o.bmp"
-F49O                    BITMAP  MOVEABLE PURE   "bitmaps/f49o.bmp"
-M49O                    BITMAP  MOVEABLE PURE   "bitmaps/m49o.bmp"
-W49O                    BITMAP  MOVEABLE PURE   "bitmaps/w49o.bmp"
-O49O                    BITMAP  MOVEABLE PURE   "bitmaps/o49o.bmp"
-U49O                    BITMAP  MOVEABLE PURE   "bitmaps/u49o.bmp"
-H49O                    BITMAP  MOVEABLE PURE   "bitmaps/h49o.bmp"
-G49O                    BITMAP  MOVEABLE PURE   "bitmaps/g49o.bmp"
-V49O                    BITMAP  MOVEABLE PURE   "bitmaps/v49o.bmp"
-S49O                    BITMAP  MOVEABLE PURE   "bitmaps/s49o.bmp"
-L49O                    BITMAP  MOVEABLE PURE   "bitmaps/l49o.bmp"
-DK49O                   BITMAP  MOVEABLE PURE   "bitmaps/dk49o.bmp"
-WP49O                   BITMAP  MOVEABLE PURE   "bitmaps/wp49o.bmp"
-WN49O                   BITMAP  MOVEABLE PURE   "bitmaps/wn49o.bmp"
-WL49O                   BITMAP  MOVEABLE PURE   "bitmaps/wl49o.bmp"
-WS49O                   BITMAP  MOVEABLE PURE   "bitmaps/ws49o.bmp"
-E49S                    BITMAP  MOVEABLE PURE   "bitmaps/e49s.bmp"
-A49S                    BITMAP  MOVEABLE PURE   "bitmaps/a49s.bmp"
-AA49S                   BITMAP  MOVEABLE PURE   "bitmaps/as49s.bmp"
-C49S                    BITMAP  MOVEABLE PURE   "bitmaps/c49s.bmp"
-CV49S                   BITMAP  MOVEABLE PURE   "bitmaps/cv49s.bmp"
-F49S                    BITMAP  MOVEABLE PURE   "bitmaps/f49s.bmp"
-M49S                    BITMAP  MOVEABLE PURE   "bitmaps/m49s.bmp"
-W49S                    BITMAP  MOVEABLE PURE   "bitmaps/w49s.bmp"
-O49S                    BITMAP  MOVEABLE PURE   "bitmaps/o49s.bmp"
-U49S                    BITMAP  MOVEABLE PURE   "bitmaps/u49s.bmp"
-H49S                    BITMAP  MOVEABLE PURE   "bitmaps/h49s.bmp"
-G49S                    BITMAP  MOVEABLE PURE   "bitmaps/g49s.bmp"
-V49S                    BITMAP  MOVEABLE PURE   "bitmaps/v49s.bmp"
-S49S                    BITMAP  MOVEABLE PURE   "bitmaps/s49s.bmp"
-L49S                    BITMAP  MOVEABLE PURE   "bitmaps/l49s.bmp"
-DK49S                   BITMAP  MOVEABLE PURE   "bitmaps/dk49s.bmp"
-WP49S                   BITMAP  MOVEABLE PURE   "bitmaps/wp49s.bmp"
-WN49S                   BITMAP  MOVEABLE PURE   "bitmaps/wn49s.bmp"
-WL49S                   BITMAP  MOVEABLE PURE   "bitmaps/wl49s.bmp"
-WS49S                   BITMAP  MOVEABLE PURE   "bitmaps/ws49s.bmp"
-E49W                    BITMAP  MOVEABLE PURE   "bitmaps/e49w.bmp"
-A49W                    BITMAP  MOVEABLE PURE   "bitmaps/a49w.bmp"
-AA49W                   BITMAP  MOVEABLE PURE   "bitmaps/as49w.bmp"
-C49W                    BITMAP  MOVEABLE PURE   "bitmaps/c49w.bmp"
-CV49W                   BITMAP  MOVEABLE PURE   "bitmaps/cv49w.bmp"
-F49W                    BITMAP  MOVEABLE PURE   "bitmaps/f49w.bmp"
-M49W                    BITMAP  MOVEABLE PURE   "bitmaps/m49w.bmp"
-W49W                    BITMAP  MOVEABLE PURE   "bitmaps/w49w.bmp"
-O49W                    BITMAP  MOVEABLE PURE   "bitmaps/o49w.bmp"
-U49W                    BITMAP  MOVEABLE PURE   "bitmaps/u49w.bmp"
-H49W                    BITMAP  MOVEABLE PURE   "bitmaps/h49w.bmp"
-G49W                    BITMAP  MOVEABLE PURE   "bitmaps/g49w.bmp"
-V49W                    BITMAP  MOVEABLE PURE   "bitmaps/v49w.bmp"
-S49W                    BITMAP  MOVEABLE PURE   "bitmaps/s49w.bmp"
-L49W                    BITMAP  MOVEABLE PURE   "bitmaps/l49w.bmp"
-DK49W                   BITMAP  MOVEABLE PURE   "bitmaps/dk49w.bmp"
-A33O                    BITMAP  MOVEABLE PURE   "bitmaps/a33o.bmp"
-AA33O                   BITMAP  MOVEABLE PURE   "bitmaps/as33o.bmp"
-C33O                    BITMAP  MOVEABLE PURE   "bitmaps/c33o.bmp"
-CV33O                   BITMAP  MOVEABLE PURE   "bitmaps/cv33o.bmp"
-V33O                    BITMAP  MOVEABLE PURE   "bitmaps/v33o.bmp"
-E33O                    BITMAP  MOVEABLE PURE   "bitmaps/e33o.bmp"
-F33O                    BITMAP  MOVEABLE PURE   "bitmaps/f33o.bmp"
-H33O                    BITMAP  MOVEABLE PURE   "bitmaps/h33o.bmp"
-G33O                    BITMAP  MOVEABLE PURE   "bitmaps/g33o.bmp"
-L33O                    BITMAP  MOVEABLE PURE   "bitmaps/l33o.bmp"
-W33O                    BITMAP  MOVEABLE PURE   "bitmaps/w33o.bmp"
-M33O                    BITMAP  MOVEABLE PURE   "bitmaps/m33o.bmp"
-O33O                    BITMAP  MOVEABLE PURE   "bitmaps/o33o.bmp"
-DK33O                   BITMAP  MOVEABLE PURE   "bitmaps/dk33o.bmp"
-A33W                    BITMAP  MOVEABLE PURE   "bitmaps/a33w.bmp"
-AA33W                   BITMAP  MOVEABLE PURE   "bitmaps/as33w.bmp"
-C33W                    BITMAP  MOVEABLE PURE   "bitmaps/c33w.bmp"
-CV33W                   BITMAP  MOVEABLE PURE   "bitmaps/cv33w.bmp"
-V33W                    BITMAP  MOVEABLE PURE   "bitmaps/v33w.bmp"
-E33W                    BITMAP  MOVEABLE PURE   "bitmaps/e33w.bmp"
-F33W                    BITMAP  MOVEABLE PURE   "bitmaps/f33w.bmp"
-H33W                    BITMAP  MOVEABLE PURE   "bitmaps/h33w.bmp"
-G33W                    BITMAP  MOVEABLE PURE   "bitmaps/g33w.bmp"
-L33W                    BITMAP  MOVEABLE PURE   "bitmaps/l33w.bmp"
-W33W                    BITMAP  MOVEABLE PURE   "bitmaps/w33w.bmp"
-M33W                    BITMAP  MOVEABLE PURE   "bitmaps/m33w.bmp"
-O33W                    BITMAP  MOVEABLE PURE   "bitmaps/o33w.bmp"
-DK33W                   BITMAP  MOVEABLE PURE   "bitmaps/dk33w.bmp"
-A33S                    BITMAP  MOVEABLE PURE   "bitmaps/a33s.bmp"
-AA33S                   BITMAP  MOVEABLE PURE   "bitmaps/as33s.bmp"
-C33S                    BITMAP  MOVEABLE PURE   "bitmaps/c33s.bmp"
-CV33S                   BITMAP  MOVEABLE PURE   "bitmaps/cv33s.bmp"
-V33S                    BITMAP  MOVEABLE PURE   "bitmaps/v33s.bmp"
-E33S                    BITMAP  MOVEABLE PURE   "bitmaps/e33s.bmp"
-F33S                    BITMAP  MOVEABLE PURE   "bitmaps/f33s.bmp"
-H33S                    BITMAP  MOVEABLE PURE   "bitmaps/h33s.bmp"
-G33S                    BITMAP  MOVEABLE PURE   "bitmaps/g33s.bmp"
-L33S                    BITMAP  MOVEABLE PURE   "bitmaps/l33s.bmp"
-W33S                    BITMAP  MOVEABLE PURE   "bitmaps/w33s.bmp"
-M33S                    BITMAP  MOVEABLE PURE   "bitmaps/m33s.bmp"
-O33S                    BITMAP  MOVEABLE PURE   "bitmaps/o33s.bmp"
-DK33S                   BITMAP  MOVEABLE PURE   "bitmaps/dk33s.bmp"
-
-A37O                    BITMAP  MOVEABLE PURE   "bitmaps/a37o.bmp"
-L37O                    BITMAP  MOVEABLE PURE   "bitmaps/l37o.bmp"
-C37O                    BITMAP  MOVEABLE PURE   "bitmaps/c37o.bmp"
-CV37O                   BITMAP  MOVEABLE PURE   "bitmaps/cv37o.bmp"
-A40O                    BITMAP  MOVEABLE PURE   "bitmaps/a40o.bmp"
-L40O                    BITMAP  MOVEABLE PURE   "bitmaps/l40o.bmp"
-C40O                    BITMAP  MOVEABLE PURE   "bitmaps/c40o.bmp"
-CV40O                   BITMAP  MOVEABLE PURE   "bitmaps/cv40o.bmp"
-A45O                    BITMAP  MOVEABLE PURE   "bitmaps/a45o.bmp"
-L45O                    BITMAP  MOVEABLE PURE   "bitmaps/l45o.bmp"
-C45O                    BITMAP  MOVEABLE PURE   "bitmaps/c45o.bmp"
-CV45O                   BITMAP  MOVEABLE PURE   "bitmaps/cv45o.bmp"
-A54O                    BITMAP  MOVEABLE PURE   "bitmaps/a54o.bmp"
-L54O                    BITMAP  MOVEABLE PURE   "bitmaps/l54o.bmp"
-C54O                    BITMAP  MOVEABLE PURE   "bitmaps/c54o.bmp"
-CV54O                   BITMAP  MOVEABLE PURE   "bitmaps/cv54o.bmp"
-V54O                    BITMAP  MOVEABLE PURE   "bitmaps/v54o.bmp"
-A58O                    BITMAP  MOVEABLE PURE   "bitmaps/a58o.bmp"
-L58O                    BITMAP  MOVEABLE PURE   "bitmaps/l58o.bmp"
-C58O                    BITMAP  MOVEABLE PURE   "bitmaps/c58o.bmp"
-CV58O                   BITMAP  MOVEABLE PURE   "bitmaps/cv58o.bmp"
-A64O                    BITMAP  MOVEABLE PURE   "bitmaps/a64o.bmp"
-L64O                    BITMAP  MOVEABLE PURE   "bitmaps/l64o.bmp"
-C64O                    BITMAP  MOVEABLE PURE   "bitmaps/c64o.bmp"
-CV64O                   BITMAP  MOVEABLE PURE   "bitmaps/cv64o.bmp"
-A37W                    BITMAP  MOVEABLE PURE   "bitmaps/a37w.bmp"
-L37W                    BITMAP  MOVEABLE PURE   "bitmaps/l37w.bmp"
-C37W                    BITMAP  MOVEABLE PURE   "bitmaps/c37w.bmp"
-CV37W                   BITMAP  MOVEABLE PURE   "bitmaps/cv37w.bmp"
-A40W                    BITMAP  MOVEABLE PURE   "bitmaps/a40w.bmp"
-L40W                    BITMAP  MOVEABLE PURE   "bitmaps/l40w.bmp"
-C40W                    BITMAP  MOVEABLE PURE   "bitmaps/c40w.bmp"
-CV40W                   BITMAP  MOVEABLE PURE   "bitmaps/cv40w.bmp"
-A45W                    BITMAP  MOVEABLE PURE   "bitmaps/a45w.bmp"
-L45W                    BITMAP  MOVEABLE PURE   "bitmaps/l45w.bmp"
-C45W                    BITMAP  MOVEABLE PURE   "bitmaps/c45w.bmp"
-CV45W                   BITMAP  MOVEABLE PURE   "bitmaps/cv45w.bmp"
-A54W                    BITMAP  MOVEABLE PURE   "bitmaps/a54w.bmp"
-L54W                    BITMAP  MOVEABLE PURE   "bitmaps/l54w.bmp"
-C54W                    BITMAP  MOVEABLE PURE   "bitmaps/c54w.bmp"
-CV54W                   BITMAP  MOVEABLE PURE   "bitmaps/cv54w.bmp"
-V54W                    BITMAP  MOVEABLE PURE   "bitmaps/v54w.bmp"
-A58W                    BITMAP  MOVEABLE PURE   "bitmaps/a58w.bmp"
-L58W                    BITMAP  MOVEABLE PURE   "bitmaps/l58w.bmp"
-C58W                    BITMAP  MOVEABLE PURE   "bitmaps/c58w.bmp"
-CV58W                   BITMAP  MOVEABLE PURE   "bitmaps/cv58w.bmp"
-A64W                    BITMAP  MOVEABLE PURE   "bitmaps/a64w.bmp"
-L64W                    BITMAP  MOVEABLE PURE   "bitmaps/l64w.bmp"
-C64W                    BITMAP  MOVEABLE PURE   "bitmaps/c64w.bmp"
-CV64W                   BITMAP  MOVEABLE PURE   "bitmaps/cv64w.bmp"
-A37S                    BITMAP  MOVEABLE PURE   "bitmaps/a37s.bmp"
-L37S                    BITMAP  MOVEABLE PURE   "bitmaps/l37s.bmp"
-C37S                    BITMAP  MOVEABLE PURE   "bitmaps/c37s.bmp"
-CV37S                   BITMAP  MOVEABLE PURE   "bitmaps/cv37s.bmp"
-A40S                    BITMAP  MOVEABLE PURE   "bitmaps/a40s.bmp"
-L40S                    BITMAP  MOVEABLE PURE   "bitmaps/l40s.bmp"
-C40S                    BITMAP  MOVEABLE PURE   "bitmaps/c40s.bmp"
-CV40S                   BITMAP  MOVEABLE PURE   "bitmaps/cv40s.bmp"
-A45S                    BITMAP  MOVEABLE PURE   "bitmaps/a45s.bmp"
-L45S                    BITMAP  MOVEABLE PURE   "bitmaps/l45s.bmp"
-C45S                    BITMAP  MOVEABLE PURE   "bitmaps/c45s.bmp"
-CV45S                   BITMAP  MOVEABLE PURE   "bitmaps/cv45s.bmp"
-A54S                    BITMAP  MOVEABLE PURE   "bitmaps/a54s.bmp"
-L54S                    BITMAP  MOVEABLE PURE   "bitmaps/l54s.bmp"
-C54S                    BITMAP  MOVEABLE PURE   "bitmaps/c54s.bmp"
-CV54S                   BITMAP  MOVEABLE PURE   "bitmaps/cv54s.bmp"
-V54S                    BITMAP  MOVEABLE PURE   "bitmaps/v54s.bmp"
-A58S                    BITMAP  MOVEABLE PURE   "bitmaps/a58s.bmp"
-L58S                    BITMAP  MOVEABLE PURE   "bitmaps/l58s.bmp"
-C58S                    BITMAP  MOVEABLE PURE   "bitmaps/c58s.bmp"
-CV58S                   BITMAP  MOVEABLE PURE   "bitmaps/cv58s.bmp"
-A64S                    BITMAP  MOVEABLE PURE   "bitmaps/a64s.bmp"
-L64S                    BITMAP  MOVEABLE PURE   "bitmaps/l64s.bmp"
-C64S                    BITMAP  MOVEABLE PURE   "bitmaps/c64s.bmp"
-CV64S                   BITMAP  MOVEABLE PURE   "bitmaps/cv64s.bmp"
-
-SP58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sp58o.bmp"
-SN58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sn58o.bmp"
-SB58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sb58o.bmp"
-SR58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sr58o.bmp"
-SL58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sl58o.bmp"
-SK58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sk58o.bmp"
-SF58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sf58o.bmp"
-SW58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sw58o.bmp"
-SU58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/su58o.bmp"
-SH58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sh58o.bmp"
-SA58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sa58o.bmp"
-SC58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sc58o.bmp"
-SG58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sg58o.bmp"
-SS58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/ss58o.bmp"
-SP58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sp58w.bmp"
-SN58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sn58w.bmp"
-SR58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sr58w.bmp"
-SL58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sl58w.bmp"
-SK58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sk58w.bmp"
-SW58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sw58w.bmp"
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
-    "#include ""windows.h""\r\n"
-    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
-    "#include ""dlgs.h""\r\n"
-    "\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// WAVE
-//
-
-DING                    WAVE    DISCARDABLE     "sounds/ding1.wav"
-CHING                   WAVE    DISCARDABLE     "sounds/ching.wav"
-CLICK                   WAVE    DISCARDABLE     "sounds/click.wav"
-CYMBAL                  WAVE    DISCARDABLE     "sounds/cymbal.wav"
-DRIP                    WAVE    DISCARDABLE     "sounds/drip.wav"
-GONG                    WAVE    DISCARDABLE     "sounds/gong.wav"
-BEEPBEEP                WAVE    DISCARDABLE     "sounds/honkhonk.wav"
-LASER                   WAVE    DISCARDABLE     "sounds/laser.wav"
-PENALTY                 WAVE    DISCARDABLE     "sounds/penalty.wav"
-PHONE                   WAVE    DISCARDABLE     "sounds/phone.wav"
-POP                     WAVE    DISCARDABLE     "sounds/pop.wav"
-POP2                    WAVE    DISCARDABLE     "sounds/pop2.wav"
-SLAP                    WAVE    DISCARDABLE     "sounds/slap.wav"
-SQUEAK                  WAVE    DISCARDABLE     "sounds/squeak.wav"
-SWISH                   WAVE    DISCARDABLE     "sounds/swish.wav"
-THUD                    WAVE    DISCARDABLE     "sounds/thud.wav"
-WHIPCRACK               WAVE    DISCARDABLE     "sounds/whipcrak.wav"
-MOVE                    WAVE    DISCARDABLE     "sounds/move.wav"
-ALARM                   WAVE    DISCARDABLE     "sounds/alarm.wav"
-CHALLENGE               WAVE    DISCARDABLE     "sounds/challenge.wav"
-CHANNEL                 WAVE    DISCARDABLE     "sounds/channel.wav"
-CHANNEL1                WAVE    DISCARDABLE     "sounds/channel1.wav"
-DRAW                    WAVE    DISCARDABLE     "sounds/draw.wav"
-KIBITZ                  WAVE    DISCARDABLE     "sounds/kibitz.wav"
-LOSE                    WAVE    DISCARDABLE     "sounds/lose.wav"
-REQUEST                 WAVE    DISCARDABLE     "sounds/request.wav"
-SEEK                    WAVE    DISCARDABLE     "sounds/seek.wav"
-SHOUT                   WAVE    DISCARDABLE     "sounds/shout.wav"
-SSHOUT                  WAVE    DISCARDABLE     "sounds/sshout.wav"
-TELL                    WAVE    DISCARDABLE     "sounds/tell.wav"
-UNFINISHED              WAVE    DISCARDABLE     "sounds/unfinished.wav"
-WIN                     WAVE    DISCARDABLE     "sounds/win.wav"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-1 VERSIONINFO
-FILEVERSION 4,4,0,0
-PRODUCTVERSION 4,4,0,0
-FILETYPE VFT_APP
-{
-  BLOCK "StringFileInfo"
-	 {
-		 BLOCK "040904b0"
-		 {
-#ifdef JAWS
-			 VALUE "Comments", "Includes support for JAWS screen reader"
-#endif
-			 VALUE "CompanyName", "GNU Project"
-			 VALUE "FileVersion", PACKAGE_VERSION
-			 VALUE "FileDescription", "Winboard 32-bit GUI for chess"
-			 VALUE "InternalName", "Winboard"
-			 VALUE "LegalCopyright", "GPLv3 Copyright © 2009"
-			 VALUE "OriginalFilename", "winboard.exe"
-			 VALUE "ProductName", "Winboard"
-			 VALUE "ProductVersion", PACKAGE_VERSION
-#ifdef JAWS
-			 VALUE "SpecialBuild", "JAWS (Job Access With Speech) accessiblity build\0"
-#endif
-		 }
-	 }
-  BLOCK "VarFileInfo"
-	 {
-		 VALUE "Translation", 0x0409, 1252
-	 }
-}
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
diff --git a/winboard/winboard.rtf b/winboard/winboard.rtf
deleted file mode 100644
index f5bbdc8..0000000
--- a/winboard/winboard.rtf
+++ /dev/null
@@ -1,2176 +0,0 @@
-{\rtf1\ansi\ansicpg1252\uc1 \deff5\deflang1033\deflangfe1043{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
-{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times;}
-{\f5\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica{\*\falt Arial};}{\f6\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier{\*\falt Courier New};}{\f7\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Geneva;}
-{\f8\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Tms Rmn;}{\f9\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helv;}{\f10\froman\fcharset0\fprq2{\*\panose 00000000000000000000}MS Serif;}
-{\f11\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MS Sans Serif;}{\f12\froman\fcharset0\fprq2{\*\panose 00000000000000000000}New York{\*\falt Times New Roman};}{\f13\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;}
-{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f16\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ??};}
-{\f17\froman\fcharset0\fprq0{\*\panose 00000000000000000000}??;}{\f18\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}BookAntiqua-Bold;}{\f19\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}BookAntiqua;}
-{\f20\froman\fcharset0\fprq0{\*\panose 00000000000000000000}Minion-Regular;}{\f21\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Calibri;}{\f22\froman\fcharset0\fprq0{\*\panose 00000000000000000000}TimesNewRoman;}
-{\f23\froman\fcharset0\fprq0{\*\panose 00000000000000000000}TimesNewRoman,Italic;}{\f24\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria Math;}{\f25\fnil\fcharset129\fprq1{\*\panose 00000000000000000000}Terminal;}
-{\f26\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Fixedsys;}{\f27\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Small Fonts;}{\f28\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Czec;}
-{\f29\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Engl;}{\f30\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Fren;}{\f31\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Germ;}
-{\f32\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Ital;}{\f33\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Span;}{\f34\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Swed;}
-{\f35\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;}{\f36\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;}
-{\f38\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f39\fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;}{\f40\fscript\fcharset0\fprq2{\*\panose 030f0702030302020204}Comic Sans MS;}
-{\f41\fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;}{\f42\froman\fcharset0\fprq2{\*\panose 02040502050405020303}Georgia;}{\f43\fswiss\fcharset0\fprq2{\*\panose 020b0603020102020204}Franklin Gothic Medium;}
-{\f44\froman\fcharset0\fprq2{\*\panose 02040502050505030304}Palatino Linotype;}{\f45\fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS;}{\f46\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}
-{\f47\fscript\fcharset0\fprq2 Estrangelo Edessa;}{\f48\fnil\fcharset0\fprq2 Gautami;}{\f49\fnil\fcharset0\fprq2 Latha;}{\f50\fnil\fcharset0\fprq2 Mangal;}{\f51\fnil\fcharset0\fprq2 MV Boli;}{\f52\fnil\fcharset0\fprq2 Raavi;}
-{\f53\fnil\fcharset0\fprq2 Shruti;}{\f54\fnil\fcharset0\fprq2 Tunga;}{\f55\froman\fcharset0\fprq2{\*\panose 010a0502050306030303}Sylfaen;}{\f56\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Microsoft Sans Serif;}
-{\f57\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f58\froman\fcharset0\fprq2{\*\panose 02060603020205020403}Rockwell;}{\f59\froman\fcharset0\fprq2{\*\panose 02060903040505020403}Rockwell Extra Bold;}
-{\f60\fscript\fcharset0\fprq2{\*\panose 03090702030407020403}Mistral;}{\f61\fdecor\fcharset0\fprq2{\*\panose 04020505051007020d02}Blackadder ITC;}{\f62\fscript\fcharset0\fprq2{\*\panose 03070402050302030203}Bradley Hand ITC;}
-{\f63\fswiss\fcharset0\fprq2{\*\panose 020e0705020206020404}Copperplate Gothic Bold;}{\f64\fswiss\fcharset0\fprq2{\*\panose 020e0507020206020404}Copperplate Gothic Light;}{\f65\fdecor\fcharset0\fprq2{\*\panose 04040404050702020202}Curlz MT;}
-{\f66\fscript\fcharset0\fprq2{\*\panose 030303020407070d0804}Edwardian Script ITC;}{\f67\froman\fcharset0\fprq2{\*\panose 02090707080505020304}Engravers MT;}{\f68\fswiss\fcharset0\fprq2{\*\panose 020b0805030504020804}Eras Demi ITC;}
-{\f69\fswiss\fcharset0\fprq2{\*\panose 020b0402030504020804}Eras Light ITC;}{\f70\fswiss\fcharset0\fprq2{\*\panose 020b0504020202050204}Eurostile;}{\f71\fdecor\fcharset0\fprq2{\*\panose 04060505060202020a04}Felix Titling;}
-{\f72\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;}{\f73\fswiss\fcharset0\fprq2{\*\panose 020b0703020102020204}Franklin Gothic Demi;}{\f74\fswiss\fcharset0\fprq2{\*\panose 020b0606030402020204}Franklin Gothic Medium Cond;}
-{\f75\fswiss\fcharset0\fprq2{\*\panose 020b0903020102020204}Franklin Gothic Heavy;}{\f76\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f77\fscript\fcharset0\fprq2{\*\panose 03020402040607040605}French Script MT;}
-{\f78\fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f79\fscript\fcharset0\fprq2{\*\panose 03050502040202030202}Kristen ITC;}{\f80\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans;}
-{\f81\fswiss\fcharset0\fprq2{\*\panose 020e0502030308020204}Maiandra GD;}{\f82\fdecor\fcharset0\fprq2{\*\panose 04040403030d02020704}Matisse ITC;}{\f83\fscript\fcharset0\fprq2{\*\panose 03070502060502030205}Papyrus;}
-{\f84\froman\fcharset0\fprq2{\*\panose 02020502060401020303}Perpetua;}{\f85\fdecor\fcharset0\fprq2{\*\panose 04020404030d07020202}Tempus Sans ITC;}{\f86\fscript\fcharset0\fprq2{\*\panose 03020602050506090804}Vivaldi;}
-{\f87\froman\fcharset2\fprq2{\*\panose 05020102010507070707}Wingdings 2;}{\f88\froman\fcharset2\fprq2{\*\panose 05040102010807070707}Wingdings 3;}{\f89\fdecor\fcharset0\fprq2{\*\panose 04090605060d06020702}Jokerman;}
-{\f90\fdecor\fcharset0\fprq2{\*\panose 04040403040a02020202}Juice ITC;}{\f91\fmodern\fcharset0\fprq2{\*\panose 02010509020102010303}OCR A Extended;}{\f92\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Reference 1;}
-{\f93\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}MS Reference 2;}{\f94\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}MS Reference Sans Serif;}{\f95\fnil\fcharset2\fprq2{\*\panose 05000500000000000000}MS Reference Specialty;}
-{\f96\froman\fcharset2\fprq2{\*\panose 05050102010205020202}MT Extra;}{\f97\fswiss\fcharset0\fprq2{\*\panose 020b0706040902060204}Haettenschweiler;}{\f98\froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;}
-{\f99\fnil\fcharset2\fprq2{\*\panose 01010601010101010101}Monotype Sorts;}{\f100\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;}{\f101\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Outlook;}
-{\f102\froman\fcharset0\fprq2{\*\panose 02020503030404060203}Kartika;}{\f103\fnil\fcharset0\fprq2{\*\panose 01010600010101010101}Vrinda;}{\f104\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}WinboardF;}
-{\f105\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}Chess Mark;}{\f106\fnil\fcharset0\fprq2{\*\panose 02000500000000000000}Superchess;}{\f107\fswiss\fcharset0\fprq2{\*\panose 020b0603050302020204}Tasc Chess Figurine;}
-{\f108\fnil\fcharset0\fprq1{\*\panose 02010603010101010101}XIANGQI;}{\f109\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?? ??};}{\f110\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}
-{\f111\froman\fcharset128\fprq2{\*\panose 02020600040205080304}MS PMincho;}{\f112\froman\fcharset128\fprq2{\*\panose 02020600040205080304}@MS PMincho;}{\f113\fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic{\*\falt ?? ????};}
-{\f114\fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}@MS Gothic;}{\f115\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS PGothic;}{\f116\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}@MS PGothic;}
-{\f117\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS UI Gothic;}{\f118\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}@MS UI Gothic;}{\f119\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}Gulim{\*\falt ??};}
-{\f120\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Gulim;}{\f121\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}GulimChe;}{\f122\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@GulimChe;}
-{\f123\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}Dotum{\*\falt ??};}{\f124\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Dotum;}{\f125\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}DotumChe;}
-{\f126\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@DotumChe;}{\f127\froman\fcharset129\fprq2{\*\panose 02030600000101010101}Batang{\*\falt ??};}{\f128\froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Batang;}
-{\f129\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}BatangChe;}{\f130\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@BatangChe;}{\f131\froman\fcharset129\fprq2{\*\panose 02030600000101010101}Gungsuh;}
-{\f132\froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Gungsuh;}{\f133\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}GungsuhChe;}{\f134\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@GungsuhChe;}
-{\f135\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f136\fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}NSimSun;}{\f137\fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}@NSimSun;}
-{\f138\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimHei{\*\falt ??};}{\f139\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimHei;}{\f140\fmodern\fcharset136\fprq1{\*\panose 02020309000000000000}MingLiU{\*\falt ???};}
-{\f141\fmodern\fcharset136\fprq1{\*\panose 02020309000000000000}@MingLiU;}{\f142\froman\fcharset136\fprq2{\*\panose 02020300000000000000}PMingLiU{\*\falt ????};}{\f143\froman\fcharset136\fprq2{\*\panose 02020300000000000000}@PMingLiU;}
-{\f144\froman\fcharset128\fprq1{\*\panose 00000000000000000000}Mincho{\*\falt ??};}{\f145\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Century;}{\f146\froman\fcharset222\fprq2{\*\panose 00000000000000000000}Angsana New;}
-{\f147\froman\fcharset222\fprq2{\*\panose 00000000000000000000}Cordia New;}{\f148\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Sendnya;}{\f149\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Estrangella Edessa;}
-{\f150\fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Arial Unicode MS;}{\f151\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}Univers (WN);}{\f152\froman\fcharset0\fprq0{\*\panose 00000000000000000000}CG Times (WN);}
-{\f153\fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS;}{\f154\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Book Antiqua;}{\f155\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Monotype Corsiva;}
-{\f156\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}CA Chess;}{\f157\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}ISDiagram;}{\f158\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}CADiagram;}
-{\f159\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Alfonso-X;}{\f160\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Adventurer;}{\f161\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Cases;}
-{\f162\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Marroquin;}{\f163\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Condal;}{\f164\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Harlequin;}
-{\f165\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Kingdom;}{\f166\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Leipzig;}{\f167\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Line;}
-{\f168\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Lucena;}{\f169\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Magnetic;}{\f170\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Maya;}
-{\f171\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Merida Fatx;}{\f172\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Merida;}{\f173\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Millennia-D;}
-{\f174\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Miscel;}{\f175\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Motif;}{\f176\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Mediaeval;}
-{\f177\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Smart;}{\f178\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Traveller Standard;}{\f179\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess;}
-{\f180\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Usual;}{\f181\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Utrecht;}{\f182\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica1;}
-{\f183\froman\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica1Mono;}{\f184\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica2;}{\f185\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica2Mono;}
-{\f186\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica3;}{\f187\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica3Mono;}{\f188\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica4;}
-{\f189\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica4Mono;}{\f190\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica5;}{\f191\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica5Mono;}
-{\f192\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica6;}{\f193\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica6Mono;}{\f194\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica7;}
-{\f195\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica7Mono;}{\f196\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Bookup;}{\f197\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chessmaster9000;}
-{\f198\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}FigurineCB AriesSP;}{\f199\fnil\fcharset0\fprq1{\*\panose 00000000000000000000}FigurineCB LetterSP;}{\f200\froman\fcharset0\fprq2{\*\panose 00000000000000000000}FigurineCB TimeSP;}
-{\f201\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}DiagramTTFritz;}{\f202\fmodern\fcharset2\fprq1{\*\panose 00000000000000000000}FigurineCrrCB;}{\f203\froman\fcharset2\fprq2{\*\panose 00000000000000000000}FigurineTmsCB;}
-{\f204\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}HE_TERMINAL;}{\f205\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Digiface;}{\f206\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Sydnie;}
-{\f207\froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman (Hebrew);}{\f208\froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman (Arabic);}
-{\f209\froman\fcharset163\fprq2{\*\panose 00000000000000000000}Times New Roman (Vietnamese);}{\f210\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial (Hebrew);}{\f211\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial (Arabic);}
-{\f212\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial (Vietnamese);}{\f213\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New (Hebrew);}{\f214\fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New (Arabic);}
-{\f215\fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New (Vietnamese);}{\f216\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Helvetica (Hebrew){\*\falt Arial};}
-{\f217\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Helvetica (Arabic){\*\falt Arial};}{\f218\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Helvetica (Vietnamese){\*\falt Arial};}
-{\f219\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Century CE;}{\f220\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Century Cyr;}{\f221\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Century Greek;}
-{\f222\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Century Tur;}{\f223\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Century Baltic;}{\f224\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Western;}
-{\f225\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial Unicode MS CE;}{\f226\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Cyr;}
-{\f227\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Greek;}{\f228\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Tur;}
-{\f229\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Hebrew);}{\f230\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Arabic);}
-{\f231\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Baltic;}{\f232\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Vietnamese);}
-{\f233\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Thai);}{\f234\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Tahoma (Hebrew);}{\f235\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Tahoma (Arabic);}
-{\f236\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Tahoma (Vietnamese);}{\f237\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Tahoma (Thai);}{\f238\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Lucida Sans Unicode (Hebrew);}
-{\f239\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Verdana (Vietnamese);}{\f240\froman\fcharset163\fprq2{\*\panose 00000000000000000000}Palatino Linotype (Vietnamese);}
-{\f241\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Hebrew);}{\f242\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Arabic);}
-{\f243\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Vietnames;}{\f244\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Thai);}
-{\f245\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Western;}{\f246\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS CE;}
-{\f247\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Cyr;}{\f248\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Greek;}
-{\f249\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Tur;}{\f250\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Hebrew);}
-{\f251\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Arabic);}{\f252\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Baltic;}
-{\f253\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Vietnamese);}{\f254\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Thai);}
-{\f255\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Book Antiqua CE;}{\f256\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Book Antiqua Cyr;}{\f257\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Book Antiqua Greek;}
-{\f258\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Book Antiqua Tur;}{\f259\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Book Antiqua Baltic;}{\f260\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Haettenschweiler CE;}
-{\f261\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Haettenschweiler Cyr;}{\f262\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Haettenschweiler Greek;}
-{\f263\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Haettenschweiler Tur;}{\f264\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Haettenschweiler Baltic;}
-{\f265\fscript\fcharset238\fprq2{\*\panose 00000000000000000000}Monotype Corsiva CE;}{\f266\fscript\fcharset204\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Cyr;}
-{\f267\fscript\fcharset161\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Greek;}{\f268\fscript\fcharset162\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Tur;}
-{\f269\fscript\fcharset186\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Baltic;}{\f270\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}CA Chess Cyr;}{\f271\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}CA Chess Tur;}
-{\f272\fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}HE_TERMINAL CE;}{\f273\fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Cyr;}{\f274\fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Greek;}
-{\f275\fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Tur;}{\f276\fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Baltic;}{\f277\fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Sydnie Greek;}
-{\f278\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}Gothic{\*\falt ?????};}{\f279\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}News Gothic MT;}{\f280\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Lucida Handwriting;}
-{\f281\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Calisto MT;}{\f282\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Abadi MT Condensed Light;}{\f283\fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Westminster;}
-{\f284\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR-A II;}{\f285\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR B MT;}{\f286\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II;}
-{\f287\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Condensed;}{\f288\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}QuickType II Mono;}{\f289\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Pi;}
-{\f290\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Gre;}{\f291\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Bal;}
-{\f292\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Demi Cond Balti;}{\f293\froman\fcharset238\fprq0{\*\panose 00000000000000000000}?? CE;}{\f294\froman\fcharset162\fprq0{\*\panose 00000000000000000000}?? Tur;}
-{\f295\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Calibri CE;}{\f296\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Calibri Cyr;}{\f297\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Calibri Greek;}
-{\f298\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Calibri Tur;}{\f299\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Calibri Baltic;}{\f300\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Cambria Math CE;}
-{\f301\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Cambria Math Cyr;}{\f302\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Cambria Math Greek;}{\f303\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Cambria Math Tur;}
-{\f304\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Cambria Math Baltic;}{\f305\froman\fcharset238\fprq2 Times New Roman CE;}{\f306\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f308\froman\fcharset161\fprq2 Times New Roman Greek;}
-{\f309\froman\fcharset162\fprq2 Times New Roman Tur;}{\f310\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f311\fswiss\fcharset238\fprq2 Arial CE;}{\f312\fswiss\fcharset204\fprq2 Arial Cyr;}{\f314\fswiss\fcharset161\fprq2 Arial Greek;}
-{\f315\fswiss\fcharset162\fprq2 Arial Tur;}{\f316\fswiss\fcharset186\fprq2 Arial Baltic;}{\f317\fmodern\fcharset238\fprq1 Courier New CE;}{\f318\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f320\fmodern\fcharset161\fprq1 Courier New Greek;}
-{\f321\fmodern\fcharset162\fprq1 Courier New Tur;}{\f322\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f329\froman\fcharset238\fprq2 Times CE;}{\f330\froman\fcharset204\fprq2 Times Cyr;}{\f332\froman\fcharset161\fprq2 Times Greek;}
-{\f333\froman\fcharset162\fprq2 Times Tur;}{\f334\froman\fcharset186\fprq2 Times Baltic;}{\f335\fswiss\fcharset238\fprq2 Helvetica CE{\*\falt Arial};}{\f336\fswiss\fcharset204\fprq2 Helvetica Cyr{\*\falt Arial};}
-{\f338\fswiss\fcharset161\fprq2 Helvetica Greek{\*\falt Arial};}{\f339\fswiss\fcharset162\fprq2 Helvetica Tur{\*\falt Arial};}{\f340\fswiss\fcharset186\fprq2 Helvetica Baltic{\*\falt Arial};}{\f395\fswiss\fcharset238\fprq2 Tahoma CE;}
-{\f396\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f398\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f399\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f400\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f403\fnil\fcharset0\fprq2 SimSun{\*\falt ??};}
-{\f521\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f522\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f524\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f525\fmodern\fcharset162\fprq1 Lucida Console Tur;}
-{\f527\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f528\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}{\f530\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f531\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;}
-{\f533\fswiss\fcharset238\fprq2 Verdana CE;}{\f534\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f536\fswiss\fcharset161\fprq2 Verdana Greek;}{\f537\fswiss\fcharset162\fprq2 Verdana Tur;}{\f538\fswiss\fcharset186\fprq2 Verdana Baltic;}
-{\f539\fswiss\fcharset238\fprq2 Arial Black CE;}{\f540\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f542\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f543\fswiss\fcharset162\fprq2 Arial Black Tur;}{\f544\fswiss\fcharset186\fprq2 Arial Black Baltic;}
-{\f545\fscript\fcharset238\fprq2 Comic Sans MS CE;}{\f546\fscript\fcharset204\fprq2 Comic Sans MS Cyr;}{\f548\fscript\fcharset161\fprq2 Comic Sans MS Greek;}{\f549\fscript\fcharset162\fprq2 Comic Sans MS Tur;}
-{\f550\fscript\fcharset186\fprq2 Comic Sans MS Baltic;}{\f551\fswiss\fcharset238\fprq2 Impact CE;}{\f552\fswiss\fcharset204\fprq2 Impact Cyr;}{\f554\fswiss\fcharset161\fprq2 Impact Greek;}{\f555\fswiss\fcharset162\fprq2 Impact Tur;}
-{\f556\fswiss\fcharset186\fprq2 Impact Baltic;}{\f557\froman\fcharset238\fprq2 Georgia CE;}{\f558\froman\fcharset204\fprq2 Georgia Cyr;}{\f560\froman\fcharset161\fprq2 Georgia Greek;}{\f561\froman\fcharset162\fprq2 Georgia Tur;}
-{\f562\froman\fcharset186\fprq2 Georgia Baltic;}{\f563\fswiss\fcharset238\fprq2 Franklin Gothic Medium CE;}{\f564\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cyr;}{\f566\fswiss\fcharset161\fprq2 Franklin Gothic Medium Greek;}
-{\f567\fswiss\fcharset162\fprq2 Franklin Gothic Medium Tur;}{\f568\fswiss\fcharset186\fprq2 Franklin Gothic Medium Baltic;}{\f569\froman\fcharset238\fprq2 Palatino Linotype CE;}{\f570\froman\fcharset204\fprq2 Palatino Linotype Cyr;}
-{\f572\froman\fcharset161\fprq2 Palatino Linotype Greek;}{\f573\froman\fcharset162\fprq2 Palatino Linotype Tur;}{\f574\froman\fcharset186\fprq2 Palatino Linotype Baltic;}{\f575\fswiss\fcharset238\fprq2 Trebuchet MS CE;}
-{\f576\fswiss\fcharset204\fprq2 Trebuchet MS Cyr;}{\f578\fswiss\fcharset161\fprq2 Trebuchet MS Greek;}{\f579\fswiss\fcharset162\fprq2 Trebuchet MS Tur;}{\f580\fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f635\froman\fcharset238\fprq2 Sylfaen CE;}
-{\f636\froman\fcharset204\fprq2 Sylfaen Cyr;}{\f638\froman\fcharset161\fprq2 Sylfaen Greek;}{\f639\froman\fcharset162\fprq2 Sylfaen Tur;}{\f640\froman\fcharset186\fprq2 Sylfaen Baltic;}{\f641\fswiss\fcharset238\fprq2 Microsoft Sans Serif CE;}
-{\f642\fswiss\fcharset204\fprq2 Microsoft Sans Serif Cyr;}{\f644\fswiss\fcharset161\fprq2 Microsoft Sans Serif Greek;}{\f645\fswiss\fcharset162\fprq2 Microsoft Sans Serif Tur;}{\f646\fswiss\fcharset186\fprq2 Microsoft Sans Serif Baltic;}
-{\f647\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f648\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f650\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f651\fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f652\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}
-{\f653\froman\fcharset238\fprq2 Rockwell CE;}{\f665\fscript\fcharset238\fprq2 Mistral CE;}{\f666\fscript\fcharset204\fprq2 Mistral Cyr;}{\f668\fscript\fcharset161\fprq2 Mistral Greek;}{\f669\fscript\fcharset162\fprq2 Mistral Tur;}
-{\f670\fscript\fcharset186\fprq2 Mistral Baltic;}{\f737\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}{\f738\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f740\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;}
-{\f741\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f742\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;}{\f743\fswiss\fcharset238\fprq2 Franklin Gothic Demi CE;}{\f744\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cyr;}
-{\f746\fswiss\fcharset161\fprq2 Franklin Gothic Demi Greek;}{\f747\fswiss\fcharset162\fprq2 Franklin Gothic Demi Tur;}{\f748\fswiss\fcharset186\fprq2 Franklin Gothic Demi Baltic;}{\f749\fswiss\fcharset238\fprq2 Franklin Gothic Medium Cond CE;}
-{\f750\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cond Cyr;}{\f752\fswiss\fcharset161\fprq2 Franklin Gothic Medium Cond Greek;}{\f753\fswiss\fcharset162\fprq2 Franklin Gothic Medium Cond Tur;}
-{\f754\fswiss\fcharset186\fprq2 Franklin Gothic Medium Cond Baltic;}{\f755\fswiss\fcharset238\fprq2 Franklin Gothic Heavy CE;}{\f756\fswiss\fcharset204\fprq2 Franklin Gothic Heavy Cyr;}{\f758\fswiss\fcharset161\fprq2 Franklin Gothic Heavy Greek;}
-{\f759\fswiss\fcharset162\fprq2 Franklin Gothic Heavy Tur;}{\f760\fswiss\fcharset186\fprq2 Franklin Gothic Heavy Baltic;}{\f761\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f762\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}
-{\f764\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;}{\f765\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;}{\f766\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f773\fswiss\fcharset238\fprq2 Century Gothic CE;}
-{\f774\fswiss\fcharset204\fprq2 Century Gothic Cyr;}{\f776\fswiss\fcharset161\fprq2 Century Gothic Greek;}{\f777\fswiss\fcharset162\fprq2 Century Gothic Tur;}{\f778\fswiss\fcharset186\fprq2 Century Gothic Baltic;}
-{\f869\fswiss\fcharset238\fprq2 MS Reference Sans Serif CE;}{\f870\fswiss\fcharset204\fprq2 MS Reference Sans Serif Cyr;}{\f872\fswiss\fcharset161\fprq2 MS Reference Sans Serif Greek;}{\f873\fswiss\fcharset162\fprq2 MS Reference Sans Serif Tur;}
-{\f874\fswiss\fcharset186\fprq2 MS Reference Sans Serif Baltic;}{\f893\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f894\froman\fcharset204\fprq2 Bookman Old Style Cyr;}{\f896\froman\fcharset161\fprq2 Bookman Old Style Greek;}
-{\f897\froman\fcharset162\fprq2 Bookman Old Style Tur;}{\f898\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f905\froman\fcharset238\fprq2 Garamond CE;}{\f906\froman\fcharset204\fprq2 Garamond Cyr;}{\f908\froman\fcharset161\fprq2 Garamond Greek;}
-{\f909\froman\fcharset162\fprq2 Garamond Tur;}{\f910\froman\fcharset186\fprq2 Garamond Baltic;}{\f945\fnil\fcharset162\fprq2 Superchess Tur;}{\f961\fmodern\fcharset0\fprq1 MS Mincho{\*\falt ?? ??};}
-{\f959\fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?? ??};}{\f960\fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?? ??};}{\f962\fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?? ??};}{\f963\fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?? ??};}
-{\f964\fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?? ??};}{\f967\fmodern\fcharset0\fprq1 @MS Mincho;}{\f965\fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f966\fmodern\fcharset204\fprq1 @MS Mincho Cyr;}
-{\f968\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f969\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f970\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}{\f973\froman\fcharset0\fprq2 MS PMincho;}{\f971\froman\fcharset238\fprq2 MS PMincho CE;}
-{\f972\froman\fcharset204\fprq2 MS PMincho Cyr;}{\f974\froman\fcharset161\fprq2 MS PMincho Greek;}{\f975\froman\fcharset162\fprq2 MS PMincho Tur;}{\f976\froman\fcharset186\fprq2 MS PMincho Baltic;}{\f979\froman\fcharset0\fprq2 @MS PMincho;}
-{\f977\froman\fcharset238\fprq2 @MS PMincho CE;}{\f978\froman\fcharset204\fprq2 @MS PMincho Cyr;}{\f980\froman\fcharset161\fprq2 @MS PMincho Greek;}{\f981\froman\fcharset162\fprq2 @MS PMincho Tur;}{\f982\froman\fcharset186\fprq2 @MS PMincho Baltic;}
-{\f985\fmodern\fcharset0\fprq1 MS Gothic{\*\falt ?? ????};}{\f983\fmodern\fcharset238\fprq1 MS Gothic CE{\*\falt ?? ????};}{\f984\fmodern\fcharset204\fprq1 MS Gothic Cyr{\*\falt ?? ????};}{\f986\fmodern\fcharset161\fprq1 MS Gothic Greek{\*\falt ?? ????};}
-{\f987\fmodern\fcharset162\fprq1 MS Gothic Tur{\*\falt ?? ????};}{\f988\fmodern\fcharset186\fprq1 MS Gothic Baltic{\*\falt ?? ????};}{\f991\fmodern\fcharset0\fprq1 @MS Gothic;}{\f989\fmodern\fcharset238\fprq1 @MS Gothic CE;}
-{\f990\fmodern\fcharset204\fprq1 @MS Gothic Cyr;}{\f992\fmodern\fcharset161\fprq1 @MS Gothic Greek;}{\f993\fmodern\fcharset162\fprq1 @MS Gothic Tur;}{\f994\fmodern\fcharset186\fprq1 @MS Gothic Baltic;}{\f997\fswiss\fcharset0\fprq2 MS PGothic;}
-{\f995\fswiss\fcharset238\fprq2 MS PGothic CE;}{\f996\fswiss\fcharset204\fprq2 MS PGothic Cyr;}{\f998\fswiss\fcharset161\fprq2 MS PGothic Greek;}{\f999\fswiss\fcharset162\fprq2 MS PGothic Tur;}{\f1000\fswiss\fcharset186\fprq2 MS PGothic Baltic;}
-{\f1003\fswiss\fcharset0\fprq2 @MS PGothic;}{\f1001\fswiss\fcharset238\fprq2 @MS PGothic CE;}{\f1002\fswiss\fcharset204\fprq2 @MS PGothic Cyr;}{\f1004\fswiss\fcharset161\fprq2 @MS PGothic Greek;}{\f1005\fswiss\fcharset162\fprq2 @MS PGothic Tur;}
-{\f1006\fswiss\fcharset186\fprq2 @MS PGothic Baltic;}{\f1009\fswiss\fcharset0\fprq2 MS UI Gothic;}{\f1007\fswiss\fcharset238\fprq2 MS UI Gothic CE;}{\f1008\fswiss\fcharset204\fprq2 MS UI Gothic Cyr;}{\f1010\fswiss\fcharset161\fprq2 MS UI Gothic Greek;}
-{\f1011\fswiss\fcharset162\fprq2 MS UI Gothic Tur;}{\f1012\fswiss\fcharset186\fprq2 MS UI Gothic Baltic;}{\f1015\fswiss\fcharset0\fprq2 @MS UI Gothic;}{\f1013\fswiss\fcharset238\fprq2 @MS UI Gothic CE;}{\f1014\fswiss\fcharset204\fprq2 @MS UI Gothic Cyr;}
-{\f1016\fswiss\fcharset161\fprq2 @MS UI Gothic Greek;}{\f1017\fswiss\fcharset162\fprq2 @MS UI Gothic Tur;}{\f1018\fswiss\fcharset186\fprq2 @MS UI Gothic Baltic;}{\f1021\fswiss\fcharset0\fprq2 Gulim{\*\falt ??};}
-{\f1019\fswiss\fcharset238\fprq2 Gulim CE{\*\falt ??};}{\f1020\fswiss\fcharset204\fprq2 Gulim Cyr{\*\falt ??};}{\f1022\fswiss\fcharset161\fprq2 Gulim Greek{\*\falt ??};}{\f1023\fswiss\fcharset162\fprq2 Gulim Tur{\*\falt ??};}
-{\f1024\fswiss\fcharset186\fprq2 Gulim Baltic{\*\falt ??};}{\f1027\fswiss\fcharset0\fprq2 @Gulim;}{\f1025\fswiss\fcharset238\fprq2 @Gulim CE;}{\f1026\fswiss\fcharset204\fprq2 @Gulim Cyr;}{\f1028\fswiss\fcharset161\fprq2 @Gulim Greek;}
-{\f1029\fswiss\fcharset162\fprq2 @Gulim Tur;}{\f1030\fswiss\fcharset186\fprq2 @Gulim Baltic;}{\f1033\fmodern\fcharset0\fprq1 GulimChe;}{\f1031\fmodern\fcharset238\fprq1 GulimChe CE;}{\f1032\fmodern\fcharset204\fprq1 GulimChe Cyr;}
-{\f1034\fmodern\fcharset161\fprq1 GulimChe Greek;}{\f1035\fmodern\fcharset162\fprq1 GulimChe Tur;}{\f1036\fmodern\fcharset186\fprq1 GulimChe Baltic;}{\f1039\fmodern\fcharset0\fprq1 @GulimChe;}{\f1037\fmodern\fcharset238\fprq1 @GulimChe CE;}
-{\f1038\fmodern\fcharset204\fprq1 @GulimChe Cyr;}{\f1040\fmodern\fcharset161\fprq1 @GulimChe Greek;}{\f1041\fmodern\fcharset162\fprq1 @GulimChe Tur;}{\f1042\fmodern\fcharset186\fprq1 @GulimChe Baltic;}{\f1045\fswiss\fcharset0\fprq2 Dotum{\*\falt ??};}
-{\f1043\fswiss\fcharset238\fprq2 Dotum CE{\*\falt ??};}{\f1044\fswiss\fcharset204\fprq2 Dotum Cyr{\*\falt ??};}{\f1046\fswiss\fcharset161\fprq2 Dotum Greek{\*\falt ??};}{\f1047\fswiss\fcharset162\fprq2 Dotum Tur{\*\falt ??};}
-{\f1048\fswiss\fcharset186\fprq2 Dotum Baltic{\*\falt ??};}{\f1051\fswiss\fcharset0\fprq2 @Dotum;}{\f1049\fswiss\fcharset238\fprq2 @Dotum CE;}{\f1050\fswiss\fcharset204\fprq2 @Dotum Cyr;}{\f1052\fswiss\fcharset161\fprq2 @Dotum Greek;}
-{\f1053\fswiss\fcharset162\fprq2 @Dotum Tur;}{\f1054\fswiss\fcharset186\fprq2 @Dotum Baltic;}{\f1057\fmodern\fcharset0\fprq1 DotumChe;}{\f1055\fmodern\fcharset238\fprq1 DotumChe CE;}{\f1056\fmodern\fcharset204\fprq1 DotumChe Cyr;}
-{\f1058\fmodern\fcharset161\fprq1 DotumChe Greek;}{\f1059\fmodern\fcharset162\fprq1 DotumChe Tur;}{\f1060\fmodern\fcharset186\fprq1 DotumChe Baltic;}{\f1063\fmodern\fcharset0\fprq1 @DotumChe;}{\f1061\fmodern\fcharset238\fprq1 @DotumChe CE;}
-{\f1062\fmodern\fcharset204\fprq1 @DotumChe Cyr;}{\f1064\fmodern\fcharset161\fprq1 @DotumChe Greek;}{\f1065\fmodern\fcharset162\fprq1 @DotumChe Tur;}{\f1066\fmodern\fcharset186\fprq1 @DotumChe Baltic;}{\f1069\froman\fcharset0\fprq2 Batang{\*\falt ??};}
-{\f1067\froman\fcharset238\fprq2 Batang CE{\*\falt ??};}{\f1068\froman\fcharset204\fprq2 Batang Cyr{\*\falt ??};}{\f1070\froman\fcharset161\fprq2 Batang Greek{\*\falt ??};}{\f1071\froman\fcharset162\fprq2 Batang Tur{\*\falt ??};}
-{\f1072\froman\fcharset186\fprq2 Batang Baltic{\*\falt ??};}{\f1075\froman\fcharset0\fprq2 @Batang;}{\f1073\froman\fcharset238\fprq2 @Batang CE;}{\f1074\froman\fcharset204\fprq2 @Batang Cyr;}{\f1076\froman\fcharset161\fprq2 @Batang Greek;}
-{\f1077\froman\fcharset162\fprq2 @Batang Tur;}{\f1078\froman\fcharset186\fprq2 @Batang Baltic;}{\f1081\fmodern\fcharset0\fprq1 BatangChe;}{\f1079\fmodern\fcharset238\fprq1 BatangChe CE;}{\f1080\fmodern\fcharset204\fprq1 BatangChe Cyr;}
-{\f1082\fmodern\fcharset161\fprq1 BatangChe Greek;}{\f1083\fmodern\fcharset162\fprq1 BatangChe Tur;}{\f1084\fmodern\fcharset186\fprq1 BatangChe Baltic;}{\f1087\fmodern\fcharset0\fprq1 @BatangChe;}{\f1085\fmodern\fcharset238\fprq1 @BatangChe CE;}
-{\f1086\fmodern\fcharset204\fprq1 @BatangChe Cyr;}{\f1088\fmodern\fcharset161\fprq1 @BatangChe Greek;}{\f1089\fmodern\fcharset162\fprq1 @BatangChe Tur;}{\f1090\fmodern\fcharset186\fprq1 @BatangChe Baltic;}{\f1093\froman\fcharset0\fprq2 Gungsuh;}
-{\f1091\froman\fcharset238\fprq2 Gungsuh CE;}{\f1092\froman\fcharset204\fprq2 Gungsuh Cyr;}{\f1094\froman\fcharset161\fprq2 Gungsuh Greek;}{\f1095\froman\fcharset162\fprq2 Gungsuh Tur;}{\f1096\froman\fcharset186\fprq2 Gungsuh Baltic;}
-{\f1099\froman\fcharset0\fprq2 @Gungsuh;}{\f1097\froman\fcharset238\fprq2 @Gungsuh CE;}{\f1098\froman\fcharset204\fprq2 @Gungsuh Cyr;}{\f1100\froman\fcharset161\fprq2 @Gungsuh Greek;}{\f1101\froman\fcharset162\fprq2 @Gungsuh Tur;}
-{\f1102\froman\fcharset186\fprq2 @Gungsuh Baltic;}{\f1105\fmodern\fcharset0\fprq1 GungsuhChe;}{\f1103\fmodern\fcharset238\fprq1 GungsuhChe CE;}{\f1104\fmodern\fcharset204\fprq1 GungsuhChe Cyr;}{\f1106\fmodern\fcharset161\fprq1 GungsuhChe Greek;}
-{\f1107\fmodern\fcharset162\fprq1 GungsuhChe Tur;}{\f1108\fmodern\fcharset186\fprq1 GungsuhChe Baltic;}{\f1111\fmodern\fcharset0\fprq1 @GungsuhChe;}{\f1109\fmodern\fcharset238\fprq1 @GungsuhChe CE;}{\f1110\fmodern\fcharset204\fprq1 @GungsuhChe Cyr;}
-{\f1112\fmodern\fcharset161\fprq1 @GungsuhChe Greek;}{\f1113\fmodern\fcharset162\fprq1 @GungsuhChe Tur;}{\f1114\fmodern\fcharset186\fprq1 @GungsuhChe Baltic;}{\f1117\fnil\fcharset0\fprq2 @SimSun;}{\f1123\fmodern\fcharset0\fprq1 NSimSun;}
-{\f1129\fmodern\fcharset0\fprq1 @NSimSun;}{\f1147\fmodern\fcharset0\fprq1 MingLiU{\*\falt ???};}{\f1153\fmodern\fcharset0\fprq1 @MingLiU;}{\f1159\froman\fcharset0\fprq2 PMingLiU{\*\falt ????};}{\f1165\froman\fcharset0\fprq2 @PMingLiU;}}
-{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
-\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext0 Normal;}{\s1\li120\sb280\sa120\sl-320\slmult0
-\nowidctlpar\adjustright \b\f5\cgrid \sbasedon0 \snext26 heading 1;}{\s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \b\f5\fs20\cgrid \sbasedon0 \snext0 heading 2;}{\s3\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid 
-\sbasedon0 \snext0 heading 3;}{\s4\fi-245\li360\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \f11\fs20\cgrid \sbasedon2 \snext4 heading 4;}{\s5\li120\sb80\sl-240\slmult0\keepn\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid 
-\sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \f5\fs18\up6\lang1033 \sbasedon10 footnote reference;}{\s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 footnote text;}{
-\s17\li360\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 Normal Indent;}{\s18\fi-240\li600\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext18 Jli;}{\s19\li120\sb60\sl-240\slmult0\keep\nowidctlpar
-\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid \snext19 Ex;}{\s20\li120\sb160\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Sa1;}{\s21\fi-240\li360\sl-240\slmult0\nowidctlpar\tx360\adjustright \f5\fs20\cgrid \snext22 Lb1;}{
-\s22\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\tx360\adjustright \f5\fs20\cgrid \snext22 Lb2;}{\s23\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext22 Lp1;}{\s24\fi-1800\li1920\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb
-\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \tx1920\adjustright \b\f5\fs20\cgrid \snext25 Th;}{\s25\fi-1800\li1920\sb60\sl-240\slmult0\nowidctlpar\tx1920\adjustright \f5\fs20\cgrid \snext25 Tp;}{\s26\li120\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid \snext0 Normal 2;}{\s27\li120\sb120\sa120\nowidctlpar\adjustright \f5\fs20\cgrid \snext0 bitmap;}{\s28\li120\sb120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Sa2;}{\s29\fi-240\li360\sb60\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Jl;}{\s30\li120\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \snext30 *body;}{\s31\li120\sa60\nowidctlpar\adjustright \b\f151\fs20\cgrid \snext31 *heading;}{\s32\li120\sa60\sl-240\slmult0
-\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext32 para;}{\s33\fi-280\li400\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext33 jump;}{\s34\fi-280\li400\sa60\nowidctlpar\tx400\adjustright \f151\fs20\cgrid \sbasedon30 \snext34 
-list bullet;}{\s35\fi-280\li600\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext35 jump indent;}{\s36\li120\sa60\sl-40\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f151\fs20\cgrid 
-\sbasedon30 \snext36 table rule;}{\s37\fi-280\li400\sa60\nowidctlpar\tqr\tx280\tx400\adjustright \f151\fs20\cgrid \sbasedon30 \snext37 list number;}{\s38\li120\sb100\sa60\nowidctlpar\adjustright \b\f151\fs20\cgrid \sbasedon31 \snext33 see also;}{
-\s39\li400\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext39 para indent;}{\s40\fi-1800\li1920\nowidctlpar\tx1920\adjustright \b\f151\fs20\cgrid \sbasedon31 \snext36 table head;}{\s41\fi-1800\li1920\sa60\nowidctlpar\tx1920\adjustright 
-\f151\fs20\cgrid \sbasedon30 \snext41 table text;}{\s42\li120\sb120\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext35 see also 2;}{\s43\li120\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid 
-\sbasedon30 \snext43 code;}{\s44\sl-120\slmult0\nowidctlpar\adjustright \f152\fs20\cgrid \snext32 *spacing;}{\s45\sl-120\slmult0\nowidctlpar\adjustright \f152\fs20\cgrid \sbasedon44 \snext45 s6;}{\s46\qj\li360\nowidctlpar\adjustright \f5\cgrid 
-\sbasedon0 \snext46 Help Text;}{\s47\li115\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f11\fs20\cgrid \sbasedon24 \snext25 Th2;}{\s48\li115\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb
-\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \b\f11\fs16\cgrid \sbasedon24 \snext25 Th3;}{\s49\li115\sb200\sl-240\slmult0\nowidctlpar\adjustright \f11\fs20\cgrid \sbasedon0 \snext0 Normal 3;}{
-\s50\fi-1800\li1915\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \tx1915\adjustright \b\f11\fs20\cgrid \sbasedon0 \snext51 Thh;}{\s51\fi-1800\li1915\sb60\sl-240\slmult0\nowidctlpar\tx1915\adjustright 
-\f11\fs20\cgrid \sbasedon0 \snext51 Tph;}{\s52\li288\ri-432\sb80\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright \f5\cgrid \sbasedon0 \snext52 unixman1;}{\s53\li1440\ri-432\sb80\sa240\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright 
-\f5\cgrid \sbasedon0 \snext53 unixman2;}{\s54\li115\ri-432\sb80\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright \f5\cgrid \sbasedon52 \snext54 unixman0;}{\s55\li288\ri-432\sb80\sa240\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright 
-\f5\cgrid \sbasedon52 \snext55 unixman1a;}{\s56\li115\sa60\sl-240\slmult0\nowidctlpar\adjustright \b\f5\fs20\cgrid \sbasedon2 \snext56 heading 2a;}{\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext57 endnote text;}{\*
-\cs58 \additive \super \sbasedon10 endnote reference;}{\*\cs59 \additive \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs60 \additive \ul\cf12 \sbasedon10 FollowedHyperlink;}{\s61\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \cbpat9 \f15\fs20\cgrid 
-\sbasedon0 \snext61 Document Map;}{\s62\li480\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext62 Body Text 2;}{\s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid \sbasedon0 \snext63 
-Body Text Indent 2;}{\s64\li120\sb80\sl-240\slmult0\nowidctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs20\cgrid \sbasedon0 \snext64 header;}{\s65\li120\sb80\sl-240\slmult0\nowidctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs20\cgrid \sbasedon0 \snext65 
-footer;}{\s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid \sbasedon0 \snext66 Body Text Indent 3;}}{\*\listtable{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0
-\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid74976790}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
-\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid349260549}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers
-;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid470094698}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360
-\jclisttab\tx360 }{\listname ;}\listid640160996}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }
-{\listname ;}\listid768165129}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid781152802}
-{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid903878531}{\list\listtemplateid67698689
-\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1002394966}{\list\listtemplateid67698703\listsimple
-{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1021513731}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0
-\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1099714113}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0
-\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1240552867}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0
-\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1332292840}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
-\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1358388700}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
-\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1405952460}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
-\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid2025940873}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
-\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid2044863907}}{\*\listoverridetable{\listoverride\listid2025940873\listoverridecount0\ls1}{\listoverride\listid1002394966\listoverridecount0\ls2}
-{\listoverride\listid470094698\listoverridecount0\ls3}{\listoverride\listid1099714113\listoverridecount0\ls4}{\listoverride\listid1358388700\listoverridecount0\ls5}{\listoverride\listid2044863907\listoverridecount0\ls6}{\listoverride\listid640160996
-\listoverridecount0\ls7}{\listoverride\listid768165129\listoverridecount0\ls8}{\listoverride\listid903878531\listoverridecount0\ls9}{\listoverride\listid781152802\listoverridecount0\ls10}{\listoverride\listid1240552867\listoverridecount0\ls11}
-{\listoverride\listid640160996\listoverridecount0\ls12}{\listoverride\listid349260549\listoverridecount0\ls13}{\listoverride\listid1021513731\listoverridecount0\ls14}{\listoverride\listid1405952460\listoverridecount0\ls15}{\listoverride\listid1332292840
-\listoverridecount0\ls16}}{\*\revtbl {Unknown;}{Tim Mann;}}{\info{\title + $ # KWinBoard: Chessboard for Windows}{\author TRIO}{\operator hgm}{\creatim\yr2003\mo10\dy25\hr23\min40}{\revtim\yr2009\mo9\dy5\hr6\min5}{\printim\yr1997\mo4\dy22\hr23\min5}{\version44}{\edmins899}
-{\nofpages78}{\nofwords17967}{\nofchars-32766}{\*\company DEC SRC}{\nofcharsws0}{\vern73}}\margl1417\margr1417\margt1417\margb1417 
-\widowctrl\endnotes\aendnotes\hyphhotz425\ftnnrlc\aftnnar\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\viewkind4\viewscale100 \fet1{\*\aftnsep \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\chftnsep 
-
-\par }}\sectd \linex0\headery709\footery709\colsx709\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4
-\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}
-{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {
-\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super $}{\f1  Contents}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Contents}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super K}{\f1  Contents}}}{\i\f1\fs32 WinBoard}{\f1\fs32 : Chessboard for Windows
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\par }\pard\plain \s2\li119\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1\cf11 An updated description with the release of version 4.4.0.
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\f1\cf11 \tab \tab \tab \ldblquote For the ultimate WinBoard Experience\rdblquote 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 New features since WinBoard 4.2.7 that are implemented in Allessandro Scotti\rquote s Winboard_x are highlighted in red. }{\f1\cf11 
-New features in the WinBoard 4.3.xx series by H.G. Muller are highlighted in green}{\f1\cf2 , that in the unified 4.4 series in blue}{\f1\cf11 .}{\f1 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Description}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Description}}}{\f1  Description
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\i\f1 WinBoard}{\f1 
- is a graphical user interface for chess. It displays a chessboard on the screen, accepts moves made with the mouse, and loads and saves game files in standard chess notation. WinBoard serves as a front-end for many different services, including:
-\par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright 
-\f5\fs20\cgrid {\b\i\f1 Chess engines}{\f1  that run on your PC. You can play a game against an engine, set up arbitrary positions, force variations, or watch a game between two engines. }{\i\f1\cf11 Fairy-Max}{\f1  is supplied with WinBoard }{\f1\cf11 
-4.3.14}{\f1 , and over 100 other free chess engines are available separately. Of these, Crafty is the most popular. See }{\f1\uldb Installing Chess Engines}{\v\f1 InstallingChessEngines}{\f1  for instructions on installing additional chess engines.
-\par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright {\b\i\f1 
-Chess servers}{\b\f1  }{\f1 on the Internet. You can play against other Internet Chess Server (ICS) users, observe games they are playing, review games in the ICS libraries, chat, }{\f1\cf2 analyze observed games with a chess program}{\f1 
-, and more. WinBoard can also be used to run an automated computer player on the ICS, but this feature is for advanced users only and is subject to some caveats; see the separate file zippy.README for information.
-\par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright {\b\i\f1 
-The Web}{\f1  and your own saved games. You can use WinBoard as a helper application to view files in your Web browser or the Explorer. You can use it to keep track of email postal games, browse games off the net, or review games you have saved.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Getting Started}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ GettingStarted}}}{\f1 Getting Started
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-WinBoard starts up in one of three major modes: chess engine mode, ICS client mode, or game viewer mode. You cannot change modes while WinBoard is running, but you can access all the game viewer features directly from the othe
-r two modes. Also, you can start WinBoard several times to get multiple chessboard windows running in any combination of modes.
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {You will usually run WinBoard by choosing an item from the Windows Start menu that runs it in the mode you want. If you just dou
-ble-click on WinBoard.exe, you get a startup dialog asking which mode you want. If you choose chess engine mode, you can then select from the installed engines; if you choose ICS client mode, you can then select from a list of known chess servers. More ad
-vanced users can }{\uldb customize}{\v icsNames}{ these lists or type in WinBoard }{\uldb command line options}{\v Options}{ directly.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 After starting WinBoard, you can make }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super K}{\f1  move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  move}}}{\f1 
-moves in several different ways. To move by dragging, press the left mouse button while the cursor
- is on one of your pieces, move the cursor to another square, and release the button. You can also move by clicking the left mouse button once (press and release) over one of your pieces, moving the cursor to another square, and clicking again. You drop n
-e
-w pieces on the board (when applicable) by selecting from a context menu. Press the right mouse button over a square to bring up the menu; no menu will come up in modes where dropping a new piece is not permitted. You can also make moves by typing them in
- standard algebraic chess notation. Either a dialog box will pop up for you to type into, or in ICS mode, your typing will be redirected into the ICS interaction window.
-\par When WinBoard}{\i\f1  }{\f1 is iconized, its }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icon}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icon}}}{\f1 icon is a white knight if it is White's turn to move, a black knight if it is Black's turn.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Additional Information
-\par }\pard\plain \s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\uldb Menus}{\v\f1\uldb Menus}{\f1\uldb 
-\par Shortcut Buttons}{\v\f1\uldb Buttons}{\f1\uldb 
-\par Command Line Options}{\v\f1 Options}{\f1 
-\par }{\f1\uldb Initialization Files}{\v\f1\uldb Files}{\f1\uldb 
-\par Installing Chess Engines}{\v\f1\uldb InstallingChessEngines}{\f1\uldb 
-\par Firewalls}{\v\f1 Firewalls}{\f1 
-\par }{\f1\uldb Limitations}{\v\f1 Limitations}{\f1\uldb 
-\par Authors}{\v\f1 Authors}{\f1 
-\par }{\f1\uldb Copyright}{\v\f1 Copyright}{\f1 
-\par }{\f1\uldb Frequently Asked Questions}{\v\f1 !ExecFile(FAQ.html)}{\f1 
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Menus}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Menus}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super $}{\f1  Menus}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20 MENUS
-\par }\pard\plain \s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\uldb File Menu}{\v\f1 FileMenu}{\f1 
-\par }{\f1\uldb Mode Menu}{\v\f1 ModeMenu}{\f1 
-\par }{\f1\uldb Action Menu}{\v\f1 ActionMenu}{\f1 
-\par }{\f1\uldb Step Menu}{\v\f1 StepMenu}{\f1 
-\par }{\f1\uldb Options Menu}{\v\f1 OptionsMenu}{\f1 
-\par }{\f1\uldb Help Menu}{\v\f1 HelpMenu}{\f1 
-\par }{\f1\uldb ICS Interaction Context Menu}{\v\f1 ICSInteractionContextMenu}{\f1 
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1 File Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 FileMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super $}{\f1 File Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 File Menu
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 New Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 NewGame}}}{\f1\cf6  New Game (former }{\f1 Reset}{\f1\cf6 )
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Resets WinBoard and the chess engine (if any) to the beginning of a new chess game. In Internet Chess Server mode, clears the current state of WinBoard, then resynchronizes with ICS by sending a }{\b\f1 refresh }{\f1 
-command. If you want to stop playing, observing, or examining a game on ICS, use an appropriate command from the }{\f1\uldb Action}{\v\f1 ActionMenu}{\f1  menu, not }{\f1\cf6 New Game}{\f1 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 New Shuffle Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 NewShuffleGame}}}{\f1\cf11  New Shuffle Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Brings you to a dialog box where you can enter the number of an opening setup for shuffle variants like
- FRC, or ask for a random number. After pressing OK, a new game is set up, using this position. The chosen position will continue to be used on every subsequent \ldblquote New Game\rdblquote , }{\f1\cf11 
-even if you are playing a variant that normally is not shuffled, until you select a new variant through the \ldblquote New Variant\'85\rdblquote  menu.}{\f1\cf6  If you enter \ldblquote -1\rdblquote 
- for the position number,  new random number is drawn before every game.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 The type of shuffling that is done in reaction to a given position number obeys restrictions that depend on the selected
- variant. In variants that allow castling, Kings remain on the central files, Rooks in the corners. In games with FRC-style castlings, the King starts between the Rooks, but apart from that they could be anywhere. In games without castling, there are no r
-estrictions on King and Rook placement. Pairs of color-bound pieces (such as Bishops) will be placed on oppositely colored squares. In ICS mode this feature has no effect, as the ICS determines the starting position.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 New Variant}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 NewVariant}}}{\f1\cf11  New Variant
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Select a new variant. There are controls to enter a board width, board height and holdings size, but normally you leave them at \lquote -1\rquote 
-, which means the default value for the selected variant will be used (e.g. 8x8 for normal Chess, 9x10 for xiangqi, 10x8 f
-or capablanca, holdings for 5 pieces in crazyhouse). You can set a deviating value for each of the three parameters (e.g. to play a crazyhouse version of xiangqi or capablanca you would set the holdings to 6 or 7). If the board width deviates from the def
-ault, the game will start with an empty board. 
-\par The variant will remain in force until you select a new one; i.e. subsequent \ldblquote New Game\rdblquote  commands will start a new game of the same variant. In ICS mode this command has no effect, as the ICS determines which variant will be played.
-
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Load Game}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadGame}}}{\f1  Load Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Plays a game from a record file. A popup dialog prompts you for the filename. If the file contains more than one game, a second popup dialog displays a list of games (with information drawn from th
-eir PGN tags, if any), and you can select the one you want.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The game file parser will accept PGN (portable game notation), or in fact almost any file that contains moves in algebraic notation. Notation of the form }{\i\f1 P at f7}{
-\f1  is accepted for piece-drops in bughou
-se games; this is a nonstandard extension to PGN. If the file includes a PGN position (FEN tag), or a WinBoard position diagram bracketed by "[--" and "--]" before the first move, the game starts from that position. Text enclosed in parentheses, square br
-a
-ckets, or curly braces is assumed to be commentary and is displayed in a pop-up window. Any other text in the file is ignored. PGN variations (enclosed in parentheses) are treated as comments; WinBoard is not able to walk variation trees. The nonstandard 
-PGN tag }{\f2 [Variant "varname"]}{\f1  functions similarly to the }{\f1\uldb variant}{\v\f1 variant }{\f1 command-line option, allowing games in certain chess variants to be loaded. There is also a heuristic to recognize chess variants from the }{\f2 
-Event}{\f1  tag, by looking for the strings that the Internet Chess Servers put there when saving variant ("wild") games.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Load Next Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadNextGame}}}{\f1  Load Next Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Loads the next game from the last game record file you loaded.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Load Previous Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadPreviousGame}}}{\f1  Load Previous Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Loads the previous game from the last game record file you loaded. Not available if the last game was loaded from a pipe.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Reload Same Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ReloadSameGame}}}{\f1  Reload Same Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Reloads the last game you loaded. Not available if the last game was loaded from a pipe.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Save Game}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SaveGame}}}{\f1  Save Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Appends a record of the current game to a file. A popup dialog prompts you for the filename. If the game did not begin with the standard starting position, the game file includes the starting position used. Ga
-me files are saved in the PGN (portable game notation) format, unless the }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1  option is True, in which case they are saved in an older format that is specific to WinBoard}{\i\f1 .}{\f1 
- Both formats are human-readable, and both can be read back by the Load Game command. Notation of the form }{\i\f1 P at f7}{\f1  is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Copy Game To Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  CopyGameToClipboard}}}{\f1  Copy Game To Clipboard
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Copies the record of the current game to the Windows clipboard in PGN (portable game notation) format.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Paste Game From Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PasteGameFromClipboard}}}{\f1  Paste Game From Clipboard
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Plays a game from the Windows clipboard.}{\f1  See }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1  for a discussion of game file format and parser behavior.}{
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Load Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadPosition}}}{\f1  Load Position
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets up a position from a position file. A popup dialog prompts you for the filename. Position files must be in FEN (Forsythe-Edwards notation), or in the format that the }
-{\f1\uldb Save Position}{\f1  command writes when }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1  is turned on. }{\f1\cf11 
-Note that many variants require an extension of the original FEN standard. WinBoard tries to be as universal as possible in understanding FENs when different standards ar
-e raound, but has to make a choice when writing them. In FRC is uses Shredder-FEN (Haha castling notation) , but it understands KQkq as the outermost Rook, so it also reads X-FEN. In Crazyhouse / Bughouse it appends the holdings immediately behind the boa
-r
-d info between brackets [], but on input it also understands bFEN (which puts it behind a slash / as if it were an extra board rank). It uses a tilde ~ behind a piece to indicate it is really a promoted Pawn (like bFEN). In Shogi the holdings are printed 
-like in Crazyhouse, but promoted pieces are represented by a plus sign + before the letter of the original piece. Letters used for the pieces can be set with the /pieceToCharTable command-line option.}{\f1 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Load Next Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadNextPosition}}}{\f1  Load Next Position
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Loads the next position from the last position file you loaded.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Load Previous Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadPreviousPosition}}}{\f1  Load Previous Position
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Loads the previous position from the last position file you loaded. Not available if the last position was loaded from a pipe.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Reload Same Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ReloadSamePosition}}}{\f1  Reload Same Position
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Reloads the last position you loaded. Not available if the last position was loaded from a pipe.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Save Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SavePosition}}}{\f1  Save Position
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Appends a diagram of the current position to a file. A popup dialog prompts you for the filename. Positions are saved in FEN (Forsythe-Edwards notation) format, unless the 
-}{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1  option is True, in which case they are saved in an older, human-readable format that is specific to WinBoard}{\i\f1 .}{\f1 
- Both formats can be read back by the Load Position command; however, currently Load Position can load only the first position in a file.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Save Diagram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 Save Diagram}}}{\f1\cf11  Save Diagram
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Writes the current board display as a bitmap file. With this command you can use WinBoard as a diagram generator.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Copy Position Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  CopyPositionToClipboard}}}{\f1  Copy Position To Clipboard
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Places a diagram of the current position (in Forsythe-Edwards notation) into the Windows clipboard.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Paste Position Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PastePositionFromClipboard}}}{\f1  Paste Position From Clipboard
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets up a position from the Windows clipboard. Position must be in FEN (Forsythe-Edwards notation). Puts WinBoard into }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1 
- mode if it was not there already.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Exit}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Exit}}}{\f1  Exit
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Exits from WinBoard.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\f1\super K}
-{\f1  Mode Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ModeMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super $}{\f1  Mode Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  Mode Menu
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Machine White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  MachineWhite}}}{\f1  Machine White
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Forces the chess engine to play white.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Machine Black}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  MachineBlack}}}{\f1  Machine Black
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Forces the chess engine to play black.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Two Machines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  TwoMachines}}}{\f1  Two Machines
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Starts a game between two chess engines.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Machine Both}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 Machine Both}}}{\f1\cf11  Machine Both
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-A single chess engine plays itself. Mainly useful for pseudo-engines, that are in fact communication links to another machine, where you want to observe a game that is being played. (E.g. t
-he gothic-chess.com server). This command is not implemented yet (version 4.3.14).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Analysis Mode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnalysisMode}}}{\f1  Analysis Mode
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In this mode, you can make moves for both sides on the board. After each move, the chess engine will think about possible rep
-lies and display its analysis in a separate window. Crafty was the first engine to support this feature, but by now there are many others that support it as well.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf2 From WinBoard 4.4 on this function can also be invoked in \lquote zippy mode\rquote , i.e. when you are log
-ged on to an ICS with an engine loaded. In that case it is not your own moves that the engine analyzes, but the moves that are played in a game on the ICS that you are observing. You must start observing before you start the analysis mode! See the file zi
-p
-py.README for how to connect to an ICS and a chess engine running on your local computer at the same time. (Basically this amounts to adding the /zp command-line option in addition to all options you would need for connecting to the ICS, as well as those 
-needed for running the chess engine.)
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Analyze File}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnalyzeFile}}}{\f1  Analyze File
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In this mode, you can load a game from a file, and the chess engine will analyz
-e each move as in Analysis Mode. Crafty was the first engine to support this feature, but by now there are many others that support it as well.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ICS Client
-}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSClient}}}{\f1  ICS Client
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This is the normal mode when WinBoard is connected to a chess server. If you have moved into Edit Game or Edit Position mode, you can select this option to get out.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 When you run WinBoard in ICS mode, it starts up a console window in which you can type comm
-ands and receive text responses from the chess server. You can use the standard Windows editing keys to edit your command line before pressing Enter. The console window keeps a history of the last few commands you typed. Press the up-arrow key to go back 
-to a previous command; press the down-arrow key to go forward again to a later command. Press the right mouse button in the output area for a }{\f1\uldb context menu}{\v\f1 ICSInteractionContextMenu}{\f1  of editing commands and ICS command shortcuts.
-
-\par Some useful ICS commands include }{\b\f1 who}{\f1  to see who is logged on, }{\b\f1 games}{\f1  to see what games are being played, }{\b\f1 match}{\f1  to challenge another player to a game, }{\b\f1 observe}{\f1  to observe an ongoing game, }{\b\f1 
-examine}{\f1  or }{\b\f1 smoves}{\f1  to review a recently completed game, and of course }{\b\f1 help}{\f1 . 
-\par Whenever you ask to observe an ongoing game, review a completed game, or resume an adjourned game, WinBoard retrieves and parses the list of past moves from the ICS, so you can review them with }{\f1\uldb Forward}{\v\f1 Forward}{\f1  and }{\f1\uldb 
-Backward}{\v\f1 Backward}{\f1  or save them with }{\f1\uldb Save Game}{\v\f1 SaveGame}{\f1 .
-\par Some special ICS Client features are activated when you are in }{\b\f1 examine}{\f1  or }{\b\f1 bsetup }{\f1 mode on ICS. See the descriptions of the menu commands }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , }{\f1\uldb Backward}{\v\f1 Backward}{\f1 , }{
-\f1\uldb Pause}{\v\f1 Pause}{\f1 , and }{\f1\uldb Stop Examining}{\v\f1 StopExamining}{\f1  below. You can also issue the ICS position-editing comma
-nds with the mouse. Move pieces by dragging with the left mouse button, or by left-clicking once on the starting square and once on the ending square. Press the right mouse button over a square for a context menu that lets you drop a new piece, empty the 
-s
-quare, or clear the board. Click on the White or Black clock to set the side to play. You cannot set the side to play or drag pieces to arbitrary squares while examining on ICC, but you can do so in bsetup mode on FICS. You can also make moves by typing t
-hem into the ICS window; you may have to do this occasionally if you are playing a chess variant whose rules WinBoard does not understand, such as Fischer Random.
-\par If you are playing a bughouse game on the ICS, a list of the offboard pieces that each player 
-holds is shown in the window title bar. To drop an offboard piece, press the right mouse button over an empty square to bring up a context menu. To observe your partner's games, start a second copy of WinBoard, log in as a guest, and use the ICS }{\b\f1 
-follow}{\f1  or }{\b\f1 pfollow}{\f1  command in the new window.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Edit Game}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditGame}}}{\f1  Edit Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Allows you to make moves for both Black and White, and to change moves after backing up with the }{\f1\uldb Backward}{\v\f1 Backward}{\f1 
- command. The clocks do not run, but you can adjust their reading by clicking on them. A left-click subtracts one minute, a right-click adds one minute.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-In chess engine mode, the chess engine continues to check moves for legality but does not participate in the game. You can bring the chess engine back into the game by selecting }{\f1\uldb Machine White}{\v\f1 MachineWhite}{\f1 , }{\f1\uldb Machine Black}
-{\v\f1 MachineBlack}{\f1 , or }{\f1\uldb Two Machines}{\v\f1 TwoMachines}{\f1 .
-\par In ICS mode, the moves are not sent to the ICS: Edit Game takes WinBoard out of ICS Client mode and lets you edit games locally. If you want to edit a game on ICS in a way that other ICS users can see, use the ICS }{\b\f1 examine}{\f1 
- command or start an ICS match against yourself.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Edit Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditPosition}}}{\f1  Edit Position
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you set up an arbitrary board position. Use the left mouse button to drag pieces to new squares, or to d
-elete a piece by dragging it off the board or dragging an empty square on top of it. To drop a new piece on a square, press the right mouse button over the square. This brings up a menu of pieces. Additional menu choices let you empty the square or clear 
-the board. You can set the side to play next by clicking on the White or Black indicator at the top of the screen. }{\f1\cf11 The pop-up menu also contains options to \lquote promote\rquote  or \lquote demote\rquote 
- the piece currently in the square. (In variants like Crazyhouse a piece has a d
-ifferent representation when it is a promoted Pawn rater than an original piece.) This allows you to create some of the not-so-common pieces (e.g. a Unicorn is a promoted King, a Commoner is a demoted King).}{\f1 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Selecting Edit Position causes WinBoard}{\i\f1  }{\f1 to discard all remembered moves in the current game.
-\par In ICS mode, change made to the position by Edit Position are not sent to the ICS: Edit Position takes WinBoard out of ICS Client mode and lets you edit positions locally. If you want to edit positions o
-n ICS in a way that other ICS users can see, use the ICS }{\b\f1 examine}{\f1  command, or start an ICS match against yourself. (See also }{\f1\uldb ICS Client}{\v\f1 ICSClient}{\f1  above.)
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Show Engine Output}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Show Engine Output}}}{\f1\cf6  Show Engine Output
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to showing the thinking output of the engine(s), as controlled by \ldblquote Show Thinking\rdblquote .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Show Evaluation Graph}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Show Evaluation Graph}}}{\f1\cf6  Show Evaluation Graph
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to displaying a graph, representing the development of the engine score(s) from the current game over time. (Needs \ldblquote show Thinking
-\rdblquote  to be enabled in order to work.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Show Game List}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ShowGameList}}}{\f1  Show Game List
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Shows or hides the list of games generated by the last }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1  command.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Show Move History}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Show Move History}}}{\f1\cf6  Show Move History
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to showing the game currently in progress.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Training}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Training}}}{\f1  Training
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Training mode lets you interactively guess the moves of a game for one of the players. While in Training mode, the navigation button
-s are disabled. You guess the next move of the game by playing the move on the board (or using the }{\uldb Type In Move}{\v\uldb TypeInMove}{ command). If the move played matches the next move of the game, the move is accepted and the opponent\rquote 
-s response is autoplayed.  If the move played is incorrect, an error message is displayed. 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Edit Tags}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditTags}}}{\f1  Edit Tags
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you edit the PGN (portable game notation) tags for the current game. After editing, the tags must still conform to the PGN tag syntax:
-\par }\pard\plain \s43\li520\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid {\f2 \line <tag-section> ::= <tag-pair> <tag-section>\line                   <empty>\line <tag-pair>    ::= [ <tag-name> <tag-value> ]\line 
-<tag-name>    ::= <identifier>\line <tag-value>   ::= <string>
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 See the PGN Standard for full details. Here is an example:
-\par }\pard\plain \s43\li520\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid {\f2 \line [Event "Portoroz Interzonal"]\line [Site "Portoroz, Yugoslavia"]\line [Date "1958.08.16"]\line [Round "8"]\line 
-[White "Robert J. Fischer"]\line [Black "Bent Larsen"]\line [Result "1-0"]
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Any characters that do not match this syntax are silently ignored. Note that the PGN standard requires all games to have at least
- the seven tags shown above. Any that you omit will be filled in by WinBoard with }{\f2 "?"}{\f1  (unknown value) or }{\f2 "-"}{\f1  (inapplicable value).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Edit Comment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditComment}}}{\f1  Edit Comment
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Adds or modifies a comment on the current position. Comments are saved by }{\f1\uldb Save Game}{\v\f1 SaveGame}{\f1  and are displayed by }{\f1\uldb Load Game}{\v\f1 
-LoadGame}{\f1 , }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , and }{\f1\uldb Backward}{\v\f1 Backward}{\f1 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Enter Username}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 EnterUsername}}}{\f1\cf11  Enter Username
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 Allows you to type the name of the human player, which will appear in the PGN header and in the window title.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Pause}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Pause}}}{\f1  Pause
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Pauses updates to the board, and if you are playing against a local chess engine, also pauses your clock. To continue, select Pause again, and the display will automatically update to the latest position. The }{\b\f1 P}{\f1  (or }{\b\f1 C}{\f1 
-) button is equivalent to selecting Pause.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you select Pause when you are playing{\*\bkmkstart WHATSelSavT}{\*\bkmkend WHATSelSavT} {\*\bkmkstart fWHATtopic}against{\*\bkmkend fWHATtopic}
- a chess engine and it is not your move, the chess engine\rquote s clock will continue to run and it will eventually make a move, at which point bo
-th clocks will stop. Since board updates are paused, however, you will not see the move until you exit from Pause mode (or select }{\f1\uldb Forward}{\v\f1 Forward}{\f1 ). This behavior is meant to simulate adjournment with a sealed move.
-\par If you select Pause while you are in }{\b\f1 examine}{\f1 
- mode on ICS, you can step backward and forward in the current history of the examined game without affecting the other examiners or observers. Select Pause again to reconnect yourself to the current state of the game on ICS.
-\par If you select Pause while you are loading a game, the game stops loading. You can load more moves one at a time by selecting }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , or resume automatic loading by selecting Pause again.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Action Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ActionMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Action Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  Action Menu
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Most of these commands are available in chess server mode only.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Accept}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Accept}}}{\f1  Accept
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Accepts a pending match offer. If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Decline}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Decline}}}{\f1  Decline
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Declines a pending offer (match, draw, etc.). If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice.
-
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Rematch}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Rematch}}}{\f1  Rematch
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Issues the ICS }{\b\f1 rematch}{\f1  command, which asks for another game against your last opponent with the same time control and rule set.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Call Flag}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  CallFlag}}}{\f1  Call Flag
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Calls your opponent's flag, claiming a win on time, or claiming a draw if you are both out of time. You can also call your opponent's flag by clicking on his clock.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Draw}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Draw}}}{\f1  Draw
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Offers a draw to your opponent, accepts a pending draw offer from your opponent, or claims a draw by repetition or the 50-move rule, as appropriate.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Adjourn}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Adjourn}}}{\f1  Adjourn
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Asks your opponent to agree to adjourning the current game, or agrees to a pending adjournment offer from your opponent. You continue an adjourne
-d ICS game by challenging the same player again with the ICS }{\b\f1 match}{\f1  command.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Abort}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Abort}}}{\f1  Abort
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Asks your opponent to agree to abort the current game, or agrees to a pending abort offer from your opponent. An aborted ICS game ends immediately without 
-affecting either player's rating.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Resign}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Resign}}}{\f1  Resign
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Resigns the game to your opponent.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Stop Observing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  StopObserving}}}{\f1  Stop Observing
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Ends your participation in observing a game, by issuing the ICS }{\b\f1 unobserve}{\f1  command.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Stop Examining}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  StopExamining}}}{\f1  Stop Examining
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Ends your participation in observing a game, by issuing the ICS }{\b\f1 unobserve}{\f1  command.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Adjudicate To White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicateToWhite}}}{\f1\cf6  Adjudicate To White
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 End the current game and stop participating engine. The result will appear in the PGN as a win for white.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Adjudicate To Black}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicateToBlack}}}{\f1\cf6  Adjudicate To Black
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Same as above, but game will appear as a win for black.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Adjudicate Draw}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicateDraw}}}{\f1\cf6  Adjudicate Draw
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Same as above, but game will appear as a draw.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20\cf6 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super K}{\f1  Step Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  StepMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Step Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  Step Menu
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Type In Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  TypeInMove}}}{\f1  Type In Move
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pops up a dialog box, into which you can type moves in standard algebraic chess notation. 
-(You can also get this dialog box by simply starting to type over the chessboard, except in ICS mode, where such typing is redirected into the ICS interaction window.)
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Backward}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Backward}}}{\f1  Backward
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Steps backward through a series of remembered moves. The }{\b\f1 <}{\f1  button is equivalent to selecting Backward}{\f1\cf2 , as is turning the mouse wheel towards you}{
-\f1 . In most modes, Backward only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or o
-bserving a game on the ICS, or loading a game. If you select Backward in any of these situations, you will not be allowed to make a different move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1  or }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1 
- if you want to change past moves.
-\par If you are examining a game on the ICS, the behavior of Backward depends on whether WinBoard}{\i\f1  }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1  mode. If Pause mode is off, Backward issues the ICS command}{\b\f1  backward}{\f1 
-, which backs up everyone's view of the game and allows you to make a different move. If Pause mode is on, Backward only backs up your local view.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Forward}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Forward}}}{\f1  Forward
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Steps forward through a series of remembered moves (undoing the effect of }{\f1\uldb Backward}{\v\f1\uldb Backward}{\f1 ) or through a game file. The }{\b\f1 >}{\f1 
- button is equivalent}{\f1\cf2 , as is turning the mouse wheel away from you}{\f1 .
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are examining a game on the ICS, the behavior of Forward depends on whether WinBoard}{\i\f1  }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1 
- mode. If Pause mode is off, Forward issues the ICS command}{\b\f1  forward}{\f1 
-, which moves everyone's view of the game forward along the current line. If Pause mode is on, Forward only moves your local view forward, and it will not go past the position the game was in when you paused.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Back to Start}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  BacktoStart}}}{\f1  Back to Start
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Jumps backward to the first remembered position in the game. The }{\b\f1 << }{\f1 button is equivalent.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In most modes, Back to Start only lets you look back at old positions; it does not retract moves. This is the case if you are playing ag
-ainst a chess engine, playing or observing a game on the ICS, or loading a game. If you select Back to Start in any of these situations, you will not be allowed to make a different move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1  or }{\f1\uldb 
-Edit Game}{\v\f1 EditGame}{\f1  if you want to change past moves; or use }{\f1\uldb New Game}{\v\f1 NewGame}{\f1  to start a new game.
-\par If you are examining a game on the ICS, the behavior of Back to Start depends on whether WinBoard}{\i\f1  }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1  mode. If Pause mode is off, Backward issues the ICS command }{\b\f1 backward 999999}{\f1 , which 
-backs up everyone's view of the game to the start and allows you to make different moves. If Pause mode is on, Back to Start only backs up your local view.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Forward to End}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ForwardtoEnd}}}{\f1  Forward to End
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Jumps forward to the last position in the game. The }{\b\f1 >>}{\f1  button is equivalent.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are examining a game on the ICS, the behavior of Forward to End depends on whether WinBoard}{\i\f1  }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1 
- mode. If Pause mode is off, Forward to End issues the ICS command }{\b\f1 forward 999999}{\f1 , which moves everyone's view of 
-the game forward to the end of the current line. If Pause mode is on, Forward to End only moves your local view forward, and it will not go past the position the game was in when you paused.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Revert}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Revert}}}{\f1  Revert
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are examining a game on the ICS, issues the ICS command }{\b\f1 revert}{\f1 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Truncate Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  TruncateGame}}}{\f1  Truncate Game
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Discards all remembered moves of the game beyond the current position. Puts WinBoard into }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1  mode if it was not there already.
-
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Move Now}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  MoveNow}}}{\f1  Move Now
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Forces the chess engine to move immediately. May not work with all chess engines.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Retract Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  RetractMove}}}{\f1  Retract Move
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Retracts your last move.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In chess engine mode, you can do this only after the chess engine has replied to your move. If the chess engine is still thinking, use }{\f1\uldb Move Now}{\v\f1 MoveNow}{
-\f1  first.
-\par In ICS mode, Retract Move issues the command }{\b\f1 takeback 1 }{\f1 or }{\b\f1 takeback 2}{\f1 , depending on whether it is your opponent's move or yours.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Options Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  OptionsMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Options Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  Options Menu
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Flip View}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  FlipView}}}{\f1  }{\f1\ul Flip View}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Inverts your view of the chessboard.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-If you are playing a game on the ICS, the board is always oriented at the start of the game so that your pawns move from the bottom of the window towards the top. Otherwise, the starting position is determined by the }{\f1\uldb flipView}{\v\f1 
-flipViewOption}{\f1  command line option.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\ul\cf11 Swap Clocks}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\ul\cf11 Swap Clocks}}}{\f1\cf11  }{\f1\ul\cf11 Swap Clocks}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Interchanges the position of the white and black clocks on the screen. Intended for manually-operated computer-computer games, where the 
-monitor is standing to the side of the playing board, to make sure that the operator sees the time of his own machine on his side of the table. Note that it is possible to adjust the clocks in steps of one minute, by left- (decrement) or right-clicking (i
-ncrement) it with the mouse in \ldblquote Edit Game\rdblquote  mode. (Clicking the clocks in other modes is interpreted as claiming the flag.)
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{
- General Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ GeneralOptions}}}{\f1\ul General}{\f1 
-\par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Always On Top}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super #}{\f1  AlwaysOnTop}}}{\f1  Always On Top
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on, WinBoard sets its chessboard to be a }{\i\f1 topmost}{\f1  window, meaning that it always appears on top of all ordinary windows on the screen.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Always Queen}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AlwaysQueen}}}{\f1  Always Queen
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Always Queen is off, WinBoard brings up a dialog box whe
-never you move a pawn to the last rank, asking what piece you want to promote it to. If the option is on, your pawns are always promoted to queens. Your opponent can still underpromote, however.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Animate Dragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnimateDragging}}}{\f1  Animate Dragging
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-If Animate Dragging is on while you are dragging a piece with the mouse, an image of the piece follows the mouse cursor. If Animate Dragging is off, there is no visual feedback while you are
-\par dragging a piece, but if Animate Moving is on, the move will be animated when it is complete.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Animate Moving}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnimateMoving}}}{\f1  Animate Moving
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-If Animate Moving is on, all piece moves are animated.  An image of the piece is shown moving from the old square to the new square when the move is completed (unless the move 
-was already animated by Animate Dragging). If Animate Moving is off, a moved piece instantly disappears from its old square and reappears on its new square when the move is complete.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Auto Flag}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AutoflagCmd}}}{\f1  Auto Flag
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on and one playe
-r runs out of time before the other, WinBoard will automatically call his flag, claiming a win on time. In ICS mode, Auto Flag will only call your opponent's flag, not yours, and the ICS may award you a draw instead of a win if you have insufficient matin
-g material. On most chess servers, you can now do}{\b\f1  set autoflag 1 }{\f1 instead and have the server call the flag. In local chess engine mode, WinBoard may call either player's flag and will not take material into account.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Auto Flip View}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ AutoFlipView}}}{\b  Auto Flip View
-\par }{If this option is on when you}{\f1  start a game, the board will be automatically oriented so that your pawns move from the bottom of the window towards the top.}{
-\par }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Auto Raise Board}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\super #}{ AutoRaiseBoard}}}{\b  Auto Raise Board
-\par }{If this}{\v autoFlipViewOption}{ option is on, whenever a new game begins, the chessboard window will be deiconized (if necessary) and raised to the top of the stack of windows on your screen.
-\par }\pard\plain \s2\li120\sb80\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Blindfold}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ BlindfoldCmd}}}{Blindfold
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {If Blindfold is on, WinBoard displays a blank board. Moves can sti
-ll be entered with the mouse, either by dragging the (invisible) piece or clicking the starting and ending square. You can also enter your move by typing it on the keyboard}{\f1 .}{
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Highlight Dragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  HighlightDragging}}}{\f1  Highlight Dragging
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Highlight Draggi
-ng is on while you are dragging a piece with the mouse, the starting square and the square that the mouse cursor is over are highlighted. This option works even if Animate Dragging is off.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Extended PGN Info}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 ExtendedPGNInfo}}}{\f1\cf6  Extended PGN Info
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 
-The PGN will contain the engine search depth, score and time for each move where the depth is non-zero, as a comment behind the move if this option is on. Works only when \ldblquote Show Thinking\rdblquote 
- is enabled. The recorded time is the time reported by the engine.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Extra Info In Move History}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 ExtraInfoInMoveHistory}}}{\f1\cf6  Extra Info In Move History
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Same as above, but in move-history window. 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Highlight Last Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  HighlightLastMove}}}{\f1  Highlight Last Move
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Highlight Last Move is on, after a move is made, the starting and ending squares remain highlighted. In addition, after you use }{\f1\uldb Backward}{\v\f1 Backward}{\f1 
- or }{\f1\uldb Back to Start}{\v\f1 BackToStart}{\f1 , the starting and ending squares of the last move to be }{\i\f1 unmade}{\f1  are highlighted.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Periodic Updates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PeriodicUpdatesCmd}}}{\f1  Periodic Updates
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Per
-iodic Updates is on, the Analysis window is updated every two seconds. If not, it is updated only when the best move found changes. The Analysis window currently works only with Crafty, and Periodic Updates may not work with all versions of Crafty.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  Ponder Next Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  PonderNextMoveCmd}}}{\f1  Ponder Next Move
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is off, the chess engine will think only when it is on move. If the option is on, the engine will also think while waiting for you to make your move.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Popup Exit Message}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PopupExitMessageCmd}}}{\f1  Popup Exit Message
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-If this option is on, when WinBoard wants to display a message just before exiting, it brings up a modal dialog box and waits for you to click OK before exiting. If the option is off, WinBoard prints exits immediately without showing the message. If }{
-\f1\uldb debugMode}{\v\f1 debugMode}{\f1  is on, however, the message will appear in the debug log.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Popup Move Errors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PopupMoveErrorsCmd}}}{\f1  Popup Move Errors
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is off, when you make an error in moving (such as attempting an illegal move or mo
-ving the wrong color piece), the error message is displayed in the message area. If the option is on, move errors are displayed in small popup windows like other errors. You can dismiss an error popup either by clicking its OK button or by clicking anywhe
-re on the board, including downclicking to start a move.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Show Button Bar}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ShowButtonBarCmd}}}{\f1  Show Button Bar
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Show Button Bar is on, WinBoard displays on-screen }{\f1\uldb buttons}{\v\f1 BUTTONS}{\f1 
- to step forward, backward, or pause the game. If it is off, the buttons are hidden, making the message line wider.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Show Coords}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ShowCoordsCmd}}}{\f1  Show Coords
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Show Coords is on, WinBoard displays algebraic coordinates along the board's left and bottom edges. 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Show Thinking}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ShowThinkingCmd}}}{\f1  Show Thinking
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard displays the chess engine\rquote 
-s current search depth and its notion of the score and best line of play from the current position as it is thinking. The score indicates 
-how many pawns ahead (or if negative, behind) the engine thinks it is. In matches between two machines, the score is prefixed by W or B to indicate whether it is showing White's thinking or Black's.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Test Legality}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  TestLegalityCmd}}}{\f1  Test Legality
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Tes
-t Legality is on, WinBoard tests whether the moves you enter with the mouse or read from game files are legal, and displays an error if they are not. Turn this option off if you are playing a chess variant that WinBoard does not understand. (Bughouse, sui
-cide, and wild variants where the king may castle after starting on the }{\b\f1 d}{\f1  file are generally supported with Test Legality on. }{\f1\cf11 
-The same holds for variants with non-FIDE pieces, like shatranj, xangqi, shogi, gothic, capablanca, courier, knightmate: WinBoard k
-nows how all pieces occurring in those variants move. Falcon, cylinder and berolina are only partly supported, though, and the latter two should definitely be played with legality testing off, and falcon uses a wildcard piece for the Falcons, so it consid
-ers any move of them legal, but might miss checkmates that involve a Falcon. So you should not play it with claim verification switched on.}{\f1 )
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Hide Thinking From Human}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 HideThinkingFromHuman}}}{\f1\cf6  Hide Thinking From Human
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 An alternative to suppressing the Thinking Output in the display above the board by switching \ldblquote Show Thinking\rdblquote 
- off, but doing it in a way that still allows the extended PGN info to be recorded.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Highlight Move With Arrow}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 HighlightMoveWithArrow}}}{\f1\cf6  Highlight Move With Arrow
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 A big, fat arrow is drawn between the start and target field of the last move, so you cannot possibly miss it. 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Board Options}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ BoardOptions}}}{\f1\ul Board
-\par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Board Size}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid 
-{\cs58\f1\super #}{\f1  BoardSizeCmd}}}{\f1  Board Size
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Determines how large the board will be and what fonts and piece bitmaps will be used. On a Titanic board the piece bitmaps are 129x129 pixels, on Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72, Medium 64x64, Moderate 58x5
-8, Average 54x54, Middling 49x49, Mediocre 45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25, and Tiny 21x21. The smaller boards have no system menu, but you can minimize or close them from the File menu.
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 You can also change the board size by dragging the window edges or corners with the mouse. The board will snap to the largest size that fits into the area you outline.
-
-\par }{\cf11 Note that only sizes Bulky, Middling and to a lesser extent Petite have built-in bitmaps for the non-FIDE- pieces. Arch
-bishop, Chancellor and the wildcard Lance exist in all sizes from Petite to Bulky, though. In size Moderate, variant shogi uses the traditional Japanese piece representation.}{\f1\cf11 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Board Colors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  BoardColors}}}{\f1  Board Colors
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the colors WinBoard is using to draw the board and pieces.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 All White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 AllWhite}}}{\f1\cf11  All White
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Uses the representation of the white pieces (a filled-in black outline) also for the black pieces (where you can fill them with another color to 
-distinguish them). If you do not choose a very dark color for the black pieces, they look very ugly without outline, and using this option can fix that.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Flip Black}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 FlipBlack}}}{\f1\cf11  Flip Black
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Displays the black pieces upside down (or the white pieces in \ldblquote Flip View\rdblquote 
-). This is useful in Shogi, when you want to use the traditional Japanese representation of the pieces.
-\par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{
-\f1\ul\cf6 Adjudications}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\ul\cf6 Adjudications}}}{\f1\ul\cf6 Adjudications
-\par }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Ponder Next Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 PonderNextMove}}}{\f1\cf6  Ponder Next Move,}{\cs58\f1\cf6\super  K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super K}{\f1  }{\f1\cf6 Show Thinking}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 ShowThinking}}}{\f1\cf6  Show Thinking, }{\cs58\f1\cf6\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Hide Thinking From Human}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 HideThinkingFromHuman}}}{\f1\cf6  Hide Thinking from Human and }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{
-\f1  }{\f1\cf6 Periodic Updates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 PeriodicUpdates}}}{\f1\cf6  Periodic Updates
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Duplicates of the controls in the \ldblquote General\rdblquote  option menu.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Adjudicate Draw Moves}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicateDrawMoves}}}{\f1\cf6  Adjudicate Draw Moves
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 
-Adjudicate a draw after the given number of moves, to prevent games from dragging on forever if two engines in a dead-drawn position, conspire to avoid 50-move draws. This and the folowing options are only active in \ldblquote Two Machines\rdblquote  m
-ode.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Adjudicate Loss Threshold}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicateLossThreshold}}}{\f1\cf6  Adjudicate Loss Threshold
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Adjudicate the game as a loss when both engines agree that the (negative) score is  below the given threshold for the duration of 6 consecutive plies.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Verify Claims}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 VerifyClaims}}}{\f1\cf11  Verify Claims
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Verify result claims made by engines when they terminate the game. If needed, correct the results to a loss for the engine making the false claim. Needs \ldblquote 
-Test Legality\rdblquote  to be on in order to work.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Detect Mates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 DetectMates}}}{\f1\cf11  Detect Mates
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-Let WinBoard detect checkmate and stalemate, even before the engine gets the chance to claim it. Useful with buggy engines, that exit without a claim, or just hang. Needs \ldblquote Test Legality\rdblquote  to be on in order to work.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Draw If Insufficient Material}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 DrawIfInsufficientMaterial}}}{\f1\cf11  Draw If Insufficient Material
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-If this option is on, WinBoard will recognize KBKB positions with equally colored Bishops, KBK, KNK, and KK positions as draws, even before the engine can claim them. Needs \ldblquote Test Legality\rdblquote  to be on in order to work.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 Adjudicate Trivial Draws}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 AdjudicateTrivialDraws}}}{\f1\cf11  Adjudicate Trivial Draws
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is on, KBKB (with B on unlike color), KBKN, KNKN, KNNK, KRKR and KQKQ positions will be adjudicated draw after 6 ply. For KQKQ this i
-s not really sound, and in the future it might be taken out of this option. But as long as tablebase adjudications are not implemented, it seems best to group this end-game with the trivial draws. Needs \ldblquote Test Legality\rdblquote 
- to be on in order to work.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 N-Move Rule}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 N-MoveRule}}}{\f1\cf11  N-Move Rule
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Here you can set the number of reversible moves (non-pawn, non-capture) after which WinBoard should adjudicate a game as draw. Engine draw claims are always consider
-ed valid after 50 moves (in the context of \ldblquote Verify Claims\rdblquote 
-), but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to a smaller value if you are impatient.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 N-Fold Repetition Rule}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 N-FoldRepetitionRule}}}{\f1\cf11  N-Fold Repetition Rule
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Here you can set the number of repetitions of the same position that should occur in order for WinBoard to adjudicate the game as draw. Engine 
-draw claims are always considered valid after 3 repetitions (in the context of \ldblquote Verify Claims\rdblquote 
-) , but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to 2 if you are impatient. (Do not set it to 1!)
-\par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{
-\f1\ul\cf6 Engine Settings}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\ul\cf6 Engine Settings}}}{\f1\ul\cf6 Engine Settings
-\par }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Polyglot Directory}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 PolyglotDirectory}}}{\f1\cf6  Polyglot Directory
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 
-If WinBoard knows where to find Polyglot, you can install UCI engines as if they were WinBoard engines, and WinBoard will automatically invoke Polyglot as an adapter to run them.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 Hash Size}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 HashSize}}}{\f1\cf6  Hash Size, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 EGTB Path}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 
-EGTBPath}}}{\f1\cf6  EGTB Path, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 EGTB Cache Size}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 EGTBCacheSize}}}{\f1\cf6  EGTB Cache Size, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Opening Book}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 OpeningBook}}}{\f1\cf6  Opening Book, }{
-\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Number of CPUs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Number of CPUs}}}{\f1\cf6  Number of CPUs
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 These are options that UCI engines expect to be specified. }{\f1\cf2 
-WinBoard protocol now also allows native WinBoard engines to request similar information, so it might be used for these engines as well. The memory size specified by the WinBoard-protocol \lquote memory\rquote  
-command is the sum of the hash and EGTB cache sizes. The specified opening book, when enabled through the \lquote Use Book\rquote 
- check box, will be used as GUI book for engines that do not have their own book (as indicated by the check boxes). It must be a book in Polyglot format.}{\f1\cf6 
-\par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b 
-\par }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ ICS Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\super #}{ ICSOptions}}}{\b ICS
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Auto Comment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AutoCommentCmd}}}{\f1  Auto Comment
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Comment is on, any remarks made on ICS while you are observing or playing a game are recorded as a comment on the current move. This include
-s remarks made with the ICS commands }{\b\f1 say, tell, whisper, }{\f1 and }{\b\f1 kibitz}{\f1 . Limitation: remarks that you type yourself are not 
-\par recognized; WinBoard scans only the output from ICS, not the input you type to it.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Auto Observe}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AutobsCmd}}}{\f1  Auto Observe
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Observe is on and you add a player to your }{\b\f1 gnotify}{\f1 
- list on ICS, WinBoard will automatically observe all of that player's games, unless you are doing something else (such as observing or playing a game of your own) when one starts. On most chess servers, you can now do }{\b\f1 follow }{\b\i\f1 player}{
-\f1  instead, and the server will automatically observe all of }{\b\i\f1 player\rquote s}{\f1  games.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Get Move List}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  GetMoveListCmd}}}{\f1  Get Move List
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Get Move List is on, whenever WinBoard}{\i\f1  }{\f1 receives the first board of a new ICS game (or a different ICS g
-ame from the one it is currently displaying), it retrieves the list of past moves from the server. You can then review the moves with the Forward and Backward commands or save them with Save Game. You might want to turn off this option if you are observin
-g several blitz games at once, to keep from wasting time and network bandwidth fetching the move lists over and over. If you turn this option on while a game is in progress, WinBoard}{\i\f1  }{\f1 immediately fetches the current move list.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Local Line Editing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LocalLineEditing}}}{\f1  Local Line Editing
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Local Line Editing is }{\b\f1 on}{\f1 
-, your machine handles echoing, backspacing, etc., for the characters that you type into the ICS Interaction window. Output is forwarded to the ICS only when you hit Enter.The Enter key produces a newline character, also known as Ctrl+J, \\
-n, LF, linefeed, or decimal ASCII code 10. In this mode you can force a control character into the edit buffer by preceding it with Ctrl+Q (\ldblquote quote\rdblquote ); however, the edit buffer will not accept certain control characte
-rs even when they are quoted in this way. You can force a control character to be sent immediately to ICS, bypassing the edit buffer, by preceding it with Ctrl+S (\ldblquote send\rdblquote ).
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard keeps a history of lines you recently typed in Local Line Editing mode. You
- can bring back old lines by pressing the cursor up key in the text entry box. Press the cursor down key to go back down to newer lines.
-\par If Local Line Editing is }{\b\f1 off}{\f1 , all characters are sent to ICS as you type them. The Enter key produces a carriage return character, also known as Ctrl+M, \\
-r, CR, or decimal ASCII code 13. Use Ctrl+Backspace if you need the ASCII DEL character. You can enter any character code by holding down the Alt key and typing its decimal value (always beginning with 0) on the numeric k
-eypad; this is a little-known standard feature of Windows.
-\par In both modes, if WinBoard}{\i\f1 \rquote s }{\f1 internal telnet protocol implementation is active, it translates all \\n characters to the standard telnet end-of-line sequence \\r\\n just before sending them out to ICS; see }{\f1\uldb telnetProgram}{
-\v\f1 telnetProgram}{\f1 .
-\par It is generally not a good idea to turn off this option while connected to ICS. If you are tempted to do so because everything you type is being echoed an extra time, see the paragraph about extra echoes under }{\f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{
-\f1  below.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Quiet Play
-}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  QuietPlayCmd}}}{\f1  Quiet Play
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Quiet Play is on, WinBoard will automatically issue an ICS }{\b\f1 set shout 0}{\f1  command whenever you start a game and a }{\b\f1 set shout 1}{\f1 
- command whenever you finish one. Thus you will not be distracted by shouts from other ICS users while playing.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Premove}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PremoveCmd}}}{\f1  Premove
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Premove allows you to play a move on the board before you have received your opponent\rquote s move.  This move is highlighted on the board using the }{\uldb Premove Highlight
-}{\v\uldb premoveHighlightColor}{ color, and is sent to the ICS as soon as your opponent\rquote s move is received. To cancel a premove, either click twice on the piece that was premoved or premove an illegal move.
-\par This group of controls allows you to set the following options: }{\uldb premove}{\v premove}{, }{\uldb premoveWhite}{\v premoveWhite}{, }{\uldb premoveWhiteText}{\v premoveWhiteText}{, }{\uldb premoveBlack}{\v premoveBlack}{, }{\uldb premoveBlackText}{\v 
-premoveBlackText}{.
-\par }\pard\plain \s2\li120\sb80\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ ICS Alarm}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ ICSAlarm}}}{ICS Alarm
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {When }{\b icsAlarm}{ is set to True, the }{\uldb alarm sound}{\v soundIcsAlarm}{ is played when your clock counts down to }{\uldb icsAlarmTime}{\v icsAlarmTime}{
- seconds.  For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the }{\uldb icsAlarmTime}{\v icsAlarmTime}{.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- ICS Interaction Colors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSInteractionColors}}}{\f1  ICS Interaction Colors
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Lets you change the colors and type styles that WinBoard uses to distinguish between different types of messages in the ICS Interaction window. The types distinguished are: shout, sshout, channel 1 tell, other channel tell, kibitz (or whi
-sper), personal tell (or new message notification), challenge, request (including abort, adjourn, draw, pause, and takeback), seek, and normal (all other messages).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Fonts}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Fonts}}}{\f1  }{\f1\ul Fonts}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the fonts WinBoard is using.  The clock font, mess
-age font and coordinates font are specific to each board size.  The tags font, comments font and ICS Interaction font are not dependent on the current size of the board.  The \ldblquote Revert to Defaults\rdblquote 
- button will reset the clock font, message font and coordinates font for the current board size, and will set the tags font, message font and Ics Interaction font for all board sizes.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Sounds}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Sounds}}}{\f1  }{\f1\ul Sounds}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the sounds that WinBoard plays for various events.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Move Sound}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  MoveSound}}}{\f1 
-If the Move sound is on, WinBoard alerts you by playing a sound after each of your opponent's moves (or after every move if you are observing a game on the Internet Chess Server). The sound is not played after moves you make or moves read from a saved gam
-e file. If you turn on the Move sound when using WinBoard with the Internet Chess Server, you will probably want to give the }{\b\f1 set bell 0}{\f1 
- command to the ICS. Otherwise the ICS will send a bell character after every move (not just yours), causing WinBoard to p
-lay the ICS Bell sound too. Alternatively, you could turn off the ICS Bell sound in WinBoard, but that might cause you to miss ICS alerts for other interesting events.
-\par The other sound events correspond directly to the types of messages that the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1  option knows how to colorize.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Sounds}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Sounds}}}{\f1  }{\f1\ul Game List}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you select which information is displayed in the Game List window.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Communications}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Communications}}}{\f1  }{\f1\ul Communications}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the communication port parameters when the }{\f1\uldb internetChessServerComPort}{\v\f1 internetChessServerComPort}{\f1  option is in use.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Load Game}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadGameOptns}}}{\f1  }{\f1\ul Load Game}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change options used while loading games (}{\f1\uldb timeDelay}{\v\f1 timeDelay}{\f1  option).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Save Game}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SaveGameOptns}}}{\f1  }{\f1\ul Save Game}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change options used for saving games (}{\f1\uldb autoSaveGames}{\v\f1 autoSaveGames}{\f1 , }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1 , and }{\f1\uldb 
-saveGameFile}{\v\f1 saveGameFile}{\f1  options).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Time Control}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  TimeControlCmd}}}{\f1  }{\f1\ul Time Control}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the time control to be used in games against a chess engine. Two types of timing are available.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 With conventional chess clocks, each player begins with his clock set to the }{\f1\uldb timeControl}{\v\f1 timeControl}{\f1  period. When both players have made }{
-\f1\uldb movesPerSession}{\v\f1 movesPerSession}{\f1  moves, a new time control period begins. The time in the new period is added to whatever time the players have left on their clocks.
-\par With incremental clocks, each player is given an initial time allotment, and a }{\f1\uldb timeIncrement}{\v\f1 timeIncrement}{\f1  is added to his clock after 
-every move. The increment may be zero, in which case the entire game must be finished within the initial time allotment.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Save Settings Now}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SaveSettings}}}{\f1  }{\f1\ul Save Settings Now}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Save the current option settings to a file, along with the current window sizes and positions, to be automatically reloaded next time WinBoard is run. See }{\f1\uldb 
-Settings}{\v\f1 Settings}{\f1  for the fine points.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Save Settings on Exit}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SaveSettingsOnExit}}}{\f1  }{\f1\ul Save Settings on Exit}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on, the current settings are automatically saved when WinBoard exits, as with Save Settings Now.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Help Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  HelpMenu}}}{\b0\f1\fs18\up6  }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Help Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20 
- Help Menu
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Help Contents}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  HelpContents}}}{\f1  Help Contents
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Brings up this help file, starting at the Contents page.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Search for Help on}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SearchHelp}}}{\f1  Help Index
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Brings up this help file, starting at the Index/Find dialog.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- How to Use Help}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  HelpHelp}}}{\f1  How to Use Help
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Brings up the standard help file that explains how to use Windows Help.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Hint}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Hint}}}{\f1  Hint
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays a move hint from the chess engine.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Book}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Book}}}{\f1  Book
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays a list of possible moves from the chess engine\rquote s opening book. The first column gives moves, the second column gives one possible
- response for each move, and the third column shows the number of lines in the book that include the move from the first column. If you select this option and nothing happens, the engine is out of its book or does not support the book command.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  About Win
-Board}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AboutWinBoard}}}{\f1  About WinBoard
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays the WinBoard version number.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  ICS Interaction Context Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSInteractionContextMenu}}}{\b0\f1\fs18\up6  }{\cs58\f1\fs20\super ${\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  ICS Interaction Context Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}
-{\f1  main}}}{\f1\fs20 ICS Interaction Context Menu
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-To see this menu, press the right mouse button anywhere in the output (upper) pane of the ICS Interaction window. Pressing the right mouse button in the input (lower) pane gives a standard editing context menu, not described here. Use the }{\b\f1 help}{
-\f1  command on ICS to learn what these commands mean.
-\par You can customize the lower part of this menu (below the Paste option) by setting the }{\f1\uldb icsMenu}{\v\f1 icsMenu}{\f1  option. The easiest way to accomplish this is to edit your }{\f1\uldb settings file}{\v\f1 settings}{\f1 
- with Notepad or another plain text editor. Sorry, there is no graphical user interface for customizing the menu.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Copy and Paste}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  CopyAndPaste}}}{\f1  Copy and Paste
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copies the current selection to the clipboard, then pastes it to the input box. As a shortcut to this function, you can press the
- middle mouse button (if you have one), or Shift plus the right mouse button.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Copy}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Copy}}}{\f1  Copy
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copies the current selection to the clipboard.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Paste}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Paste}}}{\f1  Paste
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pastes the clipboard contents to the input box.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  Who}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  Who}}}{\f1  Who
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote who\rdblquote }{\b\i\f1  }{\f1 to ICS.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  Players}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  Players}}}{\f1  Players
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote players\rdblquote }{\b\i\f1  }{\f1 to ICS.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  Games}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  Games}}}{\f1  Games
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote games\rdblquote }{\b\i\f1  }{\f1 to ICS.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  Sought}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  Sought}}}{\f1  Sought
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote sought\rdblquote }{\b\i\f1  }{\f1 to ICS.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Tell}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Tell}}}{\f1  Tell (name)
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Inserts \ldblquote tell }{\i\f1 name }{\f1 \rdblquote }{\b\i\f1  }{\f1 into the input box. The string }{\i\f1 name }{\f1 
-is the current selection if it is not empty. Otherwise }{\i\f1 name }{\f1 is the word surrounding the mouse position, where a \ldblquote word\rdblquote  is a string of letters, digits, or hyphens (-), such as an ICS user handle or game number.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Message}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Message}}}{\f1  Message (name)
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Inserts \ldblquote message }{\i\f1 name }{\f1 \rdblquote }{\b\i\f1  }{\f1 into the input box, where }{\i\f1 name}{\f1  is as defined above.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Finger}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Finger}}}{\f1  Finger (name)
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote finger }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1  }{\f1 to ICS, where }{\i\f1 name}{\f1  is as defined above. 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Vars}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Vars}}}{\f1  Vars (name)
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote vars }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1  }{\f1 to ICS, where }{\i\f1 name}{\f1  is as defined above. 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Observe}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Observe}}}{\f1  Observe (name)
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote observe }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1  }{\f1 to ICS, where }{\i\f1 name}{\f1  is as defined above. Here }{\i\f1 name}{\f1 
- can be either a user handle or a game number.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Match}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Match}}}{\f1  Match (name)
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote match }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1  }{\f1 to ICS, where }{\i\f1 name}{\f1  is as defined above. 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  Play}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  Play}}}{\f1  Play (name)
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote play }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1  }{\f1 to ICS, where }{\i\f1 name}{\f1  is as defined above. Here }{\i\f1 name}{\f1 
- can be either a user handle or a seek ad number.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Buttons}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Buttons}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super $}{\f1  Buttons}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\b0\f1\fs18\up6  }{\f1\fs20 BUTTONS
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Back to Start}}}{\f1  <<
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Back to Start}{\v\f1 BacktoStart}{\f1 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Backward}}
-}{\f1  <
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Backward}{\v\f1 Backward}{\f1 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Pause}}}{
-\f1  P
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Pause}{\v\f1 Pause}{\f1 . The button label changes to }{\b\f1 C}{\f1  while WinBoard is pausing.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Forward}}}
-{\f1  >
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Forward}{\v\f1 Forward}{\f1 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- Forward to End}}}{\f1  >>
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Forward to End}{\v\f1 ForwardtoEnd}{\f1 .
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\par }{\cf2 Note that using the mouse wheel has the same effect as using the < or > button.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Command Line Options}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Options}}}{\f1\fs20  }{\cs58\f1\fs20\super #{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Options}}}{\f1\fs20  }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $
-}{\f1  Command Line Options}}}{\f1\fs20  }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  COMMAND LINE OPTIONS
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-All WinBoard options can be set either on the command line (if you start WinBoard by typing into an MSDOS Prompt box), in the Properties/Shortcut/Target box of a Windows shortcut, in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 
-, or in the Additional Options box of the WinBoard startup dialog. Exactly the same syntax is used in all four places. Most options can also be set from the menus and saved using }{\f1\uldb Save Settings Now}{\v\f1 SaveSettings}{\f1  or }{\f1\uldb 
-Save Settings on Exit}{\v\f1 SaveSettingsOnExit}{\f1 , so most people will not need to read this section.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Most options have two names, a long one that is easy to read and a short one that is easy to type. To turn on a boolean (true/false) option }{\i\f1 opt}{\f1 
-, you can just give its short name preceded by a minus sign or slash (-}{\i\f1 opt}{\f1  or /}{\i\f1 opt}{\f1 ); to turn one off, prefix the short name by an \ldblquote x\rdblquote  or an extra minus sign (-x}{\i\f1 opt}{\f1  or /-}{\i\f1 opt}{\f1 
-). To set any other kind of option, or to set a boolean option using its long name, give the value after the name, separated by a space, colon, or equal sign. (-}{\i\f1 opt}{\f1  23 or /}{\i\f1 option}{\f1 
-:true). If a string option contains spaces or special characters, enclose it in double quotes and use the \\ quoting convention of C to name the special characters. Alternatively, you can enclose a string value in curly braces (/opt=\{string\}
-), as long as the value does not contain a closing curly brace. If a filename option contains spaces, enclose it in either single or double quotes. In filename options, the \\
- character is not treated specially, so use single quotes around the outside of the value if it has double quotes inside (and vice versa).
-\par When you start WinBoard, it will pop up the Startup dialog box unless you provide sufficient options on the command line for WinBoard to determine which major mode to be in and what engines to use or chess server to
- connect to. To bypass this box, you must at minimum give one of the three options }{\f1\uldb /cp}{\v\f1 cp}{\f1 , /}{\f1\uldb ics}{\v\f1 ics}{\f1 , or /}{\f1\uldb ncp}{\v\f1 ncp}{\f1 .  If you give the /cp option, you must also give the /}{\f1\uldb fcp}{
-\v\f1 fcp}{\f1  and /}{\f1\uldb scp}{\v\f1 scp}{\f1  options. If you give the /ics option, you must also give the /}{\f1\uldb icshost}{\v\f1 icshost}{\f1  option.
-\par }\pard\plain \s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\uldb Chess Engine Options}{\v\f1 ChessEngineOptions}{\f1 
-\par }{\f1\uldb UCI Engine Support                  !NEW!}{\v\f1 UCIEngineSupport}{\f1 
-\par }{\f1\uldb Internet Chess Server Options}{\v\f1 InternetChessServerOptions}{\f1 
-\par }{\f1\uldb Load and Save Options}{\v\f1 LoadAndSaveOptions}{\f1 
-\par }{\f1\uldb User Interface Options}{\v\f1 UserInterfaceOptions}{\f1 
-\par }{\f1\uldb Adjudication Options                   !NEW!}{\v\f1 AdjudicationOptions}{\f1 
-\par }{\f1\uldb Other Options}{\v\f1 OtherOptions}{\f1 
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Chess Engine Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Chess Engine Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ChessEngineOptions}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  Chess Engine Options
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  cp}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  cp}}}{\f1 /cp}{\b0\f1  or}{\f1  /xcp}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  chessProgram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  chessProgram}}}{\f1 
-/chessProgram }{\i\f1 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If true, puts WinBoard in chess engine mode. In this mode, you can play against a chess program running on your PC or use it as an analysis partner.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  tc}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  tc}}}{\f1 /tc }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  timeControl}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  timeControl}}}{\f1 /timeControl }{\i\f1 
-minutes[:seconds]
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Each player begins with his clock set to the timeControl period. Default: 5 minutes. The additional options movesPerSession and timeIncrement are mutually exclusive.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  mps}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  mps}}}{\f1 /mps }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  movesPerSession}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  movesPerSession}}}{\f1 /movesPerSession }{\i\f1 
-moves}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 When both players have made movesPerSession moves, a new timeControl period is added to both clocks. Default: 40 moves.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  inc}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  inc}}}{\f1 /inc }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  timeIncrement}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  timeIncrement}}}{\f1 /timeIncrement }{\i\f1 seconds
-
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is specified, movesPerSession is ignored. Instead
-, after each player's move, timeIncrement seconds are added to his clock. Use -timeIncrement 0 if you want to require the entire game to be played in one timeControl period, with no increment. Default: -1, which specifies movesPerSession mode.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  clock }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  clock }}}{\f1  /clock }{\b0\f1 or }{\f1 /xclock}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  clockMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  clockMode}}}{\f1 
- /clockMode }{\i\f1 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Determines whether or not to display the chess clocks. If clockMode is False, the clocks are not shown, but the side that is to play next is still highlighted. Also, unless sea
-rchTime is set, the chess engine still keeps track of the clock time and uses it to determine how fast to make its moves.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  st}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  st}}}{\f1  /st }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  searchTime }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  searchTime }}}{\f1  /searchTime }{\i\f1 
-minutes[:seconds]}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Tells the chess engine to spend at most the given amount of time searching for each of its moves. Without this option, the engine chooses its search time based on the number of moves and amount of time remaining until the next time control. Setting this o
-ption also sets clockMode to False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  sd}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  sd}}}{\f1  /depth }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  searchDepth}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  searchDepth}}}{\f1  /searchDepth }{\i\f1 number}{\f1 
-
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Tells the chess engine to look ahead at most the given number of moves when searching for a move to make. Without this option, the engine chooses i
-ts search depth based on the number of moves and amount of time remaining until the next time control. With the option, the engine will cut off its search early if it reaches the specified depth.
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 firstNPS}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 firstNPS}}}{\f1\cf11  /firstNPS }{\i\f1\cf11 number}{\f1\cf11 
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf11 secondNPS}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 secondNPS}}}{\f1\cf11  /secondNPS }{\i\f1\cf11 number}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-Tells the chess engine to use an internal time standard based on its node count, rather then wall-clock time, to make its time decisions. The time in virtual seconds should be obtained by dividing the node count through the given }{\i\f1\cf11 number}{
-\f1\cf11 , like the number was a rate in nodes per second. WinBoard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If }{\i\f1\cf11 number}{\f1\cf11 
- equals zero, it can obviously not be used to convert nodes to seconds, and the time reported by the engine is used to decrement the WinBoard clock. The engine is supposed to report in CPU time it uses, rather than wall-clock time in this mode. Th
-is option can provide fairer conditions for engine-engine matches on heavily loaded machines, or with very fast games (where the wall clock is too inaccurate). \ldblquote Show Thinking\rdblquote 
- must be on for this option to work. Not many engines might support this yet!
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 firstTimeOdds}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 firstTimeOdds}}}{\f1\cf11  /firstTimeOdds }{\i\f1\cf11 factor}{\f1\cf11 
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf11 secondTimeOdds}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 secondTimeOdds}}}{\f1\cf11  /secondTimeOdds }{\i\f1\cf11 factor}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Reduces the time given to the mentioned engine by the given }{\i\f1\cf11 factor}{\f1\cf11 
-. If pondering is off, the effect is indistinguishable from what would happen if the engine was running on a }{\i\f1\cf11 factor}{\f1\cf11  times slower machine.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  }{\f1\cf11 timeOddsMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  }{\f1\cf11 timeOddsMode}}}{\f1\cf11  /timeOddsMode }{\i\f1\cf11 mode
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-This option determines how the case is handled when both engines have a time-odds handicap. If mode=1, the engine that gets the most time will always get the nominal time, as specified by the time-control options, and its opponent\rquote 
-s time is normalized similarly. If mode=0, both play with reduced time.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  ponder}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {
-\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  ponder}}}{\f1  /ponder}{\b0\f1  or }{\f1 /xponder}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  ponderNextMove}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  ponderNextMove}}}{\f1  /ponderNextMove }{\i\f1 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Ponder Next Move}{\v\f1 ponderNextMoveCmd}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  thinking}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  thinking}}}{\f1  /thinking}{\b0\f1  or }{\f1 /xthinking}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  showThinking}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- showThinking}}}{\f1  /showThinking }{\i\f1 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Show Thinking}{\v\f1 showThinkingCmd}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  periodic }
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  periodic}}}{\f1  /periodic }{\b0\f1 or }{\f1 /xperiodic}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  periodicUpdates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  periodicUpdates}}}{
-\f1  /periodicUpdates }{\i\f1 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Periodic Updates}{\v\f1 periodicUpdatesCmd}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  mg }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  mg }}}{\f1  /mg }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  matchGames }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  matchGames}}}{\f1  /matchGames }{\i\f1 n
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Automatically runs an }{\b\i\f1 n}{\i\f1 -}{\f1 game match between two chess engines, with alternating colors. If the }{\f1\uldb loadGameFile}{\v\f1 loadGameFile}{\f1  or }
-{\f1\uldb loadPositionFile}{\v\f1 loadPositionFile}{\f1  option is set, WinBoard will start each game with the given opening moves or the given position; otherwise, the games will start with the standard initial chess position. If the }{\f1\uldb 
-saveGameFile}{\v\f1 saveGameFile}{\f1  option is set, a move record for the match will be appended to the specified file. If the }{\f1\uldb savePositionFile}{\v\f1 savePositionFile}{\f1 
- option is set, the final position reached in each game of the match will be appended to the specified file. When the match is over, WinBoard will display the match score and exit. Default: 0 (do not run a match).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  mm }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  mm }}}{\f1  /mm }{\b0\f1 or }{\f1 /xmm}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  matchMode }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  matchMode }}}{\f1 
- /matchMode }{\i\f1 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Provided for backward compatibility. If true and matchGames=0, sets matchGames=1.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 matchPause}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 matchPause}}}{\f1\cf11  /matchPause }{\i\f1\cf11 number}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Sets the length of the pause between games in match mode to }{\i\f1\cf11 number}{\f1\cf11 
- msec. Default value is 10000, i.e. 10 sec. (If this pause is too short, engines not implementing \lquote ping\rquote 
- will sometimes send the last move of their previous game only when a new game has started, at which time the move is illegal, and causes them to forfeit the game.)
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  fd}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  fd }}}{\f1  /fd }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  firstDirectory}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstDirectory}}}{\f1  /firstDirectory }{\i\f1 dir
-\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  sd}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  sd }}}{\f1  /sd }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondDirectory}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  secondDirectory}}}{\f1  /secondDirectory }{\i\f1 dir}{\cs58\f1\super  }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf11 fcp }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11  fcp }}}{\f1  /fcp }{\b0\f1 or}{\f1  }{
-\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11  firstChessProgram }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11  firstChessProgram }}}{\f1  /firstChessProgram }{\i\f1 command\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11  scp }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11  scp }}}{\f1  /scp }{\b0\f1 or}{\f1  }{\cs58\f1\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11  secondChessProgram }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11  secondChessProgram}{\f1  }}}{\f1  /secondChessProgram }{\i\f1 command}{\cs58\f1\super  }{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-Names of the chess engines and working directories in which they are to be run. The second chess engine is started only in Two Machines (match) mode. These arguments are parsed as filenames; that is, the \\ character is interpr
-eted literally, not as a C-style escape.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The }{\i\f1 dir}{\f1 
- argument specifies the initial working directory for the chess engine. It should usually be the directory where the engine and its working files are installed. If }{\i\f1 dir}{\f1  is not an absolute pathname, it is inter
-preted relative to the directory from which WinBoard.exe itself was loaded. The }{\i\f1 dir}{\f1  argument is ignored if the chess engine is being run on a remote machine (see firstHost and secondHost below). The default value for }{\i\f1 dir }{\f1 
-"", meaning that the chess engine is expected to be installed in the same directory as WinBoard.
-\par The }{\i\f1 command}{\f1  argument is actually the command line to the chess engine, so if the engine itself needs command line arguments, you can include them by enclosing }{\i\f1 command}{\f1  in single or double quotes.
- If the engine name or an engine argument has a space in it, use single quotes around the whole }{\i\f1 command, }{\f1 
-and inside them use double quotes around each item that contains spaces. If the engine name has more than one period in it (for example, }{\f2 QChess1.5.exe}{\f1 ), you must include the "}{\f2 .exe}{\f1 
-" extension; otherwise you can leave it out. The default value for }{\i\f1 command}{\f1  is "", which brings up the startup dialog to ask which engines you want.
-\par Examples:
-\par }\pard\plain \s19\fi-518\li1036\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 WinBoard /cp /fd="C:\\Program Files\\Crafty" /fcp=WCrafty-15.12.exe /scp=GNUChess
-\par WinBoard /cp /fd="C:\\Miracle Games" /fcp='"Miracle Chess.exe" /wow' /scp=GNUChess
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 The basic rule is thus that what is inside the quotes delimiting the argument to /fcp and /scp, all goes to the engine, and is ignored by WinBoard. WinBoard 4.3.13 
-and later, however, knows an exception to this: If, within the quotes, the word WBopt appears, everything that follows this word will be interpreted as a WinBoard argument, in stead of being passed to the engine on startup of the latter. (The WBopt itself
- 
-is also not passed to the engine.) This possibility of hiding WinBoard arguments in the engine command is provided in order to create options that follow the engine in a tournament, when a tournament manager like PSWBTM is used to invoke WinBoard. Because
-, in order to apply to a given engine, some options need to know if they apply to first or second engine, which might vary during the tournament, options hidden inside the engine command-line can contain \lquote %s\rquote 
- which will be replaced at the time the option is used by \lquote first\rquote  or \lquote second\rquote , as applicable.
-\par Examples:
-\par }\pard\plain \s19\fi-518\li1036\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\cf11 WinBoard /cp /fd="C:\\Engines\\Crafty" /fcp=\rdblquote WCrafty-15.12 WBopt /%sTimeOdds=2\rdblquote  /scp=GNUChess
-
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Meaning that Crafty will have to play with half the time GNUChess will get.
-\par }\pard\plain \s19\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  fh }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  fh }}}{\f1  /fh }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  firstHost }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstHost }}}{\f1  /firstHost }{\i\f1 host\line }{
-\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  sh }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  sh }}}{\f1  /sh }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondHost }}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  secondHost }}}{\f1  /secondHost }{\i\f1 host}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Hosts on which the chess engines are to run. The default for each is "localhost". If you specify another host, WinBoard}{\i\f1  }{\f1 uses }{\f1\uldb rsh}{\v\f1 rsh}{\f1 
- to run the 
-chess program there. The /fd and /sd flags do not work in conjunction with these flags; if you need a remote chess engine to run somewhere other than your default login directory on the remote machine, you will have to include a "cd" command in the argume
-nt to /fcp or /scp.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  initString
-}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  initString}}}{\f1  /firstInitString }{\b0\f1 or }{\f1 /initString }{\i\f1 string\line }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondInitString}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- secondInitString}}}{\f1  /secondInitString }{\i\f1 string}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The strings that are sent to initialize the chess engines. Default: "new\\nrandom\\n". The "\\n" sequences represent newlines. You can type "\\
-n" on the command line or in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 , and WinBoard will convert it to a newline.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 All chess engines require the "new" command to start a new game.
-\par You can remove the "random" command if you lik
-e; including it causes GNU Chess to randomize its move selection slightly so that it doesn't play the same moves in every game. Even without "random", GNU Chess randomizes its choice of moves from its opening book. You can also try adding other commands t
-o the initString; see the GNU Chess documentati{\*\bkmkstart _Hlt386545814}o{\*\bkmkstart _Hlt386567280}{\*\bkmkend _Hlt386545814}n{\*\bkmkend _Hlt386567280}
- (gnuchess.txt) for details. Crafty ignores the "random" command; see its documentation for the commands it accepts.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  initString
-}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  initString}}}{\f1  /firstComputerString }{\i\f1 string\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondInitString}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  secondInitString}}
-}{\f1  /secondComputerString }{\i\f1 string}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If the chess engine is playing against another computer program (whether locally or on a chess server), by default the command "computer\\n" is sent to it. Some chess en
-gines change their playing style when they receive this command. If you do not want the engine to know when it is playing another computer, you can set the string to "".
-\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {Note that the computer string is sent to the engine after most other initialization co
-mmands, and is thus ideal for hiding a WinBoard-protocol command in that should be sent only to one engine, when the WinBoard option that normally specifies this command cannot be differentiated by engine, but s always sent to both engines. E.g. if you wa
-nt one of the engines to ponder, and the other not. Because it is sent last, in can overrule earlier commands.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  fb }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  fb }}}{\f1  /fb }{\b0\f1 or }{\f1 /xfb}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  firstPlaysBlack }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstPlaysBlack}}}
-{\f1  /firstPlaysBlack }{\i\f1 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In games between two chess programs, the
- firstChessProgram normally plays white. (This is a change from earlier versions of WinBoard.) If this option is True, firstChessProgram plays black. In a multi-game match, this option affects the colors only for the first game; they still alternate in su
-bsequent games.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuse}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuse}}}{\f1 /reuse}{\cs58\f1\super  }{\b0\f1 or }{\f1 /xreuse}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuseFirst}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuseFirst}}}{\f1 
-/reuseFirst}{\i\f1  true|false\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuse2}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuse2}}}{\f1 /reuse2}{\cs58\f1\super  }{\b0\f1 or }{\f1 /xreuse2}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuseSecond}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuseSecond}}}{\f1 /reuseSecond}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is True (the default), WinBoard}{\i\f1  }{\f1 
-uses the same chess engine process repeatedly when playing multiple games. If the option is False, WinBoard kills off the chess engine after every game and starts a fresh one for the next game. Starting a fresh chess engine can be slow, so it is not recom
-mended. However, some chess engines may not work properly when reused, such as versions of Crafty earlier than 12.0.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- firstProtocolVersion}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstProtocolVersion}}}{\f1 /firstProtocolVersion }{\i\f1 ver\line }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondProtocolVersion}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- secondProtocolVersion}}}{\f1 /secondProtocolVersion }{\i\f1 ver}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-This option specifies which version of the chess engine communication protocol to use. By default, version-number is 2. In version 1, the "protover" command is not sent to the engine; since version 1 is a subset of version 2, nothing else change
-s. Other values for version-number are not supported.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 firstScoreAbs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 firstScoreAbs}}}{\f1\cf6 /firstScoreAbs}{\i\f1\cf6  true|false\line }{\cs58\f1\cf6\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 secondScoreAbs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  }{\f1\cf6 secondScoreAbs}}}{\f1\cf6 /secondScoreAbs}{\i\f1\cf6  true|false
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is true, the score reported by the engine is taken to be that in
- favor of white, even when the engine plays black. Important when winboard uses the score for adjudications, or in PGN reporting. This can be a useful option in combination with WBopt in the engine command-line, see under /fcp.}{\cf6 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 niceEngines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 niceEngines}}}{\f1\cf2 /niceEngines}{\i\f1\cf2  priority
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 
-This option allows you to lower the priority of the engine processes, so that the generally insatiable hunger for CPU time of chess engines does not interfere so much with smooth operation of WinBoard (or the rest of your 
-system). Try priority = 10 or even 20 to lower the priority of the engines. Negative values could increase the engine priority, which is not recommended.}{\cf6 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 firstOptions}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 firstOptions}}}{\f1\cf2 /firstOptions}{\i\f1\cf2  string\line }{\cs58\f1\cf2\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 secondOptions}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  }{\f1\cf6 secondOptions}}}{\f1\cf2 /secondOptions}{\i\f1\cf2  string
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The given string is a comma-separated list of (option name, option value) pairs, like the following example: \ldblquote style=Karpov,blunder rate=0\rdblquote 
-. If the options announced by the engine at startup through the feature commands of WinBoard protocol matches one of the option names (i.e. \ldblquote style\rdblquote  or \ldblquote blunder rate\rdblquote ), it would be set to the given value (i.e. 
-\ldblquote Karpov\rdblquote  or 0) through a corresponding option command to the engine. This provided that the type of the value (text or numeric) matches as well.}{\cf6 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{
-\f1\cf2  firstNeedsNoncompliantFEN}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  firstNeedsNoncompliantFEN}}}{\f1\cf2 /firstNeedsNoncompliantFEN}{\i\f1\cf2  string
-\line }{\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2  secondNeedsNoncompliantFEN}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  secondNeedsNoncompliantFEN}}}{\f1\cf2 /secondNeedsNoncompliantFEN}{\i\f1\cf2  string
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The castling rights and e.p. fields of the FEN sent to the mentioned engine with 
-the setboard command will be replaced by the given string. This can for instance be used to run engines that do not understand Chess960 FENs in variant fischerandom, to make them at least understand the opening position, through setting the string to 
-\ldblquote KQkq -\rdblquote 
-. (Note you also have to give the e.p. field!) Other possible applications are to provide work-arounds for engines that want to see castling and e.p. fields in variants that do not have castling or e.p. (shatranj, courier, xiangqi, shogi) so that WinBoa
-rd would normally omit them (string = \ldblquote - -\ldblquote , or to add variant-specific fields that are not yet supported by WinBoard (e.g. to indicate the number of checks in 3check).
-\par }{
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\cf6\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super +}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 UCI Engine Support}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  }{\f1\cf6 UCI Engine Support}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 UCIEngineSupport}}}{
-\f1\fs20\cf6  UCI Engine Support
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-fUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 fUCI}{\f1  }}}{\f1\cf6  /fUCI }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 firstIsUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 
-firstIsUCI}}}{\f1\cf6  /firstIsUCI}{\i\f1\cf6  true|false}{\f1\cf6 
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 sUCI}{\f1  }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 sUCI}{\f1  }}}{\f1\cf6  /sUCI }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 secondIsUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 
-secondIsUCI}}}{\f1\cf6  /secondIsUCI}{\i\f1\cf6  true|false}{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Indicates if the mentioned engine executable file is an UCI engine,}{\v\cf6  ICSLogon}{\cf6 
- and should be run with the aid of the Polyglot adapter rather than directly. WinBoard will then pass the other UCI options and engine name to Polyglot through a .ini temporary file ceated for the purpose.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 PolyglotDir}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 PolyglotDir}{\f1  }}}{\f1\cf6  /PolyglotDir }{\i\f1\cf6 filename}{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Gives the name of the folder in which Polyglot is installed}{\v\f1\cf6 ICSLogon}{\f1\cf6 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 usePolyglotBook}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 usePolyglotBook}{\f1  }}}{\f1\cf6  /usePolyglotBook }{\i\f1\cf6 true|false}{\f1\cf6 
-
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Specifies if the Polygot book should be used}{\v\f1\cf6 ICSLogon}{\f1\cf6 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 PolyglotBook}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 PolyglotBook}{\f1  }}}{\f1\cf6  /PolyglotBook }{\i\f1\cf6 filename}{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Gives the filename of the opening book that Polyglot should use}{\v\f1\cf6 ICSLogon}{\f1\cf6 .
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-fNoOwnBookUCI}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 fNoOwnBookUCI}{\f1  }}}{\f1\cf6  /fNoOwnBookUCI }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 firstXBook}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  }{\f1\cf6 firstXBook}{\f1  }}}{\f1\cf6  /firstXBook }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 firstHasOwnBookUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 firstHasOwnBookUCI}}}{\f1\cf6  /firstHasOwnBookUCI}{\i\f1\cf6  true|false}{\f1\cf6 
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 sNoOwnBookUCI}{\f1  }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 sNoOwnBookUCI}{\f1  }}}{\f1\cf6  /sNoOwnBookUCI }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 secondXBook}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}
-{\f1  }{\f1\cf6 secondXBook}{\f1  }}}{\f1\cf6  /secondXBook }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-secondHasOwnBookUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 secondHasOwnBookUCI}}}{\f1\cf6  /secondHasOwnBookUCI}{\i\f1\cf6  true|false}{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Indicates if the mentioned engine lacks an opening book or not}{\cf6 . }{\cf2 
-Engines that have an own opening book will not use the GUI book (as given by /polyglotBook) even if /usePolyglotBook is set to true.}{\cf6 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 defaultHashSize}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 defaultHashSize}{\f1  }}}{\f1\cf6  /defaultHashSize }{\i\f1\cf6 number}{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the size of the hash table to }{\i\f1\cf6 number}{\f1\cf6  MegaBytes}{\v\f1\cf6 ICSLogon}{\f1\cf6 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 defaultCacheSizeEGTB}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 defaultCacheSizeEGTB}{\f1  }}}{\f1\cf6  /defaultCacheSizeEGTB }{\i\f1\cf6 number}{
-\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the size of the EGTB cache to }{\i\f1\cf6 number}{\f1\cf6  MegaBytes}{\v\f1\cf6 ICSLogon}{\f1\cf6 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 defaultPathEGTB}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 defaultPathEGTB}{\f1  }}}{\f1\cf6  /defaultPathEGTB }{\i\f1\cf6 filename}{\f1\cf6 
-
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Gives the name of the folder where the end-game tablebases are installed}{\v\f1\cf6 ICSLogon}{\f1\cf6 .
-\par }{
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-+}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Internet Chess Server Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Internet Chess Server Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  InternetChessServerOptions}}}{
-\f1\fs20  Internet Chess Server Options
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ics }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ics }}}{\f1  /ics }{\b0\f1 or }{\f1 /xics}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  internetChessServerMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- internetChessServerMode}}}{\f1  /internetChessServerMode}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Connect with an Internet Chess Server to play chess against its other users, observe games they are playing, or review games that have recently finished. See }{\f1\uldb 
-ICS Client}{\v\f1 ICSClient}{\f1  Default: False.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 You can create a script file containing ICS commands that WinBoard will type in for you whenever you connect to the ICS. See }{\f1\uldb ICS Logon}{\v\f1 ICSLogon}{\f1 .
-
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icshost }}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icshost }}}{\f1  /icshost }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  internetChessServerHost }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  internetChessServerHost }}}{\f1 
- /internetChessServerHost }{\i\f1 hostname}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-The host name or numeric address of the Internet Chess Server to connect to when in ICS mode. The default is the empty string, which causes WinBoard to pop up a menu of known ICS sites. The file ics-address{\*\bkmkstart _Hlt386546221}e
-{\*\bkmkend _Hlt386546221}s.txt in the WinBoard distribution gives slightly more information on these sites. It includes their numeric addresses, which you can use if your site does not have a working name server.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsport }}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsport }}}{\f1  /icsport }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  internetChessServerPort }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  internetChessServerPort }}}{\f1 
- /internetChessServerPort }{\i\f1 portnumber}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The port number to use when connecting to a chess server in ICS mode. Default: 5000.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  via }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  via }}}{\f1 /icshelper }{\i\f1 program}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 An external helper program used to communicate with the chess server. Typically }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  timestamp}}}{\i\f1 timestamp}{\f1  for the ICC (chessclub.com) or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super K}{\f1  timeseal}}}{\i\f1 timeseal}{\f1  for FICS (freechess.org, eics.daimi.aau.dk, etc.). This option is shorthand for \ldblquote /useTelnet /telnetProgram }{\i\f1 program}{\f1 \rdblquote }{\b\f1 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  telnet}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  telnet}}}{\f1 /telnet}{\b0\f1  or }{\f1 /xtelnet}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  useTelnet}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  useTelnet}}}{\f1 
-/useTelnet}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option is poorly named; it should be called }{\b\f1 /useHelper}{\f1 
-. If set to True, it instructs WinBoard to use an external helper program to communicate with the ICS, as specified by the telnetProgr
-am option. The external program must be a pure console application that can communicate with WinBoard through pipes; the Windows telnet application is not suitable. If the option is False (the default), WinBoard communicates with the ICS by opening a Wins
-ock TCP socket and using its own internal implementation of the telnet protocol.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  gateway}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  gateway}}}{\f1 /gateway }{\i\f1 hostname}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set to a host name, WinBoard uses }{\f1\uldb rsh}{\v\f1 rsh}{\f1 
- to run the telnetProgram remotely on the given host to communicate with the Internet Chess Server instead of using its own internal implementation of the telnet protocol. See the }{\f1\uldb FIREWALLS}{\v\f1 FIREWALLS}{\f1 
- section below for an explanation of when this option is useful.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- telnetProgram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  telnetProgram}}}{\f1 /telnetProgram }{\i\f1 program}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option is poorly named; it should be called }{\b\f1 /helperProgram}{\f1 
-. It gives the name of the remote or external helper program to be used with the gateway or useTelnet option. The default is "tel
-net". The telnet program is invoked with the value of internetChessServer as the first argument and the value of internetChessServerPort as the second argument on its command line.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icscom }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icscom }}}{\f1 /icscom }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  internetChessServerComPort }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  internetChessServerComPort }}}{\f1 
-/internetChessServerComPort }{\i\f1 name}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-If this option is set, WinBoard communicates with the Internet Chess Server using a serial communication port instead of a network connection. Use this option if your machine is not connected to
- a network (not even via SLIP or PPP), but you do have Internet access through another machine by dialing in using a modem or by connecting directly to a serial terminal port. Example:
-\par }\pard\plain \s19\li120\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 WinBoard /ics /icscom:com1
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 After you start WinBoard in this way, type whatever modem commands are necessary to dial out to your Internet provider and log in. You may need to turn off }{\f1\uldb 
-Local Line Editing}{\v\f1 LocalLineEditing}{\f1  on the Options menu while typing commands to the modem, but turn it on again afterwards. Then telnet to the ICS, using a command like "telnet chessclub.com 5000". Important: See the paragraph in the }{
-\f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{\f1  section below about extra echoes.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- comPortSettings }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  comPortSettings }}}{\f1  /comPortSettings}{\b0\f1  }{\i\f1 \ldblquote dataRate,dataBits,parity,stopBits,flow
-\rdblquote 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option allows serial port parameters to be set from the command line or a settings file. The values are simply filled in to the }{\f1\uldb Communications}{\v\f1 
-Communications}{\f1  dialog.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icslogon }
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icslogon }}}{\f1  /icslogon }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  internetChessServerLogonScript }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  internetChessServerLogonScript }}
-}{\f1  /internetChessServerLogonScript }{\i\f1 filename
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you change the name used for the }{\f1\uldb ICS Logon}{\v\f1 ICSLogon}{\f1 
- file. Default: "ICS.ini". The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autocomm }
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  autocomm }}}{\f1  /autocomm }{\b0\f1 or }{\f1 /xautocomm}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autoComment }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  autoComment }}}{\f1 
- /autoComment}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Comment}{\v\f1 AutoCommentCmd}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autoflag }
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  autoflag }}}{\f1  /autoflag}{\b0\f1  or }{\f1 /xautoflag}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autoCallFlag }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- autoCallFlag }}}{\f1  /autoCallFlag}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Flag}{\v\f1\uldb AutoFlag}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autobs }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  autobs }}}{\f1  /autobs}{\b0\f1  or }{\f1 /xautobs}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autoObserve }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- autoObserveCmd }}}{\f1  /autoObserve}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Observe}{\v\f1 autoObserveCmd}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 autoKibitz}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 autoKibitz}{\f1  }}}{\f1\cf11  /autoKibitz
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Kibitzes the engines last thinking output (depth, score, time, speed, PV) to the ICS in zippy mode. Show Thinking must be on for this option to work. }{\f1\cf2 
-Also diverts similar kibitz information of an opponent engine that is playing you through the ICS to the engine-output window, as if the engine was playing locally.}{\f1\cf11 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  moves }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  moves }}}{\f1  /moves}{\b0\f1  or }{\f1 /xmoves}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  getMoveList }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  getMoveList }}}{\f1 
- /getMoveList}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Get Move List}{\v\f1 getMoveListCmd}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  edit}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  edit}}}{\f1  /edit}{\cs58\f1\super  }{\b0\f1  or }{\f1 /xedit}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  localLineEditing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  localLineEditingOption}}}{\f1  /localLineEditing}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Local Line Editing}{\v\f1 localLineEditing}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  quiet }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  quiet }}}{\f1  /quiet }{\b0\f1 or }{\f1 /xquiet}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  quietPlay }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  quietPlay }}}{\f1 
- /quietPlay}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Quiet Play}{\v\f1 quietPlayCmd}{\f1  option. Default: False
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- blindfold (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  opt_blindfold }}}{\f1  /blindfold }{\i\f1 true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Blindfold}{\v\f1 BlindfoldCmd}{\f1  option. Default: False
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ pre}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ pre}}}{\f1 /pre }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\super K}{ xpre}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xpre}}}{\f1 /xpre}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  premove (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  premove}}}{\f1 
- /premove}{\i\f1  true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Premove}{\v\f1 PremoveCmd}{\f1  option. If set to True, the premove feature is enabled. If set to False, premove is disabled and the other }{\f1\uldb 
-Premove}{\v\f1 PremoveCmd}{\f1  settings are ignored. Default: False.
-\par }\pard\plain \s2\li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ preWhite}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ preWhite}}}{\f1 /prewhite }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ xpreWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xpreWhite}}}{\f1 /xprewhite}{\b0\f1 , or }{\cs58\f1\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  premoveWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-#}{\f1  premoveWhite}}}{\f1  /premoveWhite}{\i\f1  true|false
-\par }\pard \s2\li115\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  premoveWhiteText}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  premoveWhiteText}}}{\f1  /premoveWhiteText}{\i\f1  movetext
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If }{\b\f1 premoveWhite}{\f1  is set to True and you are playing white in an ICS game, the text specified by the }{\b\f1 premoveWhiteText}{\f1 
- option is sent to the ICS as soon as the game starts.  These options can be set from the }{\f1\uldb Premove}{\v\f1 PremoveCmd}{\f1  section of the }{\f1\uldb ICS Options}{\v\f1\uldb ICSOptions}{\f1  dialog box. The default for }{\b\f1 premoveWhite}{\f1 
- is False.
-\par }\pard\plain \s2\li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ preBlack}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ preBlack}}}{\f1 /preblack }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ xpreBlack}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xpreBlack}}}{\f1 /xpreblack}{\b0\f1 , or }{\cs58\f1\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  premoveBlack}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-#}{\f1  premoveBlack}}}{\f1  /premoveBlack}{\i\f1  true|false
-\par }\pard \s2\li115\sa120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  premoveBlackText}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  premoveBlackText}}}{\f1  /premoveBlackText}{\i\f1  movetext
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If }{\b\f1 premoveBlack}{\f1  is set to True and you are playing black in an ICS game, the text specified by the }{\b\f1 premoveBlackText}{\f1 
- option is sent to the ICS as soon as the first move is received from your opponent, even if you make a different premove on the board before the first white move is received. These options can be set from the }{\f1\uldb Premove}{\v\f1 PremoveCmd}{\f1 
- section of the }{\f1\uldb ICS Options}{\v\f1\uldb ICSOptions}{\f1  dialog box. The default for }{\b\f1 premoveBlack}{\f1  is False.
-\par }\pard\plain \li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ alarm}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ alarm}}}{\b /alarm }{or}{\b  }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\super K}{ xalarm}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xalarm}}}{\b /xalarm}{, or }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ icsAlarm}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ icsAlarm}}}{\b /icsAlarm }{\b\i true|false}{\b 
-\par }\pard \li115\sa120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ icsAlarmTime}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ icsAlarmTime}}}{\b /icsAlarmTime }{\b\i milliseconds
-\par }\pard \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright {When }{\b icsAlarm}{ is set to True, the }{\uldb alarm sound}{\v soundIcsAlarm}{ is played when your clock counts down to }{\b icsAlarmTime}{
- seconds.  For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the }{\b icsAlarmTime}{.  The }{\b icsAlarmTime}{ can be set by selecting }{\uldb ICS Alarm}{\v ICSAlarm}{ from the }{\uldb 
-ICS options}{\v\uldb ICSOptions}{ dialog. The default is 5 seconds.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-+}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Load and Save Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Load and Save Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadandSaveOptions}}}{\b0\f1\fs18\up6  }{\f1\fs20 
-Load and Save Options
-\par }\pard\plain \s2\li115\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lgf }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  lgf }}}{\f1  /lgf }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  loadGameFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  loadGameFile }}}{\f1  /loadGameFile }{\i\f1 
-filename}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lgi }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super #}{\f1  lgi }}}{\f1  /lgi }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  loadGameIndex }}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  loadGameIndex }}}{\f1  /loadGameIndex }{\i\f1 N}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If loadGameFile is set, Wi
-nBoard reads the specified game file at startup. You can leave out the name of this option and give just the file name, which is handy if you want to configure WinBoard as a game viewer with a browser such as the Windows Explorer or Netscape. The filename
- 
-is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If there is more than one game in the file, WinBoard pops up a menu of the available games, with entries based on their PGN tags. If loadGameIn
-dex is set to }{\i\f1 N, }{\f1 the menu is suppressed and the }{\i\f1 N}{\f1 th game found in the file is loaded immediately.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  td }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  td }}}{\f1  /td }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  timeDelay }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  timeDelay }}}{\f1  /timeDelay }{\i\f1 seconds}{\f1 
-
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Time delay between moves during }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1 
-. Fractional seconds are allowed; try 0.4. A time delay value of -1 tells WinBoard not to step through game files automatically. Default: 1 second.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  sgf }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  sgf }}}{\f1  /sgf }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  saveGameFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  saveGameFile }}}{\f1  /saveGameFile }{\i\f1 
-filename}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, Wi
-nBoard appends a record of every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard output.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autosave }
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  autosave }}}{\f1  /autosave}{\b0\f1  or }{\f1 /xautosave}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autoSaveGames }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- autoSaveGames }}}{\f1  /autoSaveGames}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-If this option is True, at the end of every game WinBoard prompts you for a filename and appends a record of the game to the file you specify. Ignored if saveGameFile is set. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lpf}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  lpf}}}{\f1  /lpf }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  loadPositionFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  loadPositionFile }}}{\f1  /loadPositionFile }{
-\i\f1 filename}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lpi }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  lpi }}}{\f1  /lpi }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- loadPositionIndex }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  loadPositionIndex }}}{\f1  /loadPositionIndex }{\i\f1 N}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If loadPositionFile is set, WinBoard loads the specified position file at st
-artup. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If loadPositionIndex is set to }{\i\f1 N}{\f1 , the }{\i\f1 N}{\f1 
-th position found in the file is loaded; otherwise the first is loaded.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  spf }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  spf }}}{\f1  /spf }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  savePositionFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  savePositionFile }}}{\f1  /savePositionFile }{
-\i\f1 filename}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard appends the final position reached in every game played to the specified file. The filename is interpreted relative to WinBoard's initial w
-orking directory. The file name "-" specifies the standard output.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 pgnExtendedInfo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 pgnExtendedInfo}{\f1  }}}{\f1\cf6  /pgnExtendedInfo }{\i\f1\cf6 true|false}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is set, WinBoard saves depth, score and time used for each move that the engine found as a comment in the PGN file.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 pgnEventHeader}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 pgnEventHeader}{\f1  }}}{\f1\cf6  /pgnEventHeader }{\i\f1\cf6 string}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the name used in the PGN event tag to }{\i\f1\cf6 string}{\f1\cf6 .
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 saveOutOfBookInfo}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 saveOutOfBookInfo}}}{\f1\cf6  /saveOutOfBookInfo }{\i\f1\cf6 true|false}{\f1\cf6 
-
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Include the information on how the engine(s) game out of its opening book in a special \lquote annotator\rquote  tag with the PGN file.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  oldsave }}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  oldsave }}}{\f1  /oldsave }{\b0\f1 or }{\f1 /xoldsave}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  oldSaveStyle }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  oldSaveStyle }}}{\f1 
- /oldSaveStyle}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is False
- (the default), WinBoard saves games in PGN (portable game notation) and positions in FEN (Forsythe-Edwards notation). If the option is True, a save style that is compatible with older versions of WinBoard (and of xboard) is used instead.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  debug}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  debug}}}{\f1  /debug}{\b0\f1  or }{\f1 /xdebug}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  debugMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  debugMode}}}{\f1 
- /debugMode}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Writes debugging information to the file \ldblquote WinBoard.debug\rdblquote 
-, including all commands sent to the chess engine, all output received from it, and all commands sent to ICS. You can press Ct
-rl+Alt+F12 to turn this option on or off while WinBoard is running. Each time you turn it on, any existing debug file is overwritten.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 debugFile}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 debugFile}{\f1  }}}{\f1\cf6  /debugFile}{\cs58\f1\cf6\super  }{\f1\cf6  }{\i\f1\cf6 filename}{
-\f1\cf6  }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 nameOfDebugFile}{\f1  }}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 nameOfDebugFile}{\f1  }}}{\f1\cf6  /nameOfDebugFile}{\i\f1\cf6  filename}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the name of the file to which WinBoard saves debug information (including all communication to and from the engines).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 engineDebugOutput}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 engineDebugOutput}{\f1  }}}{\f1\cf11  /engineDebugOutput}{\cs58\f1\cf11\super  }{
-\f1\cf11  }{\i\f1\cf11 number}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Specifies how WinBoard should handle unsolicited output from the engine, with respect to saving it in the debug file. The output is further (hopefully) ignored. If }{
-\i\f1\cf11 number}{\f1\cf11 =0, WinBoard refrains from writing such spurious output to the debug file. If}{\i\f1\cf11  number}{\f1\cf11 =1, all engine output is written faithfully to the debug file. If }{\i\f1\cf11  number}{\f1\cf11 
-=2, any protocol-violating line is prefixed with a \lquote #\rquote  character, as the engine itself should have done if it wanted to submit info for inclusion in the debug file.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 This option is provided for the benefit of applications that use the debug file as a
- source of information, such as the broadcaster of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them.
-\par }{
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-+}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  User Interface Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  User Interface Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  UserInterfaceOptions}}}{\b0\f1\fs18\up6  }{\f1\fs20 
-User Interface Options
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2 
- firstLogo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  firstLogo}}}{\f1\cf2  /firstLogo }{\i\f1\cf2 filename}{\f1\cf2 
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2  secondLogo}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  secondLogo}}}{\f1\cf2  /secondLogo }{\i\f1\cf2 filename}{\f1\cf2 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The appearance of either of these options causes WinBoard to reserve space for displaying logos on both sides of 
-the clocks. Normally the first logo goes left, the second right, unless the option \lquote swap clocks\rquote  is in effect. The }{\i\f1\cf2 filename}{\f1\cf2 
- must refer to a bitmap file (.bmp) containing a logo for the particular player (usually a 130x65 or 100x50 bitmap, which will be scaled to the height of two clock lines.)
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{
-\f1\cf2  autoLogo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  autoLogo}}}{\f1\cf2  /autoLogo}{\i\f1\cf2  true|false}{\f1\cf2 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 
-When true, causes WinBoard to automatically supply a logo for the first and second chess program, by looking for a fie named logo.bmp in the engine directory (as specified
- by the /fd or /sd option), and then displays it like this file was given as an argument to the /firstLogo or /secondLogo option. In this mode it will also look in a sub-folder of its installation folder called \ldblquote logos\rdblquote 
-, for finding logos with names corresponding to the ICS (e.g. \ldblquote chessclub.com.bmp\rdblquote ) or to the human user, should they be involved in a game.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 hideThinkingFromHuman}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 hideThinkingFromHuman}}}{\f1\cf6  /hideThinkingFromHuman}{\i\f1\cf6  true|false}{\f1\cf6 
-
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 
-Prevents the engine thinking output to appear in the display, without necessitating to suppress the sending of this information altogether (so it can still appear in the PGN).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{
-\f1\cf2  noGUI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  noGUI}}}{\f1\cf2  /noGUI
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 Suppresses all GUI functions of WinBoard (to speed up automated ultra-fast engine-engine games, which you don\rquote 
-t want to watch). There will be no board or clock updates, no printing of moves, and no update of the icon on the task bar in this mode.}{\f1 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  top}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  top}}}{\f1  /top }{\b0\f1 or }{\f1 /xtop}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  alwaysOnTop}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  alwaysOnTopOpt}}}{\f1 
- /alwaysOnTop}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Always On Top}{\v\f1 AlwaysOnTop}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  queen}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  queen}}}{\f1  /queen}{\b0\f1  or }{\f1 /xqueen}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  alwaysPromoteToQueen}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- alwaysPromoteToQueen}}}{\f1  /alwaysPromoteToQueen}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Always Queen}{\v\f1 AlwaysQueen}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  drag}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  drag}}}{\f1 /drag}{\b0\f1  or }{\f1 /xdrag}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  animateDragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  animateDraggingOpt}
-}}{\f1 /animateDragging}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Animate Dragging}{\v\f1 animateDragging}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  animate}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  animate}}}{\f1 /animate }{\b0\f1 or }{\f1 /xanimate}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  animateMoving}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  animateMovingOpt}}}{
-\f1 /animateMoving}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Animate Moving}{\v\f1 animateMoving}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  flip}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  flip}}}{\f1  /flip }{\b0\f1 or }{\f1 /xflip}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  flipView}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  flipViewOption}}}{\f1 
- /flipView}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Flip View is not set, or if you are observing but no
-t participating in a game, then the positioning of the board at the start of each game depends on the flipView option.  If flipView is False (the default), the board is positioned so that the white pawns move from the bottom to the top; if True, the black
- pawns move from the bottom to the top. In any case, the }{\f1\uldb Flip View}{\v\f1 FlipView}{\f1  menu command can be used to flip the board after the game starts
-\par }\pard\plain \li115\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ autoflip}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoflip}}}{\b /autoflip}{ or }{\b /xautoflip}{, or }{\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\super K}{ autoFlipView}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoFlipViewOption}}}{\b /autoFlipView }{\b\i true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Flip View}{\v\f1 AutoFlipView}{\f1  option. Default: True.
-\par }\pard\plain \li115\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ autoraise}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoraise}}}{\b /autoraise}{ or }{\b /xautoraise}{, or }{\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\super K}{ autoRaiseBoardOption}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoRaiseBoardOption}}}{\b /autoRaiseBoard }{\b\i true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Raise Board}{\v\f1 AutoFlipView}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  highdrag}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  highdrag}}}{\f1 /highdrag }{\b0\f1 or }{\f1 /xhighdrag}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  highlightDragging\tab \tab }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- highlightDraggingOpt}}}{\f1 /highlightDragging }{\i\f1 true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Highlight Dragging}{\v\f1 highlightDragging}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  highlight}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  highlight}}}{\f1 /highlight }{\b0\f1 or }{\f1 /xhighlight}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  highlightLastMove}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- highlightLastMoveOpt}}}{\f1 /highlightLastMove}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Highlight Last Move}{\v\f1 highlightLastMoveOpt}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  popup}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  popup}}}{\f1  /exit}{\b0\f1  or }{\f1 /xexit}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  popupMoveErrors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  popupMoveErrorsOpt}
-}}{\f1  /popupExitMessage}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Popup Exit Message}{\v\f1 popupExitMessageCmd}{\f1  menu option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  popup}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  popup}}}{\f1  /popup}{\b0\f1  or }{\f1 /xpopup}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  popupMoveErrors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  popupMoveErrorsOpt}
-}}{\f1  /popupMoveErrors}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Popup Move Errors}{\v\f1 popupMoveErrorsCmd}{\f1  menu option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  coords }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  coords }}}{\f1  /coords }{\b0\f1 or }{\f1 /xcoords}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  showCoords}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  showCoords}}}{\f1 
- /showCoords}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Show Coords}{\v\f1 showCoords}{\f1  option. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  legal }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  legal }}}{\f1  /legal }{\b0\f1 or }{\f1 /xlegal}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  testLegality }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  testLegality }}}{\f1 
- /testLegality}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Test Legality}{\v\f1 testLegalityCmd}{\f1  option. Default: True.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  size }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  size }}}{\f1  /size }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  boardSize }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  boardSize }}}{\f1  /boardSize }{\i\f1 sizename}{\f1 
-
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Board Size}{\v\f1 BoardSizeCmd}{\f1 
- option. Also chooses which board size any following Font options will affect. The default is the largest size that will fit on your screen.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ wpc}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ wpc}}}{\f1 /wpc}{\b0\f1  or }{\cs58\b0\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super K}{\f1  whitePieceColor}}}{\cs58\f1\super #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  whitePieceColor}}}{\f1  /whitePieceColor }{\i\f1 color
-\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ bpc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\super #}{ bpc}}}{\f1 /bpc }{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  blackPieceColor}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  blackPieceColor}}}{\f1  /blackPieceColor }{\i\f1 color\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ lsc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ lsc}}}{\f1 /lsc }{\b0\f1 or}{\i\f1  }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lightSquareColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- lightSquareColor}}}{\f1  /lightSquareColor }{\i\f1 color}{\cs58\f1\super  }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ dsc}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ dsc}}}{\f1 /dsc }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super K}{\f1  darkSquareColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  darkSquareColor}}}{\f1  /darkSquareColor }{\i\f1 color}{\cs58\f1\super  }{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Color specifications for white pieces, black pieces, light squares, and dark squares. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as }{
-\i\f1 #rrggbb}{\f1 ) or in decimal (as }{\i\f1 rrr,ggg,bbb}{\f1 ). In the latter format, you must enclose the string in quotation marks
- if you leave spaces after the commas. The defaults are respectively #FFFFCC, #202020, #C8C365, and #77A26D. Available on the }{\f1\uldb Board Colors}{\v\f1 BoardColors}{\f1  section of the }{\f1\uldb Board Options}{\v\f1 BoardOptions}{\f1  dialog.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are using a }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  grayscale}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  grayscale}}}{\f1  grayscale monitor, try setting the colors to:
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 -whitePieceColor:#FFFFFF\line -blackPieceColor:#000000\line -lightSquareColor:#CCCCCC\line -darkSquareColor:#999999
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ hsc}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ hsc}}}{\f1 /hsc }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super K}{\f1  highlightSquareColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  highlightSquareColor}}}{\f1  /highlightSquareColor }{\i\f1 color}{
-\cs58\f1\super  }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ phc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\super #}{ phc}}}{\f1 /phc }{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  premoveHighlightColor}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  premoveHighlightColor}}}{\f1  /premoveHighlightColor }{\i\f1 color}{\cs58\f1\super  }{\f1 
-\par }{\b0\f1 Color specifications for the }{\b0\f1\uldb Highlight Last Move}{\b0\v\f1 HighlightLastMove}{\b0\f1  and }{\b0\f1\uldb Premove}{\b0\v\f1 PremoveCmd}{\b0\f1  options, respectively. Colors can be specified only by red/green/blue int
-ensity, either in hexadecimal (as }{\b0\i\f1 #rrggbb}{\b0\f1 ) or in decimal (as }{\b0\i\f1 rrr,ggg,bbb}{\b0\f1 
-). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFF00 and #FF0000, respectively.
-\par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  mono }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  mono }}}{\f1  /mono}{\b0\f1  or }{\f1 /xmono}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  monoMode}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  monoMode}}}{\f1  /monoMode}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Determines whether WinBoard displays its pieces and squares in black and white (True) or color (False, the default). Available in the }{\f1\uldb Board Colors}{\v\f1 
-BoardColors}{\f1  section of the }{\f1\uldb Board Options}{\v\f1 BoardOptions}{\f1  dialog.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 flipBlack}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 flipBlack}{\f1  }}}{\f1\cf11  /flipBlack}{\i\f1\cf11  true|false}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-Determines whether WinBoard displays the black pieces upside down (or the white pieces in Flip View). Useful with Shogi with the traditional Japanese pieces, which are not distinguished by color but by orientation.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 allWhite}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 allWhite}{\f1  }}}{\f1\cf11  /allWhite}{\i\f1\cf11  true|false}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Determines whether the white piece bitmaps will be used to display black pieces. The white pieces have a dark outline, which the black pieces lack. This makes the l
-atter look vague if the color you give them is not very dark.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 renderPiecesWithFont}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 renderPiecesWithFont}{\f1  }}}{\f1\cf6  /renderPiecesWithFont }{\i\f1\cf6 fontname}
-{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Uses the named true-type font to render the pieces, rather than the built-in bitmaps. The font must be installed
- on your computer. If the name starts with a *  it is ignored, allowing you to easily disable a font temporarily in the whinboard.ini file.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 fontPieceToCharTable}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 fontPieceToCharTable}{\f1  }}}{\f1\cf6  /fontPieceToCharTable }{\i\f1\cf6 
-characterstring}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 
-If font-based rendering of the pieces is used, this table specifies which character of the font alphabet should be used for which piece. The format of the character strings is the same as that of the argument of /pieceToCharTable.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 fontPieceSize}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 fontPieceSize}{\f1  }}}{\f1\cf6  /fontPieceSize }{\i\f1\cf6 number}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The number gives the size of the piece, as a percentage of the square size.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 
-fontPieceBackColorWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceBackColorWhite}}}{\f1\cf6 /fontPieceBackColorWhite }{\i\f1\cf6 color\line }{
-\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 fontPieceForeColorWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceForeColorWhite}}}{\f1\cf6 /fontPieceForeColorWhite }{\i\f1\cf6 color\line }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 fontPieceBackColorBlack}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceBackColorBlack}}}{\f1\cf6 
-/fontPieceBackColorBlack }{\i\f1\cf6 color\line }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 fontPieceForeColorBlack}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceForeColorBlack}}}{\f1\cf6 /fontPieceForeColorBlack }{\i\f1\cf6 color}{\cs58\f1\cf6\super  }{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Color specifications for white pieces, black pieces that are generated with font-based rendering.
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-liteBackTextureFile}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 liteBackTextureFile}{\f1  }}}{\f1\cf6  /liteBackTextureFile }{\i\f1\cf6 filename}{\f1\cf6 
-
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 darkBackTextureFile}{\f1 
- }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 darkBackTextureFile}{\f1  }}}{\f1\cf6  /darkBackTextureFile }{\i\f1\cf6 filename}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 
-The filename indicates a bitmap file that should be used to display the light or dark squares, allowing you to make boards that look like wood, marble, etc. A filename starting with * is ignored.
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-liteBackTextureMode}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 liteBackTextureMode}{\f1  }}}{\f1\cf6  /liteBackTextureMode }{\i\f1\cf6 number}{\f1\cf6 
-
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 darkBackTextureMode}{\f1 
- }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 darkBackTextureMode}{\f1  }}}{\f1\cf6  /darkBackTextureMode }{\i\f1\cf6 number}{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 The number indicates the way the files given in the background-texture options should be used to fill in the squares.}{\cf6\lang1043\cgrid0 
- Valid texture modes are 1 (default) and 2. I
-n mode 1 the squares are taken from portions of the texture bitmap and copied without further processing. In mode 2, squares can also be rotated, mirrored and so on in order to provide a little more variety to the texture. The operations are selected at r
-andom so the board will look slightly different every time the program is run.\line }{\cf6 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 overideLineGap}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 overideLineGap}{\f1  }}}{\f1\cf6  /overideLineGap }{\i\f1\cf6 number}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The number specifies the width, in pixels, of the grid lines used to separate the squares. If it is very small (lik
-e a single pixel), it becomes vey hard to see which squares are highlighted (to indicate the last move), as this highlighting is a color change of these grid lines. Highlighting the moves with an arrow is then recommended.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 highlightMovesWithArrow}{\f1  }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 highlightMovesWithArrow}{\f1  }}}{\f1\cf6  /highlightMovesWithArrow }{
-\i\f1\cf6 true|false}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is true, a big, fat arrow is drawn to indicate the last move.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 highlightArrowColor}{\f1  }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 highlightArrowColor}{\f1  }}}{\f1\cf6  /highlightArrowColor }{\i\f1\cf6 color}{
-\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Specifies the color of the arrow that highlights the moves.
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-evalHistoColorWhite}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 evalHistoColorWhite}{\f1  }}}{\f1\cf6  /evalHistoColorWhite }{\i\f1\cf6 color}{\f1\cf6 
-
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 evalHistoColorBlack}{\f1 
- }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 evalHistoColorBlack}{\f1  }}}{\f1\cf6  /evalHistoColorBlack }{\i\f1\cf6 color}{\f1\cf6 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Specifies the colors to be used to plot the white and black scores in the evaluation graph}{\cf6\lang1043\cgrid0 .\line }{
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorShout
-}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorShout}}}{\f1  /colorShout}{\i\f1  \ldblquote effects color\rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorSShout}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorSShout}}}{\f1 
- /colorSShout }{\i\f1 \ldblquote effects color\rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorChannel1}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorChannel1}}}{\f1  /colorChannel1 }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorChannel}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorChannel}}}{\f1 
- /colorChannel }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorKibitz}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorKibitz}}}{\f1  /colorKibitz }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorTell}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorTell}}}{\f1 
- /colorTell }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorChallenge}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorChallenge}}}{\f1  /colorChallenge }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorRequest}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorRequest}}}{\f1 
- /colorRequest }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorSeek}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorSeek}}}{\f1  /colorSeek }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorNormal}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorNormal}}}{\f1 
- /colorNormal }{\i\f1 \ldblquote effects color\rdblquote 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Select colors and effects to colorize messages in the ICS Interaction window. The effects may be any combination of }{\b\f1 b}{\f1 old, }{\b\f1 i}{\f1 talic, }{\b\f1 u}{
-\f1 nderline, and }{\b\f1 s}{\f1 trikeout. Colors are specified as for squares and pieces. Available on the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1  section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptions}{\f1 
- dialog. Limitation: On 256 color displays, Windows chooses the nearest solid color from the system palette, which will not always be close to the color you selected.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- colorBackground}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorBackground}}}{\f1  /colorBackground }{\i\f1 color
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the background color for the ICS Interaction window. Available on the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1  section of the }{\f1\uldb 
-ICS Options}{\v\f1 ICSOptions}{\f1  dialog.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorize}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorize}}}{\f1  /colorize}{\cs58\f1\super  }{\b0\f1 or }{\f1 /xcolorize}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorizeMessages}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 
- colorizeMessages}}}{\f1  /colorizeMessages}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If True, WinBoard colorizes messages in the ICS Interaction window with the colors listed above. Default: True. Available in the }{\f1\uldb ICS Interaction Colors}{\v\f1 
-ICSInteractionColors}{\f1  section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptions}{\f1  dialog.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  clockFont}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  clockFont}}}{\f1  /clockFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  messageFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  messageFont
-}}}{\f1  /messageFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  coordFont}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  coordFont}}}{\f1  /coordFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  tagsFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  tagsFont}}}{
-\f1  /tagsFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  commentFont}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  commentFont}}}{\f1  /commentFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsFont}}}{\f1  /icsFont 
-\ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-The fonts used respectively for the clocks, the message display line, rank and file coordinate labels, the Edit Tags dialog, the Edit Comment dialog, and the ICS Interaction wi
-ndow. These options may be given more than once. Each occurrence affects the fonts for the current board size; that is, the size given in the last preceding /boardSize option, if any, or else the default size. The font size may contain a decimal point, an
-d the effects may be any combination of }{\b\f1 b}{\f1 old, }{\b\f1 i}{\f1 talic, }{\b\f1 u}{\f1 nderline, and }{\b\f1 s}{\f1 trikeout. Example: }{\f2\fs16 /clockFont="Arial:20.0 bi".}{\f1  Available on the }{\f1\uldb Fonts}{\v\f1 Fonts}{\f1  menu.}{
-\f2\fs16 
-\par }\pard\plain \s2\li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundShout}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundShout}}}{ /soundShout}{\i  sound\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundSShout}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundSShout}}}{ /soundSShout }{\i sound\line }{
-\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundChannel1}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundChannel1}}}{ /soundChannel1 }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundChannel}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundChannel}}}{ /soundChannel }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundKibitz}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundKibitz}}}{ /soundKibitz }{\i sound}{\line }{
-\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundTell}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super #}{\f1  soundTell}}}{ /soundTell }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundChallenge}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundChallenge}}}{ /soundChallenge }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundRequest}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundRequest}}}{ /soundRequest }{\i sound}{\line }{\cs58\f1\super K
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundMove}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{
-\f1  soundMove}}}{ /soundMove }{\i sound}{\cs58\f1\super  }{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundBell}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundBell}}}{ /soundBell }{\i sound}{\cs58\f1\super  }{
-\par }\pard \s2\li115\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundIcsWin}}#{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundIcsWin}}}{\f1  /soundIcsWin }{\i\f1 sound}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundIcsLoss}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundIcsLoss}}}{\f1  /soundIcsLoss }{\i\f1 sound}{\cs58\f1\super  }{\f1 
-\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundIcsDraw}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundIcsDraw}}}{\f1  /soundIcsDraw }{\i\f1 sound}{\cs58\f1\super  }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{
-\f1  soundIcsUnfinished}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundIcsUnfinished}}}{\f1  /soundIcsUnfinished }{\i\f1 sound}{\cs58\f1\super  }{\f1 
-\par }\pard \s2\li115\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundIcsAlarm}}#{\footnote\ftnalt 
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundIcsAlarm}}}{\f1  /soundIcsAlarm }{\i\f1 sound}{\cs58\f1\super  }{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Associate sounds with WinBoard events. Most of the events are the same ones that cause text colorization. In addition, }{\b\f1 soundMove}{\f1 
- is played if a chess engine or another player makes a move. }{\b\f1 SoundBell}{\f1  is played if the chess server sends an ASCII BEL character (Ctrl+G). Available on the }{\f1\uldb Sounds}{\v\f1 Sounds}{\f1  menu.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\b SoundIcsWin}{, }{\b soundIcsLoss}{, }{\b soundIcsDraw}{ and }{\b soundIcsUnfinished}{
- are played at the conclusion of an ICS game.  The result of the game determines which sound is played.
-\par }{\b SoundIcsAlarm}{ is played when your game clock counts down to }{\uldb icsAlarmTime}{\v\uldb icsAlarmTime}{. 
-\par }\pard \li120\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480\adjustright {\f1 The }{\i\f1 sound}{\f1  argument may be one of the following:
-\par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f1 
-The name of a }{\f2 .wav}{\f1  file. The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).
-\par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f2 $}{
-\f1 , indicating the default system sound.
-\par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f2 !}{
-\f1  followed by the name of a built-in WinBoard wave resource.
-\par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f2 !}{
-\f1  alone, or \ldblquote \rdblquote  (empty string), indicating silence.
-\par }\pard \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright {\f1 The default for soundMove and soundBell is }{\f2 $}{\f1 , while the others default to silence.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsMenu}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsMenu}}}{\f1 /icsMenu=\{}{\i\f1 entries}{\f1 \} }{\b0\f1 or }{\f1 /icsMenu=@}{\i\f1 filename
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the right-button }{\f1\uldb context menu}{\v\f1 ICSInteractionContextMenu}{\f1 
- that is available in the upper (output) pane of the ICS Interaction window. It consists of a list of menu entries, one per line. If the opt
-ion value starts with an @ sign, it is the name of a file that contains the entries. Each entry contains either four fields separated by commas or the single character }{\f2 "-"}{\f1 . The fields are:
-\par {\pntext\pard\plain\f5\fs20\lang1033\cgrid \hich\af5\dbch\af0\loch\f5 1.\tab}}\pard\plain \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright 
-\f5\fs20\cgrid {The menu text. If this field begins with }{\f2 "|"}{, the item begins a new column in the menu and the }{\f2 "|"}{ is not shown. If this field contains an }{\f2 "&"}{
-, the character after the ampersand is underlined in the menu and acts as a keyboard shortcut for the item when the menu is displayed. Do not assign the same shortcut key to two different menu items.
-\par {\pntext\pard\plain\s26 \f1\fs20\lang1033\cgrid \hich\af1\dbch\af0\loch\f1 2.\tab}}\pard\plain \s26\fi-360\li480\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright 
-\f5\fs20\cgrid {\f1 Text to insert into the input pane. The text cannot include a comma. You can use ICS aliases to get around this limitation.
-\par {\pntext\pard\plain\s26 \f1\fs20\lang1033\cgrid \hich\af1\dbch\af0\loch\f1 3.\tab}}\pard \s26\fi-360\li480\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright {\f1 
-A flag (1 or 0) saying whether to insert a space and }{\i\f1 name }{\f1 (see }{\f1\uldb above}{\v\f1 Tell}{\f1 ) after the text. If you set this flag, you might also want to put "(name)" into the menu text as a memory aid.
-\par {\pntext\pard\plain\s26 \f1\fs20\lang1033\cgrid \hich\af1\dbch\af0\loch\f1 4.\tab}}\pard \s26\fi-360\li480\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright {\f1 
-A flag (1 or 0) saying whether the result should be sent immediately to ICS or left in the input pane for further editing.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {The entry }{\f2 "-"}{ produces a separator line in the menu. The top three menu entries are always }{\b Copy and Paste}{, }{\b Copy}{, and }{\b Paste}{
-, but you have full control over the rest of the menu.
-\par }{\f1 The default menu is:
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 \endash \line &Who,who,0,1\line Playe&rs,players,0,1\line &Games,games,0,1\line &Sought,sought,0,1\line |&Tell (name),te
-ll,1,0\line M&essage (name),message,1,0\line \endash \line &Finger (name),finger,1,1\line &Vars (name),vars,1,1\line &Observe (name),observe,1,1\line &Match (name),match,1,1\line Pl&ay (name),play,1,1
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad.
-
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsNames}}
-#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsNames}}}{\f1 /icsNames=\{}{\i\f1 names}{\f1 \} }{\b0\f1 or }{\f1 /icsNames=@}{\i\f1 filename
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the drop-down list of ICS names that appears in the WinBoard startup dialog. It consists of a list of strings, o
-ne per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /ics /icsHost=\rdblquote 
- and adds the result to the command-line options. There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad.
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- firstChessProgramNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstChessProgramNames}}}{\f1 /firstChessProgramNames=\{}{\i\f1 names}{\f1 \} }{\b0\f1 or }{\f1 
-/firstChessProgramNames="@}{\i\f1 filename}{\f1 "
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-This option lets you customize the first drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that co
-ntains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /cp /firstChessProgram=\rdblquote  and adds the result to the command-line options. 
-\par 
-\par There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad. Example:
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 /firstChessProgramNames=\{GNUChess\line WCrafty-15_11 /fd="C:\\Program Files\\Crafty"\line ArasanX /fd="C:\\Program Files\\Arasan
-\\Arasan 4.1"\line "EXchess xb" /fd=C:\\EXchess\line Comet-WB /fd=C:\\Comet\line \}
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  se
-condChessProgramNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  secondChessProgramNames}}}{\f1 /secondChessProgramNames=\{}{\i\f1 names}{\f1 \}}{\b0\f1  or }{\f1 
-/secondChessProgramNames="@}{\i\f1 filename}{\f1 "}{\i\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the second drop-down list of chess engine names that appears in the WinBoard startup dialog. It consist
-s of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /cp /secondChessProgram=
-\rdblquote  and adds the result to the command-line options.
-\par 
-\par There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad. Example:
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {/secondChessProgramNames=\{GNUChess\line WCrafty-15_11 /sd="C:\\\\Program Files\\\\Crafty\\"\line ArasanX /sd="C:\\Program Files\\
-Arasan\\Arasan 4.1"\line "EXchess xb" /sd=C:\\EXchess\line Comet-WB /sd=C:\\Comet\line \}}{\f1 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xy coordinates of board}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xy}}}{\f1 /x=}{\i\f1 xcoord  }{\f1 /y=}{\i\f1 ycoord
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location of the board window, giving the screen coordinates of the upper left-hand corner. Both arguments must be given together.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of Analysis window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /analysisX=}{\i\f1 xcoord  }{\f1 /analysisY=}{\i\f1 ycoord}{\f1   /analysisW=}{
-\i\f1 width}{\f1   /analysisH=}{\i\f1 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 These options have been deprecated, as the analysi
-s window is replaced by the more general engine-output window. They are recognized, but ignored, and no longer saved in the winboard.ini file.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of Comment window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /commentX=}{\i\f1 xcoord  }{\f1 /commentY=}{\i\f1 ycoord}{\f1   /commentW=}{
-\i\f1 width}{\f1   /commentH=}{\i\f1 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Comment window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window)}{\f1 
-, the width, and the height. All four arguments must be given together.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of Game List window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /gameListX=}{\i\f1 xcoord  }{\f1 /gameListY=}{\i\f1 ycoord}{\f1   /gameListW=}{
-\i\f1 width}{\f1   /gameListH=}{\i\f1 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Game List window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window), }{\f1 
-the width, and the height. All four arguments must be given together.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of ICS Interaction window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /icsX=}{\i\f1 xcoord  }{\f1 /icsY=}{\i\f1 ycoord}{\f1   /icsW=}{\i\f1 
-width}{\f1   /icsH=}{\i\f1 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window)}{\f1 
-, the width, and the height. All four arguments must be given together.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of Tags window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /tagsX=}{\i\f1 xcoord  }{\f1 /tagsY=}{\i\f1 ycoord}{\f1   /tagsW=}{\i\f1 width}{\f1 
-  /tagsH=}{\i\f1 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Tags window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window)}{\f1 
-, the width, and the height. All four arguments must be given together.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of Move History window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1\cf6 /moveHistoryX=}{\i\f1\cf6 xcoord  }{\f1\cf6 moveHistoryY=}{\i\f1\cf6 
-ycoord}{\f1\cf6   /moveHistoryW=}{\i\f1\cf6 width}{\f1\cf6   /moveHistoryH=}{\i\f1\cf6 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the move-history window, giving the screen coordinates of the upper left-hand corner}{\f1  }{\f1\cf2 (relative to the main window)
-}{\f1\cf6 , the width, and the height. All four arguments must be given together.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of Evaluation Graph window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1\cf6 /evalGraphX=}{\i\f1\cf6 xcoord  }{\f1\cf6 /evalGraphY=}{\i\f1\cf6 
-ycoord}{\f1\cf6   /evalGraphW=}{\i\f1\cf6 width}{\f1\cf6   /evalGraphH=}{\i\f1\cf6 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the evaluation-graph window, giving the screen coordinates of the upper left-hand corner}{\f1  }{\f1\cf2 
-(relative to the main window)}{\f1\cf6 , the width, and the height. All four arguments must be given together.
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 
- xywh coordinates of Engine Output window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1\cf6 /engineOutputX=}{\i\f1\cf6 xcoord  }{\f1\cf6 /engineOutputY=}{
-\i\f1\cf6 ycoord}{\f1\cf6   
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\f1\cf6   /engineOutputW=}{\i\f1\cf6 width}{\f1\cf6   /engineOutputH=}{\i\f1\cf6 height
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the engine-output window, giving the screen coordinates of the upper left-hand corner}{\f1  }{\f1\cf2 (relative to th
-e main window)}{\f1\cf6 , the width, and the height. All four arguments must be given together.
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-engineOutputUp}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Window Up}}}{\f1\cf6 /engineOutputUp }{\i\f1\cf6 true|false 
-\par }\pard \s2\li119\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 evalGraphUp}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Window Up}}}{\f1\cf6 /evalGraphUp }{\i\f1\cf6 true|false}{\f1\cf6 
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 moveHistoryUp}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Window Up}}}{\f1\cf6 /moveHistoryUp }{\i\f1\cf6 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If set to True, the corresponding window is displayed, if False, the window is absent.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 stickyWindows}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 stickyWindows}}}{\f1\cf6 /stickyWindows }{\i\f1\cf6 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Auxiliary windows touching the main window will stay attached to the latter when you move it.
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-autoDisplayComment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 autoDisplayComment}}}{\f1\cf6 /autoDisplayComment }{\i\f1\cf6 true|false
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 autoDisplayTags}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 autoDisplayTags}}}{\f1\cf6 /autoDisplayTags }{\i\f1\cf6 true|false
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If set to True, these options cause the window with the move comments, and the window with PGN tags, respectively, to p
-op up automatically when such tags or comments are encountered during the replaying a stored or loaded game.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 gameListTags}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 gameListTags}{\f1  }}}{\f1\cf6  /gameListTags }{\i\f1\cf6 string}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The }{\i\f1\cf6 string}{\f1\cf6  contains single-character codes specifying the PGN tags that have to be listed f
-or each game in the game-list window, and their order. The meaning of the characters is a=out-of-book info, b=black Elo, e=event, d=date, o=round, p=players, r=result, w=white Elo, s=site, t=time control and v=variant, Default: \ldblquote eprd\rdblquote .
-
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\cf6\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super +}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Adjudication Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  }{\f1\cf6 Adjudication Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicationOptions}}}{
-\b0\f1\fs18\cf6\up6  }{\f1\fs20\cf6 Adjudication Options
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 adjudicateLossThreshold}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 adjudicateLossThreshold}{\f1  }}}{\f1\cf6  /adjudicateLossThreshold }{\i\f1\cf6 
-scorethreshold}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If the given value is non-zero, WinBoard adjudicates the game as a loss if bo
-th engines agree for a duration of 6 consecutive ply that the score is below the given score threshold for that engine. Make sure the score is interpreted properly by WinBoard, using /firstScoreAbs and /secondScoreAbs if needed.}{\cf6 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 adjudicateDrawMoves}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 adjudicateDrawMoves}{\f1  }}}{\f1\cf6  /adjudicateDrawMoves }{\i\f1\cf6 number}{
-\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If the given value is non-zero, WinBoard adjudicates the game as a draw if after the given }{\i\f1\cf6 number}{\f1\cf6  of moves it was not yet decided.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 checkMates}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 checkMates}{\f1  }}}{\f1\cf11  /checkMates}{\i\f1\cf11  true|false}{\f1\cf11 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard detects all checkmates and stalemates, and ends the game as soon as they occur. Legality-testing must be on for this option to work.}
-{
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 testClaims}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 testClaims}{\f1  }}}{\f1\cf11  /testClaims}{\i\f1\cf11  true|false}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard verifies all result clai
-ms made by engines, and those who send false claims will forfeit the game because of it. Legality-testing must be on for this option to work.}{\cf11 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 materialDraws}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 materialDraws}{\f1  }}}{\f1\cf11  /materialDraws}{\i\f1\cf11  true|false}{\f1\cf11 
-
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-If this option is True, WinBoard adjudicates games as draws when there is no sufficient material left to create a checkmate. This applies to KBKB with like bishops, and to KBK, KNK and KK. Legality-testing must be on for this option to work.}{\cf11 
-
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 trivialDraws}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 trivialDraws}{\f1  }}}{\f1\cf11  /trivialDraws}{\i\f1\cf11  true|false}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-If this option is True, WinBoard adjudicates games as draws that cannot be usualy won without opponent assistance. This applies to KBKB with unlike bishops, and to KBKN, KNKN, KNNK, KRKR and KQKQ. The draw is c
-alled after 6 ply into these end-games, to allow quick mates that can occur in some positions. KQKQ does not really belong in this category, and might be taken out in the future. (When bitbase-based adjudications are implemented.) Legality-testing must be
- on for this option to work.}{\cf11 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 ruleMoves}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 ruleMoves}{\f1  }}}{\f1\cf11  /ruleMoves }{\i\f1\cf11 number}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If the given value is non-zero, WinBoard adjudicates the game as a draw after the given }{\i\f1\cf11 number}{\f1\cf11 
- of consecutive reversible moves. Engines can claim draws after 50 moves, irrespective of the value of }{\i\f1\cf11 number}{\f1\cf11 .}{\cf11 
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 repeatsToDraw}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 repeatsToDraw}{\f1  }}}{\f1\cf11  /repeatsToDraw }{\i\f1\cf11 number}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If the given value is non-zero, WinBoard adjudicates the game as a draw if a position is repeated the given }{\i\f1\cf11 number}{\f1\cf11 
- of times. Engines can claim draws after 3 repeats, (on the 3rd occurrence, actually), irrespective of the value of }{\i\f1\cf11 number}{\f1\cf11 . Beware that positions that have different castling or en-passant rights do not count as repeats, WinBoar
-d is fully e.p. and castling aware!}{\cf11 
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20\cf11 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super +}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Other Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Other Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  OtherOptions}}}{\b0\f1\fs18\up6  }{\f1\fs20 Other Options
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ncp }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ncp }}}{\f1  /ncp}{\b0\f1  or }{\f1 /xncp}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain 
-\s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  noChessProgram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  noChessProgram}}}{
-\f1  /noChessProgram}{\i\f1  true|false}{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-If this option is True, WinBoard acts as a passive chessboard; it does not start a chess program or connect to ICS. This option also sets clockMode to False. Default: False.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  mode}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  mode}}}{\f1  /mode}{\b0\f1  or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  initialMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  initialMode}}}{\f1  /initialMode }{\i\f1 modename
-
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is given, WinBoard selects the given }{\i\f1 modename}{\f1  from the }{\f1\uldb Mode menu}{\v\f1 ModeMenu }{\f1 
-after starting and (if applicable) processing the }{\f1\uldb loadGameFile}{\v\f1 loadGameFile }{\f1 or }{\f1\uldb loadPositionFile}{\v\f1 loadPositionFile }{\f1 option. Default: "". Other supported values are TwoMachin
-es, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 variant}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  variant}}}{\f1  /variant}{\b0\f1  }{\i\f1  varname}{\f1 
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Activates preliminary, partial support for playing chess variants against a local engine or editing variant games. This fl
-ag is not needed in ICS mode. Recognized variant names are:
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {normal\tab \tab Normal chess\line wildcastle\tab Shuffle chess, king can castle from d file\line nocastle\tab Shuffle chess, no castling allowed\line fischerandom\tab 
-Fischer Random shuffle chess\line bughouse\tab Bughouse, ICC/FICS rules\line crazyhouse\tab Crazyhouse, ICC/FICS rules\line losers  \tab Lose all pieces or get mated (ICC wild 17)\line suicide\tab Lose all pieces including king (FICS)\line giveaway\tab 
-Try to have no legal moves (ICC wild 26)\line twokings\tab Weird ICC wild 9\line kriegspiel\tab Opponent's pieces are invisible\line atomic   \tab Capturing piece explodes (ICC wild 27)\line 3check\tab Win by giving check 3 times (ICC wild 25)
-\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {xiangqi\tab Chinese Chess (on a 9x10 board)\line shogi\tab \tab Japanese Chess (on a 9x9 board, with piece drops) \line capablanca\tab 
-Capablanca Chess (10x8 board, with Archbishop and Chancellor pieces)\line gothic\tab \tab similar, with a better initial position\line caparandom\tab An FRC-like version of Capablanca Chess (10x8 board) \line janus\tab \tab 
-A game with two Archbishops (10x8 board)\line shatranj\tab Ancient Arabic Chess, with Elephants and General replacing B and Q.\line courier\tab Medieval intermedite between shatranj and modern Chess (on 12x8 board) \line falcon\tab \tab 
-A patented Chess variant with two Falcon pieces (10x8) board \line berolina\tab Pawns capture straight ahead, and move diagonal (legality testing off!)\line cylinder\tab Pieces wrap around the board, as if it were a cylinder (legality testing off!) \line 
-fairy\tab \tab A variant in which all pieces known to WinBoard can participate\line knightmate\tab King moves a Knight, and vice versa\line }{\cf2 super\tab \tab Superchess, a shuffle variant with B+N, R+N, K+N and Q+N compound\line great\tab \tab 
-Great Shatranj, variant without sliders, on 10x8 board (legality testing off!)\line }{
-\par In the shuffle variants, WinBoard does now shuffle the pieces, although you can still do it by hand using Edit Position. }{\cf0 Some variants are supported only in ICS mode, including bughouse, and kriegspiel.}{ }{\cf0 
-The winning/drawing conditions in crazyhouse (offboard interposition on mate), losers, suicide, giveaway, atomic, and 3check are not fully understood. In crazyhouse,}{ WinBoard now does keep track of offboard pieces.In shatranj it d
-oes implement the baring rule when mate detection is switched on.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 boardHeight}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 boardHeight}}}{\f1\cf11  /boardHeight }{\i\f1\cf11 height}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard number of board ranks in any variant. If the height is given as \lquote -1\rquote , the default height for the variant is used.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 boardWidth}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 boardWidth}}}{\f1\cf11  /boardWidth }{\i\f1\cf11 width}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard number of board files in any variant. If the width is given as \lquote -1\rquote , the default width for the variant is used. Wid
-th a non-standard width, the initial position will always be an empty board, as the usual opening array will not fit.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 holdingsSize}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 holdingsSize}}}{\f1\cf11  /holdingsSize }{\i\f1\cf11 size}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard size for the holdings in any variant. If the size is given as \lquote -1\rquote 
-, the default holdings size for the variant is used. The first }{\i\f1\cf11 size}{\f1\cf11  piece types will go into the holdings on capture, and you will be able to drop them on the board in stead of making a normal move. If }{\i\f1\cf11 size}{\f1\cf11 
- equals 0, there will be no holdings.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf6 defaultFrcPosition}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 defaultFrcPosition}}}{\f1\cf6  /defaultFrcPosition }{\i\f1\cf6 number}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Specifies the number of the opening position in shuffle games like FRC. A value of \lquote -1\rquote  means the position is randomly generated by WinBoard.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 pieceToSquareTable}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 pieceToSquareTable}}}{\f1\cf11  /pieceToSquareTable }{\i\f1\cf11 characterstring}{
-\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 
-The characters that are used to represent the piece types WinBoard knows in FEN diagrams and SAN moves. The string argument has to have an even length (or it will be ignored), as white and black piece
-s have to be given separately (in that order). The last letter for each color will be the King. The letters before that will be PNBRQ and then a whole host of fairy pieces in an order that has not fully crystallized yet (currently FEACWMOHIJGDVSLU, F=Ferz
-,
- Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, H=Nightrider). You should list at least all pieces that occur in the variant you are playing. If you have less than 44 characters in the string, the pieces not mentioned will get assign
-ed a period, and you will not be able to distinguish them in FENs. You can also explicitly assign pieces a period, in which case they will not be counted in deciding which captured pieces can go into the holdings.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 A tilde as a piece name does mean this piec
-e is used to represent a promoted Pawn in Crazyhouse-like games, i.e. on capture it turns back onto a Pawn. A + similarly indicate the piece is a Shogi-style promoted piece, that should revert to its non-promoted version on capture (rather than to a Pawn)
-.
-\par Note that promoted pieces are represented by pieces 11 further in the list.
-\par You should not have to use this option often: each variant has its own default setting for the piece representation in FEN, which should be sufficient in normal use.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  rsh }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  rsh }}}{\f1  /rsh }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  remoteShell }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  remoteShell }}}{\f1  /remoteShell }{\i\f1 shellname}
-{\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Name of the command used to run programs remotely. If this option is not given, WinBoard}{\i\f1  }{\f1 uses its own built-in implementation of the Unix }{\i\f1 rcmd}{\f1 
- protocol (the protocol used by }{\i\f1 rsh}{\f1 ).
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ruser }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ruser }}}{\f1  /ruser }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  remoteUser }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  remoteUser }}}{\f1  /remoteUser }{\i\f1 username}{
-\f1 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 User name on the remote system when running programs with the remoteShell. The default is your local user name.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{
-\f1\cf11 userName}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 userName}}}{\f1\cf11  /userName }{\i\f1\cf11 username}{\f1\cf11 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Name under which the Human player will be listed in the PGN file. (Default is the login name on your local computer.)
-\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 
-delayBeforeQuit}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 delayBeforeQuit}}}{\f1\cf6  /delayBeforeQuit }{\i\f1\cf6 number}{\f1\cf6 
-\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 delayAfterQuit}}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 delayAfterQuit}}}{\f1\cf6  /delayAfterQuit }{\i\f1\cf6 number}{\f1\cf6 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 These options specify how long WinBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the \lquote quit\rquote 
- command. The second one determines the pause after killing the engine, to make sure it dies.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ini }}#
-{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ini }}}{\f1  /ini }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  settingsFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  settingsFile }}}{\f1  /settingsFile }{\i\f1 
-filename\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 at sign}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super #}{\f1  atsign }}}{\f1 @ }{\i\f1 file-name
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 See }{\f1\uldb Settings}{\v\f1 Settings}{\f1 .
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Initialization files}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Files}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Files}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Files}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  INITIALIZATION FILES
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Settings }
-}}{\f1\fs18\up6  }{\cs58\f1\super #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Settings }}}{\f1  Settings
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {When WinBoard starts up, it reads option settings from a file named }{\i WinBoard.ini }{
-in its installation directory (the directory containing WinBoard.exe). Options in this file have the same format as }{\uldb command line options}{\v Options}{, except that they do not all ha
-ve to be on a single line. You can put a comment in a settings file by preceding it with a semicolon (}{\f2 ;}{).
-\par The WinBoard.ini file is read before the command line is processed, so any options you give on the command line override options in the file.
-\par }{\f1 If WinBoard encounters a /}{\f1\uldb settingsFile}{\v\f1 settingsFile}{\f1  }{\i\f1 filename }{\f1 or }{\f1\uldb @}{\v\f1 atsign}{\i\f1 filename }{\f1 
-option while reading settings (whether from the command line or a file), it reads more settings from the given file before reading the next option.
-\par The }{\f1\uldb Save Settings Now}{\v\f1 SaveSettings}{\f1  menu command writes the current values of most options to a file. In addition, settings are saved automatically when WinBoard exits if }{\f1\uldb Save Settings on Exit}{\v\f1 SaveSettingsOnExit}{
-\f1  is checked. The settings are written to the last file named in a /settingsFile command, if any; otherwise to WinBoard.ini}{\i\f1 .}{\f1  The @ option does not affect which file settings are saved to.
-\par Warning: Because Save Settings overwrites the last settings file (usually WinBoard.ini) and only saves a subset of WinBoard's options, you should not add 
-settings of more options to such a file with a text editor. If you do this, your additional options will be lost on the next Save Settings. You can change the values of existing settings freely, using Notepad or any plain text editor. Be careful not to do
- this while WinBoard is running, however, unless you know that Save Settings on Exit is off. Otherwise all your changes will be overwritten and lost when WinBoard exits.
-\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 Notice that tournament managers, like PSWBTM, usually call WinBoard with the option not
- to save settings on exit, so that the entire tournament uses the same settings. So it does make sense to edit \lquote volatile\rquote  options, such as /variant, into the settings file.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ICS Logon}
-}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSLogon}}}{\f1  ICS Logon
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Whenever WinBoard connects to the Internet Chess Server, if it finds a file called }{\i\f1 ICS.ini }{\f1 in its installation directory}{\i\f1 ,}{\f1 
- it feeds the file's contents to the ICS as commands. Usually the first two lines of the file should be your ICS user name and password. You can specify a different name instead of }{\i\f1 ICS.ini}{\f1  by using the }{\f1\uldb icslogon}{\v\f1 icslogon}{
-\f1  command line option.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Installing Chess Engines}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Installing Chess Engines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
-\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  InstallingChessEngines}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  INSTALLING CHESS ENGINES
-
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Introduction
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard is capable o
-f operating with many different chess engines. You can play chess against a compatible engine, set up matches between two engines, or (advanced users only) run an automated computer player on an ICS.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Typically, the main difficulty in installing a new chess
- engine for use by WinBoard comes in getting the engine itself running and setting its options appropriately. The connection to WinBoard is relatively straightforward.
-\par WinBoard-compatible chess engines are Win32 command line programs that you can run by ha
-nd in an MS-DOS Prompt box and type human-readable commands to. WinBoard connects to an engine simply by starting the engine up in the background and communicating with it through a pair of pipes. Therefore the basic procedure for installing an engine is:
-
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Get a copy of the engine and any supporting files it needs.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 
-2. Install and configure the engine as a command-line program by following the instructions that come with it. Try it out by running it from the command line in an MS-DOS Prompt box and make sure it works.
-\par 3. Optional, but recommended: Try out the WinBoard plus engine combination by running WinBoard with the proper command line arguments in an MS-DOS Prompt box.
-\par 4. Create a shortcut on your desktop or Start menu to run the engine with WinBoard.
-\par 5. Optionally edit your WinBoard.ini file to add the engine to the drop-down lists on WinBoard's startup dialog.
-\par This document cannot explain steps 1 and 2 in detail for all engines, but we will take you through all five steps in outline, using Crafty as an example.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Example: Crafty
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Choose a directory to put Crafty in. We'll use }{\f2 C:\\Program Files\\Crafty}{\f1 
- in this example. Download your copy of Crafty into this directory from its author's FTP site, }{\f2 ftp://ftp.cis.uab.edu/pub/hyatt}{\f1 . At this writing, you will need at least the following files:
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 read.me\line v15/crafty.doc\line v15/crafty.faq\line v15/wcrafty-15.*.exe}{\f1\fs20 
- (where * is replaced by the largest number there)\line }{\f2\fs20 common/start.zip}{\fs20 \line }{\f2\fs20 common/medium.zip}{\fs20  }{\f1\fs20 (or another book).
-\par }\pard\plain \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 2. The first three files are documentation that you can read
- with a text editor. Read the read.me file first and follow the instructions carefully. This will take some time. Do not write to the author of WinBoard if you have trouble with the instructions in the Crafty read.me. Try running Crafty from an MS-DOS Pro
-mpt box and make sure it works before you go on.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 3. Optional, but recommended: In an MS-DOS Prompt box,}{ }{\f2 cd }{\f1 to the directory where WinBoard is installed, typically }{\f2 "C:\\Program Files\\WinBoard"}{\f1 
-. Then type the following command line. Use the actual name of the wcrafty file you downloaded, not an }{\f2 *}{\f1 , and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.
-
-\par }\pard\plain \s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid {WinBoard /cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\Crafty" /scp=WCrafty-15.* /sd="C:\\Program Files\\Crafty"
-\par }\pard\plain \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard should start up, with Crafty running as its chess engine. Check that you can play chess against Crafty.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 4. To make a shortcut or Start menu entry for Crafty: Right-click on the desktop and select New/Shortcut. Use the Bro
-wse button to find your winboard.exe file and get its name into the Command Line box. (It usually will be "C:\\Program Files\\WinBoard\\
-winboard.exe".) Click in the Command Line box and hit the End key to go to the end. Add the following to the end of the command line, }{\i\f1 after}{\f1  the closing quotation mark. Use the actual name of the wcrafty file you downloaded, not an }{\f2 *}{
-\f1 , and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.
-\par }\pard\plain \s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid {/cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\Crafty" \line /scp=WCrafty-15.* /sd="C:\\Program Files\\Crafty"
-\par }\pard\plain \s62\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Press Next, choose a name for the shortcut, and press Finish. You can now use this shortcut to run WinBoard with Crafty. Double-click it to check that it works. You c
-an drag or copy the shortcut into your Start menu if you like.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 5. To add Crafty as an option in the WinBoard Startup dialog, edit your }{\f1\uldb WinBoard.ini file}{\v\f1 Settings}{\f1 
- with Notepad or another plain text editor, carefully following the example shown under }{\f1\uldb /firstChessProgramNames}{\v\f1 firstChessProgramNames}{\f1  above.
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 For more information
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you would like to run an automated computer player on the ICS, see the separate file }{\f2 zippy.README}{\f1 
-. If you would like to write your own engine to interface to WinBoard, see the separate file }{\f2 engine-intf.html}{\f1 
-, and join the mailing list mentioned there. Both files are included in the WinBoard distribution. You might also want to get the source code for WinBoard. It is available from the author's Web page, http://www.tim-mann.org/chess.html}{\f2 .}{\f1 
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Firewalls}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Firewalls}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Firewalls}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 FIREWALLS
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 By default, "WinBoard /ics"}{\i\f1  }{\f1 
-communicates with an Internet Chess Server by opening a TCP socket directly from the machine it is running on to the ICS. If there is a firewall between your machine and the ICS, this won't work. Here are some recipes for getting around common kinds of fi
-rewalls using special options to WinBoard}{\i\f1 .}{\f1  Important: See the paragraph in the }{\f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{\f1  section below about extra echoes.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Suppose that you can't telnet directly to ICS, but you can telnet to a firewall host, log in, and then telnet from there 
-to ICS. Let's say the firewall is called fire.wall.com. Set command-line options as follows: 
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 WinBoard -ics -icshost fire.wall.com -icsport 23
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Then when you run WinBoard}{\i\f1  }{\f1 in ICS mode, you will be prompted to log in to the firewall host. (This works because 
-port 23 is the standard telnet login service.) Do so, then telnet to ICS, using a command like "telnet chessclub.com 5000", or whatever command the firewall provides for telnetting to port 5000.
-\par If your firewall lets you telnet (or rlogin) to remote hosts,
- but doesn't let you telnet to port 5000, you will have to find some other host outside the firewall that does let you do this, and hop through it. For instance, suppose you have an account at foo.edu. Follow the recipe above, but instead of typing "telne
-t chessclub.com 5000" to the firewall, type "telnet foo.edu" (or "rlogin foo.edu"), log in there, and then type "telnet chessclub.com 5000".
-\par Exception: chessclub.com itself lets you connect to the chess server on the default telnet port (23), which is what you get if you don\rquote t specify a port to the telnet program. But the other chess servers don\rquote t allow this.
-\par Suppose that you can't telnet directly to ICS, but you can use rsh to run programs on a firewall host, and that host can telnet to ICS. Let's say the firewall is called rsh.wall.com. Set command-line options as follows: 
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 WinBoard -ics -gateway rsh.wall.com -icshost chessclub.com
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Then when you run WinBoard}{\i\f1  }{\f1 in ICS mode, it will connect to the ICS by using rsh to run the command "telnet chessclub.com 5000" on host rsh.wall.com.
-\par ICC timestamp and FICS timeseal do not work through many}{\b\f1  }{\f1 firewalls. You can use them only if your firewall gives a clean TCP connection with a full 8-bit wide path. If your firewall allows you to get out only by running a special teln
-et program, you can't use timestamp or timeseal across it. But if you have access to a computer just outside your firewall, and you have much lower netlag when talking to that computer than to the ICS, it might be worthwhile running timestamp there. Follo
-w the instructions above for hopping through a host outside the firewall (foo.edu in the example), but run timestamp or timeseal on that host instead of telnet.
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Suppose that you have a SOCKS firewall that requires you to go through some extra level of authe
-ntication, but after that will give you a clean 8-bit wide TCP connection to the chess server. In that case, if you are using timestamp or timeseal, you need to somehow socksify it; if not, you need to socksify WinBoard itself. Socksification is beyond th
-e scope of this document, but see the SOCKS Web site at http://www.socks.nec.com/how2socksify.html.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Limitations}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Limitations}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Limitations}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 LIMITATIONS }{\f1\fs20\cf11 
-AND NON-LIMITATIONS}{\f1\fs20 
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard}{\i\f1  }{\f1 is a Win32 application. It runs only on Windows NT and Window
-s 95. It does not work on Windows 3.11 or earlier, even with the Win32s compatibility package.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\i\f1 CMail, }{\f1 the companion program to xboard for playing electronic mail correspondence chess, has not been ported to Win32.
-\par There is no way for two people running copies of WinBoard}{\i\f1  }{\f1 to play each other without going through the Internet Chess Server.
-\par Under some circumstances, your ICS password may be echoed when you log on.
-\par If you are connecting to the ICS by running telnet, timestamp, or timeseal on an Internet provid
-er host, you may find that each line you type is echoed back an extra time after you hit Enter. You can probably turn this echo off. If your Internet provider is a Unix system, type "}{\f2 stty -echo}{\f1 
-" after you log in to the provider but before you run telnet, timestamp, or timeseal. In addition, you may need to type the sequence \ldblquote }{\f2 Ctrl+Q Ctrl+E Enter}{\f1 \ldblquote  after you have finished logging in to ICS. On VMS, type \ldblquote }
-{\f2 set terminal /noecho /nowrap}{\f1 \rdblquote , and after you telnet to the ICS, type \ldblquote }{\f2 Ctrl+Q Ctrl+] Enter set mode char Enter Enter}{\f1 \rdblquote 
-. It is a good idea to turn off the extra remote echo if you can, because otherwise it can get interleaved with output from the ICS and confuse WinBoard's parsing routines. Don\rquote t just turn off }{\f1\uldb Local Line Editing}{\v\f1 localLineEditing}{
-\f1  so that you see only the remote echo and not the local one; that will make the interleaving problem worse.
-\par The game parser recognizes only algebraic notation (SAN).
-\par The }{\f1\uldb ICS logon}{\v\f1 ICSLogon}{\f1  file does not work properly when you connect to ICS through a Unix gateway host by setting }{\f1\uldb icsPort}{\v\f1 icsPort}{\f1  to 23. The Unix login process apparently discards type-ahead.
-\par Some WinBoard functions may not work with versions of GNU Chess earlier than 4.0, patchlevel 77. The current version of WinBoard}{\i\f1  }{\f1 works best with Crafty version 15.11 or later.
-\par }{\f1\cf11 Many of the following points used to be limitations in WinBoard 4.2.7 and earlier, but are now fixed:
-\par The internal move legality tester in WinBoard 4.3.xx does look at the game history, and is fully aware of castling or en passant-capture rights. }{\f1 It permits castling with the king on the }{\b\f1 d}{\f1 
- file because this is possible in some "wild 1" games on ICS. The piece-drop menu does not check piece drops in bughouse to see if you actually hold the piece you are trying to drop.}{\f1\cf11 
- But this way of dropping pieces should be considered an obsolete feature, now that pieces can be dropped by dragging them from the holdings to the board. }{\f1 Anyway, if you would attempt an illegal move when using a chess engine or the ICS,}{\f1\cf11  
-}{\f1 WinBoard will accept the error message that comes back, undo the move, and let you try another.
-\par }{\f1\cf11 FEN positions saved by WinBoard}{\i\f1\cf11  }{\f1\cf11 do include correct information about whether castling or en passant are legal, and also handle the 50-move counter.
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The mate detector does not understand that non-contact mate is not really mate in bughouse.}{\f1\cf11  }{\f1 
-The only problem this causes while playing is minor: a "#" (mate indicator) character will show up after a non-contact mating move in the move list. WinBoard will not assume the game is over at that point,}{\f1\cf11 
- not even when the option Detect Mates is on.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Edit Game mode always uses the rules of the selected variant, which can be a variant that uses piece drops.  You can load and edit games that contain p
-iece drops. The (obsolete) piece menus are not active, but you can perform piece drops by dragging pieces from the holdings.
-\par Edit Position mode does not allow you to edit the Crazyhouse holdings properly. You cannot drag pieces to the holding, and using th
-e popup menu to put pieces there does not adapt the holding counts and leads to an inconsistent state. Set up Crazyhouse positions by loading / pasting a bFEN, from there you can set the holdings.
-\par Fischer Random castling is fully understood. You can enter castlings by dragging the King on top of your Rook. You can probably also play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window.
-\par }{\f1 Also see the ToDo file included with the distribution for many other possible bugs, limitations, and ideas for improvement that have been suggested.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Authors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Authors}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {
-\cs58\f1\super $}{\f1  Authors}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 AUTHORS AND CONTRIBUTORS
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard is partly based on }{\i\f1 xboard}{\f1 , a chessboard program for Unix and the X Window System. Tim Mann has been responsible for all versions of WinBoard,}{
-\i\f1  }{\f1 and for xboard versions 1.3 and beyond. }{\f1\cf11 H.G.Muller is responsible for version 4.3.}{\f1 
-\par Mark Williams added many features to WinBoard 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mode, auto raise, and blindf
-old. Hugh Fischer added piece animation to xboard, and Henrik Gram added it to WinBoard. Frank McIngvale contributed many xboard}{\i\f1  }{\f1 user interface improvements and improved Crafty support. Jochen Wiedmann ported xboard}{\i\f1  }{\f1 
-to the Amiga, creating }{\i\f1 AmyBoard}{\f1 , and converted the documentation to texinfo. Elmar Bartel contributed the new piece bitmaps for version 3.2. Evan Welsh wrote }{\i\f1 CMail. }{\f1 
-John Chanak contributed the initial implementation of ICS mode. The default color scheme was adapted from Wayne Christopher's }{\i\f1 XChess }{\f1 program. Chris Sears and Dan Sears wrote the original xboard}{\i\f1 . }{\f1 They were responsible for xboard
-}{\i\f1  }{\f1 versions 1.0 through 1.2. }{\f1\cf6 Allessandro Scotti added many elements to the user interface, including the board textures and font-based rendering, the evaluation-g
-raph, move-history and engine-output window. He was also responsible for adding the UCI support.}{\f1  }{\f1\cf11 
-H.G. Muller made WinBoard castling- and e.p.-aware, added variant support with adjustable board sizes, the Crazyhouse holdings, and the fairy pieces. In additi
-on he added most of the adjudication options, made WinBoard ore robust in dealing with buggy and crashing engines, and extended time control with a time-odds and node-count-based modes.}{\f1 
-\par Send bug reports to <bug-xboard at gnu.org>. Please run WinBoard with the /debug option and include the output from the resulting WinBoard.debug file in your message.
-\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 The WinBoard 4.3.xx line is being developed by H.G. Muller independently of the GNU Savannah xboard project. Bug reports on this version, and suggestions for impr
-ovements and additions, are best posted in the WinBoard forum, development section (}{\field{\*\fldinst {\f1  HYPERLINK http://www.open-aurec.com/wbforum) }{\f1 {\*\datafield 
-00d0c9ea79f9bace118c8200aa004ba90b02000000170000002300000068007400740070003a002f002f007700770077002e006f00700065006e002d00610075007200650063002e0063006f006d002f007700620066006f00720075006d0029000000e0c9ea79f9bace118c8200aa004ba90b460000006800740074007000
-3a002f002f007700770077002e006f00700065006e002d00610075007200650063002e0063006f006d002f007700620066006f00720075006d00290000000000000000000000000000}}}{\fldrslt {\cs59\ul\cf2 http://www.open-aurec.com/wbforum)}}}{\f1 .
-\par }{\f1\cf2 Michel van den Bergh provided the code for reading Polyglot opening books.
-\par Arun Persaud worked with H.G. Muller to combine all the features of the never-released WinBoard 4.2.8 of the Savannah project (mainly by Daniel Mehrmann), and the never-released 4.3.16 into a unified WinBoard 4.4, which is now available both from the Sava
-nnah web site and the WinBoard forum.
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super 
-K}{\f1  Copyright}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Copyright}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright 
-\f5\fs20\cgrid {\cs58\f1\super $}{\f1  Copyright}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 COPYRIGHT
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. \line Enhancements Copyright 1992-2009 Free Software Foundation, Inc.
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The following terms apply to Digital Equipment Corporation's copyright interest in WinBoard:
-\par All Rights Reserved
-\par Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided
- that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-\par DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENT
-IAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-\par The following terms apply to the enhanced version of WinBoard distributed by the Free Software Foundation:
-\par This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
-\par This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-\par You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-\par }}
\ No newline at end of file
diff --git a/winboard/wlayout.c b/winboard/wlayout.c
deleted file mode 100644
index 04f6eb6..0000000
--- a/winboard/wlayout.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Layout management
- *
- * Author: Alessandro Scotti (Dec 2005)
- *
- * Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h> /* required for all Windows applications */
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <commdlg.h>
-#include <dlgs.h>
-
-#include "common.h"
-#include "winboard.h"
-
-VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp )
-{
-    if( wp->x != CW_USEDEFAULT || 
-        wp->y != CW_USEDEFAULT ||
-        wp->width != CW_USEDEFAULT || 
-        wp->height != CW_USEDEFAULT )
-    {
-	WINDOWPLACEMENT stWP;
-
-        ZeroMemory( &stWP, sizeof(stWP) );
-
-	EnsureOnScreen( &wp->x, &wp->y, 0, 0);
-
-	stWP.length = sizeof(stWP);
-	stWP.flags = 0;
-	stWP.showCmd = SW_SHOW;
-	stWP.ptMaxPosition.x = 0;
-        stWP.ptMaxPosition.y = 0;
-	stWP.rcNormalPosition.left = wp->x;
-	stWP.rcNormalPosition.right = wp->x + wp->width;
-	stWP.rcNormalPosition.top = wp->y;
-	stWP.rcNormalPosition.bottom = wp->y + wp->height;
-
-	SetWindowPlacement(hWnd, &stWP);
-    }
-}
-
-VOID InitWindowPlacement( WindowPlacement * wp )
-{
-    wp->visible = TRUE;
-    wp->x = CW_USEDEFAULT;
-    wp->y = CW_USEDEFAULT;
-    wp->width = CW_USEDEFAULT;
-    wp->height = CW_USEDEFAULT;
-}
-
-static BOOL IsAttachDistance( int a, int b )
-{
-    BOOL result = FALSE;
-
-    if( a == b ) {
-        result = TRUE;
-    }
-
-    return result;
-}
-
-static BOOL IsDefaultPlacement( WindowPlacement * wp )
-{
-    BOOL result = FALSE;
-
-    if( wp->x == CW_USEDEFAULT || wp->y == CW_USEDEFAULT || wp->width == CW_USEDEFAULT || wp->height == CW_USEDEFAULT ) {
-        result = TRUE;
-    }
-
-    return result;
-}
-
-static BOOL GetActualPlacement( HWND hWnd, WindowPlacement * wp )
-{
-    BOOL result = FALSE;
-
-    if( hWnd != NULL ) {
-        WINDOWPLACEMENT stWP;
-
-        ZeroMemory( &stWP, sizeof(stWP) );
-
-        stWP.length = sizeof(stWP);
-
-        GetWindowPlacement( hWnd, &stWP );
-
-        wp->x = stWP.rcNormalPosition.left;
-        wp->y = stWP.rcNormalPosition.top;
-        wp->width = stWP.rcNormalPosition.right - stWP.rcNormalPosition.left;
-        wp->height = stWP.rcNormalPosition.bottom - stWP.rcNormalPosition.top;
-
-        result = TRUE;
-    }
-
-    return result;
-}
-
-static BOOL IsAttachedByWindowPlacement( LPRECT lprcMain, WindowPlacement * wp )
-{
-    BOOL result = FALSE;
-
-    if( ! IsDefaultPlacement(wp) ) {
-        if( IsAttachDistance( lprcMain->right, wp->x ) ||
-            IsAttachDistance( lprcMain->bottom, wp->y ) ||
-            IsAttachDistance( lprcMain->left, (wp->x + wp->width) ) ||
-            IsAttachDistance( lprcMain->top, (wp->y + wp->height) ) )
-        {
-            result = TRUE;
-        }
-    }
-
-    return result;
-}
-
-VOID ReattachAfterMove( LPRECT lprcOldPos, int new_x, int new_y, HWND hWndChild, WindowPlacement * pwpChild )
-{
-    if( ! IsDefaultPlacement( pwpChild ) ) {
-        GetActualPlacement( hWndChild, pwpChild );
-
-        if( IsAttachedByWindowPlacement( lprcOldPos, pwpChild ) ) {
-            /* Get position delta */
-            int delta_x = pwpChild->x - lprcOldPos->left;
-            int delta_y = pwpChild->y - lprcOldPos->top;
-
-            /* Adjust placement */
-            pwpChild->x = new_x + delta_x;
-            pwpChild->y = new_y + delta_y;
-
-            /* Move window */
-            if( hWndChild != NULL ) {
-                SetWindowPos( hWndChild, HWND_TOP,
-                    pwpChild->x, pwpChild->y,
-                    0, 0,
-                    SWP_NOZORDER | SWP_NOSIZE );
-            }
-        }
-    }
-}
-
-extern FILE *debugFP;
-VOID ReattachAfterSize( LPRECT lprcOldPos, int new_w, int new_h, HWND hWndChild, WindowPlacement * pwpChild )
-{
-    if( ! IsDefaultPlacement( pwpChild ) ) {
-        GetActualPlacement( hWndChild, pwpChild );
-
-        if( IsAttachedByWindowPlacement( lprcOldPos, pwpChild ) ) {
-            /* Get delta of lower right corner */
-            int delta_x = new_w - (lprcOldPos->right  - lprcOldPos->left);
-            int delta_y = new_h - (lprcOldPos->bottom - lprcOldPos->top);
-
-            /* Adjust size & placement */
-            if(pwpChild->x + pwpChild->width  >= lprcOldPos->right  )
-		pwpChild->width += delta_x;
-            if(pwpChild->y + pwpChild->height >= lprcOldPos->bottom )
-		pwpChild->height += delta_y;
-            if(pwpChild->x >= lprcOldPos->right)  pwpChild->width  -= delta_x, pwpChild->x += delta_x;
-            if(pwpChild->y >= lprcOldPos->bottom) pwpChild->height -= delta_y, pwpChild->y += delta_y;
-            /* Move window */
-            if( hWndChild != NULL ) {
-                SetWindowPos( hWndChild, HWND_TOP,
-                    pwpChild->x, pwpChild->y,
-                    pwpChild->width, pwpChild->height,
-                    SWP_NOZORDER );
-            }
-        }
-    }
-}
diff --git a/winboard/woptions.c b/winboard/woptions.c
deleted file mode 100644
index 62fe318..0000000
--- a/winboard/woptions.c
+++ /dev/null
@@ -1,3015 +0,0 @@
-/*
- * woptions.c -- Options dialog box routines for WinBoard
- *
- * Copyright 2000,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "config.h"
-
-#include <windows.h>   /* required for all Windows applications */
-#include <stdio.h>
-#include <stdlib.h>
-#include <shlobj.h>    /* [AS] Requires NT 4.0 or Win95 */
-#include <ctype.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "backend.h"
-#include "woptions.h"
-#include "defaults.h"
-#include "wedittags.h"
-#include <richedit.h>
-
-#if __GNUC__
-#include <errno.h>
-#include <string.h>
-#endif
-
-/* Imports from winboard.c */
-
-extern MyFont *font[NUM_SIZES][NUM_FONTS];
-extern HINSTANCE hInst;          /* current instance */
-extern HWND hwndMain;            /* root window*/
-extern BOOLEAN alwaysOnTop;
-extern RECT boardRect;
-extern COLORREF lightSquareColor, darkSquareColor, whitePieceColor, 
-  blackPieceColor, highlightSquareColor, premoveHighlightColor;
-extern HPALETTE hPal;
-extern BoardSize boardSize;
-extern COLORREF consoleBackgroundColor;
-extern MyColorizeAttribs colorizeAttribs[]; /* do I need the size? */
-extern MyTextAttribs textAttribs[];
-extern MySound sounds[];
-extern ColorClass currentColorClass;
-extern HWND hwndConsole;
-extern char *defaultTextAttribs[];
-extern HWND commentDialog;
-extern HWND moveHistoryDialog;
-extern HWND engineOutputDialog;
-extern char installDir[];
-extern HWND hCommPort;    /* currently open comm port */
-extern DCB dcb;
-extern BOOLEAN chessProgram;
-extern int startedFromPositionFile; /* [HGM] loadPos */
-
-/* types */
-
-typedef struct {
-  char *label;
-  unsigned value;
-} ComboData;
-
-typedef struct {
-  char *label;
-  char *name;
-} SoundComboData;
-
-/* module prototypes */
-
-LRESULT CALLBACK GeneralOptions(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK BoardOptions(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK NewVariant(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK IcsOptions(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK FontOptions(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK CommPortOptions(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK LoadOptions(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK SaveOptions(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK TimeControl(HWND, UINT, WPARAM, LPARAM);
-VOID ChangeBoardSize(BoardSize newSize);
-VOID PaintSampleSquare(
-    HWND     hwnd, 
-    int      ctrlid, 
-    COLORREF squareColor, 
-    COLORREF pieceColor,
-    COLORREF squareOutlineColor,
-    COLORREF pieceDetailColor,
-    BOOL     isWhitePiece,
-    BOOL     isMono,
-    HBITMAP  pieces[3] 
-    );
-VOID PaintColorBlock(HWND hwnd, int ctrlid, COLORREF color);
-VOID SetBoardOptionEnables(HWND hDlg);
-BoardSize BoardOptionsWhichRadio(HWND hDlg);
-BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font);
-VOID UpdateSampleText(HWND hDlg, int id, MyColorizeAttribs *mca);
-LRESULT CALLBACK ColorizeTextDialog(HWND , UINT, WPARAM, LPARAM);
-VOID ColorizeTextPopup(HWND hwnd, ColorClass cc);
-VOID SetIcsOptionEnables(HWND hDlg);
-VOID SetSampleFontText(HWND hwnd, int id, const MyFont *mf);
-VOID CopyFont(MyFont *dest, const MyFont *src);
-void InitSoundComboData(SoundComboData *scd);
-void ResetSoundComboData(SoundComboData *scd);
-void InitSoundCombo(HWND hwndCombo, SoundComboData *scd);
-int SoundDialogWhichRadio(HWND hDlg);
-VOID SoundDialogSetEnables(HWND hDlg, int radio);
-char * SoundDialogGetName(HWND hDlg, int radio);
-void DisplaySelectedSound(HWND hDlg, HWND hCombo, const char *name);
-VOID ParseCommSettings(char *arg, DCB *dcb);
-VOID PrintCommSettings(FILE *f, char *name, DCB *dcb);
-void InitCombo(HANDLE hwndCombo, ComboData *cd);
-void SelectComboValue(HANDLE hwndCombo, ComboData *cd, unsigned value);
-VOID SetLoadOptionEnables(HWND hDlg);
-VOID SetSaveOptionEnables(HWND hDlg);
-VOID SetTimeControlEnables(HWND hDlg);
-void NewSettingEvent(int option, char *command, int value);
-
-/*---------------------------------------------------------------------------*\
- *
- * General Options Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-
-LRESULT CALLBACK
-GeneralOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static Boolean oldShowCoords;
-  static Boolean oldBlindfold;
-  static Boolean oldShowButtonBar;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    oldShowCoords = appData.showCoords;
-    oldBlindfold  = appData.blindfold;
-    oldShowButtonBar = appData.showButtonBar;
-
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-
-    /* Initialize the dialog items */
-#define CHECK_BOX(x,y) CheckDlgButton(hDlg, (x), (BOOL)(y))
-
-    CHECK_BOX(OPT_AlwaysOnTop, alwaysOnTop);
-    CHECK_BOX(OPT_AlwaysQueen, appData.alwaysPromoteToQueen);
-    CHECK_BOX(OPT_AnimateDragging, appData.animateDragging);
-    CHECK_BOX(OPT_AnimateMoving, appData.animate);
-    CHECK_BOX(OPT_AutoFlag, appData.autoCallFlag);
-    CHECK_BOX(OPT_AutoFlipView, appData.autoFlipView);
-    CHECK_BOX(OPT_AutoRaiseBoard, appData.autoRaiseBoard);
-    CHECK_BOX(OPT_Blindfold, appData.blindfold);
-    CHECK_BOX(OPT_HighlightDragging, appData.highlightDragging);
-    CHECK_BOX(OPT_HighlightLastMove, appData.highlightLastMove);
-    CHECK_BOX(OPT_PeriodicUpdates, appData.periodicUpdates);
-    CHECK_BOX(OPT_PonderNextMove, appData.ponderNextMove);
-    CHECK_BOX(OPT_PopupExitMessage, appData.popupExitMessage);
-    CHECK_BOX(OPT_PopupMoveErrors, appData.popupMoveErrors);
-    CHECK_BOX(OPT_ShowButtonBar, appData.showButtonBar);
-    CHECK_BOX(OPT_ShowCoordinates, appData.showCoords);
-    CHECK_BOX(OPT_ShowThinking, appData.showThinking);
-    CHECK_BOX(OPT_TestLegality, appData.testLegality);
-    CHECK_BOX(OPT_HideThinkFromHuman, appData.hideThinkingFromHuman);
-    CHECK_BOX(OPT_SaveExtPGN, appData.saveExtendedInfoInPGN);
-    CHECK_BOX(OPT_ExtraInfoInMoveHistory, appData.showEvalInMoveHistory);
-    CHECK_BOX(OPT_HighlightMoveArrow, appData.highlightMoveWithArrow);
-
-#undef CHECK_BOX
-
-    EnableWindow(GetDlgItem(hDlg, OPT_AutoFlag),
-		 appData.icsActive || !appData.noChessProgram);
-    EnableWindow(GetDlgItem(hDlg, OPT_AutoFlipView),
-		 appData.icsActive || !appData.noChessProgram);
-    EnableWindow(GetDlgItem(hDlg, OPT_PonderNextMove),
-		 !appData.noChessProgram);
-    EnableWindow(GetDlgItem(hDlg, OPT_PeriodicUpdates), 
-		 !appData.noChessProgram && !appData.icsActive);
-    EnableWindow(GetDlgItem(hDlg, OPT_ShowThinking), 
-		 !appData.noChessProgram);
-    return TRUE;
-
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* Read changed options from the dialog box */
-      
-#define IS_CHECKED(x) (Boolean)IsDlgButtonChecked(hDlg, (x))
-
-      alwaysOnTop                  = IS_CHECKED(OPT_AlwaysOnTop);
-      appData.alwaysPromoteToQueen = IS_CHECKED(OPT_AlwaysQueen);
-      appData.animateDragging      = IS_CHECKED(OPT_AnimateDragging);
-      appData.animate              = IS_CHECKED(OPT_AnimateMoving);
-      appData.autoCallFlag         = IS_CHECKED(OPT_AutoFlag);
-      appData.autoFlipView         = IS_CHECKED(OPT_AutoFlipView);
-      appData.autoRaiseBoard       = IS_CHECKED(OPT_AutoRaiseBoard);
-      appData.blindfold            = IS_CHECKED(OPT_Blindfold);
-      appData.highlightDragging    = IS_CHECKED(OPT_HighlightDragging);
-      appData.highlightLastMove    = IS_CHECKED(OPT_HighlightLastMove);
-      PeriodicUpdatesEvent(          IS_CHECKED(OPT_PeriodicUpdates));
-      PonderNextMoveEvent(           IS_CHECKED(OPT_PonderNextMove));
-      appData.popupExitMessage     = IS_CHECKED(OPT_PopupExitMessage);
-      appData.popupMoveErrors      = IS_CHECKED(OPT_PopupMoveErrors);
-      appData.showButtonBar        = IS_CHECKED(OPT_ShowButtonBar);
-      appData.showCoords           = IS_CHECKED(OPT_ShowCoordinates);
-      // [HGM] thinking: next three moved up
-      appData.saveExtendedInfoInPGN= IS_CHECKED(OPT_SaveExtPGN);
-      appData.hideThinkingFromHuman= IS_CHECKED(OPT_HideThinkFromHuman);
-      appData.showEvalInMoveHistory= IS_CHECKED(OPT_ExtraInfoInMoveHistory);
-#if 0
-      ShowThinkingEvent(             IS_CHECKED(OPT_ShowThinking));
-#else
-      appData.showThinking         = IS_CHECKED(OPT_ShowThinking);
-      ShowThinkingEvent(); // [HGM] thinking: tests four options
-#endif
-      appData.testLegality         = IS_CHECKED(OPT_TestLegality);
-      appData.highlightMoveWithArrow=IS_CHECKED(OPT_HighlightMoveArrow);
-
-#undef IS_CHECKED
-
-      SetWindowPos(hwndMain, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST,
-		   0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
-#if AOT_CONSOLE
-      if (hwndConsole) {
-	SetWindowPos(hwndConsole, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST,
-		     0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
-      }
-#endif
-      if (!appData.highlightLastMove) {
-	ClearHighlights();
-	DrawPosition(FALSE, NULL);
-      }
-      /* 
-       * for some reason the redraw seems smoother when we invalidate
-       * the board rect after the call to EndDialog()
-       */
-      EndDialog(hDlg, TRUE);
-
-      if (oldShowButtonBar != appData.showButtonBar) {
-	InitDrawingSizes(boardSize, 0);
-      } else if ((oldShowCoords != appData.showCoords) || 
-		 (oldBlindfold != appData.blindfold)) {
-	InvalidateRect(hwndMain, &boardRect, FALSE);
-      }
-
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID 
-GeneralOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc;
-
-  lpProc = MakeProcInstance((FARPROC)GeneralOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_GeneralOptions), hwnd,
-	    (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-/*---------------------------------------------------------------------------*\
- *
- * Board Options Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-const int SAMPLE_SQ_SIZE = 54;
-
-VOID
-ChangeBoardSize(BoardSize newSize)
-{
-  if (newSize != boardSize) {
-    boardSize = newSize;
-    InitDrawingSizes(boardSize, 0);
-  }
-}
-
-VOID
-PaintSampleSquare(
-    HWND     hwnd, 
-    int      ctrlid, 
-    COLORREF squareColor, 
-    COLORREF pieceColor,
-    COLORREF squareOutlineColor,
-    COLORREF pieceDetailColor,
-    BOOL     isWhitePiece,
-    BOOL     isMono,
-    HBITMAP  pieces[3] 
-    )
-{
-  HBRUSH  brushSquare;
-  HBRUSH  brushSquareOutline;
-  HBRUSH  brushPiece;
-  HBRUSH  brushPieceDetail;
-  HBRUSH  oldBrushPiece = NULL;
-  HBRUSH  oldBrushSquare;
-  HBITMAP oldBitmapMem;
-  HBITMAP oldBitmapTemp;
-  HBITMAP bufferBitmap;
-  RECT    rect;
-  HDC     hdcScreen, hdcMem, hdcTemp;
-  HPEN    pen, oldPen;
-  HWND    hCtrl = GetDlgItem(hwnd, ctrlid);
-  int     x, y;
-
-  const int SOLID   = 0;
-  const int WHITE   = 1;
-  const int OUTLINE = 2;
-  const int BORDER  = 4;
-
-  InvalidateRect(hCtrl, NULL, TRUE);
-  UpdateWindow(hCtrl);
-  GetClientRect(hCtrl, &rect);
-  x = rect.left + (BORDER / 2);
-  y = rect.top  + (BORDER / 2);
-  hdcScreen = GetDC(hCtrl);
-  hdcMem  = CreateCompatibleDC(hdcScreen);
-  hdcTemp = CreateCompatibleDC(hdcScreen);
-
-  bufferBitmap = CreateCompatibleBitmap(hdcScreen, rect.right-rect.left+1,
-					rect.bottom-rect.top+1);
-  oldBitmapMem = SelectObject(hdcMem, bufferBitmap);
-  if (!isMono) {
-    SelectPalette(hdcMem, hPal, FALSE);
-  }
-  brushSquare         = CreateSolidBrush(squareColor);
-  brushSquareOutline  = CreateSolidBrush(squareOutlineColor);
-  brushPiece          = CreateSolidBrush(pieceColor);
-  brushPieceDetail    = CreateSolidBrush(pieceDetailColor);
-
-  /* 
-   * first draw the rectangle 
-   */
-  pen      = CreatePen(PS_SOLID, BORDER, squareOutlineColor);
-  oldPen   = (HPEN)  SelectObject(hdcMem, pen);
-  oldBrushSquare = (HBRUSH)SelectObject(hdcMem, brushSquare);
-  Rectangle(hdcMem, rect.left, rect.top, rect.right, rect.bottom);
-
-  /* 
-   * now draw the piece
-   */
-  if (isMono) {
-    oldBitmapTemp = SelectObject(hdcTemp, pieces[OUTLINE]);
-    BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, hdcTemp, 0, 0,
-	   isWhitePiece ? SRCCOPY : NOTSRCCOPY);
-    SelectObject(hdcTemp, oldBitmapTemp);
-  } else {
-    if (isWhitePiece) {
-      oldBitmapTemp = SelectObject(hdcTemp, pieces[WHITE]);
-      oldBrushPiece = SelectObject(hdcMem, brushPiece);
-      BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, 
-	     hdcTemp, 0, 0, 0x00B8074A);
-#if 0
-      /* Use pieceDetailColor for outline of white pieces */
-      SelectObject(hdcTemp, pieces[OUTLINE]);
-      SelectObject(hdcMem, brushPieceDetail);
-      BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, 
-	     hdcTemp, 0, 0, 0x00B8074A);
-#else
-      /* Use black for outline of white pieces */
-      SelectObject(hdcTemp, pieces[OUTLINE]);
-      BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, 
-	     hdcTemp, 0, 0, SRCAND);
-#endif
-    } else {
-#if 0
-      /* Use pieceDetailColor for details of black pieces */
-      /* Requires filled-in solid bitmaps (BLACK_PIECE class); the
-	 WHITE_PIECE ones aren't always the right shape. */
-      oldBitmapTemp = SelectObject(hdcTemp, pieces[BLACK]);
-      oldBrushPiece = SelectObject(hdcMem, brushPieceDetail);
-      BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, 
-	     hdcTemp, 0, 0, 0x00B8074A);
-      SelectObject(hdcTemp, pieces[SOLID]);
-      SelectObject(hdcMem, brushPiece);
-      BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, 
-	     hdcTemp, 0, 0, 0x00B8074A);
-#else
-      /* Use square color for details of black pieces */
-      oldBitmapTemp = SelectObject(hdcTemp, pieces[SOLID]);
-      oldBrushPiece = SelectObject(hdcMem, brushPiece);
-      BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, 
-	     hdcTemp, 0, 0, 0x00B8074A);
-#endif
-    }
-    SelectObject(hdcMem, oldBrushPiece);
-    SelectObject(hdcTemp, oldBitmapTemp);
-  }
-  /* 
-   * copy the memory dc to the screen
-   */
-  SelectObject(hdcMem, bufferBitmap);
-  BitBlt(hdcScreen, rect.left, rect.top,
-	 rect.right - rect.left,
-	 rect.bottom - rect.top,
-	 hdcMem, rect.left, rect.top, SRCCOPY);
-  SelectObject(hdcMem, oldBitmapMem);
-  /* 
-   * clean up
-   */
-  SelectObject(hdcMem, oldBrushPiece);
-  SelectObject(hdcMem, oldPen);
-  DeleteObject(brushPiece);
-  DeleteObject(brushPieceDetail);
-  DeleteObject(brushSquare);
-  DeleteObject(brushSquareOutline);
-  DeleteObject(pen);
-  DeleteDC(hdcTemp);
-  DeleteDC(hdcMem);
-  ReleaseDC(hCtrl, hdcScreen);
-}
-
-
-VOID
-PaintColorBlock(HWND hwnd, int ctrlid, COLORREF color)
-{
-  HDC    hdc;
-  HBRUSH brush, oldBrush;
-  RECT   rect;
-  HWND   hCtrl = GetDlgItem(hwnd, ctrlid);
-
-  hdc = GetDC(hCtrl);
-  InvalidateRect(hCtrl, NULL, TRUE);
-  UpdateWindow(hCtrl);
-  GetClientRect(hCtrl, &rect);
-  brush = CreateSolidBrush(color);
-  oldBrush = (HBRUSH)SelectObject(hdc, brush);
-  Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom);
-  SelectObject(hdc, oldBrush);
-  DeleteObject(brush);
-  ReleaseDC(hCtrl, hdc);
-}
-
-
-VOID
-SetBoardOptionEnables(HWND hDlg)
-{
-  if (IsDlgButtonChecked(hDlg, OPT_Monochrome)) {
-    ShowWindow(GetDlgItem(hDlg, OPT_LightSquareColor), SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, OPT_DarkSquareColor), SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, OPT_WhitePieceColor), SW_HIDE);
-    ShowWindow(GetDlgItem(hDlg, OPT_BlackPieceColor), SW_HIDE);
-
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseLightSquareColor), FALSE);
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseDarkSquareColor), FALSE);
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseWhitePieceColor), FALSE);
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseBlackPieceColor), FALSE);
-  } else {
-    ShowWindow(GetDlgItem(hDlg, OPT_LightSquareColor), SW_SHOW);
-    ShowWindow(GetDlgItem(hDlg, OPT_DarkSquareColor), SW_SHOW);
-    ShowWindow(GetDlgItem(hDlg, OPT_WhitePieceColor), SW_SHOW);
-    ShowWindow(GetDlgItem(hDlg, OPT_BlackPieceColor), SW_SHOW);
-
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseLightSquareColor), TRUE);
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseDarkSquareColor), TRUE);
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseWhitePieceColor), TRUE);
-    EnableWindow(GetDlgItem(hDlg, OPT_ChooseBlackPieceColor), TRUE);
-  }
-}
-
-BoardSize 
-BoardOptionsWhichRadio(HWND hDlg)
-{
-  return (IsDlgButtonChecked(hDlg, OPT_SizeTiny) ? SizeTiny :
-         (IsDlgButtonChecked(hDlg, OPT_SizeTeeny) ? SizeTeeny :
-         (IsDlgButtonChecked(hDlg, OPT_SizeDinky) ? SizeDinky :
-         (IsDlgButtonChecked(hDlg, OPT_SizePetite) ? SizePetite :
-         (IsDlgButtonChecked(hDlg, OPT_SizeSlim) ? SizeSlim :
-         (IsDlgButtonChecked(hDlg, OPT_SizeSmall) ? SizeSmall :
-         (IsDlgButtonChecked(hDlg, OPT_SizeMediocre) ? SizeMediocre :
-         (IsDlgButtonChecked(hDlg, OPT_SizeMiddling) ? SizeMiddling :
-         (IsDlgButtonChecked(hDlg, OPT_SizeAverage) ? SizeAverage :
-         (IsDlgButtonChecked(hDlg, OPT_SizeModerate) ? SizeModerate :
-         (IsDlgButtonChecked(hDlg, OPT_SizeMedium) ? SizeMedium :
-         (IsDlgButtonChecked(hDlg, OPT_SizeBulky) ? SizeBulky :
-         (IsDlgButtonChecked(hDlg, OPT_SizeLarge) ? SizeLarge :
-         (IsDlgButtonChecked(hDlg, OPT_SizeBig) ? SizeBig :
-         (IsDlgButtonChecked(hDlg, OPT_SizeHuge) ? SizeHuge :
-         (IsDlgButtonChecked(hDlg, OPT_SizeGiant) ? SizeGiant :
-         (IsDlgButtonChecked(hDlg, OPT_SizeColossal) ? SizeColossal :
-          SizeTitanic )))))))))))))))));
-}
-
-LRESULT CALLBACK
-BoardOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static Boolean  mono, white, flip;
-  static BoardSize size;
-  static COLORREF lsc, dsc, wpc, bpc, hsc, phc;
-  static HBITMAP pieces[3];
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    /* Initialize the dialog items */
-    switch (boardSize) {
-    case SizeTiny:
-      CheckDlgButton(hDlg, OPT_SizeTiny, TRUE);
-      break;
-    case SizeTeeny:
-      CheckDlgButton(hDlg, OPT_SizeTeeny, TRUE);
-      break;
-    case SizeDinky:
-      CheckDlgButton(hDlg, OPT_SizeDinky, TRUE);
-      break;
-    case SizePetite:
-      CheckDlgButton(hDlg, OPT_SizePetite, TRUE);
-      break;
-    case SizeSlim:
-      CheckDlgButton(hDlg, OPT_SizeSlim, TRUE);
-      break;
-    case SizeSmall:
-      CheckDlgButton(hDlg, OPT_SizeSmall, TRUE);
-      break;
-    case SizeMediocre:
-      CheckDlgButton(hDlg, OPT_SizeMediocre, TRUE);
-      break;
-    case SizeMiddling:
-      CheckDlgButton(hDlg, OPT_SizeMiddling, TRUE);
-      break;
-    case SizeAverage:
-      CheckDlgButton(hDlg, OPT_SizeAverage, TRUE);
-      break;
-    case SizeModerate:
-      CheckDlgButton(hDlg, OPT_SizeModerate, TRUE);
-      break;
-    case SizeMedium:
-      CheckDlgButton(hDlg, OPT_SizeMedium, TRUE);
-      break;
-    case SizeBulky:
-      CheckDlgButton(hDlg, OPT_SizeBulky, TRUE);
-      break;
-    case SizeLarge:
-      CheckDlgButton(hDlg, OPT_SizeLarge, TRUE);
-      break;
-    case SizeBig:
-      CheckDlgButton(hDlg, OPT_SizeBig, TRUE);
-      break;
-    case SizeHuge:
-      CheckDlgButton(hDlg, OPT_SizeHuge, TRUE);
-      break;
-    case SizeGiant:
-      CheckDlgButton(hDlg, OPT_SizeGiant, TRUE);
-      break;
-    case SizeColossal:
-      CheckDlgButton(hDlg, OPT_SizeColossal, TRUE);
-      break;
-    case SizeTitanic:
-      CheckDlgButton(hDlg, OPT_SizeTitanic, TRUE);
-    default: ; // should not happen, but suppresses warning on pedantic compilers
-    }
-
-    if (appData.monoMode)
-      CheckDlgButton(hDlg, OPT_Monochrome, TRUE);
-
-    if (appData.allWhite)
-      CheckDlgButton(hDlg, OPT_AllWhite, TRUE);
-
-    if (appData.upsideDown)
-      CheckDlgButton(hDlg, OPT_UpsideDown, TRUE);
-
-    pieces[0] = DoLoadBitmap(hInst, "n", SAMPLE_SQ_SIZE, "s");
-    pieces[1] = DoLoadBitmap(hInst, "n", SAMPLE_SQ_SIZE, "w");
-    pieces[2] = DoLoadBitmap(hInst, "n", SAMPLE_SQ_SIZE, "o");
-	
-    lsc = lightSquareColor;
-    dsc = darkSquareColor;
-    wpc = whitePieceColor;
-    bpc = blackPieceColor;
-    hsc = highlightSquareColor;
-    phc = premoveHighlightColor;
-    mono = appData.monoMode;
-    white= appData.allWhite;
-    flip = appData.upsideDown;
-    size = boardSize;
-
-    SetBoardOptionEnables(hDlg);
-    return TRUE;
-
-  case WM_PAINT:
-    PaintColorBlock(hDlg, OPT_LightSquareColor, lsc);
-    PaintColorBlock(hDlg, OPT_DarkSquareColor,  dsc);
-    PaintColorBlock(hDlg, OPT_WhitePieceColor,  wpc);
-    PaintColorBlock(hDlg, OPT_BlackPieceColor,  bpc);
-    PaintColorBlock(hDlg, OPT_HighlightSquareColor, hsc);
-    PaintColorBlock(hDlg, OPT_PremoveHighlightColor, phc);
-    PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc,
-	TRUE, mono, pieces);
-    PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc,
-	FALSE, mono, pieces);
-
-    return FALSE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* 
-       * if we call EndDialog() after the call to ChangeBoardSize(),
-       * then ChangeBoardSize() does not take effect, although the new
-       * boardSize is saved. Go figure...
-       */
-      EndDialog(hDlg, TRUE);
-
-      size = BoardOptionsWhichRadio(hDlg);
-
-      /*
-       * did any settings change?
-       */
-      if (size != boardSize) {
-	ChangeBoardSize(size);
-      }
-
-      if ((mono != appData.monoMode) ||
-	  (lsc  != lightSquareColor) ||
-	  (dsc  != darkSquareColor) ||
-	  (wpc  != whitePieceColor) ||
-	  (bpc  != blackPieceColor) ||
-	  (hsc  != highlightSquareColor) ||
-          (flip != appData.upsideDown) ||
-          (white != appData.allWhite) ||
-	  (phc  != premoveHighlightColor)) {
-
-	  lightSquareColor = lsc;
-	  darkSquareColor = dsc;
-	  whitePieceColor = wpc;
-	  blackPieceColor = bpc;
-	  highlightSquareColor = hsc;
-	  premoveHighlightColor = phc;
-	  appData.monoMode = mono;
-          appData.allWhite = white;
-          appData.upsideDown = flip;
-
-	  InitDrawingColors();
-	  InitDrawingSizes(boardSize, 0);
-	  InvalidateRect(hwndMain, &boardRect, FALSE);
-      }
-      DeleteObject(pieces[0]);
-      DeleteObject(pieces[1]);
-      DeleteObject(pieces[2]);
-      return TRUE;
-
-    case IDCANCEL:
-      DeleteObject(pieces[0]);
-      DeleteObject(pieces[1]);
-      DeleteObject(pieces[2]);
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case OPT_ChooseLightSquareColor:
-      if (ChangeColor(hDlg, &lsc)) 
-	PaintColorBlock(hDlg, OPT_LightSquareColor, lsc);
-	PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc,
-	    TRUE, mono, pieces);
-      break;
-
-    case OPT_ChooseDarkSquareColor:
-      if (ChangeColor(hDlg, &dsc)) 
-	PaintColorBlock(hDlg, OPT_DarkSquareColor, dsc);
-	PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc,
-	    FALSE, mono, pieces);
-      break;
-
-    case OPT_ChooseWhitePieceColor:
-      if (ChangeColor(hDlg, &wpc)) 
-	PaintColorBlock(hDlg, OPT_WhitePieceColor, wpc);
-	PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc,
-	    TRUE, mono, pieces);
-      break;
-
-    case OPT_ChooseBlackPieceColor:
-      if (ChangeColor(hDlg, &bpc)) 
-	PaintColorBlock(hDlg, OPT_BlackPieceColor, bpc);
-	PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc,
-	    FALSE, mono, pieces);
-      break;
-
-    case OPT_ChooseHighlightSquareColor:
-      if (ChangeColor(hDlg, &hsc)) 
-	PaintColorBlock(hDlg, OPT_HighlightSquareColor, hsc);
-	PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc,
-	    TRUE, mono, pieces);
-      break;
-
-    case OPT_ChoosePremoveHighlightColor:
-      if (ChangeColor(hDlg, &phc)) 
-	PaintColorBlock(hDlg, OPT_PremoveHighlightColor, phc);
-	PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc,
-	    FALSE, mono, pieces);
-      break;
-
-    case OPT_DefaultBoardColors:
-      lsc = ParseColorName(LIGHT_SQUARE_COLOR);
-      dsc = ParseColorName(DARK_SQUARE_COLOR);
-      wpc = ParseColorName(WHITE_PIECE_COLOR);
-      bpc = ParseColorName(BLACK_PIECE_COLOR);
-      hsc = ParseColorName(HIGHLIGHT_SQUARE_COLOR);
-      phc = ParseColorName(PREMOVE_HIGHLIGHT_COLOR);
-      mono = FALSE;
-      white= FALSE;
-      flip = FALSE;
-      CheckDlgButton(hDlg, OPT_Monochrome, FALSE);
-      CheckDlgButton(hDlg, OPT_AllWhite,   FALSE);
-      CheckDlgButton(hDlg, OPT_UpsideDown, FALSE);
-      PaintColorBlock(hDlg, OPT_LightSquareColor, lsc);
-      PaintColorBlock(hDlg, OPT_DarkSquareColor,  dsc);
-      PaintColorBlock(hDlg, OPT_WhitePieceColor,  wpc);
-      PaintColorBlock(hDlg, OPT_BlackPieceColor,  bpc);
-      PaintColorBlock(hDlg, OPT_HighlightSquareColor, hsc);
-      PaintColorBlock(hDlg, OPT_PremoveHighlightColor, phc);
-      SetBoardOptionEnables(hDlg);
-      PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc,
-	  TRUE, mono, pieces);
-      PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc,
-	  FALSE, mono, pieces);
-      break;
-
-    case OPT_Monochrome:
-      mono = !mono;
-      SetBoardOptionEnables(hDlg);
-      break;
-
-    case OPT_AllWhite:
-      white = !white;
-      SetBoardOptionEnables(hDlg);
-      break;
-
-    case OPT_UpsideDown:
-      flip = !flip;
-      SetBoardOptionEnables(hDlg);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-
-VOID
-BoardOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc = MakeProcInstance((FARPROC)BoardOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_BoardOptions), hwnd,
-	  (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-VariantClass
-VariantWhichRadio(HWND hDlg)
-{
-  return (IsDlgButtonChecked(hDlg, OPT_VariantFairy) ? VariantFairy :
-         (IsDlgButtonChecked(hDlg, OPT_VariantGothic) ? VariantGothic :
-         (IsDlgButtonChecked(hDlg, OPT_VariantCrazyhouse) ? VariantCrazyhouse :
-         (IsDlgButtonChecked(hDlg, OPT_VariantBughouse) ? VariantBughouse :
-         (IsDlgButtonChecked(hDlg, OPT_VariantCourier) ? VariantCourier :
-         (IsDlgButtonChecked(hDlg, OPT_VariantShatranj) ? VariantShatranj :
-         (IsDlgButtonChecked(hDlg, OPT_VariantShogi) ? VariantShogi :
-         (IsDlgButtonChecked(hDlg, OPT_VariantXiangqi) ? VariantXiangqi :
-         (IsDlgButtonChecked(hDlg, OPT_VariantCapablanca) ? VariantCapablanca :
-         (IsDlgButtonChecked(hDlg, OPT_VariantTwoKings) ? VariantTwoKings :
-         (IsDlgButtonChecked(hDlg, OPT_VariantKnightmate) ? VariantKnightmate :
-         (IsDlgButtonChecked(hDlg, OPT_VariantLosers) ? VariantLosers :
-         (IsDlgButtonChecked(hDlg, OPT_VariantSuicide) ? VariantSuicide :
-         (IsDlgButtonChecked(hDlg, OPT_VariantAtomic) ? VariantAtomic :
-         (IsDlgButtonChecked(hDlg, OPT_VariantShatranj) ? VariantShatranj :
-         (IsDlgButtonChecked(hDlg, OPT_VariantFRC) ? VariantFischeRandom :
-         (IsDlgButtonChecked(hDlg, OPT_VariantCylinder) ? VariantCylinder :
-         (IsDlgButtonChecked(hDlg, OPT_VariantFalcon) ? VariantFalcon :
-         (IsDlgButtonChecked(hDlg, OPT_VariantCRC) ? VariantCapaRandom :
-         (IsDlgButtonChecked(hDlg, OPT_VariantSuper) ? VariantSuper :
-         (IsDlgButtonChecked(hDlg, OPT_VariantBerolina) ? VariantBerolina :
-         (IsDlgButtonChecked(hDlg, OPT_VariantJanus) ? VariantJanus :
-         (IsDlgButtonChecked(hDlg, OPT_VariantWildcastle) ? VariantWildCastle :
-         (IsDlgButtonChecked(hDlg, OPT_VariantNocastle) ? VariantNoCastle :
-         (IsDlgButtonChecked(hDlg, OPT_Variant3Check) ? Variant3Check :
-         (IsDlgButtonChecked(hDlg, OPT_VariantGreat) ? VariantGreat :
-         (IsDlgButtonChecked(hDlg, OPT_VariantGiveaway) ? VariantGiveaway :
-         (IsDlgButtonChecked(hDlg, OPT_VariantTwilight) ? VariantTwilight :
-          VariantNormal ))))))))))))))))))))))))))));
-}
-
-LRESULT CALLBACK
-NewVariantDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static VariantClass v;
-  static int n1_ok, n2_ok, n3_ok;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    /* Initialize the dialog items */
-    switch (gameInfo.variant) {
-    case VariantNormal:
-      CheckDlgButton(hDlg, OPT_VariantNormal, TRUE);
-      break;
-    case VariantCrazyhouse:
-      CheckDlgButton(hDlg, OPT_VariantCrazyhouse, TRUE);
-      break;
-    case VariantBughouse:
-      CheckDlgButton(hDlg, OPT_VariantBughouse, TRUE);
-      break;
-    case VariantShogi:
-      CheckDlgButton(hDlg, OPT_VariantShogi, TRUE);
-      break;
-    case VariantXiangqi:
-      CheckDlgButton(hDlg, OPT_VariantXiangqi, TRUE);
-      break;
-    case VariantCapablanca:
-      CheckDlgButton(hDlg, OPT_VariantCapablanca, TRUE);
-      break;
-    case VariantGothic:
-      CheckDlgButton(hDlg, OPT_VariantGothic, TRUE);
-      break;
-    case VariantCourier:
-      CheckDlgButton(hDlg, OPT_VariantCourier, TRUE);
-      break;
-    case VariantKnightmate:
-      CheckDlgButton(hDlg, OPT_VariantKnightmate, TRUE);
-      break;
-    case VariantTwoKings:
-      CheckDlgButton(hDlg, OPT_VariantTwoKings, TRUE);
-      break;
-    case VariantFairy:
-      CheckDlgButton(hDlg, OPT_VariantFairy, TRUE);
-      break;
-    case VariantAtomic:
-      CheckDlgButton(hDlg, OPT_VariantAtomic, TRUE);
-      break;
-    case VariantSuicide:
-      CheckDlgButton(hDlg, OPT_VariantSuicide, TRUE);
-      break;
-    case VariantLosers:
-      CheckDlgButton(hDlg, OPT_VariantLosers, TRUE);
-      break;
-    case VariantShatranj:
-      CheckDlgButton(hDlg, OPT_VariantShatranj, TRUE);
-      break;
-    case VariantFischeRandom:
-      CheckDlgButton(hDlg, OPT_VariantFRC, TRUE);
-      break;
-    case VariantCapaRandom:
-      CheckDlgButton(hDlg, OPT_VariantCRC, TRUE);
-      break;
-    case VariantFalcon:
-      CheckDlgButton(hDlg, OPT_VariantFalcon, TRUE);
-      break;
-    case VariantCylinder:
-      CheckDlgButton(hDlg, OPT_VariantCylinder, TRUE);
-      break;
-    case Variant3Check:
-      CheckDlgButton(hDlg, OPT_Variant3Check, TRUE);
-      break;
-    case VariantSuper:
-      CheckDlgButton(hDlg, OPT_VariantSuper, TRUE);
-      break;
-    case VariantBerolina:
-      CheckDlgButton(hDlg, OPT_VariantBerolina, TRUE);
-      break;
-    case VariantJanus:
-      CheckDlgButton(hDlg, OPT_VariantJanus, TRUE);
-      break;
-    case VariantWildCastle:
-      CheckDlgButton(hDlg, OPT_VariantWildcastle, TRUE);
-      break;
-    case VariantNoCastle:
-      CheckDlgButton(hDlg, OPT_VariantNocastle, TRUE);
-      break;
-    case VariantGreat:
-      CheckDlgButton(hDlg, OPT_VariantGreat, TRUE);
-      break;
-    case VariantGiveaway:
-      CheckDlgButton(hDlg, OPT_VariantGiveaway, TRUE);
-      break;
-    case VariantTwilight:
-      CheckDlgButton(hDlg, OPT_VariantTwilight, TRUE);
-      break;
-    default: ;
-    }
-
-    SetDlgItemInt( hDlg, IDC_Files, -1, TRUE );
-    SendDlgItemMessage( hDlg, IDC_Files, EM_SETSEL, 0, -1 );
-
-    SetDlgItemInt( hDlg, IDC_Ranks, -1, TRUE );
-    SendDlgItemMessage( hDlg, IDC_Ranks, EM_SETSEL, 0, -1 );
-
-    SetDlgItemInt( hDlg, IDC_Holdings, -1, TRUE );
-    SendDlgItemMessage( hDlg, IDC_Ranks, EM_SETSEL, 0, -1 );
-
-    n1_ok = n2_ok = n3_ok = FALSE;
-
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* 
-       * if we call EndDialog() after the call to ChangeBoardSize(),
-       * then ChangeBoardSize() does not take effect, although the new
-       * boardSize is saved. Go figure...
-       */
-      EndDialog(hDlg, TRUE);
-
-      v = VariantWhichRadio(hDlg);
-      if(!appData.noChessProgram) { char *name = VariantName(v), buf[MSG_SIZ];
-	if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {
-	    /* [HGM] in protocol 2 we check if variant is suported by engine */
-	    sprintf(buf, "Variant %s not supported by %s", name, first.tidy);
-	    DisplayError(buf, 0);
-	    return TRUE; /* treat as "Cancel" if first engine does not support it */
-	} else
-	if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {
-	    sprintf(buf, "Warning: second engine (%s) does not support this!", second.tidy);
-	    DisplayError(buf, 0);   /* use of second engine is optional; only warn user */
-	}
-      }
-
-      gameInfo.variant = v;
-      appData.variant = VariantName(v);
-
-      appData.NrFiles = (int) GetDlgItemInt(hDlg, IDC_Files, NULL, FALSE );
-      appData.NrRanks = (int) GetDlgItemInt(hDlg, IDC_Ranks, NULL, FALSE );
-      appData.holdingsSize = (int) GetDlgItemInt(hDlg, IDC_Holdings, NULL, FALSE );
-
-      if(!n1_ok) appData.NrFiles = -1;
-      if(!n2_ok) appData.NrRanks = -1;
-      if(!n3_ok) appData.holdingsSize = -1;
-
-      shuffleOpenings = FALSE; /* [HGM] shuffle: possible shuffle reset when we switch */
-      startedFromPositionFile = FALSE; /* [HGM] loadPos: no longer valid in new variant */
-      appData.pieceToCharTable = NULL;
-      Reset(TRUE, TRUE);
-
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case IDC_Ranks:
-    case IDC_Files:
-    case IDC_Holdings:
-        if( HIWORD(wParam) == EN_CHANGE ) {
-
-            GetDlgItemInt(hDlg, IDC_Files, &n1_ok, FALSE );
-            GetDlgItemInt(hDlg, IDC_Ranks, &n2_ok, FALSE );
-            GetDlgItemInt(hDlg, IDC_Holdings, &n3_ok, FALSE );
-
-            /*EnableWindow( GetDlgItem(hDlg, IDOK), n1_ok && n2_ok && n3_ok ? TRUE : FALSE );*/
-        }
-        return TRUE;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-
-VOID
-NewVariantPopup(HWND hwnd)
-{
-  FARPROC lpProc = MakeProcInstance((FARPROC)NewVariantDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_NewVariant), hwnd,
-	  (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * ICS Options Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-BOOL APIENTRY
-MyCreateFont(HWND hwnd, MyFont *font)
-{
-  CHOOSEFONT cf;
-  HFONT hf;
-
-  /* Initialize members of the CHOOSEFONT structure. */
-  cf.lStructSize = sizeof(CHOOSEFONT);
-  cf.hwndOwner = hwnd;
-  cf.hDC = (HDC)NULL;
-  cf.lpLogFont = &font->lf;
-  cf.iPointSize = 0;
-  cf.Flags = CF_SCREENFONTS|/*CF_ANSIONLY|*/CF_INITTOLOGFONTSTRUCT;
-  cf.rgbColors = RGB(0,0,0);
-  cf.lCustData = 0L;
-  cf.lpfnHook = (LPCFHOOKPROC)NULL;
-  cf.lpTemplateName = (LPSTR)NULL;
-  cf.hInstance = (HINSTANCE) NULL;
-  cf.lpszStyle = (LPSTR)NULL;
-  cf.nFontType = SCREEN_FONTTYPE;
-  cf.nSizeMin = 0;
-  cf.nSizeMax = 0;
-
-  /* Display the CHOOSEFONT common-dialog box. */
-  if (!ChooseFont(&cf)) {
-    return FALSE;
-  }
-
-  /* Create a logical font based on the user's   */
-  /* selection and return a handle identifying   */
-  /* that font. */
-  hf = CreateFontIndirect(cf.lpLogFont);
-  if (hf == NULL) {
-    return FALSE;
-  }
-
-  font->hf = hf;
-  font->mfp.pointSize = (float) (cf.iPointSize / 10.0);
-  font->mfp.bold = (font->lf.lfWeight >= FW_BOLD);
-  font->mfp.italic = font->lf.lfItalic;
-  font->mfp.underline = font->lf.lfUnderline;
-  font->mfp.strikeout = font->lf.lfStrikeOut;
-  strcpy(font->mfp.faceName, font->lf.lfFaceName);
-  return TRUE;
-}
-
-
-VOID
-UpdateSampleText(HWND hDlg, int id, MyColorizeAttribs *mca)
-{
-  CHARFORMAT cf;
-  cf.cbSize = sizeof(CHARFORMAT);
-  cf.dwMask = 
-    CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT|CFM_FACE|CFM_SIZE;
-  cf.crTextColor = mca->color;
-  cf.dwEffects = mca->effects;
-  strcpy(cf.szFaceName, font[boardSize][CONSOLE_FONT]->mfp.faceName);
-  /* 
-   * The 20.0 below is in fact documented. yHeight is expressed in twips.
-   * A twip is 1/20 of a font's point size. See documentation of CHARFORMAT.
-   * --msw
-   */
-  cf.yHeight = (int)(font[boardSize][CONSOLE_FONT]->mfp.pointSize * 20.0 + 0.5);
-  cf.bCharSet = DEFAULT_CHARSET; /* should be ignored anyway */
-  cf.bPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE;
-  SendDlgItemMessage(hDlg, id, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
-}
-
-LRESULT CALLBACK
-ColorizeTextDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static MyColorizeAttribs mca;
-  static ColorClass cc;
-  COLORREF background = (COLORREF)0;
-
-  switch (message) {
-  case WM_INITDIALOG:
-    cc = (ColorClass)lParam;
-    mca = colorizeAttribs[cc];
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    /* Initialize the dialog items */
-    CheckDlgButton(hDlg, OPT_Bold, (mca.effects & CFE_BOLD) != 0);
-    CheckDlgButton(hDlg, OPT_Italic, (mca.effects & CFE_ITALIC) != 0);
-    CheckDlgButton(hDlg, OPT_Underline, (mca.effects & CFE_UNDERLINE) != 0);
-    CheckDlgButton(hDlg, OPT_Strikeout, (mca.effects & CFE_STRIKEOUT) != 0);
-
-    /* get the current background color from the parent window */
-    SendMessage(GetWindow(hDlg, GW_OWNER),WM_COMMAND, 
-        	(WPARAM)WM_USER_GetConsoleBackground, 
-	        (LPARAM)&background);
-
-    /* set the background color */
-    SendDlgItemMessage(hDlg, OPT_Sample, EM_SETBKGNDCOLOR, FALSE, background);
-
-    SetDlgItemText(hDlg, OPT_Sample, mca.name);
-    UpdateSampleText(hDlg, OPT_Sample, &mca);
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* Read changed options from the dialog box */
-      colorizeAttribs[cc] = mca;
-      textAttribs[cc].color = mca.color;
-      textAttribs[cc].effects = mca.effects;
-      Colorize(currentColorClass, TRUE);
-      if (cc == ColorNormal) {
-	CHARFORMAT cf;
-	cf.cbSize = sizeof(CHARFORMAT);
-	cf.dwMask = CFM_COLOR;
-	cf.crTextColor = mca.color;
-	SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, 
-	  EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
-      }
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case OPT_ChooseColor:
-      ChangeColor(hDlg, &mca.color);
-      UpdateSampleText(hDlg, OPT_Sample, &mca);
-      return TRUE;
-
-    default:
-      mca.effects =
-	(IsDlgButtonChecked(hDlg, OPT_Bold) ? CFE_BOLD : 0) |
-	(IsDlgButtonChecked(hDlg, OPT_Italic) ? CFE_ITALIC : 0) |
-	(IsDlgButtonChecked(hDlg, OPT_Underline) ? CFE_UNDERLINE : 0) |
-	(IsDlgButtonChecked(hDlg, OPT_Strikeout) ? CFE_STRIKEOUT : 0);
-      UpdateSampleText(hDlg, OPT_Sample, &mca);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-ColorizeTextPopup(HWND hwnd, ColorClass cc)
-{
-  FARPROC lpProc;
-
-  lpProc = MakeProcInstance((FARPROC)ColorizeTextDialog, hInst);
-  DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_Colorize),
-    hwnd, (DLGPROC)lpProc, (LPARAM) cc);
-  FreeProcInstance(lpProc);
-}
-
-VOID
-SetIcsOptionEnables(HWND hDlg)
-{
-#define ENABLE_DLG_ITEM(x,y) EnableWindow(GetDlgItem(hDlg,(x)), (y))
-
-  UINT state = IsDlgButtonChecked(hDlg, OPT_Premove);
-  ENABLE_DLG_ITEM(OPT_PremoveWhite, state);
-  ENABLE_DLG_ITEM(OPT_PremoveWhiteText, state);
-  ENABLE_DLG_ITEM(OPT_PremoveBlack, state);
-  ENABLE_DLG_ITEM(OPT_PremoveBlackText, state);
-
-  ENABLE_DLG_ITEM(OPT_IcsAlarmTime, IsDlgButtonChecked(hDlg, OPT_IcsAlarm));
-
-#undef ENABLE_DLG_ITEM
-}
-
-
-LRESULT CALLBACK
-IcsOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char buf[MSG_SIZ];
-  int number;
-  int i;
-  static COLORREF cbc;
-  static MyColorizeAttribs *mca;
-  COLORREF *colorref;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-
-    mca = colorizeAttribs;
-
-    for (i=0; i < NColorClasses - 1; i++) {
-      mca[i].color   = textAttribs[i].color;
-      mca[i].effects = textAttribs[i].effects;
-    }
-    cbc = consoleBackgroundColor;
-
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-
-    /* Initialize the dialog items */
-#define CHECK_BOX(x,y) CheckDlgButton(hDlg, (x), (BOOL)(y))
-
-    CHECK_BOX(OPT_AutoComment, appData.autoComment);
-    CHECK_BOX(OPT_AutoObserve, appData.autoObserve);
-    CHECK_BOX(OPT_GetMoveList, appData.getMoveList);
-    CHECK_BOX(OPT_LocalLineEditing, appData.localLineEditing);
-    CHECK_BOX(OPT_QuietPlay, appData.quietPlay);
-    CHECK_BOX(OPT_Premove, appData.premove);
-    CHECK_BOX(OPT_PremoveWhite, appData.premoveWhite);
-    CHECK_BOX(OPT_PremoveBlack, appData.premoveBlack);
-    CHECK_BOX(OPT_IcsAlarm, appData.icsAlarm);
-    CHECK_BOX(OPT_DontColorize, !appData.colorize);
-
-#undef CHECK_BOX
-
-    sprintf(buf, "%d", appData.icsAlarmTime / 1000);
-    SetDlgItemText(hDlg, OPT_IcsAlarmTime, buf);
-    SetDlgItemText(hDlg, OPT_PremoveWhiteText, appData.premoveWhiteText);
-    SetDlgItemText(hDlg, OPT_PremoveBlackText, appData.premoveBlackText);
-
-    SendDlgItemMessage(hDlg, OPT_SampleShout,     EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleSShout,    EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleChannel1,  EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleChannel,   EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleKibitz,    EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleTell,      EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleChallenge, EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleRequest,   EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleSeek,      EM_SETBKGNDCOLOR, 0, cbc);
-    SendDlgItemMessage(hDlg, OPT_SampleNormal,    EM_SETBKGNDCOLOR, 0, cbc);
-
-    SetDlgItemText(hDlg, OPT_SampleShout,     mca[ColorShout].name);
-    SetDlgItemText(hDlg, OPT_SampleSShout,    mca[ColorSShout].name);
-    SetDlgItemText(hDlg, OPT_SampleChannel1,  mca[ColorChannel1].name);
-    SetDlgItemText(hDlg, OPT_SampleChannel,   mca[ColorChannel].name);
-    SetDlgItemText(hDlg, OPT_SampleKibitz,    mca[ColorKibitz].name);
-    SetDlgItemText(hDlg, OPT_SampleTell,      mca[ColorTell].name);
-    SetDlgItemText(hDlg, OPT_SampleChallenge, mca[ColorChallenge].name);
-    SetDlgItemText(hDlg, OPT_SampleRequest,   mca[ColorRequest].name);
-    SetDlgItemText(hDlg, OPT_SampleSeek,      mca[ColorSeek].name);
-    SetDlgItemText(hDlg, OPT_SampleNormal,    mca[ColorNormal].name);
-
-    UpdateSampleText(hDlg, OPT_SampleShout,     &mca[ColorShout]);
-    UpdateSampleText(hDlg, OPT_SampleSShout,    &mca[ColorSShout]);
-    UpdateSampleText(hDlg, OPT_SampleChannel1,  &mca[ColorChannel1]);
-    UpdateSampleText(hDlg, OPT_SampleChannel,   &mca[ColorChannel]);
-    UpdateSampleText(hDlg, OPT_SampleKibitz,    &mca[ColorKibitz]);
-    UpdateSampleText(hDlg, OPT_SampleTell,      &mca[ColorTell]);
-    UpdateSampleText(hDlg, OPT_SampleChallenge, &mca[ColorChallenge]);
-    UpdateSampleText(hDlg, OPT_SampleRequest,   &mca[ColorRequest]);
-    UpdateSampleText(hDlg, OPT_SampleSeek,      &mca[ColorSeek]);
-    UpdateSampleText(hDlg, OPT_SampleNormal,    &mca[ColorNormal]);
-
-    SetIcsOptionEnables(hDlg);
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-
-    case WM_USER_GetConsoleBackground: 
-      /* the ColorizeTextDialog needs the current background color */
-      colorref = (COLORREF *)lParam;
-      *colorref = cbc;
-      return FALSE;
-
-    case IDOK:
-      /* Read changed options from the dialog box */
-      GetDlgItemText(hDlg, OPT_IcsAlarmTime, buf, MSG_SIZ);
-      if (sscanf(buf, "%d", &number) != 1 || (number < 0)){
-	  MessageBox(hDlg, "Invalid ICS Alarm Time",
-		     "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	  return FALSE;
-      }
-
-#define IS_CHECKED(x) (Boolean)IsDlgButtonChecked(hDlg, (x))
-
-      appData.icsAlarm         = IS_CHECKED(OPT_IcsAlarm);
-      appData.premove          = IS_CHECKED(OPT_Premove);
-      appData.premoveWhite     = IS_CHECKED(OPT_PremoveWhite);
-      appData.premoveBlack     = IS_CHECKED(OPT_PremoveBlack);
-      appData.autoComment      = IS_CHECKED(OPT_AutoComment);
-      appData.autoObserve      = IS_CHECKED(OPT_AutoObserve);
-      appData.getMoveList      = IS_CHECKED(OPT_GetMoveList);
-      appData.localLineEditing = IS_CHECKED(OPT_LocalLineEditing);
-      appData.quietPlay        = IS_CHECKED(OPT_QuietPlay);
-
-#undef IS_CHECKED
-
-      appData.icsAlarmTime = number * 1000;
-      GetDlgItemText(hDlg, OPT_PremoveWhiteText, appData.premoveWhiteText, 5);
-      GetDlgItemText(hDlg, OPT_PremoveBlackText, appData.premoveBlackText, 5);
-
-      if (appData.localLineEditing) {
-	DontEcho();
-	EchoOn();
-      } else {
-	DoEcho();
-	EchoOff();
-      }
-
-      appData.colorize =
-	(Boolean)!IsDlgButtonChecked(hDlg, OPT_DontColorize);
-
-      if (!appData.colorize) {
-	CHARFORMAT cf;
-	COLORREF background = ParseColorName(COLOR_BKGD);
-	/*
-	SetDefaultTextAttribs();
-        Colorize(currentColorClass);
-	*/
-	cf.cbSize = sizeof(CHARFORMAT);
-	cf.dwMask = CFM_COLOR;
-	cf.crTextColor = ParseColorName(COLOR_NORMAL);
-
-	SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, 
-	  EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
-        SendDlgItemMessage(hwndConsole, OPT_ConsoleText, 
-  	  EM_SETBKGNDCOLOR, FALSE, background);
-	SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, 
-	  EM_SETBKGNDCOLOR, FALSE, background);
-      }
-
-      if (cbc != consoleBackgroundColor) {
-	consoleBackgroundColor = cbc;
-	if (appData.colorize) {
-	  SendDlgItemMessage(hwndConsole, OPT_ConsoleText, 
-	    EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor);
-	  SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, 
-	    EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor);
-	}
-      }
-
-      for (i=0; i < NColorClasses - 1; i++) {
-	textAttribs[i].color   = mca[i].color;
-	textAttribs[i].effects = mca[i].effects;
-      }
-
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case OPT_ChooseShoutColor:
-      ColorizeTextPopup(hDlg, ColorShout);
-      UpdateSampleText(hDlg, OPT_SampleShout, &mca[ColorShout]);
-      break;
-
-    case OPT_ChooseSShoutColor:
-      ColorizeTextPopup(hDlg, ColorSShout);
-      UpdateSampleText(hDlg, OPT_SampleSShout, &mca[ColorSShout]);
-      break;
-
-    case OPT_ChooseChannel1Color:
-      ColorizeTextPopup(hDlg, ColorChannel1);
-      UpdateSampleText(hDlg, OPT_SampleChannel1, 
-		       &colorizeAttribs[ColorChannel1]);
-      break;
-
-    case OPT_ChooseChannelColor:
-      ColorizeTextPopup(hDlg, ColorChannel);
-      UpdateSampleText(hDlg, OPT_SampleChannel, &mca[ColorChannel]);
-      break;
-
-    case OPT_ChooseKibitzColor:
-      ColorizeTextPopup(hDlg, ColorKibitz);
-      UpdateSampleText(hDlg, OPT_SampleKibitz, &mca[ColorKibitz]);
-      break;
-
-    case OPT_ChooseTellColor:
-      ColorizeTextPopup(hDlg, ColorTell);
-      UpdateSampleText(hDlg, OPT_SampleTell, &mca[ColorTell]);
-      break;
-
-    case OPT_ChooseChallengeColor:
-      ColorizeTextPopup(hDlg, ColorChallenge);
-      UpdateSampleText(hDlg, OPT_SampleChallenge, &mca[ColorChallenge]);
-      break;
-
-    case OPT_ChooseRequestColor:
-      ColorizeTextPopup(hDlg, ColorRequest);
-      UpdateSampleText(hDlg, OPT_SampleRequest, &mca[ColorRequest]);
-      break;
-
-    case OPT_ChooseSeekColor:
-      ColorizeTextPopup(hDlg, ColorSeek);
-      UpdateSampleText(hDlg, OPT_SampleSeek, &mca[ColorSeek]);
-      break;
-
-    case OPT_ChooseNormalColor:
-      ColorizeTextPopup(hDlg, ColorNormal);
-      UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]);
-      break;
-
-    case OPT_ChooseBackgroundColor:
-      if (ChangeColor(hDlg, &cbc)) {
-	SendDlgItemMessage(hDlg, OPT_SampleShout,     EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleSShout,    EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleChannel1,  EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleChannel,   EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleKibitz,    EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleTell,      EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleChallenge, EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleRequest,   EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleSeek,      EM_SETBKGNDCOLOR, 0, cbc);
-	SendDlgItemMessage(hDlg, OPT_SampleNormal,    EM_SETBKGNDCOLOR, 0, cbc);
-      }
-      break;
-
-    case OPT_DefaultColors:
-      for (i=0; i < NColorClasses - 1; i++)
-	ParseAttribs(&mca[i].color, 
-		     &mca[i].effects,
-		     defaultTextAttribs[i]);
-
-      cbc = ParseColorName(COLOR_BKGD);
-      SendDlgItemMessage(hDlg, OPT_SampleShout,     EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleSShout,    EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleChannel1,  EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleChannel,   EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleKibitz,    EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleTell,      EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleChallenge, EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleRequest,   EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleSeek,      EM_SETBKGNDCOLOR, 0, cbc);
-      SendDlgItemMessage(hDlg, OPT_SampleNormal,    EM_SETBKGNDCOLOR, 0, cbc);
-
-      UpdateSampleText(hDlg, OPT_SampleShout,     &mca[ColorShout]);
-      UpdateSampleText(hDlg, OPT_SampleSShout,    &mca[ColorSShout]);
-      UpdateSampleText(hDlg, OPT_SampleChannel1,  &mca[ColorChannel1]);
-      UpdateSampleText(hDlg, OPT_SampleChannel,   &mca[ColorChannel]);
-      UpdateSampleText(hDlg, OPT_SampleKibitz,    &mca[ColorKibitz]);
-      UpdateSampleText(hDlg, OPT_SampleTell,      &mca[ColorTell]);
-      UpdateSampleText(hDlg, OPT_SampleChallenge, &mca[ColorChallenge]);
-      UpdateSampleText(hDlg, OPT_SampleRequest,   &mca[ColorRequest]);
-      UpdateSampleText(hDlg, OPT_SampleSeek,      &mca[ColorSeek]);
-      UpdateSampleText(hDlg, OPT_SampleNormal,    &mca[ColorNormal]);
-      break;
-
-    default:
-      SetIcsOptionEnables(hDlg);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-IcsOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc = MakeProcInstance((FARPROC)IcsOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_IcsOptions), hwnd,
-	    (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Fonts Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-VOID
-SetSampleFontText(HWND hwnd, int id, const MyFont *mf)
-{
-  char buf[MSG_SIZ];
-  HWND hControl;
-  HDC hdc;
-  CHARFORMAT cf;
-  SIZE size;
-  RECT rectClient, rectFormat;
-  HFONT oldFont;
-  POINT center;
-  int len;
-
-  len = sprintf(buf, "%.0f pt. %s%s%s\n",
-		mf->mfp.pointSize, mf->mfp.faceName,
-		mf->mfp.bold ? " bold" : "",
-		mf->mfp.italic ? " italic" : "");
-  SetDlgItemText(hwnd, id, buf);
-
-  hControl = GetDlgItem(hwnd, id);
-  hdc = GetDC(hControl);
-  SetMapMode(hdc, MM_TEXT);	/* 1 pixel == 1 logical unit */
-  oldFont = SelectObject(hdc, mf->hf);
-  
-  /* get number of logical units necessary to display font name */
-  GetTextExtentPoint32(hdc, buf, len, &size);
-
-  /* calculate formatting rectangle in the rich edit control.  
-   * May be larger or smaller than the actual control.
-   */
-  GetClientRect(hControl, &rectClient);
-  center.x = (rectClient.left + rectClient.right) / 2;
-  center.y = (rectClient.top  + rectClient.bottom) / 2;
-  rectFormat.top    = center.y - (size.cy / 2) - 1;
-  rectFormat.bottom = center.y + (size.cy / 2) + 1;
-  rectFormat.left   = center.x - (size.cx / 2) - 1;
-  rectFormat.right  = center.x + (size.cx / 2) + 1;
-
-#if 0
-  fprintf(debugFP, "\nfont: %s\n"
-                   "center.x   %d, centerY %d\n"
-		   "size.cx    %d, size.cy %d\n"
-		   "client.top %d, bottom %d, left %d, right %d\n"
-		   "format.top %d, bottom %d, left %d, right %d\n",
-		   buf,
-		   center.x, center.y,
-		   size.cx, size.cy,
-		   rectClient.top, rectClient.bottom, rectClient.left,
-		   rectClient.right,
-		   rectFormat.top, rectFormat.bottom, rectFormat.left,
-		   rectFormat.right);
-#endif
-
-  cf.cbSize = sizeof(CHARFORMAT);
-  cf.dwMask = CFM_FACE|CFM_SIZE|CFM_CHARSET|CFM_BOLD|CFM_ITALIC;
-  cf.dwEffects = 0;
-  if (mf->lf.lfWeight == FW_BOLD) cf.dwEffects |= CFE_BOLD;
-  if (mf->lf.lfItalic) cf.dwEffects |= CFE_ITALIC;
-  strcpy(cf.szFaceName, mf->mfp.faceName);
-  /*
-   * yHeight is expressed in twips.  A twip is 1/20 of a font's point
-   * size. See documentation of CHARFORMAT.  --msw
-   */
-  cf.yHeight = (int)(mf->mfp.pointSize * 20.0 + 0.5);
-  cf.bCharSet = mf->lf.lfCharSet;
-  cf.bPitchAndFamily = mf->lf.lfPitchAndFamily;
-
-  /* format the text in the rich edit control */
-  SendMessage(hControl, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cf);
-  SendMessage(hControl, EM_SETRECT, (WPARAM)0, (LPARAM) &rectFormat);
-
-  /* clean up */
-  SelectObject(hdc, oldFont);
-  ReleaseDC(hControl, hdc);
-}
-
-VOID
-CopyFont(MyFont *dest, const MyFont *src)
-{
-  dest->mfp.pointSize = src->mfp.pointSize;
-  dest->mfp.bold      = src->mfp.bold;
-  dest->mfp.italic    = src->mfp.italic;
-  dest->mfp.underline = src->mfp.underline;
-  dest->mfp.strikeout = src->mfp.strikeout;
-  lstrcpy(dest->mfp.faceName, src->mfp.faceName);
-  CreateFontInMF(dest);
-}
-
-
-LRESULT CALLBACK
-FontOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static MyFont workFont[NUM_FONTS];
-  static BOOL firstPaint;
-  int i;
-  RECT rect;
-
-  switch (message) {
-  case WM_INITDIALOG:
-
-    /* copy the current font settings into a working copy */
-    for (i=0; i < NUM_FONTS; i++)
-      CopyFont(&workFont[i], font[boardSize][i]);
-
-    if (!appData.icsActive)
-      EnableWindow(GetDlgItem(hDlg, OPT_ChooseConsoleFont), FALSE);
-
-    firstPaint = TRUE;	/* see rant below */
-
-    /* If I don't call SetFocus(), the dialog won't respond to the keyboard
-     * when first drawn. Why is this the only dialog that behaves this way? Is
-     * is the WM_PAINT stuff below?? Sigh...
-     */
-    SetFocus(GetDlgItem(hDlg, IDOK));
-    break;
-
-  case WM_PAINT:
-    /* This should not be necessary. However, if SetSampleFontText() is called
-     * in response to WM_INITDIALOG, the strings are not properly centered in
-     * the controls when the dialog first appears. I can't figure out why, so
-     * this is the workaround.  --msw
-     */
-    if (firstPaint) {
-      SetSampleFontText(hDlg, OPT_SampleClockFont, &workFont[CLOCK_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleMessageFont, &workFont[MESSAGE_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleCoordFont, &workFont[COORD_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleTagFont, &workFont[EDITTAGS_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleCommentsFont, &workFont[COMMENT_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleConsoleFont, &workFont[CONSOLE_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleMoveHistoryFont, &workFont[MOVEHISTORY_FONT]);
-      firstPaint = FALSE;
-    }
-    break;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-
-    case IDOK:
-      /* again, it seems to avoid redraw problems if we call EndDialog first */
-      EndDialog(hDlg, FALSE);
-
-      /* copy modified settings back to the fonts array */
-      for (i=0; i < NUM_FONTS; i++)
-	CopyFont(font[boardSize][i], &workFont[i]);
-
-      /* a sad necessity due to the original design of having a separate
-       * console font, tags font, and comment font for each board size.  IMHO
-       * these fonts should not be dependent on the current board size.  I'm
-       * running out of time, so I am doing this hack rather than redesign the
-       * data structure. Besides, I think if I redesigned the data structure, I
-       * might break backwards compatibility with old winboard.ini files.
-       * --msw
-       */
-      for (i=0; i < NUM_SIZES; i++) {
-	CopyFont(font[i][EDITTAGS_FONT], &workFont[EDITTAGS_FONT]);
-	CopyFont(font[i][CONSOLE_FONT],  &workFont[CONSOLE_FONT]);
-	CopyFont(font[i][COMMENT_FONT],  &workFont[COMMENT_FONT]);
-	CopyFont(font[i][MOVEHISTORY_FONT],  &workFont[MOVEHISTORY_FONT]);
-      }
-      /* end sad necessity */
-
-      InitDrawingSizes(boardSize, 0);
-      InvalidateRect(hwndMain, NULL, TRUE);
-
-      if (commentDialog) {
-	SendDlgItemMessage(commentDialog, OPT_CommentText,
-	  WM_SETFONT, (WPARAM)font[boardSize][COMMENT_FONT]->hf, 
-	  MAKELPARAM(TRUE, 0));
-	GetClientRect(GetDlgItem(commentDialog, OPT_CommentText), &rect);
-	InvalidateRect(commentDialog, &rect, TRUE);
-      }
-
-      if (editTagsDialog) {
-	SendDlgItemMessage(editTagsDialog, OPT_TagsText,
-  	  WM_SETFONT, (WPARAM)font[boardSize][EDITTAGS_FONT]->hf, 
-	  MAKELPARAM(TRUE, 0));
-	GetClientRect(GetDlgItem(editTagsDialog, OPT_TagsText), &rect);
-	InvalidateRect(editTagsDialog, &rect, TRUE);
-      }
-
-      if( moveHistoryDialog != NULL ) {
-	SendDlgItemMessage(moveHistoryDialog, IDC_MoveHistory,
-  	  WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, 
-	  MAKELPARAM(TRUE, 0));
-        SendMessage( moveHistoryDialog, WM_INITDIALOG, 0, 0 );
-//	InvalidateRect(editTagsDialog, NULL, TRUE); // [HGM] this ws improperly cloned?
-      }
-
-      if( engineOutputDialog != NULL ) {
-	SendDlgItemMessage(engineOutputDialog, IDC_EngineMemo1,
-  	  WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, 
-	  MAKELPARAM(TRUE, 0));
-	SendDlgItemMessage(engineOutputDialog, IDC_EngineMemo2,
-  	  WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, 
-	  MAKELPARAM(TRUE, 0));
-      }
-
-      if (hwndConsole) {
-	ChangedConsoleFont();
-      }
-
-      for (i=0; i<NUM_FONTS; i++)
-	DeleteObject(&workFont[i].hf);
-
-      return TRUE;
-
-    case IDCANCEL:
-      for (i=0; i<NUM_FONTS; i++)
-	DeleteObject(&workFont[i].hf);
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case OPT_ChooseClockFont:
-      MyCreateFont(hDlg, &workFont[CLOCK_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleClockFont, &workFont[CLOCK_FONT]);
-      break;
-
-    case OPT_ChooseMessageFont:
-      MyCreateFont(hDlg, &workFont[MESSAGE_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleMessageFont, &workFont[MESSAGE_FONT]);
-      break;
-
-    case OPT_ChooseCoordFont:
-      MyCreateFont(hDlg, &workFont[COORD_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleCoordFont, &workFont[COORD_FONT]);
-      break;
-
-    case OPT_ChooseTagFont:
-      MyCreateFont(hDlg, &workFont[EDITTAGS_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleTagFont, &workFont[EDITTAGS_FONT]);
-      break;
-
-    case OPT_ChooseCommentsFont:
-      MyCreateFont(hDlg, &workFont[COMMENT_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleCommentsFont, &workFont[COMMENT_FONT]);
-      break;
-
-    case OPT_ChooseConsoleFont:
-      MyCreateFont(hDlg, &workFont[CONSOLE_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleConsoleFont, &workFont[CONSOLE_FONT]);
-      break;
-
-    case OPT_ChooseMoveHistoryFont:
-      MyCreateFont(hDlg, &workFont[MOVEHISTORY_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleMoveHistoryFont, &workFont[MOVEHISTORY_FONT]);
-      break;
-
-    case OPT_DefaultFonts:
-      for (i=0; i<NUM_FONTS; i++) {
-	DeleteObject(&workFont[i].hf);
-	ParseFontName(font[boardSize][i]->def, &workFont[i].mfp);
-	CreateFontInMF(&workFont[i]);
-      }
-      SetSampleFontText(hDlg, OPT_SampleClockFont, &workFont[CLOCK_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleMessageFont, &workFont[MESSAGE_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleCoordFont, &workFont[COORD_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleTagFont, &workFont[EDITTAGS_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleCommentsFont, &workFont[COMMENT_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleConsoleFont, &workFont[CONSOLE_FONT]);
-      SetSampleFontText(hDlg, OPT_SampleMoveHistoryFont, &workFont[MOVEHISTORY_FONT]);
-      break;
-    }
-  }
-  return FALSE;
-}
-
-VOID
-FontsOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc = MakeProcInstance((FARPROC)FontOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_Fonts), hwnd,
-	  (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Sounds Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-
-SoundComboData soundComboData[] = {
-  {"Move", NULL},
-  {"Bell", NULL},
-  {"ICS Alarm", NULL},
-  {"ICS Win", NULL},
-  {"ICS Loss", NULL},
-  {"ICS Draw", NULL},
-  {"ICS Unfinished", NULL},
-  {"Shout", NULL},
-  {"SShout/CShout", NULL},
-  {"Channel 1", NULL},
-  {"Channel", NULL},
-  {"Kibitz", NULL},
-  {"Tell", NULL},
-  {"Challenge", NULL},
-  {"Request", NULL},
-  {"Seek", NULL},
-  {NULL, NULL},
-};
-
-
-void
-InitSoundComboData(SoundComboData *scd)
-{
-  SoundClass sc;
-  ColorClass cc;
-  int index;
-
-  /* copy current sound settings to combo array */
-
-  for ( sc = (SoundClass)0; sc < NSoundClasses; sc++) {
-    scd[sc].name = strdup(sounds[sc].name);
-  }
-  for ( cc = (ColorClass)0; cc < NColorClasses - 2; cc++) {
-    index = (int)cc + (int)NSoundClasses;
-    scd[index].name = strdup(textAttribs[cc].sound.name);
-  }
-}
-
-
-void
-ResetSoundComboData(SoundComboData *scd)
-{
-  while (scd->label) {
-    if (scd->name != NULL) {
-      free (scd->name);
-      scd->name = NULL;
-    }
-    scd++;
-  }
-}
-
-void
-InitSoundCombo(HWND hwndCombo, SoundComboData *scd)
-{
-  char buf[255];
-  DWORD err;
-  DWORD cnt = 0;
-  SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0);
-
-  /* send the labels to the combo box */
-  while (scd->label) {
-    err = SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) scd->label);
-    if (err != cnt++) {
-      sprintf(buf, "InitSoundCombo(): err '%d', cnt '%d'\n",
-	  (int)err, (int)cnt);
-      MessageBox(NULL, buf, NULL, MB_OK);
-    }
-    scd++;
-  }
-  SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0);
-}
-
-int
-SoundDialogWhichRadio(HWND hDlg)
-{
-  if (IsDlgButtonChecked(hDlg, OPT_NoSound)) return OPT_NoSound;
-  if (IsDlgButtonChecked(hDlg, OPT_DefaultBeep)) return OPT_DefaultBeep;
-  if (IsDlgButtonChecked(hDlg, OPT_BuiltInSound)) return OPT_BuiltInSound;
-  if (IsDlgButtonChecked(hDlg, OPT_WavFile)) return OPT_WavFile;
-  return -1;
-}
-
-VOID
-SoundDialogSetEnables(HWND hDlg, int radio)
-{
-  EnableWindow(GetDlgItem(hDlg, OPT_BuiltInSoundName),
-	       radio == OPT_BuiltInSound);
-  EnableWindow(GetDlgItem(hDlg, OPT_WavFileName), radio == OPT_WavFile);
-  EnableWindow(GetDlgItem(hDlg, OPT_BrowseSound), radio == OPT_WavFile);
-}
-
-char *
-SoundDialogGetName(HWND hDlg, int radio)
-{
-  static char buf[MSG_SIZ], buf2[MSG_SIZ], buf3[MSG_SIZ];
-  char *dummy, *ret;
-  switch (radio) {
-  case OPT_NoSound:
-  default:
-    return "";
-  case OPT_DefaultBeep:
-    return "$";
-  case OPT_BuiltInSound:
-    buf[0] = '!';
-    GetDlgItemText(hDlg, OPT_BuiltInSoundName, buf + 1, sizeof(buf) - 1);
-    return buf;
-  case OPT_WavFile:
-    GetDlgItemText(hDlg, OPT_WavFileName, buf, sizeof(buf));
-    GetCurrentDirectory(MSG_SIZ, buf3);
-    SetCurrentDirectory(installDir);
-    if (GetFullPathName(buf, MSG_SIZ, buf2, &dummy)) {
-      ret = buf2;
-    } else {
-      ret = buf;
-    }
-    SetCurrentDirectory(buf3);
-    return ret;
-  }
-}
-
-void
-DisplaySelectedSound(HWND hDlg, HWND hCombo, const char *name)
-{
-  int radio;
-  /* 
-   * I think it's best to clear the combo and edit boxes. It looks stupid
-   * to have a value from another sound event sitting there grayed out.
-   */
-  SetDlgItemText(hDlg, OPT_WavFileName, "");
-  SendMessage(hCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0);
-
-  if (appData.debugMode)
-      fprintf(debugFP, "DisplaySelectedSound(,,'%s'):\n", name);
-  switch (name[0]) {
-  case NULLCHAR:
-    radio = OPT_NoSound;
-    break;
-  case '$':
-    if (name[1] == NULLCHAR) {
-      radio = OPT_DefaultBeep;
-    } else {
-      radio = OPT_WavFile;
-      SetDlgItemText(hDlg, OPT_WavFileName, name);
-    }
-    break;
-  case '!':
-    if (name[1] == NULLCHAR) {
-      radio = OPT_NoSound;
-    } else {
-      radio = OPT_BuiltInSound;
-      if (SendMessage(hCombo, CB_SELECTSTRING, (WPARAM) -1, 
-		      (LPARAM) (name + 1)) == CB_ERR) {
-	SendMessage(hCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0);
-	SendMessage(hCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) (name + 1));
-      }
-    }
-    break;
-  default:
-    radio = OPT_WavFile;
-    SetDlgItemText(hDlg, OPT_WavFileName, name);
-    break;
-  }
-  SoundDialogSetEnables(hDlg, radio);
-  CheckRadioButton(hDlg, OPT_NoSound, OPT_WavFile, radio);
-}
-    
-
-char *builtInSoundNames[] = BUILT_IN_SOUND_NAMES;
-
-LRESULT CALLBACK
-SoundOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  static HWND hSoundCombo;
-  static DWORD index;
-  static HWND hBISN;
-  int radio;
-  MySound tmp;
-  FILE *f;
-  char buf[MSG_SIZ];
-  char *newName;
-  SoundClass sc;
-  ColorClass cc;
-  SoundComboData *scd;
-
-  switch (message) {
-  case WM_INITDIALOG:
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-
-    /* Initialize the built-in sounds combo */
-    hBISN = GetDlgItem(hDlg, OPT_BuiltInSoundName);
-     InitComboStrings(hBISN, builtInSoundNames);
-
-    /* Initialize the  sound events combo */
-    index = 0;
-    InitSoundComboData(soundComboData);
-    hSoundCombo = GetDlgItem(hDlg, CBO_Sounds);
-    InitSoundCombo(hSoundCombo, soundComboData);
-
-    /* update the dialog */
-    DisplaySelectedSound(hDlg, hBISN, soundComboData[index].name);
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-
-    if (((HWND)lParam == hSoundCombo) && 
-	(HIWORD(wParam) == CBN_SELCHANGE)) {
-      /* 
-       * the user has selected a new sound event. We must store the name for
-       * the previously selected event, then retrieve the name for the
-       * newly selected event and update the dialog. 
-       */
-      radio = SoundDialogWhichRadio(hDlg);
-      newName = strdup(SoundDialogGetName(hDlg, radio));
-      
-      if (strcmp(newName, soundComboData[index].name) != 0) {
-	free(soundComboData[index].name);
-	soundComboData[index].name = newName;
-      } else {
-	free(newName);
-	newName = NULL;
-      }
-      /* now get the settings for the newly selected event */
-      index = SendMessage(hSoundCombo, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
-      DisplaySelectedSound(hDlg, hBISN, soundComboData[index].name);
-      
-      return TRUE;
-    }
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* 
-       * save the name for the currently selected sound event 
-       */
-      radio = SoundDialogWhichRadio(hDlg);
-      newName = strdup(SoundDialogGetName(hDlg, radio));
-
-      if (strcmp(soundComboData[index].name, newName) != 0) {
-	free(soundComboData[index].name);
-	soundComboData[index].name = newName;
-      } else {
-	free(newName);
-	newName = NULL;
-      }
-
-      /* save all the sound names that changed and load the sounds */
-
-      for ( sc = (SoundClass)0; sc < NSoundClasses; sc++) {
-	if (strcmp(soundComboData[sc].name, sounds[sc].name) != 0) {
-	  free(sounds[sc].name);
-	  sounds[sc].name = strdup(soundComboData[sc].name);
-	  MyLoadSound(&sounds[sc]);
-	}
-      }
-      for ( cc = (ColorClass)0; cc < NColorClasses - 2; cc++) {
-	index = (int)cc + (int)NSoundClasses;
-	if (strcmp(soundComboData[index].name, 
-		   textAttribs[cc].sound.name) != 0) {
-	  free(textAttribs[cc].sound.name);
-	  textAttribs[cc].sound.name = strdup(soundComboData[index].name);
-	  MyLoadSound(&textAttribs[cc].sound);
-	}
-      }
-
-      ResetSoundComboData(soundComboData);
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      ResetSoundComboData(soundComboData);
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case OPT_DefaultSounds:
-      /* can't use SetDefaultSounds() because we need to be able to "undo" if
-       * user selects "Cancel" later on. So we do it the hard way here.
-       */
-      scd = &soundComboData[0];
-      while (scd->label != NULL) {
-	if (scd->name != NULL) free(scd->name);
-	scd->name = strdup("");
-	scd++;
-      }
-      free(soundComboData[(int)SoundBell].name);
-      soundComboData[(int)SoundBell].name = strdup(SOUND_BELL);
-      DisplaySelectedSound(hDlg, hBISN, soundComboData[index].name);
-      break;
-
-    case OPT_PlaySound:
-      radio = SoundDialogWhichRadio(hDlg);
-      tmp.name = strdup(SoundDialogGetName(hDlg, radio));
-      tmp.data = NULL;
-      MyLoadSound(&tmp);
-      MyPlaySound(&tmp);
-      if (tmp.data  != NULL) FreeResource(tmp.data); // technically obsolete fn, but tmp.data is NOT malloc'd mem
-      if (tmp.name != NULL) free(tmp.name);
-      return TRUE;
-
-    case OPT_BrowseSound:
-      f = OpenFileDialog(hDlg, "rb", NULL, "wav", SOUND_FILT,
-	"Browse for Sound File", NULL, NULL, buf);
-      if (f != NULL) {
-	fclose(f);
-	SetDlgItemText(hDlg, OPT_WavFileName, buf);
-      }
-      return TRUE;
-
-    default:
-      radio = SoundDialogWhichRadio(hDlg);
-      SoundDialogSetEnables(hDlg, radio);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-
-VOID SoundOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc;
-
-  lpProc = MakeProcInstance((FARPROC)SoundOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_Sound), hwnd, (DLGPROC)lpProc);
-  FreeProcInstance(lpProc);
-}
-
-
-/*---------------------------------------------------------------------------*\
- *
- * Comm Port dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-
-#define FLOW_NONE   0
-#define FLOW_XOFF   1
-#define FLOW_CTS    2
-#define FLOW_DSR    3
-
-#define PORT_NONE
-
-ComboData cdPort[]     = { {"None", PORT_NONE}, {"COM1", 1}, {"COM2", 2},
-			   {"COM3", 3}, {"COM4", 4}, {NULL, 0} };
-ComboData cdDataRate[] = { {"110", 110}, {"300", 300}, {"600", 600}, {"1200", 1200},
-			   {"2400", 2400}, {"4800", 4800}, {"9600", 9600}, {"19200", 19200},
-			   {"38400", 38400}, {NULL, 0} };
-ComboData cdDataBits[] = { {"5", 5}, {"6", 6}, {"7", 7}, {"8", 8}, {NULL, 0} };
-ComboData cdParity[]   = { {"None", NOPARITY}, {"Odd", ODDPARITY}, {"Even", EVENPARITY},
-			   {"Mark", MARKPARITY}, {"Space", SPACEPARITY}, {NULL, 0} };
-ComboData cdStopBits[] = { {"1", ONESTOPBIT}, {"1.5", ONE5STOPBITS},
-			   {"2", TWOSTOPBITS}, {NULL, 0} };
-ComboData cdFlow[]     = { {"None", FLOW_NONE}, {"Xoff/Xon", FLOW_XOFF}, {"CTS", FLOW_CTS},
-			   {"DSR", FLOW_DSR}, {NULL, 0} };
-
-
-VOID
-ParseCommSettings(char *arg, DCB *dcb)
-{
-  int dataRate, count;
-  char bits[MSG_SIZ], parity[MSG_SIZ], stopBits[MSG_SIZ], flow[MSG_SIZ];
-  ComboData *cd;
-  count = sscanf(arg, "%d%*[, ]%[^, ]%*[, ]%[^, ]%*[, ]%[^, ]%*[, ]%[^, ]",
-    &dataRate, bits, parity, stopBits, flow);
-  if (count != 5) goto cant_parse;
-  dcb->BaudRate = dataRate;
-  cd = cdDataBits;
-  while (cd->label != NULL) {
-    if (StrCaseCmp(cd->label, bits) == 0) {
-      dcb->ByteSize = cd->value;
-      break;
-    }
-    cd++;
-  }
-  if (cd->label == NULL) goto cant_parse;
-  cd = cdParity;
-  while (cd->label != NULL) {
-    if (StrCaseCmp(cd->label, parity) == 0) {
-      dcb->Parity = cd->value;
-      break;
-    }
-    cd++;
-  }
-  if (cd->label == NULL) goto cant_parse;
-  cd = cdStopBits;
-  while (cd->label != NULL) {
-    if (StrCaseCmp(cd->label, stopBits) == 0) {
-      dcb->StopBits = cd->value;
-      break;
-    }
-    cd++;
-  }
-  cd = cdFlow;
-  if (cd->label == NULL) goto cant_parse;
-  while (cd->label != NULL) {
-    if (StrCaseCmp(cd->label, flow) == 0) {
-      switch (cd->value) {
-      case FLOW_NONE:
-  	dcb->fOutX = FALSE;
-	dcb->fOutxCtsFlow = FALSE;
-	dcb->fOutxDsrFlow = FALSE;
-	break;
-      case FLOW_CTS:
-	dcb->fOutX = FALSE;
-	dcb->fOutxCtsFlow = TRUE;
-	dcb->fOutxDsrFlow = FALSE;
-	break;
-      case FLOW_DSR:
-	dcb->fOutX = FALSE;
-	dcb->fOutxCtsFlow = FALSE;
-	dcb->fOutxDsrFlow = TRUE;
-	break;
-      case FLOW_XOFF:
-	dcb->fOutX = TRUE;
-	dcb->fOutxCtsFlow = FALSE;
-	dcb->fOutxDsrFlow = FALSE;
-	break;
-      }
-      break;
-    }
-    cd++;
-  }
-  if (cd->label == NULL) goto cant_parse;
-  return;
-cant_parse:
-    ExitArgError("Can't parse com port settings", arg);
-}
-
-
-VOID PrintCommSettings(FILE *f, char *name, DCB *dcb)
-{
-  char *flow = "??", *parity = "??", *stopBits = "??";
-  ComboData *cd;
-  
-  cd = cdParity;
-  while (cd->label != NULL) {
-    if (dcb->Parity == cd->value) {
-      parity = cd->label;
-      break;
-    }
-    cd++;
-  }
-  cd = cdStopBits;
-  while (cd->label != NULL) {
-    if (dcb->StopBits == cd->value) {
-      stopBits = cd->label;
-      break;
-    }
-    cd++;
-  }
-  if (dcb->fOutX) {
-    flow = cdFlow[FLOW_XOFF].label;
-  } else if (dcb->fOutxCtsFlow) {
-    flow = cdFlow[FLOW_CTS].label;
-  } else if (dcb->fOutxDsrFlow) {
-    flow = cdFlow[FLOW_DSR].label;
-  } else {
-    flow = cdFlow[FLOW_NONE].label;
-  }
-  fprintf(f, "/%s=%d,%d,%s,%s,%s\n", name,
-    (int)dcb->BaudRate, dcb->ByteSize, parity, stopBits, flow);
-}
-
-
-void
-InitCombo(HANDLE hwndCombo, ComboData *cd)
-{
-  SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0);
-
-  while (cd->label != NULL) {
-    SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) cd->label);
-    cd++;
-  }
-}
-
-void
-SelectComboValue(HANDLE hwndCombo, ComboData *cd, unsigned value)
-{
-  int i;
-
-  i = 0;
-  while (cd->label != NULL) {
-    if (cd->value == value) {
-      SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) i, (LPARAM) 0);
-      return;
-    }
-    cd++;
-    i++;
-  }
-}
-
-LRESULT CALLBACK
-CommPortOptionsDialog(HWND hDlg, UINT message, WPARAM wParam,	LPARAM lParam)
-{
-  char buf[MSG_SIZ];
-  HANDLE hwndCombo;
-  char *p;
-  LRESULT index;
-  unsigned value;
-  int err;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow(hDlg, GW_OWNER));
-    /* Initialize the dialog items */
-    /* !! There should probably be some synchronization
-       in accessing hCommPort and dcb.  Or does modal nature
-       of this dialog box do it for us?
-       */
-    hwndCombo = GetDlgItem(hDlg, OPT_Port);
-    InitCombo(hwndCombo, cdPort);
-    p = strrchr(appData.icsCommPort, '\\');
-    if (p++ == NULL) p = appData.icsCommPort;
-    if ((*p == '\0') ||
-	(SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) p) == CB_ERR)) {
-      SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) "None");
-    }
-    EnableWindow(hwndCombo, hCommPort == NULL); /*!! don't allow change for now*/
-
-    hwndCombo = GetDlgItem(hDlg, OPT_DataRate);
-    InitCombo(hwndCombo, cdDataRate);
-    sprintf(buf, "%u", (int)dcb.BaudRate);
-    if (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) buf) == CB_ERR) {
-      SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0);
-      SendMessage(hwndCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) buf);
-    }
-
-    hwndCombo = GetDlgItem(hDlg, OPT_Bits);
-    InitCombo(hwndCombo, cdDataBits);
-    SelectComboValue(hwndCombo, cdDataBits, dcb.ByteSize);
-
-    hwndCombo = GetDlgItem(hDlg, OPT_Parity);
-    InitCombo(hwndCombo, cdParity);
-    SelectComboValue(hwndCombo, cdParity, dcb.Parity);
-
-    hwndCombo = GetDlgItem(hDlg, OPT_StopBits);
-    InitCombo(hwndCombo, cdStopBits);
-    SelectComboValue(hwndCombo, cdStopBits, dcb.StopBits);
-
-    hwndCombo = GetDlgItem(hDlg, OPT_Flow);
-    InitCombo(hwndCombo, cdFlow);
-    if (dcb.fOutX) {
-      SelectComboValue(hwndCombo, cdFlow, FLOW_XOFF);
-    } else if (dcb.fOutxCtsFlow) {
-      SelectComboValue(hwndCombo, cdFlow, FLOW_CTS);
-    } else if (dcb.fOutxDsrFlow) {
-      SelectComboValue(hwndCombo, cdFlow, FLOW_DSR);
-    } else {
-      SelectComboValue(hwndCombo, cdFlow, FLOW_NONE);
-    }
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* Read changed options from the dialog box */
-#ifdef NOTDEF
-      /* !! Currently we can't change comm ports in midstream */
-      hwndCombo = GetDlgItem(hDlg, OPT_Port);
-      index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0);
-      if (index == PORT_NONE) {
-	appData.icsCommPort = "";
-	if (hCommPort != NULL) {
-	  CloseHandle(hCommPort);
-	  hCommPort = NULL;
-	}
-	EndDialog(hDlg, TRUE);
-	return TRUE;
-      }
-      SendMessage(hwndCombo, WM_GETTEXT, (WPARAM) MSG_SIZ, (LPARAM) buf);
-      appData.icsCommPort = strdup(buf);
-      if (hCommPort != NULL) {
-	CloseHandle(hCommPort);
-	hCommPort = NULL;
-      }
-      /* now what?? can't really do this; have to fix up the ChildProc
-	 and InputSource records for the comm port that we gave to the
-	 back end. */
-#endif /*NOTDEF*/
-
-      hwndCombo = GetDlgItem(hDlg, OPT_DataRate);
-      SendMessage(hwndCombo, WM_GETTEXT, (WPARAM) MSG_SIZ, (LPARAM) buf);
-      if (sscanf(buf, "%u", &value) != 1) {
-	MessageBox(hDlg, "Invalid data rate",
-		   "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	return TRUE;
-      }
-      dcb.BaudRate = value;
-
-      hwndCombo = GetDlgItem(hDlg, OPT_Bits);
-      index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0);
-      dcb.ByteSize = cdDataBits[index].value;
-
-      hwndCombo = GetDlgItem(hDlg, OPT_Parity);
-      index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0);
-      dcb.Parity = cdParity[index].value;
-
-      hwndCombo = GetDlgItem(hDlg, OPT_StopBits);
-      index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0);
-      dcb.StopBits = cdStopBits[index].value;
-
-      hwndCombo = GetDlgItem(hDlg, OPT_Flow);
-      index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0);
-      switch (cdFlow[index].value) {
-      case FLOW_NONE:
-	dcb.fOutX = FALSE;
-	dcb.fOutxCtsFlow = FALSE;
-	dcb.fOutxDsrFlow = FALSE;
-	break;
-      case FLOW_CTS:
-	dcb.fOutX = FALSE;
-	dcb.fOutxCtsFlow = TRUE;
-	dcb.fOutxDsrFlow = FALSE;
-	break;
-      case FLOW_DSR:
-	dcb.fOutX = FALSE;
-	dcb.fOutxCtsFlow = FALSE;
-	dcb.fOutxDsrFlow = TRUE;
-	break;
-      case FLOW_XOFF:
-	dcb.fOutX = TRUE;
-	dcb.fOutxCtsFlow = FALSE;
-	dcb.fOutxDsrFlow = FALSE;
-	break;
-      }
-      if (!SetCommState(hCommPort, (LPDCB) &dcb)) {
-	err = GetLastError();
-	switch(MessageBox(hDlg, 
-	                 "Failed to set comm port state;\r\ninvalid options?",
-			 "Option Error", MB_ABORTRETRYIGNORE|MB_ICONQUESTION)) {
-	case IDABORT:
-	  DisplayFatalError("Failed to set comm port state", err, 1);
-	  exit(1);  /*is it ok to do this from here?*/
-
-	case IDRETRY:
-	  return TRUE;
-
-	case IDIGNORE:
-	  EndDialog(hDlg, TRUE);
-	  return TRUE;
-	}
-      }
-
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    default:
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-CommPortOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc = MakeProcInstance((FARPROC)CommPortOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_CommPort), hwnd, (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Load Options dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-VOID
-SetLoadOptionEnables(HWND hDlg)
-{
-  UINT state;
-
-  state = IsDlgButtonChecked(hDlg, OPT_Autostep);
-  EnableWindow(GetDlgItem(hDlg, OPT_ASTimeDelay), state);
-  EnableWindow(GetDlgItem(hDlg, OPT_AStext1), state);
-}
-
-LRESULT CALLBACK
-LoadOptions(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char buf[MSG_SIZ];
-  float fnumber;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    /* Initialize the dialog items */
-    if (appData.timeDelay >= 0.0) {
-      CheckDlgButton(hDlg, OPT_Autostep, TRUE);
-      sprintf(buf, "%.2g", appData.timeDelay);
-      SetDlgItemText(hDlg, OPT_ASTimeDelay, buf);
-    } else {
-      CheckDlgButton(hDlg, OPT_Autostep, FALSE);
-    }
-    SetLoadOptionEnables(hDlg);
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* Read changed options from the dialog box */
-      if (IsDlgButtonChecked(hDlg, OPT_Autostep)) {
-	GetDlgItemText(hDlg, OPT_ASTimeDelay, buf, MSG_SIZ);
-	if (sscanf(buf, "%f", &fnumber) != 1) {
-	  MessageBox(hDlg, "Invalid load game step rate",
-		     "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	  return FALSE;
-	}
-	appData.timeDelay = fnumber;
-      } else {
-	appData.timeDelay = (float) -1.0;
-      }
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    default:
-      SetLoadOptionEnables(hDlg);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-
-VOID 
-LoadOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc = MakeProcInstance((FARPROC)LoadOptions, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_LoadOptions), hwnd, (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Save Options dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-VOID
-SetSaveOptionEnables(HWND hDlg)
-{
-  UINT state;
-
-  state = IsDlgButtonChecked(hDlg, OPT_Autosave);
-  EnableWindow(GetDlgItem(hDlg, OPT_AVPrompt), state);
-  EnableWindow(GetDlgItem(hDlg, OPT_AVToFile), state);
-  if (state && !IsDlgButtonChecked(hDlg, OPT_AVPrompt) &&
-      !IsDlgButtonChecked(hDlg, OPT_AVToFile)) {
-    CheckRadioButton(hDlg, OPT_AVPrompt, OPT_AVToFile, OPT_AVPrompt);
-  }
-
-  state = state && IsDlgButtonChecked(hDlg, OPT_AVToFile);
-  EnableWindow(GetDlgItem(hDlg, OPT_AVFilename), state);
-  EnableWindow(GetDlgItem(hDlg, OPT_AVBrowse), state);
-}
-
-LRESULT CALLBACK
-SaveOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char buf[MSG_SIZ];
-  FILE *f;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    /* Initialize the dialog items */
-    if (*appData.saveGameFile != NULLCHAR) {
-      CheckDlgButton(hDlg, OPT_Autosave, (UINT) TRUE);
-      CheckRadioButton(hDlg, OPT_AVPrompt, OPT_AVToFile, OPT_AVToFile);
-      SetDlgItemText(hDlg, OPT_AVFilename, appData.saveGameFile);
-    } else if (appData.autoSaveGames) {
-      CheckDlgButton(hDlg, OPT_Autosave, (UINT) TRUE);
-      CheckRadioButton(hDlg, OPT_AVPrompt, OPT_AVToFile, OPT_AVPrompt);
-    } else {
-      CheckDlgButton(hDlg, OPT_Autosave, (UINT) FALSE);
-    }
-    if (appData.oldSaveStyle) {
-      CheckRadioButton(hDlg, OPT_PGN, OPT_Old, OPT_Old);
-    } else {
-      CheckRadioButton(hDlg, OPT_PGN, OPT_Old, OPT_PGN);
-    }
-    CheckDlgButton( hDlg, OPT_OutOfBookInfo, appData.saveOutOfBookInfo );
-    SetSaveOptionEnables(hDlg);
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* Read changed options from the dialog box */
-      if (IsDlgButtonChecked(hDlg, OPT_Autosave)) {
-	appData.autoSaveGames = TRUE;
-	if (IsDlgButtonChecked(hDlg, OPT_AVPrompt)) {
-	  appData.saveGameFile = "";
-	} else /*if (IsDlgButtonChecked(hDlg, OPT_AVToFile))*/ {
-	  GetDlgItemText(hDlg, OPT_AVFilename, buf, MSG_SIZ);
-	  if (*buf == NULLCHAR) {
-	    MessageBox(hDlg, "Invalid save game file name",
-		       "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	    return FALSE;
-	  }
-	  if ((isalpha(buf[0]) && buf[1] == ':') ||
-	    (buf[0] == '\\' && buf[1] == '\\')) {
-	    appData.saveGameFile = strdup(buf);
-	  } else {
-	    char buf2[MSG_SIZ], buf3[MSG_SIZ];
-	    char *dummy;
-	    GetCurrentDirectory(MSG_SIZ, buf3);
-	    SetCurrentDirectory(installDir);
-	    if (GetFullPathName(buf, MSG_SIZ, buf2, &dummy)) {
-	      appData.saveGameFile = strdup(buf2);
-	    } else {
-	      appData.saveGameFile = strdup(buf);
-	    }
-	    SetCurrentDirectory(buf3);
-	  }
-	}
-      } else {
-	appData.autoSaveGames = FALSE;
-	appData.saveGameFile = "";
-      }
-      appData.oldSaveStyle = IsDlgButtonChecked(hDlg, OPT_Old);
-      appData.saveOutOfBookInfo = IsDlgButtonChecked( hDlg, OPT_OutOfBookInfo );
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case OPT_AVBrowse:
-      f = OpenFileDialog(hDlg, "a", NULL, 
-	                 appData.oldSaveStyle ? "gam" : "pgn", 
-   	                 GAME_FILT, "Browse for Auto Save File", 
-			 NULL, NULL, buf);
-      if (f != NULL) {
-	fclose(f);
-	SetDlgItemText(hDlg, OPT_AVFilename, buf);
-      }
-      break;
-
-    default:
-      SetSaveOptionEnables(hDlg);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-SaveOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc = MakeProcInstance((FARPROC)SaveOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_SaveOptions), hwnd, (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Time Control Options dialog functions
- *
-\*---------------------------------------------------------------------------*/
-
-VOID
-SetTimeControlEnables(HWND hDlg)
-{
-  UINT state;
-
-  state = IsDlgButtonChecked(hDlg, OPT_TCUseMoves);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCTime), state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCMoves), state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCtext1), state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCtext2), state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCTime2), !state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCInc), !state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCitext1), !state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCitext2), !state);
-  EnableWindow(GetDlgItem(hDlg, OPT_TCitext3), !state);
-}
-
-
-LRESULT CALLBACK
-TimeControl(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char buf[MSG_SIZ];
-  int mps, increment, odds1, odds2;
-  BOOL ok, ok2;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-    /* Initialize the dialog items */
-    if (appData.clockMode && !appData.icsActive) {
-      if (appData.timeIncrement == -1) {
-	CheckRadioButton(hDlg, OPT_TCUseMoves, OPT_TCUseInc,
-			 OPT_TCUseMoves);
-	SetDlgItemText(hDlg, OPT_TCTime, appData.timeControl);
-	SetDlgItemInt(hDlg, OPT_TCMoves, appData.movesPerSession,
-		      FALSE);
-	SetDlgItemText(hDlg, OPT_TCTime2, "");
-	SetDlgItemText(hDlg, OPT_TCInc, "");
-      } else {
-	CheckRadioButton(hDlg, OPT_TCUseMoves, OPT_TCUseInc,
-			 OPT_TCUseInc);
-	SetDlgItemText(hDlg, OPT_TCTime, "");
-	SetDlgItemText(hDlg, OPT_TCMoves, "");
-	SetDlgItemText(hDlg, OPT_TCTime2, appData.timeControl);
-	SetDlgItemInt(hDlg, OPT_TCInc, appData.timeIncrement, FALSE);
-      }
-      SetDlgItemInt(hDlg, OPT_TCOdds1, 1, FALSE);
-      SetDlgItemInt(hDlg, OPT_TCOdds2, 1, FALSE);
-      SetTimeControlEnables(hDlg);
-    }
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* Read changed options from the dialog box */
-      if (IsDlgButtonChecked(hDlg, OPT_TCUseMoves)) {
-	increment = -1;
-	mps = GetDlgItemInt(hDlg, OPT_TCMoves, &ok, FALSE);
-	if (!ok || mps <= 0) {
-	  MessageBox(hDlg, "Invalid moves per time control",
-		     "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	  return FALSE;
-	}
-	GetDlgItemText(hDlg, OPT_TCTime, buf, MSG_SIZ);
-	if (!ParseTimeControl(buf, increment, mps)) {
-	  MessageBox(hDlg, "Invalid minutes per time control",
-		     "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	  return FALSE;
-	}
-      } else {
-	increment = GetDlgItemInt(hDlg, OPT_TCInc, &ok, FALSE);
-	mps = appData.movesPerSession;
-	if (!ok || increment < 0) {
-	  MessageBox(hDlg, "Invalid increment",
-		     "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	  return FALSE;
-	}
-	GetDlgItemText(hDlg, OPT_TCTime2, buf, MSG_SIZ);
-	if (!ParseTimeControl(buf, increment, mps)) {
-	  MessageBox(hDlg, "Invalid initial time",
-		     "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	  return FALSE;
-	}
-      }
-      odds1 = GetDlgItemInt(hDlg, OPT_TCOdds1, &ok, FALSE);
-      odds2 = GetDlgItemInt(hDlg, OPT_TCOdds2, &ok2, FALSE);
-      if (!ok || !ok2 || odds1 <= 0 || odds2 <= 0) {
-	  MessageBox(hDlg, "Invalid time-odds factor",
-		     "Option Error", MB_OK|MB_ICONEXCLAMATION);
-	  return FALSE;
-      }
-      appData.timeControl = strdup(buf);
-      appData.movesPerSession = mps;
-      appData.timeIncrement = increment;
-      appData.firstTimeOdds  = first.timeOdds  = odds1;
-      appData.secondTimeOdds = second.timeOdds = odds2;
-      Reset(TRUE, TRUE);
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    default:
-      SetTimeControlEnables(hDlg);
-      break;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID
-TimeControlOptionsPopup(HWND hwnd)
-{
-  if (gameMode != BeginningOfGame) {
-    DisplayError("Changing time control during a game is not implemented", 0);
-  } else {
-    FARPROC lpProc = MakeProcInstance((FARPROC)TimeControl, hInst);
-    DialogBox(hInst, MAKEINTRESOURCE(DLG_TimeControl), hwnd, (DLGPROC) lpProc);
-    FreeProcInstance(lpProc);
-  }
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * Engine Options Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-#define CHECK_BOX(x,y) CheckDlgButton(hDlg, (x), (BOOL)(y))
-#define IS_CHECKED(x) (Boolean)IsDlgButtonChecked(hDlg, (x))
-
-#define INT_ABS( n )    ((n) >= 0 ? (n) : -(n))
-
-LRESULT CALLBACK EnginePlayOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-
-    /* Initialize the dialog items */
-    CHECK_BOX(IDC_EpPeriodicUpdates, appData.periodicUpdates);
-    CHECK_BOX(IDC_EpPonder, appData.ponderNextMove);
-    CHECK_BOX(IDC_EpShowThinking, appData.showThinking);
-    CHECK_BOX(IDC_EpHideThinkingHuman, appData.hideThinkingFromHuman);
-
-    CHECK_BOX(IDC_TestClaims, appData.testClaims);
-    CHECK_BOX(IDC_DetectMates, appData.checkMates);
-    CHECK_BOX(IDC_MaterialDraws, appData.materialDraws);
-    CHECK_BOX(IDC_TrivialDraws, appData.trivialDraws);
-
-    CHECK_BOX(IDC_ScoreAbs1, appData.firstScoreIsAbsolute);
-    CHECK_BOX(IDC_ScoreAbs2, appData.secondScoreIsAbsolute);
-
-    SetDlgItemInt( hDlg, IDC_EpDrawMoveCount, appData.adjudicateDrawMoves, TRUE );
-    SendDlgItemMessage( hDlg, IDC_EpDrawMoveCount, EM_SETSEL, 0, -1 );
-
-    SetDlgItemInt( hDlg, IDC_EpAdjudicationThreshold, INT_ABS(appData.adjudicateLossThreshold), TRUE );
-    SendDlgItemMessage( hDlg, IDC_EpAdjudicationThreshold, EM_SETSEL, 0, -1 );
-
-    SetDlgItemInt( hDlg, IDC_RuleMoves, appData.ruleMoves, TRUE );
-    SendDlgItemMessage( hDlg, IDC_RuleMoves, EM_SETSEL, 0, -1 );
-
-    SetDlgItemInt( hDlg, IDC_DrawRepeats, INT_ABS(appData.drawRepeats), TRUE );
-    SendDlgItemMessage( hDlg, IDC_DrawRepeats, EM_SETSEL, 0, -1 );
-
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      /* Read changed options from the dialog box */
-      PeriodicUpdatesEvent(          IS_CHECKED(IDC_EpPeriodicUpdates));
-      PonderNextMoveEvent(           IS_CHECKED(IDC_EpPonder));
-      appData.hideThinkingFromHuman= IS_CHECKED(IDC_EpHideThinkingHuman); // [HGM] thinking: moved up
-#if 0
-      ShowThinkingEvent(             IS_CHECKED(IDC_EpShowThinking));
-#else
-      appData.showThinking   = IS_CHECKED(IDC_EpShowThinking);
-      ShowThinkingEvent(); // [HGM] thinking: tests all options that need thinking output
-#endif
-      appData.testClaims    = IS_CHECKED(IDC_TestClaims);
-      appData.checkMates    = IS_CHECKED(IDC_DetectMates);
-      appData.materialDraws = IS_CHECKED(IDC_MaterialDraws);
-      appData.trivialDraws  = IS_CHECKED(IDC_TrivialDraws);
-
-      appData.adjudicateDrawMoves = GetDlgItemInt(hDlg, IDC_EpDrawMoveCount, NULL, FALSE );
-      appData.adjudicateLossThreshold = - (int) GetDlgItemInt(hDlg, IDC_EpAdjudicationThreshold, NULL, FALSE );
-      appData.ruleMoves = GetDlgItemInt(hDlg, IDC_RuleMoves, NULL, FALSE );
-      appData.drawRepeats = (int) GetDlgItemInt(hDlg, IDC_DrawRepeats, NULL, FALSE );
-
-      appData.firstScoreIsAbsolute  = IS_CHECKED(IDC_ScoreAbs1);
-      appData.secondScoreIsAbsolute = IS_CHECKED(IDC_ScoreAbs2);
-
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case IDC_EpDrawMoveCount:
-    case IDC_EpAdjudicationThreshold:
-    case IDC_DrawRepeats:
-    case IDC_RuleMoves:
-        if( HIWORD(wParam) == EN_CHANGE ) {
-            int n1_ok;
-            int n2_ok;
-            int n3_ok;
-            int n4_ok;
-
-            GetDlgItemInt(hDlg, IDC_EpDrawMoveCount, &n1_ok, FALSE );
-            GetDlgItemInt(hDlg, IDC_EpAdjudicationThreshold, &n2_ok, FALSE );
-            GetDlgItemInt(hDlg, IDC_RuleMoves, &n3_ok, FALSE );
-            GetDlgItemInt(hDlg, IDC_DrawRepeats, &n4_ok, FALSE );
-
-            EnableWindow( GetDlgItem(hDlg, IDOK), n1_ok && n2_ok && n3_ok && n4_ok ? TRUE : FALSE );
-        }
-        return TRUE;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID EnginePlayOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc;
-
-  lpProc = MakeProcInstance((FARPROC)EnginePlayOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_EnginePlayOptions), hwnd, (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
-
-/*---------------------------------------------------------------------------*\
- *
- * UCI Options Dialog functions
- *
-\*---------------------------------------------------------------------------*/
-static BOOL BrowseForFolder( const char * title, char * path )
-{
-    BOOL result = FALSE;
-    BROWSEINFO bi;
-    LPITEMIDLIST pidl;
-
-    ZeroMemory( &bi, sizeof(bi) );
-
-    bi.lpszTitle = title == 0 ? "Choose Folder" : title;
-    bi.ulFlags = BIF_RETURNONLYFSDIRS;
-
-    pidl = SHBrowseForFolder( &bi );
-
-    if( pidl != 0 ) {
-        IMalloc * imalloc = 0;
-
-        if( SHGetPathFromIDList( pidl, path ) ) {
-            result = TRUE;
-        }
-
-        if( SUCCEEDED( SHGetMalloc ( &imalloc ) ) ) {
-            imalloc->lpVtbl->Free(imalloc,pidl);
-            imalloc->lpVtbl->Release(imalloc);
-        }
-    }
-
-    return result;
-}
-
-LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-  char buf[MAX_PATH];
-  int oldCores;
-
-  switch (message) {
-  case WM_INITDIALOG: /* message: initialize dialog box */
-
-    /* Center the dialog over the application window */
-    CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
-
-    /* Initialize the dialog items */
-    SetDlgItemText( hDlg, IDC_PolyglotDir, appData.polyglotDir );
-    SetDlgItemInt( hDlg, IDC_HashSize, appData.defaultHashSize, TRUE );
-    SetDlgItemText( hDlg, IDC_PathToEGTB, appData.defaultPathEGTB );
-    SetDlgItemInt( hDlg, IDC_SizeOfEGTB, appData.defaultCacheSizeEGTB, TRUE );
-    CheckDlgButton( hDlg, IDC_UseBook, (BOOL) appData.usePolyglotBook );
-    SetDlgItemText( hDlg, IDC_BookFile, appData.polyglotBook );
-    // [HGM] smp: input field for nr of cores:
-    SetDlgItemInt( hDlg, IDC_Cores, appData.smpCores, TRUE );
-    // [HGM] book: tick boxes for own book use
-    CheckDlgButton( hDlg, IDC_OwnBook1, (BOOL) appData.firstHasOwnBookUCI );
-    CheckDlgButton( hDlg, IDC_OwnBook2, (BOOL) appData.secondHasOwnBookUCI );
-
-    SendDlgItemMessage( hDlg, IDC_PolyglotDir, EM_SETSEL, 0, -1 );
-
-    return TRUE;
-
-  case WM_COMMAND: /* message: received a command */
-    switch (LOWORD(wParam)) {
-    case IDOK:
-      GetDlgItemText( hDlg, IDC_PolyglotDir, buf, sizeof(buf) );
-      appData.polyglotDir = strdup(buf);
-      appData.defaultHashSize = GetDlgItemInt(hDlg, IDC_HashSize, NULL, FALSE );
-      appData.defaultCacheSizeEGTB = GetDlgItemInt(hDlg, IDC_SizeOfEGTB, NULL, FALSE );
-      GetDlgItemText( hDlg, IDC_PathToEGTB, buf, sizeof(buf) );
-      appData.defaultPathEGTB = strdup(buf);
-      GetDlgItemText( hDlg, IDC_BookFile, buf, sizeof(buf) );
-      appData.polyglotBook = strdup(buf);
-      appData.usePolyglotBook = (Boolean) IsDlgButtonChecked( hDlg, IDC_UseBook );
-      // [HGM] smp: get nr of cores:
-      oldCores = appData.smpCores;
-      appData.smpCores = GetDlgItemInt(hDlg, IDC_Cores, NULL, FALSE );
-      if(appData.smpCores != oldCores) NewSettingEvent(FALSE, "cores", appData.smpCores);
-      // [HGM] book: read tick boxes for own book use
-      appData.firstHasOwnBookUCI  = (Boolean) IsDlgButtonChecked( hDlg, IDC_OwnBook1 );
-      appData.secondHasOwnBookUCI = (Boolean) IsDlgButtonChecked( hDlg, IDC_OwnBook2 );
-
-      if(gameMode == BeginningOfGame) Reset(TRUE, TRUE);
-      EndDialog(hDlg, TRUE);
-      return TRUE;
-
-    case IDCANCEL:
-      EndDialog(hDlg, FALSE);
-      return TRUE;
-
-    case IDC_BrowseForBook:
-      {
-          char filter[] = { 
-              'A','l','l',' ','F','i','l','e','s', 0,
-              '*','.','*', 0,
-              'B','I','N',' ','F','i','l','e','s', 0,
-              '*','.','b','i','n', 0,
-              0 };
-
-          OPENFILENAME ofn;
-
-          strcpy( buf, "" );
-
-          ZeroMemory( &ofn, sizeof(ofn) );
-
-          ofn.lStructSize = sizeof(ofn);
-          ofn.hwndOwner = hDlg;
-          ofn.hInstance = hInst;
-          ofn.lpstrFilter = filter;
-          ofn.lpstrFile = buf;
-          ofn.nMaxFile = sizeof(buf);
-          ofn.lpstrTitle = "Choose Book";
-          ofn.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY;
-
-          if( GetOpenFileName( &ofn ) ) {
-              SetDlgItemText( hDlg, IDC_BookFile, buf );
-          }
-      }
-      return TRUE;
-
-    case IDC_BrowseForPolyglotDir:
-      if( BrowseForFolder( "Choose Polyglot Directory", buf ) ) {
-        SetDlgItemText( hDlg, IDC_PolyglotDir, buf );
-
-        strcat( buf, "\\polyglot.exe" );
-
-        if( GetFileAttributes(buf) == 0xFFFFFFFF ) {
-            MessageBox( hDlg, "Polyglot was not found in the specified folder!", "Warning", MB_OK | MB_ICONWARNING );
-        }
-      }
-      return TRUE;
-
-    case IDC_BrowseForEGTB:
-      if( BrowseForFolder( "Choose EGTB Directory:", buf ) ) {
-        SetDlgItemText( hDlg, IDC_PathToEGTB, buf );
-      }
-      return TRUE;
-
-    case IDC_HashSize:
-    case IDC_SizeOfEGTB:
-        if( HIWORD(wParam) == EN_CHANGE ) {
-            int n1_ok;
-            int n2_ok;
-
-            GetDlgItemInt(hDlg, IDC_HashSize, &n1_ok, FALSE );
-            GetDlgItemInt(hDlg, IDC_SizeOfEGTB, &n2_ok, FALSE );
-
-            EnableWindow( GetDlgItem(hDlg, IDOK), n1_ok && n2_ok ? TRUE : FALSE );
-        }
-        return TRUE;
-    }
-    break;
-  }
-  return FALSE;
-}
-
-VOID UciOptionsPopup(HWND hwnd)
-{
-  FARPROC lpProc;
-
-  lpProc = MakeProcInstance((FARPROC)UciOptionsDialog, hInst);
-  DialogBox(hInst, MAKEINTRESOURCE(DLG_OptionsUCI), hwnd, (DLGPROC) lpProc);
-  FreeProcInstance(lpProc);
-}
diff --git a/winboard/woptions.h b/winboard/woptions.h
deleted file mode 100644
index c2c0699..0000000
--- a/winboard/woptions.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * woptions.h -- Options dialog box routines for WinBoard
- *
- * Copyright 2000,2009 Free Software Foundation, Inc.
- *
- * Enhancements Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include <windows.h>
-
-VOID GeneralOptionsPopup(HWND hwnd);
-VOID BoardOptionsPopup(HWND hwnd);
-VOID IcsOptionsPopup(HWND hwnd);
-VOID FontsOptionsPopup(HWND hwnd);
-VOID SoundOptionsPopup(HWND hwnd);
-VOID CommPortOptionsPopup(HWND hwnd);
-VOID LoadOptionsPopup(HWND hwnd);
-VOID SaveOptionsPopup(HWND hwnd);
-VOID TimeControlOptionsPopup(HWND hwnd);
-VOID EnginePlayOptionsPopup(HWND hwnd);
-VOID UciOptionsPopup(HWND hwnd);
-
-
diff --git a/winboard/wsettings.c b/winboard/wsettings.c
deleted file mode 100644
index 8907a3b..0000000
--- a/winboard/wsettings.c
+++ /dev/null
@@ -1,674 +0,0 @@
-/*
- * Engine-settings dialog. The complexity come from an attempt to present the engine-defined options
- * in a nicey formatted layout. To this end we first run a back-end pre-formatter, which will distribute
- * the controls over two columns (the minimum required, as some are double width). It also takes care of 
- * grouping options that start with the same word (mainly for "Polyglot ..." options). It assigns relative
- * suitability to break points between lines, and in the end decides if and where to break up the list
- * for display in multiple (2*N) columns.
- * The thus obtained list representing the topology of the layout is then passed to a front-end routine
- * that generates the actual dialog box from it.
- */
-
-//#include "config.h"
-#include "config.h"
-
-#include <stdio.h>
-#include <string.h>
-#include "common.h"
-#include "backend.h"
-#include "backendz.h"
-
-int layoutList[2*MAX_OPTIONS];
-int checkList[2*MAX_OPTIONS];
-int comboList[2*MAX_OPTIONS];
-int buttonList[2*MAX_OPTIONS];
-int boxList[2*MAX_OPTIONS];
-int groupNameList[2*MAX_OPTIONS];
-int breaks[MAX_OPTIONS];
-int checks, combos, buttons, layout, groups;
-
-void
-PrintOpt(int i, int right, ChessProgramState *cps)
-{
-    if(i<0) {
-	if(!right) fprintf(debugFP, "%30s", "");
-    } else {
-	Option opt = cps->option[i];
-	switch(opt.type) {
-	    case Slider:
-	    case Spin:
-		fprintf(debugFP, "%20.20s [    +/-]", opt.name);
-		break;
-	    case TextBox:
-	    case FileName:
-	    case PathName:
-		fprintf(debugFP, "%20.20s [______________________________________]", opt.name);
-		break;
-	    case CheckBox:
-		fprintf(debugFP, "[x] %-26.25s", opt.name);
-		break;
-	    case ComboBox:
-		fprintf(debugFP, "%20.20s [ COMBO ]", opt.name);
-		break;
-	    case Button:
-	    case SaveButton:
-		fprintf(debugFP, "[ %26.26s ]", opt.name);
-	    case Message:
-		break;
-	}
-    }
-    fprintf(debugFP, right ? "\n" : " ");
-}
-
-void
-CreateOptionDialogTest(int *list, int nr, ChessProgramState *cps)
-{
-    int line;
-
-    for(line = 0; line < nr; line+=2) {
-	PrintOpt(list[line+1], 0, cps);
-	PrintOpt(list[line], 1, cps);
-    }
-}
-
-void
-LayoutOptions(int firstOption, int endOption, char *groupName, Option *optionList)
-{
-    int i, b = strlen(groupName), stop, prefix, right, nextOption, firstButton = buttons;
-    Control lastType, nextType;
-
-    nextOption = firstOption;
-    while(nextOption < endOption) {
-	checks = combos = 0; stop = 0;
-	lastType = Button; // kludge to make sure leading Spin will not be prefixed
-	// first separate out buttons for later treatment, and collect consecutive checks and combos
-	while(nextOption < endOption && !stop) {
-	    switch(nextType = optionList[nextOption].type) {
-		case CheckBox: checkList[checks++] = nextOption; lastType = CheckBox; break;
-		case ComboBox: comboList[combos++] = nextOption; lastType = ComboBox; break;
-		case SaveButton:
-		case Button:  buttonList[buttons++] = nextOption; lastType = Button; break;
-		case TextBox:
-		case FileName:
-		case PathName:
-		case Slider:
-		case Spin: stop++;
-		case Message: ; // cannot happen
-	    }
-	    nextOption++;
-	}
-	// We now must be at the end, or looking at a spin or textbox (in nextType)
-	if(!stop) 
-	    nextType = Button; // kudge to flush remaining checks and combos undistorted
-	// Take a new line if a spin follows combos or checks, or when we encounter a textbox
-	if((combos+checks || nextType == TextBox) && layout&1) {
-	    layoutList[layout++] = -1;
-	}
-	// The last check or combo before a spin will be put on the same line as that spin (prefix)
-	// and will thus not be grouped with other checks and combos
-	prefix = -1;
-	if(nextType == Spin && lastType != Button) {
-	    if(lastType == CheckBox) prefix = checkList[--checks]; else
-	    if(lastType == ComboBox) prefix = comboList[--combos];
-	}
-	// if a combo is followed by a textbox, it must stay at the end of the combo/checks list to appear
-	// immediately above the textbox, so treat it as check. (A check would automatically be and remain there.)
-	if(nextType == TextBox && lastType == ComboBox)
-	    checkList[checks++] = comboList[--combos];
-	// Now append the checks behind the (remaining) combos to treat them as one group
-	for(i=0; i< checks; i++) 
-	    comboList[combos++] = checkList[i];
-	// emit the consecutive checks and combos in two columns
-	right = combos/2; // rounded down if odd!
-	for(i=0; i<right; i++) {
-	    breaks[layout/2] = 2;
-	    layoutList[layout++] = comboList[i];
-	    layoutList[layout++] = comboList[i + right];
-	}
-	// An odd check or combo (which could belong to following textBox) will be put in the left column
-	// If there was an even number of checks and combos the last one will automatically be in that position
-	if(combos&1) {
-	    layoutList[layout++] = -1;
-	    layoutList[layout++] = comboList[2*right];
-	}
-	if(nextType == TextBox) {
-	    // A textBox is double width, so must be left-adjusted, and the right column remains empty
-	    breaks[layout/2] = lastType == Button ? 0 : 100;
-	    layoutList[layout++] = -1;
-	    layoutList[layout++] = nextOption - 1;
-	} else if(nextType == Spin) {
-	    // A spin will go in the next available position (right to left!). If it had to be prefixed with
-	    // a check or combo, this next position must be to the right, and the prefix goes left to it.
-	    layoutList[layout++] = nextOption - 1;
-	    if(prefix >= 0) layoutList[layout++] = prefix;
-	}
-    }
-    // take a new line if needed
-    if(layout&1) layoutList[layout++] = -1;
-    // emit the buttons belonging in this group; loose buttons are saved for last, to appear at bottom of dialog
-    if(b) {
-	while(buttons > firstButton)
-	    layoutList[layout++] = buttonList[--buttons];
-	if(layout&1) layoutList[layout++] = -1;
-    }
-}
-
-char *
-EndMatch(char *s1, char *s2)
-{
-	char *p, *q;
-	p = s1; while(*p) p++;
-	q = s2; while(*q) q++;
-	while(p > s1 && q > s2 && *p == *q) { p--; q--; }
-	if(p[1] == 0) return NULL;
-	return p+1;
-}
-
-void
-DesignOptionDialog(ChessProgramState *cps)
-{
-    int k=0, n=0;
-    char buf[MSG_SIZ];
-
-    layout = 0;
-    buttons = groups = 0;
-    while(k < cps->nrOptions) { // k steps through 'solitary' options
-	// look if we hit a group of options having names that start with the same word
-	int groupSize = 1, groupNameLength = 50;
-	sscanf(cps->option[k].name, "%s", buf); // get first word of option name
-	while(k + groupSize < cps->nrOptions &&
-	      strstr(cps->option[k+groupSize].name, buf) == cps->option[k+groupSize].name) {
-		int j;
-		for(j=0; j<groupNameLength; j++) // determine common initial part of option names
-		    if( cps->option[k].name[j] != cps->option[k+groupSize].name[j]) break;
-		groupNameLength = j;
-		groupSize++;
-		
-	}
-	if(groupSize > 3) {
-		// We found a group to terminates the current section
-		LayoutOptions(n, k, "", cps->option); // flush all solitary options appearing before the group
-		groupNameList[groups] = groupNameLength;
-		boxList[groups++] = layout; // group start in even entries
-		LayoutOptions(k, k+groupSize, buf, cps->option); // flush the group
-		boxList[groups++] = layout; // group end in odd entries
-		k = n = k + groupSize;
-#if 0
-	} else {
-		// try to recognize "two-column groups" based on option suffix
-		int j = 1;
-		while((p = EndMatch(cps->option[k].name, EndMatch(cps->option[k+2*j].name)) &&
-		      (q = EndMatch(cps->option[k+1].name, EndMatch(cps->option[k+2*j+1].name)) ) j++;
-#endif
-	} else k += groupSize; // small groups are grouped with the solitary options
-    }
-    if(n != k) LayoutOptions(n, k, "", cps->option); // flush remaining solitary options
-    // decide if and where we break into two column pairs
-    
-    // Emit buttons and add OK and cancel
-//    for(k=0; k<buttons; k++) layoutList[layout++] = buttonList[k];
-    // Create the dialog window
-    if(appData.debugMode) CreateOptionDialogTest(layoutList, layout, cps);
-//    CreateOptionDialog(layoutList, layout, cps);
-}
-
-#include <windows.h>
-
-extern HINSTANCE hInst;
-
-typedef struct {
-    DLGITEMTEMPLATE item;
-    WORD code;
-    WORD controlType;
-    wchar_t d1, data;
-    WORD creationData;
-} Item;
-
-struct {
-    DLGTEMPLATE header;
-    WORD menu;
-    WORD winClass;
-    wchar_t title[20];
-    WORD pointSize;
-    wchar_t fontName[14];
-    Item control[MAX_OPTIONS];
-} template = {
-    { DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_SETFONT, 0, 0, 0, 0, 295, 300 },
-    0x0000, 0x0000, L"Engine #1 Settings ", 8, L"MS Sans Serif"
-};
-
-ChessProgramState *activeCps;
-
-void
-SetOptionValues(HWND hDlg, ChessProgramState *cps)
-// Put all current option values in controls, and write option names next to them
-{
-    HANDLE hwndCombo;
-    int i, k;
-    char **choices, title[MSG_SIZ], *name;
-
-    for(i=0; i<layout+buttons; i++) {
-	int j=layoutList[i];
-	if(j == -2) SetDlgItemText( hDlg, 2000+2*i, ". . ." );
-	if(j<0) continue;
-	name = cps->option[j].name;
-	if(strstr(name, "Polyglot ") == name) name += 9;
-	SetDlgItemText( hDlg, 2000+2*i, name );
-//if(appData.debugMode) fprintf(debugFP, "# %s = %d\n",cps->option[j].name, cps->option[j].value );
-	switch(cps->option[j].type) {
-	    case Spin:
-		SetDlgItemInt( hDlg, 2001+2*i, cps->option[j].value, TRUE );
-		break;
-	    case TextBox:
-		SetDlgItemText( hDlg, 2001+2*i, cps->option[j].textValue );
-		break;
-	    case CheckBox:
-		CheckDlgButton( hDlg, 2000+2*i, cps->option[j].value != 0);
-		break;
-	    case ComboBox:
-		choices = (char**) cps->option[j].textValue;
-		hwndCombo = GetDlgItem(hDlg, 2001+2*i);
-		SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0);
-		for(k=0; k<cps->option[j].max; k++) {
-		    SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) choices[k]);
-		}
-		SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) choices[cps->option[j].value]);
-		break;
-	    case Button:
-	    case SaveButton:
-	    default:
-		break;
-	}
-    }
-    SetDlgItemText( hDlg, IDOK, "OK" );
-    SetDlgItemText( hDlg, IDCANCEL, "Cancel" );
-    sprintf(title, "%s Engine Settings (%s)", cps->which, cps->tidy); 
-    title[0] &= ~32; // capitalize
-    SetWindowText( hDlg, title);
-    for(i=0; i<groups; i+=2) { 
-	int id, p; char buf[MSG_SIZ];
-	id = k = boxList[i];
-	if(layoutList[k] < 0) k++;
-	if(layoutList[k] < 0) continue;
-	for(p=0; p<groupNameList[i]; p++) buf[p] = cps->option[layoutList[k]].name[p];
-	buf[p] = 0;
-	SetDlgItemText( hDlg, 2000+2*(id+MAX_OPTIONS), buf );
-    }
-}
-
-
-void
-GetOptionValues(HWND hDlg, ChessProgramState *cps)
-// read out all controls, and if value is altered, remember it and send it to the engine
-{
-    HANDLE hwndCombo;
-    int i, k, new=0, changed=0;
-    char **choices, newText[MSG_SIZ], buf[MSG_SIZ];
-    BOOL success;
-
-    for(i=0; i<layout; i++) {
-	int j=layoutList[i];
-	if(j<0) continue;
-	switch(cps->option[j].type) {
-	    case Spin:
-		new = GetDlgItemInt( hDlg, 2001+2*i, &success, TRUE );
-		if(!success) break;
-		if(new < cps->option[j].min) new = cps->option[j].min;
-		if(new > cps->option[j].max) new = cps->option[j].max;
-		changed = 2*(cps->option[j].value != new);
-		cps->option[j].value = new;
-		break;
-	    case TextBox:
-	    case FileName:
-	    case PathName:
-		success = GetDlgItemText( hDlg, 2001+2*i, newText, MSG_SIZ - strlen(cps->option[j].name) - 9 );
-		if(!success) break;
-		changed = strcmp(cps->option[j].textValue, newText) != 0;
-		strcpy(cps->option[j].textValue, newText);
-		break;
-	    case CheckBox:
-		new = IsDlgButtonChecked( hDlg, 2000+2*i );
-		changed = 2*(cps->option[j].value != new);
-		cps->option[j].value = new;
-		break;
-	    case ComboBox:
-		choices = (char**) cps->option[j].textValue;
-		hwndCombo = GetDlgItem(hDlg, 2001+2*i);
-		success = GetDlgItemText( hDlg, 2001+2*i, newText, MSG_SIZ );
-		if(!success) break;
-		new = -1;
-		for(k=0; k<cps->option[j].max; k++) {
-		    if(!strcmp(choices[k], newText)) new = k;
-		}
-		changed = new >= 0 && (cps->option[j].value != new);
-		if(changed) cps->option[j].value = new;
-		break;
-	    case Button:
-	    default:
-		break; // are treated instantly, so they have been sent already
-	}
-	if(changed == 2) sprintf(buf, "option %s=%d\n", cps->option[j].name, new); else
-	if(changed == 1) sprintf(buf, "option %s=%s\n", cps->option[j].name, newText);
-	if(changed) SendToProgram(buf, cps);
-    }
-}
-
-LRESULT CALLBACK SettingsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
-    char buf[MSG_SIZ];
-    int i, j;
-
-    switch( message )
-    {
-    case WM_INITDIALOG:
-
-//        CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));
-	SetOptionValues(hDlg, activeCps);
-
-//        SetFocus(GetDlgItem(hDlg, IDC_NFG_Edit));
-
-        break;
-
-    case WM_COMMAND:
-        switch( LOWORD(wParam) ) {
-        case IDOK:
-	    GetOptionValues(hDlg, activeCps);
-            EndDialog( hDlg, 0 );
-            return TRUE;
-
-        case IDCANCEL:
-            EndDialog( hDlg, 1 );   
-            return TRUE;
-
-	default:
-	    // program-defined push buttons
-	    i = LOWORD(wParam);
-	    if( i>=2000 &&  i < 2000+2*(layout+buttons)) {
-		j = layoutList[(i - 2000)/2];
-		if(j == -2) {
-		          char filter[] = 
-				"All files\0*.*\0BIN Files\0*.bin\0LOG Files\0*.log\0INI Files\0*.ini\0\0";
-/*
-{ 
-		              'A','l','l',' ','F','i','l','e','s', 0,
-		              '*','.','*', 0,
-		              'B','I','N',' ','F','i','l','e','s', 0,
-		              '*','.','b','i','n', 0,
-		              0 };
-*/
-		          OPENFILENAME ofn;
-
-		          strcpy( buf, "" );
-
-		          ZeroMemory( &ofn, sizeof(ofn) );
-
-		          ofn.lStructSize = sizeof(ofn);
-		          ofn.hwndOwner = hDlg;
-		          ofn.hInstance = hInst;
-		          ofn.lpstrFilter = filter;
-		          ofn.lpstrFile = buf;
-		          ofn.nMaxFile = sizeof(buf);
-		          ofn.lpstrTitle = "Choose Book";
-		          ofn.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY;
-
-		          if( GetOpenFileName( &ofn ) ) {
-		              SetDlgItemText( hDlg, i+3, buf );
-		          }
-		}
-		if(j < 0) break;
-		if( activeCps->option[j].type  == SaveButton)
-		     GetOptionValues(hDlg, activeCps);
-		else if( activeCps->option[j].type  != Button) break;
-		sprintf(buf, "option %s\n", activeCps->option[j].name);
-		SendToProgram(buf, activeCps);
-	    }
-	    break;
-        }
-
-        break;
-    }
-
-    return FALSE;
-}
-
-#if 0
-// example copied from MS docs
-#define ID_HELP   150
-#define ID_TEXT   200
-
-LPWORD lpwAlign(LPWORD lpIn)
-{
-    ULONG ul;
-
-    ul = (ULONG)lpIn;
-    ul ++;
-    ul >>=1;
-    ul <<=1;
-    return (LPWORD)ul;
-}
-
-LRESULT DisplayMyMessage(HINSTANCE hinst, HWND hwndOwner, LPSTR lpszMessage)
-{
-    HGLOBAL hgbl;
-    LPDLGTEMPLATE lpdt;
-    LPDLGITEMTEMPLATE lpdit;
-    LPWORD lpw;
-    LPWSTR lpwsz;
-    LRESULT ret;
-    int nchar;
-
-    hgbl = GlobalAlloc(GMEM_ZEROINIT, 1024);
-    if (!hgbl)
-        return -1;
- 
-    lpdt = (LPDLGTEMPLATE)GlobalLock(hgbl);
- 
-    // Define a dialog box.
- 
-    lpdt->style = WS_POPUP | WS_BORDER | WS_SYSMENU | DS_MODALFRAME | WS_CAPTION;
-//		  WS_POPUP |             WS_SYSMENU | DS_MODALFRAME | WS_CAPTION | DS_SETFONT
-    lpdt->cdit = 3;         // Number of controls
-    lpdt->x  = 10;  lpdt->y  = 10;
-    lpdt->cx = 100; lpdt->cy = 100;
-
-    lpw = (LPWORD)(lpdt + 1);
-    *lpw++ = 0;             // No menu
-    *lpw++ = 0;             // Predefined dialog box class (by default)
-
-    lpwsz = (LPWSTR)lpw;
-    nchar = 1 + MultiByteToWideChar(CP_ACP, 0, "My Dialog", -1, lpwsz, 50);
-    lpw += nchar;
-
-    //-----------------------
-    // Define an OK button.
-    //-----------------------
-    lpw = lpwAlign(lpw);    // Align DLGITEMTEMPLATE on DWORD boundary
-    lpdit = (LPDLGITEMTEMPLATE)lpw;
-    lpdit->x  = 10; lpdit->y  = 70;
-    lpdit->cx = 80; lpdit->cy = 20;
-    lpdit->id = IDOK;       // OK button identifier
-    lpdit->style = WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON;
-
-    lpw = (LPWORD)(lpdit + 1);
-    *lpw++ = 0xFFFF;
-    *lpw++ = 0x0080;        // Button class
-
-    lpwsz = (LPWSTR)lpw;
-    nchar = 1 + MultiByteToWideChar(CP_ACP, 0, "OK", -1, lpwsz, 50);
-    lpw += nchar;
-    lpw = lpwAlign(lpw);    // Align creation data on DWORD boundary
-    *lpw++ = 0;             // No creation data
-
-    //-----------------------
-    // Define a Help button.
-    //-----------------------
-    lpw = lpwAlign(lpw);    // Align DLGITEMTEMPLATE on DWORD boundary
-    lpdit = (LPDLGITEMTEMPLATE)lpw;
-    lpdit->x  = 55; lpdit->y  = 10;
-    lpdit->cx = 40; lpdit->cy = 20;
-    lpdit->id = ID_HELP;    // Help button identifier
-    lpdit->style = WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON;
-
-    lpw = (LPWORD)(lpdit + 1);
-    *lpw++ = 0xFFFF;
-    *lpw++ = 0x0080;        // Button class atom
-
-    lpwsz = (LPWSTR)lpw;
-    nchar = 1 + MultiByteToWideChar(CP_ACP, 0, "Help", -1, lpwsz, 50);
-    lpw += nchar;
-    lpw = lpwAlign(lpw);    // Align creation data on DWORD boundary
-    *lpw++ = 0;             // No creation data
-
-    //-----------------------
-    // Define a static text control.
-    //-----------------------
-    lpw = lpwAlign(lpw);    // Align DLGITEMTEMPLATE on DWORD boundary
-    lpdit = (LPDLGITEMTEMPLATE)lpw;
-    lpdit->x  = 10; lpdit->y  = 10;
-    lpdit->cx = 40; lpdit->cy = 20;
-    lpdit->id = ID_TEXT;    // Text identifier
-    lpdit->style = WS_CHILD | WS_VISIBLE | SS_LEFT;
-
-    lpw = (LPWORD)(lpdit + 1);
-    *lpw++ = 0xFFFF;
-    *lpw++ = 0x0082;        // Static class
-
-    for (lpwsz = (LPWSTR)lpw; *lpwsz++ = (WCHAR)*lpszMessage++;);
-    lpw = (LPWORD)lpwsz;
-    lpw = lpwAlign(lpw);    // Align creation data on DWORD boundary
-    *lpw++ = 0;             // No creation data
-
-    GlobalUnlock(hgbl); 
-    ret = DialogBoxIndirect(hinst, 
-                           (LPDLGTEMPLATE)hgbl, 
-                           hwndOwner, 
-                           (DLGPROC)DialogProc); 
-    GlobalFree(hgbl); 
-    return ret; 
-}
-#endif
-
-void AddControl(int x, int y, int w, int h, int type, int style, int n)
-{
-    int i;
-
-    i = template.header.cdit++;
-    template.control[i].item.style = style;
-    template.control[i].item.dwExtendedStyle = 0;
-    template.control[i].item.x = x;
-    template.control[i].item.y = y;
-    template.control[i].item.cx = w;
-    template.control[i].item.cy = h;
-    template.control[i].item.id = 2000 + n;
-    template.control[i].code = 0xFFFF;
-    template.control[i].controlType = type;
-    template.control[i].d1 = ' ';
-    template.control[i].data = 0;
-    template.control[i].creationData = 0;
-}
-
-void AddOption(int x, int y, Control type, int i)
-{
-
-    switch(type) {
-	case Slider:
-	case Spin:
-	    AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i);
-	    AddControl(x+95, y, 50, 11, 0x0081, ES_AUTOHSCROLL | ES_NUMBER | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1);
-	    break;
-//	case TextBox:
-	    AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i);
-	    AddControl(x+95, y, 190, 11, 0x0081, ES_AUTOHSCROLL | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1);
-	    break;
-	case TextBox:  // For now all text edits get a browse button, as long as -file and -path options are not yet implemented
-	case FileName:
-	case PathName:
-	    AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i);
-	    AddControl(x+95, y, 180, 11, 0x0081, ES_AUTOHSCROLL | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1);
-	    AddControl(x+275, y, 20, 12, 0x0080, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i-2);
-	    layoutList[i/2-1] = -2;
-	    break;
-	case CheckBox:
-	    AddControl(x, y, 145, 11, 0x0080, BS_AUTOCHECKBOX | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i);
-	    break;
-	case ComboBox:
-	    AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i);
-	    AddControl(x+95, y-1, 50, 500, 0x0085, CBS_AUTOHSCROLL | CBS_DROPDOWN | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1);
-	    break;
-	case Button:
-	case SaveButton:
-	    AddControl(x-2, y, 65, 13, 0x0080, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, i);
-	case Message:
-	    break;
-    }
-    
-}
-
-void
-CreateDialogTemplate(int *layoutList, int nr, ChessProgramState *cps)
-{
-    int i, j, x=1, y=0, buttonRows, breakPoint = -1, k=0;
-
-    template.header.cdit = 0;
-    template.header.cx = 307;
-    buttonRows = (buttons + 1 + 3)/4; // 4 per row, rounded up
-    if(nr > 50) { 
-	breakPoint = (nr+2*buttonRows+1)/2 & ~1;
-	template.header.cx = 625;
-    }
-
-    for(i=0; i<nr; i++) {
-	if(k < groups && i == boxList[k]) {
-	    y += 10;
-	    AddControl(x+2, y+13*(i>>1)-2, 301, 13*(boxList[k+1]-boxList[k]>>1)+8, 
-						0x0082, WS_VISIBLE | WS_CHILD | SS_BLACKFRAME, 2400);
-	    AddControl(x+60, y+13*(i>>1)-6, 10*groupNameList[k]/3, 10, 
-						0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, 2*(i+MAX_OPTIONS));
-	}
-	j = layoutList[i];
-	if(j >= 0)
-	    AddOption(x+155-150*(i&1), y+13*(i>>1)+5, cps->option[j].type, 2*i);
-	if(k < groups && i+1 == boxList[k+1]) {
-	    k += 2; y += 4;
-	}
-	if(i+1 == breakPoint) { x += 318; y = -13*(breakPoint>>1); }
-    }
-    // add butons at the bottom of dialog window
-    y += 13*(nr>>1)+5;
-
-    AddControl(x+275, y+18*(buttonRows-1), 25, 15, 0x0080, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, IDOK-2000);
-    AddControl(x+235, y+18*(buttonRows-1), 35, 15, 0x0080, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, IDCANCEL-2000);
-    for(i=0; i<buttons; i++) {
-	AddControl(x+70*(i%4)+5, y+18*(i/4), 65, 15, 0x0080, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, 2*(nr+i));
-	layoutList[nr+i] = buttonList[i];
-    }
-    template.title[8] = cps == &first ? '1' :  '2';
-    template.header.cy = y += 18*buttonRows+2;
-    template.header.style &= ~WS_VSCROLL;
-#if 0
-    if(y > 300) {
-	template.header.cx = 295;
-	template.header.cy = 300;
-	template.header.style |= WS_VSCROLL;
-    }
-#endif
-}
-
-void 
-EngineOptionsPopup(HWND hwnd, ChessProgramState *cps)
-{
-    FARPROC lpProc = MakeProcInstance( (FARPROC) SettingsProc, hInst );
-
-    activeCps = cps;
-    DesignOptionDialog(cps);
-    CreateDialogTemplate(layoutList, layout, cps);
-
-
-    DialogBoxIndirect( hInst, &template.header, hwnd, (DLGPROC)lpProc );
-
-    FreeProcInstance(lpProc);
-
-    return;
-}
-
-
diff --git a/winboard/wsnap.c b/winboard/wsnap.c
deleted file mode 100644
index 5492e80..0000000
--- a/winboard/wsnap.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Smart "snapping" for window moving and sizing
- *
- * Author: Alessandro Scotti (Dec 2005)
- *
- * Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#include "wsnap.h"
-
-/* Imports from winboard.c */
-extern HINSTANCE hInst;
-
-extern HWND hwndMain;
-extern HWND moveHistoryDialog;
-extern HWND evalGraphDialog;
-extern HWND engineOutputDialog;
-extern HWND gameListDialog;
-
-static BOOL SnappingEnabled = TRUE;
-
-static void AddSnapPoint( int * grid, int * grid_len, int value )
-{
-    int len = *grid_len;
-
-    if( len < MAX_SNAP_POINTS ) {
-        int i;
-
-        for( i=0; i<len; i++ ) {
-            if( grid[i] == value ) {
-                return;
-            }
-        }
-
-        grid[ len++ ] = value;
-
-        *grid_len = len;
-    }
-}
-
-static void AddSnapRectangle( SnapData * sd, RECT * rc )
-{
-    AddSnapPoint( sd->x_grid, &sd->x_grid_len, rc->left );
-    AddSnapPoint( sd->x_grid, &sd->x_grid_len, rc->right );
-
-    AddSnapPoint( sd->y_grid, &sd->y_grid_len, rc->top );
-    AddSnapPoint( sd->y_grid, &sd->y_grid_len, rc->bottom );
-}
-
-static void AddSnapWindow( HWND hWndCaller, SnapData * sd, HWND hWndSnapWindow )
-{
-    if( hWndSnapWindow != NULL && hWndCaller != hWndSnapWindow && IsWindowVisible(hWndSnapWindow) ) {
-        RECT rc;
-
-        GetWindowRect( hWndSnapWindow, &rc );
-
-        AddSnapRectangle( sd, &rc );
-    }
-}
-
-static BOOL AdjustToSnapPoint( int * grid, int grid_len, int value, int * snap_size, int * delta )
-{
-    BOOL result = FALSE;
-    int i;
-
-    for( i=0; i<grid_len; i++ ) {
-        int distance = value - grid[i];
-
-        if( distance < 0 ) distance = -distance;
-
-        if( distance < *snap_size ) {
-            result = TRUE;
-            *snap_size = distance;
-            *delta = grid[i] - value;
-        }
-    }
-
-    return result;
-}
-
-LRESULT OnEnterSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam )
-{
-    RECT rc;
-
-    snapData->x_grid_len = 0;
-    snapData->y_grid_len = 0;
-
-    /* Add desktop area */
-    if( SystemParametersInfo( SPI_GETWORKAREA, 0, &rc, 0 ) ) {
-        AddSnapRectangle( snapData, &rc );
-    }
-
-    if( hWnd != hwndMain ) {
-        /* Add other windows */
-        AddSnapWindow( hWnd, snapData, hwndMain );
-        AddSnapWindow( hWnd, snapData, moveHistoryDialog );
-        AddSnapWindow( hWnd, snapData, evalGraphDialog );
-        AddSnapWindow( hWnd, snapData, engineOutputDialog );
-        AddSnapWindow( hWnd, snapData, gameListDialog );
-    }
-
-    return 0;
-}
-
-LRESULT OnMoving( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam )
-{
-    LPRECT lprc = (LPRECT) lParam;
-    int delta_x = 0;
-    int delta_y = 0;
-    int snap_size_x = SNAP_DISTANCE;
-    int snap_size_y = SNAP_DISTANCE;
-
-    if( ! SnappingEnabled ) {
-        return FALSE;
-    }
-
-    AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x );
-    AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x );
-
-    AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y );
-    AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y );
-
-    OffsetRect( lprc, delta_x, delta_y );
-
-    return TRUE;
-}
-
-LRESULT OnSizing( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam )
-{
-    LPRECT lprc = (LPRECT) lParam;
-    int delta_x = 0;
-    int delta_y = 0;
-    int snap_size_x = SNAP_DISTANCE;
-    int snap_size_y = SNAP_DISTANCE;
-
-    if( ! SnappingEnabled ) {
-        return FALSE;
-    }
-
-    switch( wParam ) {
-    case WMSZ_BOTTOM:
-        AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y );
-        lprc->bottom += delta_y;
-        break;
-    case WMSZ_BOTTOMLEFT:
-        AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y );
-        lprc->bottom += delta_y;
-        AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x );
-        lprc->left += delta_x;
-        break;
-    case WMSZ_BOTTOMRIGHT:
-        AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y );
-        lprc->bottom += delta_y;
-        AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x );
-        lprc->right += delta_x;
-        break;
-    case WMSZ_LEFT:
-        AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x );
-        lprc->left += delta_x;
-        break;
-    case WMSZ_RIGHT:
-        AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x );
-        lprc->right += delta_x;
-        break;
-    case WMSZ_TOP:
-        AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y );
-        lprc->top += delta_y;
-        break;
-    case WMSZ_TOPLEFT:
-        AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y );
-        lprc->top += delta_y;
-        AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x );
-        lprc->left += delta_x;
-        break;
-    case WMSZ_TOPRIGHT:
-        AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y );
-        lprc->top += delta_y;
-        AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x );
-        lprc->right += delta_x;
-        break;
-    default:
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-LRESULT OnExitSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam )
-{
-    return 0;
-}
diff --git a/winboard/wsnap.h b/winboard/wsnap.h
deleted file mode 100644
index 0b5b117..0000000
--- a/winboard/wsnap.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Smart "snapping" for window moving and sizing
- *
- * Author: Alessandro Scotti (Dec 2005)
- *
- * Copyright 2005 Alessandro Scotti
- *
- * ------------------------------------------------------------------------
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-#ifndef WSNAP_H_
-#define WSNAP_H_
-
-#include <windows.h>
-
-#define MAX_SNAP_POINTS     12
-
-#define SNAP_DISTANCE       4
-
-typedef struct {
-    int x_grid[ MAX_SNAP_POINTS ];
-    int x_grid_len;
-    int y_grid[ MAX_SNAP_POINTS ];
-    int y_grid_len;
-} SnapData;
-
-LRESULT OnEnterSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam );
-LRESULT OnMoving( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam );
-LRESULT OnSizing( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam );
-LRESULT OnExitSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam );
-
-#endif // WSNAP_H_
diff --git a/winboard/wsockerr.c b/winboard/wsockerr.c
deleted file mode 100644
index 7c964eb..0000000
--- a/winboard/wsockerr.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * wsockerr.c
- *
- * Copyright 2009 Free Software Foundation, Inc.
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-/* Windows sockets error map */
-/* These messages ought to be in the Windows message catalog! */
-
-#include <windows.h>
-#include <winsock.h>
-#include "wsockerr.h"
-
-ErrorMap errmap[] =
-{ {WSAEINTR, "Interrupted system call"},
-  {WSAEBADF, "Bad file number"},
-  {WSAEACCES, "Permission denied"},
-  {WSAEFAULT, "Bad address"},
-  {WSAEINVAL, "Invalid argument"},
-  {WSAEMFILE, "Too many open files"},
-  {WSAEWOULDBLOCK, "Operation would block"},
-  {WSAEINPROGRESS, "Operation now in progress"},
-  {WSAEALREADY, "Operation already in progress"},
-  {WSAENOTSOCK, "Socket operation on non-socket"},
-  {WSAEMSGSIZE, "Message too long"},
-  {WSAEPROTOTYPE, "Protocol wrong type for socket"},
-  {WSAENOPROTOOPT, "Protocol not available"},
-  {WSAEPROTONOSUPPORT, "Protocol not supported"},
-  {WSAESOCKTNOSUPPORT, "Socket type not supported"},
-  {WSAEOPNOTSUPP, "Operation not supported on socket"},
-  {WSAEPFNOSUPPORT, "Protocol family not supported"},
-  {WSAEAFNOSUPPORT, "Address family not supported by protocol family"},
-  {WSAEADDRINUSE, "Address already in use"},
-  {WSAEADDRNOTAVAIL, "Can't assign requested address"},
-  {WSAENETDOWN, "Network is down"},
-  {WSAENETUNREACH, "Network is unreachable"},
-  {WSAENETRESET, "Network dropped connection on reset"},
-  {WSAECONNABORTED, "Software caused connection abort"},
-  {WSAECONNRESET, "Connection reset by peer"},
-  {WSAENOBUFS, "No buffer space available"},
-  {WSAEISCONN, "Socket is already connected"},
-  {WSAENOTCONN, "Socket is not connected"},
-  {WSAESHUTDOWN, "Can't send after socket shutdown"},
-  {WSAETOOMANYREFS, "Too many references: can't splice"},
-  {WSAETIMEDOUT, "Connection timed out"},
-  {WSAECONNREFUSED, "Connection refused"},
-  {WSAELOOP, "Too many levels of symbolic links"},
-  {WSAENAMETOOLONG, "File name too long"},
-  {WSAEHOSTDOWN, "Host is down"},
-  {WSAEHOSTUNREACH, "No route to host"},
-  {WSAENOTEMPTY, "Directory not empty"},
-  {WSAEPROCLIM, "Too many processes"},
-  {WSAEUSERS, "Too many users"},
-  {WSAEDQUOT, "Disc quota exceeded"},
-  {WSAESTALE, "Stale NFS file handle"},
-  {WSAEREMOTE, "Too many levels of remote in path"},
-  {WSAEDISCON, "Undocumented Winsock error code WSAEDISCON"},
-  {WSASYSNOTREADY, "Winsock subsystem unusable"},
-  {WSAVERNOTSUPPORTED, "Required Winsock version is not supported"},
-  {WSANOTINITIALISED, "Winsock not initialized"},
-  {WSAHOST_NOT_FOUND, "Host name not found by name server (authoritative)"},
-  {WSATRY_AGAIN, "Host name not found by name server (nonauthoritative), or name server failure"},
-  {WSANO_RECOVERY, "Nonrecoverable name server error"},
-  {WSANO_DATA, "Host name has no address data of required type"},
-  {0, NULL}
-};
diff --git a/winboard/wsockerr.h b/winboard/wsockerr.h
deleted file mode 100644
index 93069d8..0000000
--- a/winboard/wsockerr.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * wsockerr.h
- *
- * Copyright 2009 Free Software Foundation, Inc.
- * ------------------------------------------------------------------------
- *
- * GNU XBoard is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-/* Windows sockets error map */
-/* These messages ought to be in the Windows message catalog! */
-
-typedef struct {
-    int err;
-    char* msg;
-} ErrorMap;
-
-extern ErrorMap errmap[];
-
diff --git a/xboard.c b/xboard.c
index 7b1fe43..a27a3be 100644
--- a/xboard.c
+++ b/xboard.c
@@ -144,6 +144,7 @@ extern char *getenv();
 #include <X11/Shell.h>
 #include <X11/cursorfont.h>
 #include <X11/Xatom.h>
+#include <X11/Xmu/Atoms.h>
 #if USE_XAW3D
 #include <X11/Xaw3d/Dialog.h>
 #include <X11/Xaw3d/Form.h>
@@ -232,6 +233,7 @@ typedef struct {
 int main P((int argc, char **argv));
 RETSIGTYPE CmailSigHandler P((int sig));
 RETSIGTYPE IntSigHandler P((int sig));
+RETSIGTYPE TermSizeSigHandler P((int sig));
 void CreateGCs P((void));
 void CreateXIMPieces P((void));
 void CreateXPMPieces P((void));
@@ -280,7 +282,6 @@ void AskQuestionReplyAction P((Widget w, XEvent *event,
 void AskQuestionProc P((Widget w, XEvent *event,
 			  String *prms, Cardinal *nprms));
 void AskQuestionPopDown P((void));
-void PromotionPopUp P((void));
 void PromotionPopDown P((void));
 void PromotionCallback P((Widget w, XtPointer client_data,
 			  XtPointer call_data));
@@ -427,9 +428,7 @@ void ErrorPopUp P((char *title, char *text, int modal));
 void ErrorPopDown P((void));
 static char *ExpandPathName P((char *path));
 static void CreateAnimVars P((void));
-static void DragPieceBegin P((int x, int y));
 static void DragPieceMove P((int x, int y));
-static void DragPieceEnd P((int x, int y));
 static void DrawDragPiece P((void));
 char *ModeToWidgetName P((GameMode mode));
 void EngineOutputUpdate( FrontEndProgramStats * stats );
@@ -446,6 +445,8 @@ void UciPopDown P(());
 void TimeControlPopDown P(());
 void NewVariantPopDown P(());
 void SettingsPopDown P(());
+void update_ics_width P(());
+int get_term_width P(());
 /*
 * XBoard depends on Xt R4 or higher
 */
@@ -1347,7 +1348,7 @@ XtResource clientResources[] = {
 	XtRImmediate, (XtPointer) "xboard.debug"},
     { "engineDebugOutput", "engineDebugOutput", XtRInt,
 	sizeof(int), XtOffset(AppDataPtr, engineComments),
-	XtRImmediate, (XtPointer) 0},
+	XtRImmediate, (XtPointer) 1},
     { "noGUI", "noGUI", XtRBoolean,
 	sizeof(Boolean), XtOffset(AppDataPtr, noGUI),
 	XtRImmediate, (XtPointer) 0},
@@ -1401,6 +1402,30 @@ XtResource clientResources[] = {
     { "delayAfterQuit", "delayAfterQuit", XtRInt,
 	sizeof(int), XtOffset(AppDataPtr, delayAfterQuit),
 	XtRImmediate, (XtPointer) 0},
+    { "keepAlive", "keepAlive", XtRInt,
+	sizeof(int), XtOffset(AppDataPtr, keepAlive),
+	XtRImmediate, (XtPointer) 0},
+    { "forceIllegalMoves", "forceIllegalMoves", XtRBoolean,
+	sizeof(Boolean), XtOffset(AppDataPtr, forceIllegal),
+	XtRImmediate, (XtPointer) False},
+    { "keepLineBreaksICS", "keepLineBreaksICS", XtRBoolean,
+	sizeof(Boolean), XtOffset(AppDataPtr, noJoin),
+	XtRImmediate, (XtPointer) False},
+    { "wrapContinuationSequence", "wrapContinuationSequence", XtRString,
+	sizeof(String), XtOffset(AppDataPtr, wrapContSeq),
+	XtRString, ""},
+    { "useInternalWrap", "useInternalWrap", XtRBoolean,
+	sizeof(Boolean), XtOffset(AppDataPtr, useInternalWrap),
+	XtRImmediate, (XtPointer) True},
+    { "autoDisplayTags", "autoDisplayTags", XtRBoolean,
+	sizeof(Boolean), XtOffset(AppDataPtr, autoDisplayTags),
+	XtRImmediate, (XtPointer) True},
+    { "autoDisplayComment", "autoDisplayComment", XtRBoolean,
+	sizeof(Boolean), XtOffset(AppDataPtr, autoDisplayComment),
+	XtRImmediate, (XtPointer) True},
+    { "pasteSelection", "pasteSelection", XtRBoolean,
+        sizeof(Boolean), XtOffset(AppDataPtr, pasteSelection),
+        XtRImmediate, (XtPointer) False},
 };
 
 XrmOptionDescRec shellOptions[] = {
@@ -1768,9 +1793,16 @@ XrmOptionDescRec shellOptions[] = {
     { "-secondOptions", "secondOptions", XrmoptionSepArg, NULL },
     { "-firstNeedsNoncompliantFEN", "firstNeedsNoncompliantFEN", XrmoptionSepArg, NULL },
     { "-secondNeedsNoncompliantFEN", "secondNeedsNoncompliantFEN", XrmoptionSepArg, NULL },
+    { "-keepAlive", "keepAlive", XrmoptionSepArg, NULL },
+    { "-forceIllegalMoves", "forceIllegalMoves", XrmoptionNoArg, "True" },
+    { "-keepLineBreaksICS", "keepLineBreaksICS", XrmoptionSepArg, NULL },
+    { "-wrapContinuationSequence", "wrapContinuationSequence", XrmoptionSepArg, NULL },
+    { "-useInternalWrap", "useInternalWrap", XrmoptionSepArg, NULL },
+    { "-autoDisplayTags", "autoDisplayTags", XrmoptionSepArg, NULL },
+    { "-autoDisplayComment", "autoDisplayComment", XrmoptionSepArg, NULL },
+    { "-pasteSelection", "pasteSelection", XrmoptionSepArg, NULL },
 };
 
-
 XtActionsRec boardActions[] = {
     { "DrawPosition", DrawPositionProc },
     { "HandleUserMove", HandleUserMove },
@@ -1882,7 +1914,6 @@ XtActionsRec boardActions[] = {
     { "TagsPopDown", (XtActionProc) TagsPopDown },
     { "ErrorPopDown", (XtActionProc) ErrorPopDown },
     { "ICSInputBoxPopDown", (XtActionProc) ICSInputBoxPopDown },
-    { "AnalysisPopDown", (XtActionProc) AnalysisPopDown },
     { "FileNamePopDown", (XtActionProc) FileNamePopDown },
     { "AskQuestionPopDown", (XtActionProc) AskQuestionPopDown },
     { "GameListPopDown", (XtActionProc) GameListPopDown },
@@ -2290,7 +2321,7 @@ void InitDrawingSizes(BoardSize boardSize, int flags)
 	}
 #ifdef GOTHIC
 	if(gameInfo.variant == VariantGothic) {
-           ximMaskPm[(int)WhiteMarshall] = ximMaskPm2[i][(int)WhiteSilver];
+           ximMaskPm[(int)WhiteMarshall] = ximMaskPm2[(int)WhiteSilver];
 	}
 #endif
 #endif
@@ -2384,11 +2415,6 @@ main(argc, argv)
     argvCopy[j] = NULL;
     argv = argvCopy;
     argc = j;
-#if 0
-    if(appData.debugMode,1) { // OK, appData is not initialized here yet...
-	for(i=0; i<argc; i++) fprintf(stderr, "argv[%2d] = '%s'\n", i, argv[i]);
-    }
-#endif
 #endif
 
     setbuf(stdout, NULL);
@@ -2411,25 +2437,35 @@ main(argc, argv)
       XtAppInitialize(&appContext, "XBoard", shellOptions,
 		      XtNumber(shellOptions),
 		      &argc, argv, xboardResources, NULL, 0);
-    if (argc > 1) {
+    if (argc > 1) 
+      { /* left over command line arguments, print out help and exit.
+	 * Use two columns to print help
+	 */
 	fprintf(stderr, _("%s: unrecognized argument %s\n"),
 		programName, argv[1]);
+
 	fprintf(stderr, "Recognized options:\n");
-	for(i = 0; i < XtNumber(shellOptions); i++) {
+	for(i = 0; i < XtNumber(shellOptions); i++) 
+	  {
+	    /* print first column */
 	    j = fprintf(stderr, "  %s%s", shellOptions[i].option,
 		        (shellOptions[i].argKind == XrmoptionSepArg
 			 ? " ARG" : ""));
-	    if (i++ < XtNumber(shellOptions)) {
+	    /* print second column and end line */
+	    if (++i < XtNumber(shellOptions)) 
+	      {		
 		fprintf(stderr, "%*c%s%s\n", 40 - j, ' ',
 			shellOptions[i].option,
 			(shellOptions[i].argKind == XrmoptionSepArg
 			 ? " ARG" : ""));
-	    } else {
+	      } 
+	    else 
+	      {
 		fprintf(stderr, "\n");
-	    }
-	}
+	      };
+	  };
 	exit(2);
-    }
+      };
 
     p = getenv("HOME");
     if (p == NULL) p = "/tmp";
@@ -2491,19 +2527,6 @@ main(argc, argv)
 
 	gameInfo.variant = StringToVariant(appData.variant);
 	InitPosition(FALSE);
-#if 0
-    /*
-     * Determine boardSize
-     */
-    gameInfo.boardWidth = gameInfo.boardHeight = 8; // [HGM] boardsize: make sure we start as 8x8
-
-//#ifndef IDSIZE
-    // [HGM] as long as we have not created the possibility to change size while running, start with requested size
-    gameInfo.boardWidth    = appData.NrFiles > 0 ? appData.NrFiles : 8;
-    gameInfo.boardHeight   = appData.NrRanks > 0 ? appData.NrRanks : 8;
-    gameInfo.holdingsWidth = appData.holdingsSize > 0 ? 2 : 0;
-#endif
-
 
 #ifdef IDSIZE
     InitDrawingSizes(-1, 0); // [HGM] initsize: make this into a subroutine
@@ -2767,7 +2790,8 @@ XBoard square size (hint): %d\n\
     widgetList[j++] = menuBarWidget = CreateMenuBar(menuBar);
     XtSetArg(args[0], XtNtop,    XtChainTop);
     XtSetArg(args[1], XtNbottom, XtChainTop);
-    XtSetValues(menuBarWidget, args, 2);
+    XtSetArg(args[2], XtNright,  XtChainLeft);
+    XtSetValues(menuBarWidget, args, 3);
 
     widgetList[j++] = whiteTimerWidget =
       XtCreateWidget("whiteTime", labelWidgetClass,
@@ -3183,6 +3207,9 @@ XBoard square size (hint): %d\n\
 	    if (appData.icsInputBox) ICSInputBoxPopUp();
 	}
 
+    #ifdef SIGWINCH
+    signal(SIGWINCH, TermSizeSigHandler);
+    #endif
 	signal(SIGINT, IntSigHandler);
 	signal(SIGTERM, IntSigHandler);
 	if (*appData.cmailGameName != NULLCHAR) {
@@ -3207,6 +3234,11 @@ ShutDownFrontEnd()
     unlink(gamePasteFilename);
 }
 
+RETSIGTYPE TermSizeSigHandler(int sig)
+{
+    update_ics_width();
+}
+
 RETSIGTYPE
 IntSigHandler(sig)
      int sig;
@@ -3900,14 +3932,6 @@ void CreateXPMPieces()
     static char *xpmkind[] = { "ll", "ld", "dl", "dd" };
     XpmColorSymbol symbols[4];
 
-#if 0
-    /* Apparently some versions of Xpm don't define XpmFormat at all --tpm */
-    if (appData.debugMode) {
-	fprintf(stderr, "XPM Library Version: %d.%d%c\n",
-		XpmFormat, XpmVersion, (char)('a' + XpmRevision - 1));
-    }
-#endif
-
     /* The XSynchronize calls were copied from CreatePieces.
        Not sure if needed, but can't hurt */
     XSynchronize(xDisplay, True); /* Work-around for xlib/xt buffering bug */
@@ -4137,14 +4161,7 @@ void ReadBitmap(pm, name, bits, wreq, hreq)
 	    return;
 	}
     }
-    if (bits == NULL) {
-#if 0
-	fprintf(stderr, _("%s: No built-in bitmap for %s; giving up\n"),
-		programName, name);
-	exit(1);
-#endif
-	; // [HGM] bitmaps: make it non-fatal if we have no bitmap;
-    } else {
+    if (bits != NULL) {
 	*pm = XCreateBitmapFromData(xDisplay, xBoardWindow, (char *) bits,
 				    wreq, hreq);
     }
@@ -5125,14 +5142,8 @@ void HandleUserMove(w, event, prms, nprms)
      String *prms;
      Cardinal *nprms;
 {
-    int x, y;
-    Boolean saveAnimate;
-    static int second = 0;
-
     if (w != boardWidget || errorExitStatus != -1) return;
 
-    if (event->type == ButtonPress) ErrorPopDown();
-
     if (promotionUp) {
 	if (event->type == ButtonPress) {
 	    XtPopdown(promotionShell);
@@ -5145,134 +5156,9 @@ void HandleUserMove(w, event, prms, nprms)
 	}
     }
 
-    x = EventToSquare(event->xbutton.x, BOARD_WIDTH);
-    y = EventToSquare(event->xbutton.y, BOARD_HEIGHT);
-    if (!flipView && y >= 0) {
-	y = BOARD_HEIGHT - 1 - y;
-    }
-    if (flipView && x >= 0) {
-	x = BOARD_WIDTH - 1 - x;
-    }
-
-    /* [HGM] holdings: next 5 lines: ignore all clicks between board and holdings */
-    if(event->type == ButtonPress
-            && ( x == BOARD_LEFT-1 || x == BOARD_RGHT
-              || x == BOARD_LEFT-2 && y < BOARD_HEIGHT-gameInfo.holdingsSize
-              || x == BOARD_RGHT+1 && y >= gameInfo.holdingsSize) )
-	return;
-
-    if (fromX == -1) {
-	if (event->type == ButtonPress) {
-	    /* First square */
-	    if (OKToStartUserMove(x, y)) {
-		fromX = x;
-		fromY = y;
-		second = 0;
-		DragPieceBegin(event->xbutton.x, event->xbutton.y);
-		if (appData.highlightDragging) {
-		    SetHighlights(x, y, -1, -1);
-		}
-	    }
-	}
-	return;
-    }
-
-    /* fromX != -1 */
-    if (event->type == ButtonPress && gameMode != EditPosition &&
-	x >= 0 && y >= 0) {
-	ChessSquare fromP;
-	ChessSquare toP;
-	int frc;
-
-	/* Check if clicking again on the same color piece */
-	fromP = boards[currentMove][fromY][fromX];
-	toP = boards[currentMove][y][x];
-	frc = gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom;
- 	if ((WhitePawn <= fromP && fromP <= WhiteKing && // [HGM] this test should go, as UserMoveTest now does it.
-	     WhitePawn <= toP && toP <= WhiteKing &&
-	     !(fromP == WhiteKing && toP == WhiteRook && frc)) ||   
-	    (BlackPawn <= fromP && fromP <= BlackKing && 
-	     BlackPawn <= toP && toP <= BlackKing &&
-	     !(fromP == BlackKing && toP == BlackRook && frc))) {
-	    /* Clicked again on same color piece -- changed his mind */
-	    second = (x == fromX && y == fromY);
-	    if (appData.highlightDragging) {
-		SetHighlights(x, y, -1, -1);
-	    } else {
-		ClearHighlights();
-	    }
-	    if (OKToStartUserMove(x, y)) {
-		fromX = x;
-		fromY = y;
-		DragPieceBegin(event->xbutton.x, event->xbutton.y);
-	    }
-	    return;
-	}
-    }
-
-    if (event->type == ButtonRelease &&	x == fromX && y == fromY) {
-	DragPieceEnd(event->xbutton.x, event->xbutton.y);
-	if (appData.animateDragging) {
-	    /* Undo animation damage if any */
-	    DrawPosition(FALSE, NULL);
-	}
-	if (second) {
-	    /* Second up/down in same square; just abort move */
-	    second = 0;
-	    fromX = fromY = -1;
-	    ClearHighlights();
-	    gotPremove = 0;
-	    ClearPremoveHighlights();
-	} else {
-	    /* First upclick in same square; start click-click mode */
-	    SetHighlights(x, y, -1, -1);
-	}
-	return;
-    }
-
-    /* Completed move */
-    toX = x;
-    toY = y;
-    saveAnimate = appData.animate;
-    if (event->type == ButtonPress) {
-	/* Finish clickclick move */
-	if (appData.animate || appData.highlightLastMove) {
-	    SetHighlights(fromX, fromY, toX, toY);
-	} else {
-	    ClearHighlights();
-	}
-    } else {
-	/* Finish drag move */
-	if (appData.highlightLastMove) {
-	    SetHighlights(fromX, fromY, toX, toY);
-	} else {
-	    ClearHighlights();
-	}
-	DragPieceEnd(event->xbutton.x, event->xbutton.y);
-	/* Don't animate move and drag both */
-	appData.animate = FALSE;
-    }
-    if (IsPromotion(fromX, fromY, toX, toY)) {
-	if (appData.alwaysPromoteToQueen) {
-	    UserMoveEvent(fromX, fromY, toX, toY, 'q');
-	    if (!appData.highlightLastMove || gotPremove) ClearHighlights();
-	    if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY);
-	    fromX = fromY = -1;
-	} else {
-	    SetHighlights(fromX, fromY, toX, toY);
-	    PromotionPopUp();
-	}
-    } else {
-	UserMoveEvent(fromX, fromY, toX, toY, NULLCHAR);
-	if (!appData.highlightLastMove || gotPremove) ClearHighlights();
-	if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY);
-	fromX = fromY = -1;
-    }
-    appData.animate = saveAnimate;
-    if (appData.animate || appData.animateDragging) {
-	/* Undo animation damage if needed */
-	DrawPosition(FALSE, NULL);
-    }
+    // [HGM] mouse: the rest of the mouse handler is moved to the backend, and called here
+    if(event->type == ButtonPress)   LeftClick(Press,   event->xbutton.x, event->xbutton.y);
+    if(event->type == ButtonRelease) LeftClick(Release, event->xbutton.x, event->xbutton.y);
 }
 
 void AnimateUserMove (Widget w, XEvent * event,
@@ -5326,12 +5212,8 @@ Widget CommentCreate(name, text, mutable, callback, lines)
     XtSetArg(args[j], XtNright, XtChainRight);  j++;
     XtSetArg(args[j], XtNresizable, True);  j++;
     XtSetArg(args[j], XtNwidth, bw_width);  j++; /*force wider than buttons*/
-#if 0
-    XtSetArg(args[j], XtNscrollVertical, XawtextScrollWhenNeeded);  j++;
-#else
     /* !!Work around an apparent bug in XFree86 4.0.1 (X11R6.4.3) */
     XtSetArg(args[j], XtNscrollVertical, XawtextScrollAlways);  j++;
-#endif
     XtSetArg(args[j], XtNautoFill, True);  j++;
     XtSetArg(args[j], XtNwrap, XawtextWrapWord); j++;
     edit =
@@ -5484,12 +5366,8 @@ Widget MiscCreate(name, text, mutable, callback, lines)
     XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
     XtSetArg(args[j], XtNright, XtChainRight);  j++;
     XtSetArg(args[j], XtNresizable, True);  j++;
-#if 0
-    XtSetArg(args[j], XtNscrollVertical, XawtextScrollWhenNeeded);  j++;
-#else
     /* !!Work around an apparent bug in XFree86 4.0.1 (X11R6.4.3) */
     XtSetArg(args[j], XtNscrollVertical, XawtextScrollAlways);  j++;
-#endif
     XtSetArg(args[j], XtNautoFill, True);  j++;
     XtSetArg(args[j], XtNwrap, XawtextWrapWord); j++;
     edit =
@@ -5722,37 +5600,6 @@ void CommentPopUp(title, text)
     commentUp = True;
 }
 
-void AnalysisPopUp(title, text)
-     char *title, *text;
-{
-    Arg args[16];
-    int j;
-    Widget edit;
-
-    if (analysisShell == NULL) {
-	analysisShell = MiscCreate(title, text, False, NULL, 4);
-	XtRealizeWidget(analysisShell);
-	CatchDeleteWindow(analysisShell, "AnalysisPopDown");
-
-    } else {
-	edit = XtNameToWidget(analysisShell, "*form.text");
-	j = 0;
-	XtSetArg(args[j], XtNstring, text); j++;
-	XtSetValues(edit, args, j);
-	j = 0;
-	XtSetArg(args[j], XtNiconName, (XtArgVal) title);   j++;
-	XtSetArg(args[j], XtNtitle, (XtArgVal) title);      j++;
-	XtSetValues(analysisShell, args, j);
-    }
-
-    if (!analysisUp) {
-	XtPopup(analysisShell, XtGrabNone);
-    }
-    XSync(xDisplay, False);
-
-    analysisUp = True;
-}
-
 void CommentCallback(w, client_data, call_data)
      Widget w;
      XtPointer client_data, call_data;
@@ -5791,16 +5638,6 @@ void CommentPopDown()
     commentUp = False;
 }
 
-void AnalysisPopDown()
-{
-    if (!analysisUp) return;
-    XtPopdown(analysisShell);
-    XSync(xDisplay, False);
-    analysisUp = False;
-    if (appData.icsEngineAnalyze) ExitAnalyzeMode();    /* [DM] icsEngineAnalyze */
-}
-
-
 void FileNamePopUp(label, def, proc, openMode)
      char *label;
      char *def;
@@ -6228,15 +6065,6 @@ void ModeHighlight()
 		    args, 1);
 
 	if (appData.showButtonBar) {
-#if 0
-	  if (pausing) {
-	    XtSetArg(args[0], XtNbackground, buttonForegroundPixel);
-	    XtSetArg(args[1], XtNforeground, buttonBackgroundPixel);
-	  } else {
-	    XtSetArg(args[0], XtNbackground, buttonBackgroundPixel);
-	    XtSetArg(args[1], XtNforeground, buttonForegroundPixel);
-	  }
-#else
 	  /* Always toggle, don't set.  Previous code messes up when
 	     invoked while the button is pressed, as releasing it
 	     toggles the state again. */
@@ -6249,7 +6077,6 @@ void ModeHighlight()
 	    XtSetArg(args[0], XtNbackground, oldfg);
 	    XtSetArg(args[1], XtNforeground, oldbg);
 	  }
-#endif
 	  XtSetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), args, 2);
 	}
     }
@@ -6282,7 +6109,6 @@ void ResetProc(w, event, prms, nprms)
      Cardinal *nprms;
 {
     ResetGameEvent();
-    AnalysisPopDown();
 }
 
 int LoadGamePopUp(f, gameNumber, title)
@@ -6435,7 +6261,7 @@ SendPositionSelection(Widget w, Atom *selection, Atom *target,
   char *selection_tmp;
 
   if (!selected_fen_position) return False; /* should never happen */
-  if (*target == XA_STRING){
+  if (*target == XA_STRING || *target == XA_UTF8_STRING(xDisplay)){
     /* note: since no XtSelectionDoneProc was registered, Xt will
      * automatically call XtFree on the value returned.  So have to
      * make a copy of it allocated with XtMalloc */
@@ -6444,9 +6270,22 @@ SendPositionSelection(Widget w, Atom *selection, Atom *target,
 
     *value_return=selection_tmp;
     *length_return=strlen(selection_tmp);
-    *type_return=XA_STRING;
+    *type_return=*target;
     *format_return = 8; /* bits per byte */
     return True;
+  } else if (*target == XA_TARGETS(xDisplay)) {
+    Atom *targets_tmp = (Atom *) XtMalloc(2 * sizeof(Atom));
+    targets_tmp[0] = XA_UTF8_STRING(xDisplay);
+    targets_tmp[1] = XA_STRING;
+    *value_return = targets_tmp;
+    *type_return = XA_ATOM;
+    *length_return = 2;
+    *format_return = 8 * sizeof(Atom);
+    if (*format_return > 32) {
+      *length_return *= *format_return / 32;
+      *format_return = 32;
+    }
+    return True;
   } else {
     return False;
   }
@@ -6461,20 +6300,24 @@ void CopyPositionProc(w, event, prms, nprms)
   String *prms;
   Cardinal *nprms;
   {
-    int ret;
-
+    /*
+     * Set both PRIMARY (the selection) and CLIPBOARD, since we don't
+     * have a notion of a position that is selected but not copied.
+     * See http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki
+     */
     if (selected_fen_position) free(selected_fen_position);
     selected_fen_position = (char *)PositionToFEN(currentMove, NULL);
     if (!selected_fen_position) return;
-    ret = XtOwnSelection(menuBarWidget, XA_PRIMARY,
-			 CurrentTime,
-			 SendPositionSelection,
-			 NULL/* lose_ownership_proc */ ,
-			 NULL/* transfer_done_proc */);
-    if (!ret) {
-      free(selected_fen_position);
-      selected_fen_position=NULL;
-    }
+    XtOwnSelection(menuBarWidget, XA_PRIMARY,
+		   CurrentTime,
+		   SendPositionSelection,
+		   NULL/* lose_ownership_proc */ ,
+		   NULL/* transfer_done_proc */);
+    XtOwnSelection(menuBarWidget, XA_CLIPBOARD(xDisplay),
+		   CurrentTime,
+		   SendPositionSelection,
+		   NULL/* lose_ownership_proc */ ,
+		   NULL/* transfer_done_proc */);
   }
 
 /* function called when the data to Paste is ready */
@@ -6497,7 +6340,8 @@ void PastePositionProc(w, event, prms, nprms)
   String *prms;
   Cardinal *nprms;
 {
-    XtGetSelectionValue(menuBarWidget, XA_PRIMARY, XA_STRING,
+    XtGetSelectionValue(menuBarWidget, 
+      appData.pasteSelection ? XA_PRIMARY: XA_CLIPBOARD(xDisplay), XA_STRING,
       /* (XtSelectionCallbackProc) */ PastePositionCB,
       NULL, /* client_data passed to PastePositionCB */
 
@@ -6516,7 +6360,7 @@ SendGameSelection(Widget w, Atom *selection, Atom *target,
 {
   char *selection_tmp;
 
-  if (*target == XA_STRING){
+  if (*target == XA_STRING || *target == XA_UTF8_STRING(xDisplay)){
     FILE* f = fopen(gameCopyFilename, "r");
     long len;
     size_t count;
@@ -6533,9 +6377,22 @@ SendGameSelection(Widget w, Atom *selection, Atom *target,
     selection_tmp[len] = NULLCHAR;
     *value_return = selection_tmp;
     *length_return = len;
-    *type_return = XA_STRING;
+    *type_return = *target;
     *format_return = 8; /* bits per byte */
     return True;
+  } else if (*target == XA_TARGETS(xDisplay)) {
+    Atom *targets_tmp = (Atom *) XtMalloc(2 * sizeof(Atom));
+    targets_tmp[0] = XA_UTF8_STRING(xDisplay);
+    targets_tmp[1] = XA_STRING;
+    *value_return = targets_tmp;
+    *type_return = XA_ATOM;
+    *length_return = 2;
+    *format_return = 8 * sizeof(Atom);
+    if (*format_return > 32) {
+      *length_return *= *format_return / 32;
+      *format_return = 32;
+    }
+    return True;
   } else {
     return False;
   }
@@ -6555,11 +6412,21 @@ void CopyGameProc(w, event, prms, nprms)
   ret = SaveGameToFile(gameCopyFilename, FALSE);
   if (!ret) return;
 
-  ret = XtOwnSelection(menuBarWidget, XA_PRIMARY,
-		       CurrentTime,
-		       SendGameSelection,
-		       NULL/* lose_ownership_proc */ ,
-		       NULL/* transfer_done_proc */);
+  /*
+   * Set both PRIMARY (the selection) and CLIPBOARD, since we don't
+   * have a notion of a game that is selected but not copied.
+   * See http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki
+   */
+  XtOwnSelection(menuBarWidget, XA_PRIMARY,
+		 CurrentTime,
+		 SendGameSelection,
+		 NULL/* lose_ownership_proc */ ,
+		 NULL/* transfer_done_proc */);
+  XtOwnSelection(menuBarWidget, XA_CLIPBOARD(xDisplay),
+		 CurrentTime,
+		 SendGameSelection,
+		 NULL/* lose_ownership_proc */ ,
+		 NULL/* transfer_done_proc */);
 }
 
 /* function called when the data to Paste is ready */
@@ -6590,7 +6457,8 @@ void PasteGameProc(w, event, prms, nprms)
   String *prms;
   Cardinal *nprms;
 {
-    XtGetSelectionValue(menuBarWidget, XA_PRIMARY, XA_STRING,
+    XtGetSelectionValue(menuBarWidget,
+      appData.pasteSelection ? XA_PRIMARY: XA_CLIPBOARD(xDisplay), XA_STRING,
       /* (XtSelectionCallbackProc) */ PasteGameCB,
       NULL, /* client_data passed to PasteGameCB */
 
@@ -7490,20 +7358,8 @@ void ShowThinkingProc(w, event, prms, nprms)
      String *prms;
      Cardinal *nprms;
 {
-    Arg args[16];
-
     appData.showThinking = !appData.showThinking; // [HGM] thinking: tken out of ShowThinkingEvent
     ShowThinkingEvent();
-#if 0
-    // [HGM] thinking: currently no suc menu item; replaced by Hide Thinking (From Human)
-    if (appData.showThinking) {
-	XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
-    } else {
-	XtSetArg(args[0], XtNleftBitmap, None);
-    }
-    XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Thinking"),
-		args, 1);
-#endif
 }
 
 void HideThinkingProc(w, event, prms, nprms)
@@ -7637,19 +7493,34 @@ void Iconify(w, event, prms, nprms)
 void DisplayMessage(message, extMessage)
      char *message, *extMessage;
 {
-    char buf[MSG_SIZ];
-    Arg arg;
-
-    if (extMessage) {
-	if (*message) {
-	    snprintf(buf, sizeof(buf), "%s  %s", message, extMessage);
-	    message = buf;
-	} else {
-	    message = extMessage;
-	}
-    }
-    XtSetArg(arg, XtNlabel, message);
-    XtSetValues(messageWidget, &arg, 1);
+  /* display a message in the message widget */
+  
+  char buf[MSG_SIZ];
+  Arg arg;
+  
+  if (extMessage) 
+    {
+      if (*message) 
+	{
+	  snprintf(buf, sizeof(buf), "%s  %s", message, extMessage);
+	  message = buf;
+	} 
+      else 
+	{
+	  message = extMessage;
+	};
+    };
+  
+  /* need to test if messageWidget already exists, since this function
+     can also be called during the startup, if for example a Xresource
+     is not set up correctly */
+  if(messageWidget)
+    {
+      XtSetArg(arg, XtNlabel, message);
+      XtSetValues(messageWidget, &arg, 1);
+    };
+  
+  return;
 }
 
 void DisplayTitle(text)
@@ -8140,6 +8011,9 @@ void
 ScheduleDelayedEvent(cb, millisec)
      DelayedEventCallback cb; long millisec;
 {
+    if(delayedEventTimerXID && delayedEventCallback == cb)
+	// [HGM] alive: replace, rather than add or flush identical event
+	XtRemoveTimeOut(delayedEventTimerXID);
     delayedEventCallback = cb;
     delayedEventTimerXID =
       XtAppAddTimeOut(appContext, millisec,
@@ -8692,11 +8566,33 @@ int OutputToProcess(pr, message, count, outError)
      int count;
      int *outError;
 {
+    static int line = 0;
     ChildProc *cp = (ChildProc *) pr;
     int outCount;
 
     if (pr == NoProc)
-      outCount = fwrite(message, 1, count, stdout);
+    {
+        if (appData.noJoin || !appData.useInternalWrap)
+            outCount = fwrite(message, 1, count, stdout);
+        else
+        {
+            int width = get_term_width();
+            int len = wrap(NULL, message, count, width, &line);
+            char *msg = malloc(len);
+            int dbgchk;
+
+            if (!msg)
+                outCount = fwrite(message, 1, count, stdout);
+            else
+            {
+                dbgchk = wrap(msg, message, count, width, &line);
+                if (dbgchk != len && appData.debugMode)
+                    fprintf(debugFP, "wrap(): dbgchk(%d) != len(%d)\n", dbgchk, len);
+                outCount = fwrite(msg, 1, dbgchk, stdout);
+                free(msg);
+            }
+        }
+    }
     else
       outCount = write(cp->fdTo, message, count);
 
@@ -8916,12 +8812,7 @@ FrameDelay (time)
     delay.it_interval.tv_usec =
       delay.it_value.tv_usec = (time % 1000) * 1000;
     setitimer(ITIMER_REAL, &delay, NULL);
-#if 0
-    /* Ugh -- busy-wait! --tpm */
-    while (frameWaiting);
-#else
     while (frameWaiting) pause();
-#endif
     delay.it_interval.tv_sec = delay.it_value.tv_sec = 0;
     delay.it_interval.tv_usec = delay.it_value.tv_usec = 0;
     setitimer(ITIMER_REAL, &delay, NULL);
@@ -9351,7 +9242,7 @@ AnimateMove(board, fromX, fromY, toX, toY)
   damage[toY][toX] = True;
 }
 
-static void
+void
 DragPieceBegin(x, y)
      int x; int y;
 {
@@ -9370,19 +9261,10 @@ DragPieceBegin(x, y)
     ScreenSquare(boardX, boardY, &corner, &color);
     player.startSquare  = corner;
     player.startColor   = color;
-#if 0
-    /* Start from exactly where the piece is.  This can be confusing
-       if you start dragging far from the center of the square; most
-       or all of the piece can be over a different square from the one
-       the mouse pointer is in. */
-    player.mouseDelta.x = x - corner.x;
-    player.mouseDelta.y = y - corner.y;
-#else
     /* As soon as we start dragging, the piece will jump slightly to
        be centered over the mouse pointer. */
     player.mouseDelta.x = squareSize/2;
     player.mouseDelta.y = squareSize/2;
-#endif
     /* Initialise animation */
     player.dragPiece = PieceForSquare(boardX, boardY);
     /* Sanity check */
@@ -9430,7 +9312,7 @@ DragPieceMove(x, y)
 #endif
 }
 
-static void
+void
 DragPieceEnd(x, y)
      int x; int y;
 {
@@ -9483,4 +9365,39 @@ SetProgramStats( FrontEndProgramStats * stats )
   // [HR] TODO
   // [HGM] done, but perhaps backend should call this directly?
     EngineOutputUpdate( stats );
-}
\ No newline at end of file
+}
+
+#include <sys/ioctl.h>
+int get_term_width()
+{
+    int fd, default_width;
+
+    fd = STDIN_FILENO;
+    default_width = 79; // this is FICS default anyway...
+
+#if !defined(TIOCGWINSZ) && defined(TIOCGSIZE)
+    struct ttysize win;
+    if (!ioctl(fd, TIOCGSIZE, &win))
+        default_width = win.ts_cols;
+#elif defined(TIOCGWINSZ)
+    struct winsize win;
+    if (!ioctl(fd, TIOCGWINSZ, &win))
+        default_width = win.ws_col;
+#endif
+    return default_width;
+}
+
+void update_ics_width()
+{
+    static int old_width = 0;
+    int new_width = get_term_width();
+
+    if (old_width != new_width)
+       ics_printf("set width %d\n", new_width);
+    old_width = new_width;
+}
+
+void NotifyFrontendLogin()
+{
+    update_ics_width();
+}
diff --git a/xboard.info b/xboard.info
new file mode 100644
index 0000000..b867018
--- /dev/null
+++ b/xboard.info
@@ -0,0 +1,4274 @@
+This is xboard.info, produced by makeinfo version 4.12 from xboard.texi.
+
+INFO-DIR-SECTION Games
+START-INFO-DIR-ENTRY
+* xboard: (xboard).         An X Window System graphical chessboard.
+END-INFO-DIR-ENTRY
+
+
+File: xboard.info,  Node: Top,  Next: Major modes,  Up: (dir)
+
+Introduction
+************
+
+XBoard is a graphical chessboard that can serve as a user interface to
+chess engines (such as GNU Chess), the Internet Chess Servers,
+electronic mail correspondence chess, or your own collection of saved
+games.
+
+   This manual documents version 4.4.1 of XBoard.
+
+* Menu:
+
+* Major modes::     The main things XBoard can do.
+* Menus::           Menus, buttons, and keys.
+* Options::         Command options supported by XBoard.
+* Chess Servers::   Using XBoard with an Internet Chess Server (ICS).
+* Firewalls::       Connecting to a chess server through a firewall.
+* Environment::     Environment variables.
+* Limitations::     Known limitations and/or bugs.
+* Problems::        How and where to report any problems you run into.
+* Contributors::    People who have helped developing XBoard.
+* CMail::           Using XBoard for electronic correspondence chess.
+* Other programs::  Other programs you can use with XBoard.
+
+* Copyright::       Copyright notice for this manual.
+* Copying::         The GNU General Public License.
+
+* Index::           Index of concepts and symbol names.
+
+
+File: xboard.info,  Node: Major modes,  Next: Menus,  Prev: Top,  Up: Top
+
+1 Major modes
+*************
+
+XBoard always runs in one of four major modes.  You select the major
+mode from the command line when you start up XBoard.
+
+xboard [options]
+     As an interface to GNU Chess or another chess engine running on
+     your machine, XBoard lets you play a game against the machine, set
+     up arbitrary positions, force variations, watch a game between two
+     chess engines, interactively analyze your stored games or set up
+     and analyze arbitrary positions.  (Note: Not all chess engines
+     support analysis.)
+
+xboard -ics -icshost hostname [options]
+     As Internet Chess Server (ICS) interface, XBoard lets you play
+     against other ICS users, observe games they are playing, or review
+     games that have recently finished.  Most of the ICS "wild" chess
+     variants are supported, including bughouse.
+
+xboard -ncp [options]
+     XBoard can also be used simply as an electronic chessboard to play
+     through games. It will read and write game files and allow you to
+     play through variations manually. You can use it to browse games
+     off the net or review games you have saved.  These features are
+     also available in the other modes.
+
+|pxboard
+     If you want to pipe games into XBoard, use the supplied shell
+     script `pxboard'.  For example, from the news reader `xrn', find a
+     message with one or more games in it, click the Save button, and
+     type `|pxboard' as the file name.
+
+cmail [options]
+     As an interface to electronic mail correspondence chess, XBoard
+     works with the cmail program. See *note CMail:: below for
+     instructions.
+
+
+File: xboard.info,  Node: Menus,  Next: Options,  Prev: Major modes,  Up: Top
+
+2 Menus, buttons, and keys
+**************************
+
+To move a piece, you can drag it with the left mouse button, or you can
+click the left mouse button once on the piece, then once more on the
+destination square.  To drop a new piece on a square (when applicable),
+press the middle or the right mouse button over the square and select
+from the pop-up menu.  In cases where you can drop either a white or
+black piece, use the middle button (or shift+right) for white and the
+right button (or shift+middle) for black.  When you are playing a
+bughouse game on an Internet Chess Server, a list of the off-board
+pieces that each player has available is shown in the window title
+after the player's name; in addition, the piece menus show the number
+of pieces available of each type. From version 4.3.14 on, it is also
+possible in crazyhouse, bughouse or shogi to dag and drop pieces to the
+board from the holdings squares displayed next to the board.
+
+   All other XBoard commands are available from the menu bar. The most
+frequently used commands also have shortcut keys or on-screen buttons.
+
+   When XBoard is iconized, its graphical icon is a white knight if it
+is White's turn to move, a black knight if it is Black's turn.  See
+Iconize in *note Keys:: below if you have problems getting this feature
+to work.
+
+* Menu:
+
+* File Menu::       Accessing external games and positions.
+* Mode Menu::       Selecting XBoard's mode.
+* Action Menu::     Talking to the chess engine or ICS opponents.
+* Step Menu::       Controlling the game.
+* Options Menu::    User preferences.
+* Help Menu::       Getting help.
+* Keys::            Other shortcut keys.
+
+
+File: xboard.info,  Node: File Menu,  Next: Mode Menu,  Up: Menus
+
+2.1 File Menu
+=============
+
+New Game
+     Resets XBoard and the chess engine to the beginning of a new chess
+     game. The `r' key is a keyboard equivalent. In Internet Chess
+     Server mode, clears the current state of XBoard, then
+     resynchronizes with the ICS by sending a refresh command. If you
+     want to stop playing, observing, or examining an ICS game, use an
+     appropriate command from the Action menu, not `New Game'.  *Note
+     Action Menu::.
+
+New Shuffle Game
+     Similar to `New Game', but allows you to specify a particular
+     initial position (according to a standardized numbering system) in
+     chess variants which use randomized opening positions (e.g.
+     Chess960).  The selected opening position will persistently be
+     chosen on any following New Game command until you use this menu
+     to select another. Selecting position number -1 will produce a
+     newly randomized position on any new game.  Using this menu item
+     in variants that normally do not shuffle their opening position
+     does cause these variants to become shuffle variants until you use
+     the `New Shuffle Game' menu to explicitly switch the randomization
+     off, or select a new variant.
+
+New Variant
+     Allows you to select a new chess variant in non-ICS mode.  (In ICS
+     play, the ICS is responsible for deciding which variant will be
+     played, and XBoard adapts automatically.) If you play with an
+     engine, the engine must be able to play the selected variant, or
+     the command will be ignored.  XBoard supports all major variants,
+     such as xiangqi, shogi, chess, chess960, Capablanca Chess,
+     shatranj, crazyhouse, bughouse.  (But not every board size has
+     built-in bitmaps for un-orthodox pieces!)
+
+Load Game
+     Plays a game from a record file. The `g' key is a keyboard
+     equivalent.  A pop-up dialog prompts you for the file name. If the
+     file contains more than one game, a second pop-up dialog displays
+     a list of games (with information drawn from their PGN tags, if
+     any), and you can select the one you want. Alternatively, you can
+     load the Nth game in the file directly, by typing the number `N'
+     after the file name, separated by a space.
+
+     The game file parser will accept PGN (portable game notation), or
+     in fact almost any file that contains moves in algebraic notation.
+     Notation of the form `P at f7' is accepted for piece-drops in
+     bughouse games; this is a nonstandard extension to PGN.  If the
+     file includes a PGN position (FEN tag), or an old-style XBoard
+     position diagram bracketed by `[--' and `--]' before the first
+     move, the game starts from that position. Text enclosed in
+     parentheses, square brackets, or curly braces is assumed to be
+     commentary and is displayed in a pop-up window. Any other text in
+     the file is ignored. PGN variations (enclosed in parentheses) are
+     treated as comments; XBoard is not able to walk variation trees.
+     The nonstandard PGN tag [Variant "varname"] functions similarly to
+     the -variant command-line option (see below), allowing games in
+     certain chess variants to be loaded.  There is also a heuristic to
+     recognize chess variants from the Event tag, by looking for the
+     strings that the Internet Chess Servers put there when saving
+     variant ("wild") games.
+
+Load Next Game
+     Loads the next game from the last game record file you loaded.
+     The shifted `N' key is a keyboard equivalent.
+
+Load Previous Game
+     Loads the previous game from the last game record file you loaded.
+     The shifted `P' key is a keyboard equivalent.  Not available if
+     the last game was loaded from a pipe.
+
+Reload Same Game
+     Reloads the last game you loaded.  Not available if the last game
+     was loaded from a pipe.
+
+Save Game
+     Appends a record of the current game to a file.  A pop-up dialog
+     prompts you for the file name. If the game did not begin with the
+     standard starting position, the game file includes the starting
+     position used. Games are saved in the PGN (portable game notation)
+     format, unless the oldSaveStyle option is true, in which case they
+     are saved in an older format that is specific to XBoard. Both
+     formats are human-readable, and both can be read back by the `Load
+     Game' command.  Notation of the form `P at f7' is accepted for
+     piece-drops in bughouse games; this is a nonstandard extension to
+     PGN.
+
+Copy Game
+     Copies a record of the current game to an internal clipboard in PGN
+     format and sets the X selection to the game text.  The game can be
+     pasted to another application (such as a text editor or another
+     copy of XBoard) using that application's paste command.  In many X
+     applications, such as xterm and emacs, the middle mouse button can
+     be used for pasting; in XBoard, you must use the Paste Game
+     command.
+
+Paste Game
+     Interprets the current X selection as a game record and loads it,
+     as with Load Game.
+
+Load Position
+     Sets up a position from a position file.  A pop-up dialog prompts
+     you for the file name. If the file contains more than one saved
+     position, and you want to load the Nth one, type the number N
+     after the file name, separated by a space. Position files must be
+     in FEN (Forsythe-Edwards notation), or in the format that the Save
+     Position command writes when oldSaveStyle is turned on.
+
+Load Next Position
+     Loads the next position from the last position file you loaded.
+
+Load Previous Position
+     Loads the previous position from the last position file you
+     loaded.  Not available if the last position was loaded from a pipe.
+
+Reload Same Position
+     Reloads the last position you loaded.  Not available if the last
+     position was loaded from a pipe.
+
+Save Position
+     Appends a diagram of the current position to a file.  A pop-up
+     dialog prompts you for the file name. Positions are saved in FEN
+     (Forsythe-Edwards notation) format unless the `oldSaveStyle'
+     option is true, in which case they are saved in an older,
+     human-readable format that is specific to XBoard. Both formats can
+     be read back by the `Load Position' command.
+
+Copy Position
+     Copies the current position to an internal clipboard in FEN format
+     and sets the X selection to the position text.  The position can
+     be pasted to another application (such as a text editor or another
+     copy of XBoard) using that application's paste command.  In many X
+     applications, such as xterm and emacs, the middle mouse button can
+     be used for pasting; in XBoard, you must use the Paste Position
+     command.
+
+Paste Position
+     Interprets the current X selection as a FEN position and loads it,
+     as with Load Position.
+
+Mail Move
+Reload CMail Message
+     See *note CMail::.
+
+Exit
+     Exits from XBoard. The shifted `Q' key is a keyboard equivalent.
+
+
+File: xboard.info,  Node: Mode Menu,  Next: Action Menu,  Prev: File Menu,  Up: Menus
+
+2.2 Mode Menu
+=============
+
+Machine White
+     Tells the chess engine to play White.
+
+Machine Black
+     Tells the chess engine to play Black.
+
+Two Machines
+     Plays a game between two chess engines.
+
+Analysis Mode
+     XBoard tells the chess engine to start analyzing the current
+     game/position and shows you the analysis as you move pieces around.
+     Note: Some chess engines do not support Analysis mode.
+
+     To set up a position to analyze, you do the following:
+
+     1. Select Edit Position from the Mode Menu
+
+     2. Set up the position.  Use the middle and right buttons to bring
+     up the white and black piece menus.
+
+     3. When you are finished, click on either the Black or White clock
+     to tell XBoard which side moves first.
+
+     4. Select Analysis Mode from the Mode Menu to start the analysis.
+
+     The analysis function can also be used when observing games on an
+     ICS with an engine loaded (zippy mode); the engine then will
+     analyse the positions as they occur in the observed game.
+
+Analyze File
+     This option lets you load a game from a file (PGN, XBoard format,
+     etc.)  and analyze it. When you select this menu item, a pop-up
+     window appears and asks for a file name to load.  If the file
+     contains multiple games, another pop up appears that lets you
+     select which game you wish to analyze.  After a game is loaded,
+     use the XBoard arrow buttons to step forwards/backwards through
+     the game and watch the analysis.  Note: Some chess engines do not
+     support Analysis mode.
+
+ICS Client
+     This is the normal mode when XBoard is connected to a chess
+     server.  If you have moved into Edit Game or Edit Position mode,
+     you can select this option to get out.
+
+     To use xboard in ICS mode, run it in the foreground with the -ics
+     option, and use the terminal you started it from to type commands
+     and receive text responses from the chess server.  See *note Chess
+     Servers:: below for more information.
+
+     XBoard activates some special position/game editing features when
+     you use the `examine' or `bsetup' commands on ICS and you have
+     `ICS Client' selected on the Mode menu.  First, you can issue the
+     ICS position-editing commands with the mouse.  Move pieces by
+     dragging with mouse button 1.  To drop a new piece on a square,
+     press mouse button 2 or 3 over the square.  This brings up a menu
+     of white pieces (button 2) or black pieces (button 3).  Additional
+     menu choices let you empty the square or clear the board.  Click
+     on the White or Black clock to set the side to play.  You cannot
+     set the side to play or drag pieces to arbitrary squares while
+     examining on ICC, but you can do so in `bsetup' mode on FICS.  In
+     addition, the menu commands `Forward', `Backward', `Pause', and
+     `Stop Examining' have special functions in this mode; see below.
+
+Edit Game
+     Allows you to make moves for both Black and White, and to change
+     moves after backing up with the `Backward' command. The clocks do
+     not run.
+
+     In chess engine mode, the chess engine continues to check moves
+     for legality but does not participate in the game. You can bring
+     the chess engine into the game by selecting `Machine White',
+     `Machine Black', or `Two Machines'.
+
+     In ICS mode, the moves are not sent to the ICS: `Edit Game' takes
+     XBoard out of ICS Client mode and lets you edit games locally.  If
+     you want to edit games on ICS in a way that other ICS users can
+     see, use the ICS `examine' command or start an ICS match against
+     yourself.
+
+Edit Position
+     Lets you set up an arbitrary board position.  Use mouse button 1
+     to drag pieces to new squares, or to delete a piece by dragging it
+     off the board or dragging an empty square on top of it.  To drop a
+     new piece on a square, press mouse button 2 or 3 over the square.
+     This brings up a menu of white pieces (button 2) or black pieces
+     (button 3). Additional menu choices let you empty the square or
+     clear the board. You can set the side to play next by clicking on
+     the word White or Black at the top of the screen.  Selecting `Edit
+     Position' causes XBoard to discard all remembered moves in the
+     current game.
+
+     In ICS mode, changes made to the position by `Edit Position' are
+     not sent to the ICS: `Edit Position' takes XBoard out of `ICS
+     Client' mode and lets you edit positions locally. If you want to
+     edit positions on ICS in a way that other ICS users can see, use
+     the ICS `examine' command, or start an ICS match against yourself.
+     (See also the ICS Client topic above.)
+
+Training
+     Training mode lets you interactively guess the moves of a game for
+     one of the players. You guess the next move of the game by playing
+     the move on the board. If the move played matches the next move of
+     the game, the move is accepted and the opponent's response is
+     auto-played.  If the move played is incorrect, an error message is
+     displayed.  You can select this mode only while loading a game
+     (that is, after selecting `Load Game' from the File menu).  While
+     XBoard is in `Training' mode, the navigation buttons are disabled.
+
+Show Game List
+     Shows or hides the list of games generated by the last `Load Game'
+     command.
+
+Show Move History
+     Shows or hides a list of moves of the current game.  This list
+     allows you to move the display to any earlier position in the game
+     by clicking on the corresponding move.
+
+Show Engine Output
+     Shows or hides a window in which the thinking output of any loaded
+     engines is displayed.
+
+Edit Tags
+     Lets you edit the PGN (portable game notation) tags for the
+     current game. After editing, the tags must still conform to the
+     PGN tag syntax:
+
+          <tag-section> ::= <tag-pair> <tag-section>
+                                  <empty>
+          <tag-pair> ::= [ <tag-name> <tag-value> ]
+          <tag-name> ::= <identifier>
+          <tag-value> ::= <string>
+     See the PGN Standard for full details. Here is an example:
+
+          [Event "Portoroz Interzonal"]
+          [Site "Portoroz, Yugoslavia"]
+          [Date "1958.08.16"]
+          [Round "8"]
+          [White "Robert J. Fischer"]
+          [Black "Bent Larsen"]
+          [Result "1-0"]
+     Any characters that do not match this syntax are silently ignored.
+     Note that the PGN standard requires all games to have at least the
+     seven tags shown above. Any that you omit will be filled in by
+     XBoard with `?' (unknown value), or `-' (inapplicable value).
+
+Edit Comment
+     Adds or modifies a comment on the current position. Comments are
+     saved by `Save Game' and are displayed by `Load Game', `Forward',
+     and `Backward'.
+
+ICS Input Box
+     If this option is set in ICS mode, XBoard creates an extra window
+     that you can use for typing in ICS commands.  The input box is
+     especially useful if you want to type in something long or do some
+     editing on your input, because output from ICS doesn't get mixed
+     in with your typing as it would in the main terminal window.
+
+Pause
+     Pauses updates to the board, and if you are playing against a
+     chess engine, also pauses your clock. To continue, select `Pause'
+     again, and the display will automatically update to the latest
+     position.  The `P' button and keyboard `p' key are equivalents.
+
+     If you select Pause when you are playing against a chess engine and
+     it is not your move, the chess engine's clock will continue to run
+     and it will eventually make a move, at which point both clocks
+     will stop. Since board updates are paused, however, you will not
+     see the move until you exit from Pause mode (or select Forward).
+     This behavior is meant to simulate adjournment with a sealed move.
+
+     If you select Pause while you are observing or examining a game on
+     a chess server, you can step backward and forward in the current
+     history of the examined game without affecting the other observers
+     and examiners, and without having your display jump forward to the
+     latest position each time a move is made. Select Pause again to
+     reconnect yourself to the current state of the game on ICS.
+
+     If you select `Pause' while you are loading a game, the game stops
+     loading. You can load more moves manually by selecting `Forward',
+     or resume automatic loading by selecting `Pause' again.
+
+
+File: xboard.info,  Node: Action Menu,  Next: Step Menu,  Prev: Mode Menu,  Up: Menus
+
+2.3 Action Menu
+===============
+
+Accept
+     Accepts a pending match offer. If there is more than one offer
+     pending, you will have to type in a more specific command instead
+     of using this menu choice.
+
+Decline
+     Declines a pending offer (match, draw, adjourn, etc.). If there is
+     more than one offer pending, you will have to type in a more
+     specific command instead of using this menu choice.
+
+Call Flag
+     Calls your opponent's flag, claiming a win on time, or claiming a
+     draw if you are both out of time. You can also call your
+     opponent's flag by clicking on his clock or by pressing the
+     keyboard `t' key.
+
+Draw
+     Offers a draw to your opponent, accepts a pending draw offer from
+     your opponent, or claims a draw by repetition or the 50-move rule,
+     as appropriate. The `d' key is a keyboard equivalent.
+
+Adjourn
+     Asks your opponent to agree to adjourning the current game, or
+     agrees to a pending adjournment offer from your opponent.
+
+Abort
+     Asks your opponent to agree to aborting the current game, or
+     agrees to a pending abort offer from your opponent. An aborted
+     game ends immediately without affecting either player's rating.
+
+Resign
+     Resigns the game to your opponent. The shifted `R' key is a
+     keyboard equivalent.
+
+Stop Observing
+     Ends your participation in observing a game, by issuing the ICS
+     observe command with no arguments. ICS mode only.
+
+Stop Examining
+     Ends your participation in examining a game, by issuing the ICS
+     unexamine command. ICS mode only.
+
+Adjudicate to White
+Adjudicate to Black
+Adjudicate Draw
+     Terminate an ongoing game in Two-Machines mode (including match
+     mode), with as result a win for white, for black, or a draw,
+     respectively.  The PGN file of the game will accompany the result
+     string by the comment "user adjudication".
+
+
+File: xboard.info,  Node: Step Menu,  Next: Options Menu,  Prev: Action Menu,  Up: Menus
+
+2.4 Step Menu
+=============
+
+Backward
+     Steps backward through a series of remembered moves.  The `[<]'
+     button and the `b' key are equivalents, as is turning the mouse
+     wheel towards you.  In addition, pressing the Control key steps
+     back one move, and releasing it steps forward again.
+
+     In most modes, `Backward' only lets you look back at old positions;
+     it does not retract moves. This is the case if you are playing
+     against a chess engine, playing or observing a game on an ICS, or
+     loading a game.  If you select `Backward' in any of these
+     situations, you will not be allowed to make a different move. Use
+     `Retract Move' or `Edit Game' if you want to change past moves.
+
+     If you are examining an ICS game, the behavior of `Backward'
+     depends on whether XBoard is in Pause mode. If Pause mode is off,
+     `Backward' issues the ICS backward command, which backs up
+     everyone's view of the game and allows you to make a different
+     move. If Pause mode is on, `Backward' only backs up your local
+     view.
+
+Forward
+     Steps forward through a series of remembered moves (undoing the
+     effect of `Backward') or forward through a game file. The `[>]'
+     button and the `f' key are equivalents, as is turning the mouse
+     wheel away from you.
+
+     If you are examining an ICS game, the behavior of Forward depends
+     on whether XBoard is in Pause mode. If Pause mode is off,
+     `Forward' issues the ICS forward command, which moves everyone's
+     view of the game forward along the current line. If Pause mode is
+     on, `Forward' only moves your local view forward, and it will not
+     go past the position that the game was in when you paused.
+
+Back to Start
+     Jumps backward to the first remembered position in the game.  The
+     `[<<]' button and the shifted `B' key are equivalents.
+
+     In most modes, Back to Start only lets you look back at old
+     positions; it does not retract moves. This is the case if you are
+     playing against a local chess engine, playing or observing a game
+     on a chess server, or loading a game. If you select `Back to
+     Start' in any of these situations, you will not be allowed to make
+     different moves. Use `Retract Move' or `Edit Game' if you want to
+     change past moves; or use Reset to start a new game.
+
+     If you are examining an ICS game, the behavior of `Back to Start'
+     depends on whether XBoard is in Pause mode. If Pause mode is off,
+     `Back to Start' issues the ICS `backward 999999' command, which
+     backs up everyone's view of the game to the start and allows you
+     to make different moves. If Pause mode is on, `Back to Start' only
+     backs up your local view.
+
+Forward to End
+     Jumps forward to the last remembered position in the game. The
+     `[>>]' button and the shifted `F' key are equivalents.
+
+     If you are examining an ICS game, the behavior of `Forward to End'
+     depends on whether XBoard is in Pause mode. If Pause mode is off,
+     `Forward to End' issues the ICS `forward 999999' command, which
+     moves everyone's view of the game forward to the end of the
+     current line. If Pause mode is on, `Forward to End' only moves
+     your local view forward, and it will not go past the position that
+     the game was in when you paused.
+
+Revert
+     If you are examining an ICS game and Pause mode is off, issues the
+     ICS command `revert'.
+
+Truncate Game
+     Discards all remembered moves of the game beyond the current
+     position. Puts XBoard into `Edit Game' mode if it was not there
+     already.
+
+Move Now
+     Forces the chess engine to move immediately. Chess engine mode
+     only.
+
+Retract Move
+     Retracts your last move. In chess engine mode, you can do this only
+     after the chess engine has replied to your move; if the chess
+     engine is still thinking, use `Move Now' first. In ICS mode,
+     `Retract Move' issues the command `takeback 1' or `takeback 2'
+     depending on whether it is your opponent's move or yours.
+
+
+File: xboard.info,  Node: Options Menu,  Next: Help Menu,  Prev: Step Menu,  Up: Menus
+
+2.5 Options Menu
+================
+
+Flip View
+     Inverts your view of the chess board for the duration of the
+     current game. Starting a new game returns the board to normal.
+     The `v' key is a keyboard equivalent.
+
+Adjudications
+     Pops up a sub-menu where you can enable or disable various
+     adjudications that XBoard can perform in engine-engine games.  You
+     can instruct XBoard to detect and terminate the game on checkmate
+     or stalemate, even if the engines would not do so, to verify engine
+     result claims (forfeiting engines that make false claims), rather
+     than naively following the engine, to declare draw on positions
+     which can never be won for lack of mating material, (e.g. KBK), or
+     which are impossible to win unless the opponent seeks its own
+     demise (e.g. KBKN).  For these adjudications to work, `Test
+     Legality' should be switched on.  It is also possible to instruct
+     XBoard to enforce a 50-move or 3-fold-repeat rule and
+     automatically declare draw (after a user-adjustable number of moves
+     or repeats) even if the engines are prepared to go on.  It is also
+     possible to have XBoard declare draw on games that seem to drag on
+     forever, or adjudicate a loss if both engines agree (for 3
+     consecutive moves) that one of them is behind more than a
+     user-adjustable score threshold.  For the latter adjudication to
+     work, XBoard should be able to properly understand the engine's
+     scores. To facilitate the latter, you can inform xboard here if
+     the engines report scores from the viewpoint of white, or from
+     that of their own color.
+
+Engine Settings
+     Pops up a sub-menu where you can set some engine parameters common
+     to most engines, such as hash-table size, tablebase cache size,
+     maximum number of processors that SMP engines can use, and where
+     to find the Polyglot adapter needed to run UCI engines under
+     XBoard. The feature that allows setting of these parameters on
+     engines is new since XBoard 4.3.15, so not many XBoard/WinBoard
+     engines respond to it yet, but UCI engines should.  It is also
+     possible to specify a GUI opening book here, i.e. an opening book
+     that XBoard consults for any position a playing engine gets in.
+     It then forces the engine to play the book move, rather than to
+     think up its own, if that position is found in the book.  The book
+     can switched on and off independently for either engine.
+
+Time Control
+     Pops up a sub-menu where you can set the time-control parameters
+     interactively.  Allows you to select classical or incremental time
+     controls, set the moves per session, session duration, and time
+     increment.  Also allows specification of time-odds factors for one
+     or both engines.  If an engine is given a time-odds factor N, all
+     time quota it gets, be it at the beginning of a session or through
+     the time increment or fixed time per move, will be divided by N.
+
+Always Queen
+     If this option is off, XBoard brings up a dialog box whenever you
+     move a pawn to the last rank, asking what piece you want to
+     promote it to. If the option is true, your pawns are always
+     promoted to queens. Your opponent can still under-promote.
+
+Animate Dragging
+     If Animate Dragging is on, while you are dragging a piece with the
+     mouse, an image of the piece follows the mouse cursor.  If Animate
+     Dragging is off, there is no visual feedback while you are
+     dragging a piece, but if Animate Moving is on, the move will be
+     animated when it is complete.
+
+Animate Moving
+     If Animate Moving is on, all piece moves are animated.  An image
+     of the piece is shown moving from the old square to the new square
+     when the move is completed (unless the move was already animated
+     by Animate Dragging).  If Animate Moving is off, a moved piece
+     instantly disappears from its old square and reappears on its new
+     square when the move is complete.
+
+Auto Comment
+     If this option is on, any remarks made on ICS while you are
+     observing or playing a game are recorded as a comment on the
+     current move.  This includes remarks made with the ICS commands
+     `say', `tell', `whisper', and `kibitz'.  Limitation: remarks that
+     you type yourself are not recognized; XBoard scans only the output
+     from ICS, not the input you type to it.
+
+Auto Flag
+     If this option is on and one player runs out of time before the
+     other, XBoard will automatically call his flag, claiming a win on
+     time.  In ICS mode, Auto Flag will only call your opponent's flag,
+     not yours, and the ICS may award you a draw instead of a win if
+     you have insufficient mating material.  In local chess engine mode,
+     XBoard may call either player's flag and will not take material
+     into account.
+
+Auto Flip View
+     If the Auto Flip View option is on when you start a game, the board
+     will be automatically oriented so that your pawns move from the
+     bottom of the window towards the top.
+
+Auto Observe
+     If this option is on and you add a player to your `gnotify' list
+     on ICS, XBoard will automatically observe all of that player's
+     games, unless you are doing something else (such as observing or
+     playing a game of your own) when one starts.  The games are
+     displayed from the point of view of the player on your gnotify
+     list; that is, his pawns move from the bottom of the window
+     towards the top.  Exceptions:  If both players in a game are on
+     your gnotify list, if your ICS `highlight' variable is set to 0,
+     or if the ICS you are using does not properly support observing
+     from Black's point of view, you will see the game from White's
+     point of view.
+
+Auto Raise Board
+     If this option is on, whenever a new game begins, the chessboard
+     window is deiconized (if necessary) and raised to the top of the
+     stack of windows.
+
+Auto Save
+     If this option is true, at the end of every game XBoard prompts
+     you for a file name and appends a record of the game to the file
+     you specify.  Disabled if the `saveGameFile' command-line option
+     is set, as in that case all games are saved to the specified file.
+     *Note Load and Save options::.
+
+Blindfold
+     If this option is on, XBoard displays the board as usual but does
+     not display pieces or move highlights.  You can still move in the
+     usual way (with the mouse or by typing moves in ICS mode), even
+     though the pieces are invisible.
+
+Flash Moves
+     If this option is on, whenever a move is completed, the moved
+     piece flashes.  The number of times to flash is set by the
+     flashCount command-line option; it defaults to 3 if Flash Moves is
+     first turned on from the menu.
+
+     If you are playing a game on an ICS, the board is always oriented
+     at the start of the game so that your pawns move from the bottom
+     of the window towards the top. Otherwise, the starting orientation
+     is determined by the `flipView' command line option; if it is
+     false (the default), White's pawns move from bottom to top at the
+     start of each game; if it is true, Black's pawns move from bottom
+     to top. *Note User interface options::.
+
+Get Move List
+     If this option is on, whenever XBoard receives the first board of
+     a new ICS game (or a different game from the one it is currently
+     displaying), it retrieves the list of past moves from the ICS.
+     You can then review the moves with the `Forward' and `Backward'
+     commands or save them with `Save Game'.  You might want to turn
+     off this option if you are observing several blitz games at once,
+     to keep from wasting time and network bandwidth fetching the move
+     lists over and over.  When you turn this option on from the menu,
+     XBoard immediately fetches the move list of the current game (if
+     any).
+
+Highlight Last Move
+     If Highlight Last Move is on, after a move is made, the starting
+     and ending squares remain highlighted. In addition, after you use
+     Backward or Back to Start, the starting and ending squares of the
+     last move to be unmade are highlighted.
+
+Move Sound
+     If this option is on, XBoard alerts you by playing a sound after
+     each of your opponent's moves (or after every move if you are
+     observing a game on the Internet Chess Server).  The sound is not
+     played after moves you make or moves read from a saved game file.
+     By default, the sound is the terminal bell, but on some systems
+     you can change it to a sound file using the soundMove option; see
+     below.
+
+     If you turn on this option when using XBoard with the Internet
+     Chess Server, you will probably want to give the `set bell 0'
+     command to the ICS, since otherwise the ICS will ring the terminal
+     bell after every move (not just yours). (The `.icsrc' file is a
+     good place for this; see *note ICS options::.)
+
+ICS Alarm
+     When this option is on, an alarm sound is played when your clock
+     counts down to the icsAlarmTime (by default, 5 seconds) in an ICS
+     game.  For games with time controls that include an increment, the
+     alarm will sound each time the clock counts down to the
+     icsAlarmTime.  By default, the alarm sound is the terminal bell,
+     but on some systems you can change it to a sound file using the
+     soundIcsAlarm option; see below.
+
+Old Save Style
+     If this option is off, XBoard saves games in PGN (portable game
+     notation) and positions in FEN (Forsythe-Edwards notation).  If
+     the option is on, a save style that is compatible with older
+     versions of XBoard is used instead.  The old position style is
+     more human-readable than FEN; the old game style has no particular
+     advantages.
+
+Periodic Updates
+     If this option is off (or if you are using a chess engine that
+     does not support periodic updates), the analysis window will only
+     be updated when the analysis changes. If this option is on, the
+     Analysis Window will be updated every two seconds.
+
+Ponder Next Move
+     If this option is off, the chess engine will think only when it is
+     on move.  If the option is on, the engine will also think while
+     waiting for you to make your move.
+
+Popup Exit Message
+     If this option is on, when XBoard wants to display a message just
+     before exiting, it brings up a modal dialog box and waits for you
+     to click OK before exiting.  If the option is off, XBoard prints
+     the message to standard error (the terminal) and exits immediately.
+
+Popup Move Errors
+     If this option is off, when you make an error in moving (such as
+     attempting an illegal move or moving the wrong color piece), the
+     error message is displayed in the message area.  If the option is
+     on, move errors are displayed in small pop-up windows like other
+     errors.  You can dismiss an error pop-up either by clicking its OK
+     button or by clicking anywhere on the board, including
+     down-clicking to start a move.
+
+Premove
+     If this option is on while playing a game on an ICS, you can
+     register your next planned move before it is your turn.  Move the
+     piece with the mouse in the ordinary way, and the starting and
+     ending squares will be highlighted with a special color (red by
+     default).  When it is your turn, if your registered move is legal,
+     XBoard will send it to ICS immediately; if not, it will be ignored
+     and you can make a different move.  If you change your mind about
+     your premove, either make a different move, or double-click on any
+     piece to cancel the move entirely.
+
+Quiet Play
+     If this option is on, XBoard will automatically issue an ICS `set
+     shout 0' command whenever you start a game and a `set shout 1'
+     command whenever you finish one.  Thus, you will not be distracted
+     by shouts from other ICS users while playing.
+
+Show Coords
+     If this option is on, XBoard displays algebraic coordinates along
+     the board's left and bottom edges.
+
+Hide Thinking
+     If this option is off, the chess engine's notion of the score and
+     best line of play from the current position is displayed as it is
+     thinking. The score indicates how many pawns ahead (or if negative,
+     behind) the chess engine thinks it is. In matches between two
+     machines, the score is prefixed by `W' or `B' to indicate whether
+     it is showing White's thinking or Black's, and only the thinking
+     of the engine that is on move is shown.
+
+Test Legality
+     If this option is on, XBoard tests whether the moves you try to
+     make with the mouse are legal and refuses to let you make an
+     illegal move.  Moves loaded from a file with `Load Game' are also
+     checked.  If the option is off, all moves are accepted, but if a
+     local chess engine or the ICS is active, they will still reject
+     illegal moves.  Turning off this option is useful if you are
+     playing a chess variant with rules that XBoard does not
+     understand.  (Bughouse, suicide, and wild variants where the king
+     may castle after starting on the d file are generally supported
+     with Test Legality on.)
+
+
+File: xboard.info,  Node: Help Menu,  Next: Keys,  Prev: Options Menu,  Up: Menus
+
+2.6 Help Menu
+=============
+
+Info XBoard
+     Displays the XBoard documentation in info format.  For this
+     feature to work, you must have the GNU info program installed on
+     your system, and the file `xboard.info' must either be present in
+     the current working directory, or have been installed by the `make
+     install' command when you built XBoard.
+
+Man XBoard
+     Displays the XBoard documentation in man page format.  For this
+     feature to work, the file `xboard.6' must have been installed by
+     the `make install' command when you built XBoard, and the
+     directory it was placed in must be on the search path for your
+     system's `man' command.
+
+Hint
+     Displays a move hint from the chess engine.
+
+Book
+     Displays a list of possible moves from the chess engine's opening
+     book.  The exact format depends on what chess engine you are using.
+     With GNU Chess 4, the first column gives moves, the second column
+     gives one possible response for each move, and the third column
+     shows the number of lines in the book that include the move from
+     the first column. If you select this option and nothing happens,
+     the chess engine is out of its book or does not support this
+     feature.
+
+About XBoard
+     Shows the current XBoard version number.
+
+
+File: xboard.info,  Node: Keys,  Prev: Help Menu,  Up: Menus
+
+2.7 Other Shortcut Keys
+=======================
+
+Iconize
+     Pressing the `i' or `c' key iconizes XBoard. The graphical icon
+     displays a white knight if it is White's move, or a black knight
+     if it is Black's move. If your X window manager displays only text
+     icons, not graphical ones, check its documentation; there is
+     probably a way to enable graphical icons.  If you get black and
+     white reversed, we would like to hear about it; see *note
+     Problems:: below for instructions on how to report this problem.
+
+   You can add or remove shortcut keys using the X resources
+`form.translations'. Here is an example of what would go in your
+`.Xresources' file:
+
+     XBoard*form.translations: \
+       Shift<Key>?: AboutGameProc() \n\
+       <Key>y: AcceptProc() \n\
+       <Key>n: DeclineProc() \n\
+       <Key>i: NothingProc()
+   Binding a key to `NothingProc' makes it do nothing, thus removing it
+as a shortcut key. The XBoard commands that can be bound to keys are:
+
+     AbortProc, AboutGameProc, AboutProc, AcceptProc, AdjournProc,
+     AlwaysQueenProc, AnalysisModeProc, AnalyzeFileProc,
+     AnimateDraggingProc, AnimateMovingProc, AutobsProc, AutoflagProc,
+     AutoflipProc, AutoraiseProc, AutosaveProc, BackwardProc,
+     BlindfoldProc, BookProc, CallFlagProc, CopyGameProc, CopyPositionProc,
+     DebugProc, DeclineProc, DrawProc, EditCommentProc, EditGameProc,
+     EditPositionProc, EditTagsProc, EnterKeyProc, FlashMovesProc,
+     FlipViewProc, ForwardProc, GetMoveListProc, HighlightLastMoveProc,
+     HintProc, Iconify, IcsAlarmProc, IcsClientProc, IcsInputBoxProc,
+     InfoProc, LoadGameProc, LoadNextGameProc, LoadNextPositionProc,
+     LoadPositionProc, LoadPrevGameProc, LoadPrevPositionProc,
+     LoadSelectedProc, MachineBlackProc, MachineWhiteProc, MailMoveProc,
+     ManProc, MoveNowProc, MoveSoundProc, NothingProc, OldSaveStyleProc,
+     PasteGameProc, PastePositionProc, PauseProc, PeriodicUpdatesProc,
+     PonderNextMoveProc, PopupExitMessageProc, PopupMoveErrorsProc,
+     PremoveProc, QuietPlayProc, QuitProc, ReloadCmailMsgProc,
+     ReloadGameProc, ReloadPositionProc, RematchProc, ResetProc,
+     ResignProc, RetractMoveProc, RevertProc, SaveGameProc,
+     SavePositionProc, ShowCoordsProc, ShowGameListProc, ShowThinkingProc,
+     StopExaminingProc, StopObservingProc, TestLegalityProc, ToEndProc,
+     ToStartProc, TrainingProc, TruncateGameProc, and TwoMachinesProc.
+
+
+File: xboard.info,  Node: Options,  Next: Chess Servers,  Prev: Menus,  Up: Top
+
+3 Options
+*********
+
+This section documents the command-line options to XBoard.  You can set
+these options in two ways: by typing them on the shell command line you
+use to start XBoard, or by setting them as X resources (typically in
+your `.Xresources' file).  Many of the options cannot be changed while
+XBoard is running; others set the initial state of items that can be
+changed with the *note Options:: menu.
+
+   Most of the options have both a long name and a short name. To turn a
+boolean option on or off from the command line, either give its long
+name followed by the value true or false (`-longOptionName true'), or
+give just the short name to turn the option on (`-opt'), or the short
+name preceded by `x' to turn the option off (`-xopt'). For options that
+take strings or numbers as values, you can use the long or short option
+names interchangeably.
+
+   Each option corresponds to an X resource with the same name, so if
+you like, you can set options in your `.Xresources' file or in a file
+named `XBoard' in your home directory.  For options that have two
+names, the longer one is the name of the corresponding X resource; the
+short name is not recognized.  To turn a boolean option on or off as an
+X resource, give its long name followed by the value true or false
+(`XBoard*longOptionName: true').
+
+* Menu:
+
+* Chess engine options::        Controlling the chess engine.
+* UCI + WB Engine Settings::    Setting some very common engine parameters
+* ICS options::                 Connecting to and using ICS.
+* Load and Save options::       Input/output options.
+* User interface options::      Look and feel options.
+* Adjudication Options::        Control adjudication of engine-engine games.
+* Other options::               Miscellaneous.
+
+
+File: xboard.info,  Node: Chess engine options,  Next: UCI + WB Engine Settings,  Up: Options
+
+3.1 Chess Engine Options
+========================
+
+-tc or -timeControl minutes[:seconds]
+     Each player begins with his clock set to the `timeControl' period.
+     Default: 5 minutes.  The additional options `movesPerSession' and
+     `timeIncrement' are mutually exclusive.
+
+-mps or -movesPerSession moves
+     When both players have made `movesPerSession' moves, a new
+     `timeControl' period is added to both clocks.  Default: 40 moves.
+
+-inc or -timeIncrement seconds
+     If this option is specified, `movesPerSession' is ignored.
+     Instead, after each player's move, `timeIncrement' seconds are
+     added to his clock.  Use `-inc 0' if you want to require the entire
+     game to be played in one `timeControl' period, with no increment.
+     Default: -1, which specifies `movesPerSession' mode.
+
+-clock/-xclock or -clockMode true/false
+     Determines whether or not to display the chess clocks. If
+     clockMode is false, the clocks are not shown, but the side that is
+     to play next is still highlighted. Also, unless `searchTime' is
+     set, the chess engine still keeps track of the clock time and uses
+     it to determine how fast to make its moves.
+
+-st or -searchTime minutes[:seconds]
+     Tells the chess engine to spend at most the given amount of time
+     searching for each of its moves. Without this option, the chess
+     engine chooses its search time based on the number of moves and
+     amount of time remaining until the next time control.  Setting
+     this option also sets clockMode to false.
+
+-depth or -searchDepth number
+     Tells the chess engine to look ahead at most the given number of
+     moves when searching for a move to make. Without this option, the
+     chess engine chooses its search depth based on the number of moves
+     and amount of time remaining until the next time control.  With
+     the option, the engine will cut off its search early if it reaches
+     the specified depth.
+
+-firstNPS number
+-secondNPS number
+     Tells the chess engine to use an internal time standard based on
+     its node count, rather then wall-clock time, to make its timing
+     decisions.  The time in virtual seconds should be obtained by
+     dividing the node count through the given number, like the number
+     was a rate in nodes per second.  Xboard will manage the clocks in
+     accordance with this, relying on the number of nodes reported by
+     the engine in its thinking output. If the given number equals zero,
+     it can obviously not be used to convert nodes to seconds, and the
+     time reported by the engine is used to decrement the XBoard clock
+     in stead. The engine is supposed to report in CPU time it uses,
+     rather than wall-clock time, in this mode. This option can provide
+     fairer conditions for engine-engine matches on heavily loaded
+     machines, or with very fast games (where the wall clock is too
+     inaccurate).  `showThinking' must be on for this option to work.
+     Default: -1 (off).  Not many engines might support this yet!
+
+-firstTimeOdds factor
+-secondTimeOdds factor
+     Reduces the time given to the mentioned engine by the given factor.
+     If pondering is off, the effect is indistinguishable from what
+     would happen if the engine was running on an n-times slower
+     machine. Default: 1.
+
+-timeOddsMode mode
+     This option determines how the case is handled where both engines
+     have a time-odds handicap.  If mode=1, the engine that gets the
+     most time will always get the nominal time, as specified by the
+     time-control options, and its opponent's time is renormalized
+     accordingly.  If mode=0, both play with reduced time. Default: 0.
+
+-hideThinkingFromHuman true/false
+     Controls the Hide Thinking option. *Note Options Menu::. Default:
+     true.  (Replaces the Show-Thinking option of older xboard
+     versions.)
+
+-thinking/-xthinking or -showThinking true/false
+     Forces the engine to send thinking output to xboard.  Used to be
+     the only way to control if thinking output was displayed in older
+     xboard versions, but as the thinking output in xboard 4.3 is also
+     used for several other purposes (adjudication, storing in PGN
+     file) the display of it is now controlled by the new option Hide
+     Thinking. *Note Options Menu::. Default: false.  (But if xboard
+     needs the thinking output for some purpose, it makes the engine
+     send it despite the setting of this option.)
+
+-ponder/-xponder or -ponderNextMove true/false
+     Sets the Ponder Next Move menu option. *Note Options Menu::.
+     Default: true.
+
+-smpCores number
+     Specifies the maximum number of CPUs an SMP engine is allowed to
+     use.  Only works for engines that support the
+     XBoard/WinBoard-protocol cores feature.
+
+-mg or -matchGames n
+     Automatically runs an n-game match between two chess engines, with
+     alternating colors.  If the `loadGameFile' or `loadPositionFile'
+     option is set, XBoard starts each game with the given opening
+     moves or the given position; otherwise, the games start with the
+     standard initial chess position.  If the `saveGameFile' option is
+     set, a move record for the match is appended to the specified
+     file. If the `savePositionFile' option is set, the final position
+     reached in each game of the match is appended to the specified
+     file. When the match is over, XBoard displays the match score and
+     exits. Default: 0 (do not run a match).
+
+-mm/-xmm or -matchMode true/false
+     Setting `matchMode' to true is equivalent to setting `matchGames'
+     to 1.
+
+-sameColorGames n
+     Automatically runs an n-game match between two chess engines,
+     without alternating colors.  Otherwise the same applies as for the
+     `-matchGames' option, over which it takes precedence if both are
+     specified. (See there.)  Default: 0 (do not run a match).
+
+-fcp or -firstChessProgram program
+     Name of first chess engine.  Default: `Fairy-Max'.
+
+-scp or -secondChessProgram program
+     Name of second chess engine, if needed.  A second chess engine is
+     started only in Two Machines (match) mode.  Default: `Fairy-Max'.
+
+-fb/-xfb or -firstPlaysBlack true/false
+     In games between two chess engines, firstChessProgram normally
+     plays white.  If this option is true, firstChessProgram plays
+     black.  In a multi-game match, this option affects the colors only
+     for the first game; they still alternate in subsequent games.
+
+-fh or -firstHost host
+-sh or -secondHost host
+     Hosts on which the chess engines are to run. The default for each
+     is `localhost'. If you specify another host, XBoard uses `rsh' to
+     run the chess engine there. (You can substitute a different remote
+     shell program for rsh using the `remoteShell' option described
+     below.)
+
+-fd or -firstDirectory dir
+-sd or -secondDirectory dir
+     Working directories in which the chess engines are to be run.  The
+     default is "", which means to run the chess engine in the same
+     working directory as XBoard itself.  (See the CHESSDIR environment
+     variable.)  This option is effective only when the chess engine is
+     being run on the local host; it does not work if the engine is run
+     remotely using the -fh or -sh option.
+
+-initString string
+-secondInitString string
+     The string that is sent to initialize each chess engine for a new
+     game.  Default:
+
+          new
+          random
+     Setting this option from the command line is tricky, because you
+     must type in real newline characters, including one at the very
+     end.  In most shells you can do this by entering a `\' character
+     followed by a newline. It is easier to set the option from your
+     `.Xresources' file; in that case you can include the character
+     sequence `\n' in the string, and it will be converted to a newline.
+
+     If you change this option, don't remove the `new' command; it is
+     required by all chess engines to start a new game.
+
+     You can remove the `random' command if you like; including it
+     causes GNU Chess 4 to randomize its move selection slightly so
+     that it doesn't play the same moves in every game.  Even without
+     `random', GNU Chess 4 randomizes its choice of moves from its
+     opening book.  Many other chess engines ignore this command
+     entirely and always (or never) randomize.
+
+     You can also try adding other commands to the initString; see the
+     documentation of the chess engine you are using for details.
+
+-firstComputerString string
+-secondComputerString string
+     The string that is sent to the chess engine if its opponent is
+     another computer chess engine.  The default is `computer\n'.
+     Probably the only useful alternative is the empty string (`'),
+     which keeps the engine from knowing that it is playing another
+     computer.
+
+-reuse/-xreuse or -reuseFirst true/false
+-reuse2/-xreuse2 or -reuseSecond true/false
+     If the option is false, XBoard kills off the chess engine after
+     every game and starts it again for the next game.  If the option
+     is true (the default), XBoard starts the chess engine only once
+     and uses it repeatedly to play multiple games.  Some old chess
+     engines may not work properly when reuse is turned on, but
+     otherwise games will start faster if it is left on.
+
+-firstProtocolVersion version-number
+-secondProtocolVersion version-number
+     This option specifies which version of the chess engine
+     communication protocol to use.  By default, version-number is 2.
+     In version 1, the "protover" command is not sent to the engine;
+     since version 1 is a subset of version 2, nothing else changes.
+     Other values for version-number are not supported.
+
+-firstScoreAbs true/false
+-secondScoreAbs true/false
+     If this option is set, the score reported by the engine is taken
+     to be that in favor of white, even when the engine plays black.
+     Important when XBoard uses the score for adjudications, or in PGN
+     reporting.
+
+-niceEngines priority
+     This option allows you to lower the priority of the engine
+     processes, so that the generally insatiable hunger for CPU time of
+     chess engines does not interfere so much with smooth operation of
+     XBoard (or the rest of your system).  Negative values could
+     increase the engine priority, which is not recommended.
+
+-firstOptions string
+-secondOptions string
+     The given string is a comma-separated list of (option name=option
+     value) pairs, like the following example: "style=Karpov,blunder
+     rate=0".  If an option announced by the engine at startup through
+     the feature commands of the XBoard/WinBoard protocol matches one
+     of the option names (i.e. "style" or "blunder rate"), it would be
+     set to the given value (i.e. "Karpov" or 0) through a
+     corresponding option command to the engine.  This provided that
+     the type of the value (text or numeric) matches as well.
+
+-firstNeedsNoncompliantFEN string
+-secondNeedsNoncompliantFEN string
+     The castling rights and e.p. fields of the FEN sent to the
+     mentioned engine with the setboard command will be replaced by the
+     given string. This can for instance be used to run engines that do
+     not understand Chess960 FENs in variant fischerandom, to make them
+     at least understand the opening position, through setting the
+     string to "KQkq -". (Note you also have to give the e.p. field!)
+     Other possible applications are to provide work-arounds for
+     engines that want to see castling and e.p. fields in variants that
+     do not have castling or e.p.  (shatranj, courier, xiangqi, shogi)
+     so that XBoard would normally omit them (string = "- -"), or to
+     add variant-specific fields that are not yet supported by XBoard
+     (e.g. to indicate the number of checks in 3check).
+
+
+File: xboard.info,  Node: UCI + WB Engine Settings,  Next: ICS options,  Prev: Chess engine options,  Up: Options
+
+3.2 UCI + WB Engine Settings
+============================
+
+-fUCI or -firstIsUCI true/false
+-sUCI or -secondIsUCI true/false
+     Indicates if the mentioned engine executable file is an UCI engine,
+     and should be run with the aid of the Polyglot adapter rather than
+     directly.  Xboard will then pass the other UCI options and engine
+     name to Polyglot through a .ini temporary file created for the
+     purpose.
+
+-PolyglotDir filename
+     Gives the name of the directory in which the Polyglot adapter for
+     UCI engines expects its files.  Default:
+     "/usr/local/share/polyglot".
+
+-usePolyglotBook true/false
+     Specifies if the Polyglot book should be used.
+
+-PolyglotBook filename
+     Gives the filename of the opening book that Polyglot should use.
+     From XBoard 4.3.15 on, native XBoard/WinBoard engines will also
+     use the opening book specified here, provided the
+     `usePolyglotBook' option is set to true, and the option
+     `firstHasOwnBookUCI' or `secondHasOwnBookUCI' applying to the
+     engine is set to false.  The engine will be kept in force mode as
+     long as the current position is in book, and XBoard will select
+     the book moves for it. Default "".
+
+-fNoOwnBookUCI or -firstXBook or -firstHasOwnBookUCI true/false
+-sNoOwnBookUCI or -secondXBook or -secondHasOwnBookUCI true/false
+     Indicates if the mentioned engine has its own opening book it
+     should play from, rather than using the external book through
+     XBoard. Default: false.
+
+-defaultHashSize n
+     Sets the size of the hash table to n MegaBytes. Together with the
+     EGTB cache size this number is also used to calculate the memory
+     setting of XBoard/WinBoard engines, for those that support the
+     memory feature of the XBoard/WinBoard protocol. Default: 64.
+
+-defaultCacheSizeEGTB n
+     Sets the size of the EGTB cache to n MegaBytes. Together with the
+     hash-table size this number is also used to calculate the memory
+     setting of XBoard/WinBoard engines, for those that support the
+     memory feature of the XBoard/WinBoard protocol. Default: 4.
+
+-defaultPathEGTB filename
+     Gives the name of the directory where the end-game tablebases are
+     installed, for UCI engines.  Default: "/usr/local/share/egtb".
+
+-egtFormats string
+     Specifies which end-game tables are installed on the computer, and
+     where.  The argument is a comma-separated list of format
+     specifications, each specification consisting of a format name, a
+     colon, and a directory path name, e.g.
+     "nalimov:/usr/local/share/egtb".  If the name part matches that of
+     a format that the engine requests through a feature command,
+     xboard will relay the path name for this format to the engine
+     through an egtpath command.  One egtpath command for each matching
+     format will be sent.  Popular formats are "nalimov" DTM tablebases
+     and "scorpio" bitbases.  Default: "".
+
+
+File: xboard.info,  Node: ICS options,  Next: Load and Save options,  Prev: UCI + WB Engine Settings,  Up: Options
+
+3.3 ICS options
+===============
+
+-ics/-xics or -internetChessServerMode true/false
+     Connect with an Internet Chess Server to play chess against its
+     other users, observe games they are playing, or review games that
+     have recently finished. Default: false.
+
+-icshost or -internetChessServerHost host
+     The Internet host name or address of the chess server to connect
+     to when in ICS mode. Default: `chessclub.com'.  Another popular
+     chess server to try is `freechess.org'.  If your site doesn't have
+     a working Internet name server, try specifying the host address in
+     numeric form.  You may also need to specify the numeric address
+     when using the icshelper option with timestamp or timeseal (see
+     below).
+
+-icsport or -internetChessServerPort port-number
+     The port number to use when connecting to a chess server in ICS
+     mode. Default: 5000.
+
+-icshelper or -internetChessServerHelper prog-name
+     An external helper program used to communicate with the chess
+     server.  You would set it to "timestamp" for ICC (chessclub.com) or
+     "timeseal" for FICS (freechess.org), after obtaining the correct
+     version of timestamp or timeseal for your computer.  See "help
+     timestamp" on ICC and "help timeseal" on FICS.  This option is
+     shorthand for `-useTelnet -telnetProgram program'.
+
+-telnet/-xtelnet or -useTelnet true/false
+     This option is poorly named; it should be called useHelper.  If
+     set to true, it instructs XBoard to run an external program to
+     communicate with the Internet Chess Server.  The program to use is
+     given by the telnetProgram option.  If the option is false (the
+     default), XBoard opens a TCP socket and uses its own internal
+     implementation of the telnet protocol to communicate with the ICS.
+     *Note Firewalls::.
+
+-telnetProgram prog-name
+     This option is poorly named; it should be called helperProgram.
+     It gives the name of the telnet program to be used with the
+     `gateway' and `useTelnet' options.  The default is `telnet'. The
+     telnet program is invoked with the value of
+     `internetChessServerHost' as its first argument and the value of
+     `internetChessServerPort' as its second argument.  *Note
+     Firewalls::.
+
+-gateway host-name
+     If this option is set to a host name, XBoard communicates with the
+     Internet Chess Server by using `rsh' to run the `telnetProgram' on
+     the given host, instead of using its own internal implementation
+     of the telnet protocol. You can substitute a different remote shell
+     program for `rsh' using the `remoteShell' option described below.
+     *Note Firewalls::.
+
+-internetChessServerCommPort or -icscomm dev-name
+     If this option is set, XBoard communicates with the ICS through
+     the given character I/O device instead of opening a TCP connection.
+     Use this option if your system does not have any kind of Internet
+     connection itself (not even a SLIP or PPP connection), but you do
+     have dial-up access (or a hardwired terminal line) to an Internet
+     service provider from which you can telnet to the ICS.
+
+     The support for this option in XBoard is minimal. You need to set
+     all communication parameters and tty modes before you enter XBoard.
+
+     Use a script something like this:
+
+          stty raw -echo 9600 > /dev/tty00
+          xboard -ics -icscomm /dev/tty00
+
+     Here replace `/dev/tty00' with the name of the device that your
+     modem is connected to. You might have to add several more options
+     to these stty commands. See the man pages for `stty' and `tty' if
+     you run into problems. Also, on many systems stty works on its
+     standard input instead of standard output, so you have to use `<'
+     instead of `>'.
+
+     If you are using linux, try starting with the script below.
+     Change it as necessary for your installation.
+
+          #!/bin/sh -f
+          # configure modem and fire up XBoard
+
+          # configure modem
+          (
+            stty 2400 ; stty raw ; stty hupcl ; stty -clocal
+            stty ignbrk ; stty ignpar ; stty ixon ; stty ixoff
+            stty -iexten ; stty -echo
+          ) < /dev/modem
+          xboard -ics -icscomm /dev/modem
+     After you start XBoard in this way, type whatever commands are
+     necessary to dial out to your Internet provider and log in.  Then
+     telnet to ICS, using a command like `telnet chessclub.com 5000'.
+     Important: See the paragraph below about extra echoes, in *note
+     Limitations::.
+
+-icslogon or -internetChessServerLogonScript file-name
+     Whenever XBoard connects to the Internet Chess Server, if it finds
+     a file with the name given in this option, it feeds the file's
+     contents to the ICS as commands. The default file name is `.icsrc'.
+     Usually the first two lines of the file should be your ICS user
+     name and password.  The file can be either in $CHESSDIR, in
+     XBoard's working directory if CHESSDIR is not set, or in your home
+     directory.
+
+-msLoginDelay delay
+     If you experience trouble logging on to an ICS when using the
+     `-icslogon' option, inserting some delay between characters of the
+     logon script may help. This option adds `delay' milliseconds of
+     delay between characters. Good values to try are 100 and 250.
+
+-icsinput/-xicsinput or -internetChessServerInputBox true/false
+     Sets the ICS Input Box menu option. *Note Mode Menu::. Default:
+     false.
+
+-autocomm/-xautocomm or -autoComment true/false
+     Sets the Auto Comment menu option. *Note Options Menu::. Default:
+     false.
+
+-autoflag/-xautoflag or -autoCallFlag true/false
+     Sets the Auto Flag menu option.  *Note Options Menu::. Default:
+     false.
+
+-autobs/-xautobs or -autoObserve true/false
+     Sets the Auto Observe menu option.  *Note Options Menu::. Default:
+     false.
+
+-autoKibitz
+     Enables kibitzing of the engines last thinking output (depth,
+     score, time, speed, PV) before it moved to the ICS, in zippy mode.
+     The option `showThinking' must be switched on for this option to
+     work.  Also diverts similar kibitz information of an opponent
+     engine that is playing you through the ICS to the engine-output
+     window, as if the engine was playing locally.
+
+-moves/-xmoves or -getMoveList true/false
+     Sets the Get Move List menu option.  *Note Options Menu::.
+     Default: true.
+
+-alarm/-xalarm or -icsAlarm true/false
+     Sets the ICS Alarm menu option.  *Note Options Menu::. Default:
+     true.
+
+-icsAlarmTime ms
+     Sets the time in milliseconds for the ICS Alarm menu option.
+     *Note Options Menu::. Default: 5000.
+
+lowTimeWarning true/false
+     Controls a color change of the board as a warning your time is
+     running out.  *Note Options Menu::. Default: false.
+
+-pre/-xpre \fRor\fB -premove true/false
+     Sets the Premove menu option. *Note Options Menu::. Default: true.
+
+-quiet/-xquiet or -quietPlay true/false
+     Sets the Quiet Play menu option.  *Note Options Menu::.  Default:
+     false.
+
+-colorizeMessages or -colorize
+     Setting colorizeMessages to true tells XBoard to colorize the
+     messages received from the ICS.  Colorization works only if your
+     xterm supports ISO 6429 escape sequences for changing text colors.
+
+-colorShout foreground,background,bold
+-colorSShout foreground,background,bold
+-colorChannel1 foreground,background,bold
+-colorChannel foreground,background,bold
+-colorKibitz foreground,background,bold
+-colorTell foreground,background,bold
+-colorChallege foreground,background,bold
+-colorRequest foreground,background,bold
+-colorSeek foreground,background,bold
+-colorNormal foreground,background,bold
+     These options set the colors used when colorizing ICS messages.
+     All ICS messages are grouped into one of these categories: shout,
+     sshout, channel 1, other channel, kibitz, tell, challenge, request
+     (including abort, adjourn, draw, pause, and takeback), or normal
+     (all other messages).
+
+     Each foreground or background argument can be one of the following:
+     black, red, green, yellow, blue, magenta, cyan, white, or default.
+     Here "default" means the default foreground or background color of
+     your xterm.  Bold can be 1 or 0.  If background is omitted,
+     "default" is assumed; if bold is omitted, 0 is assumed.
+
+     Here is an example of how to set the colors in your `.Xresources'
+     file.  The colors shown here are the default values; you will get
+     them if you turn `-colorize' on without specifying your own colors.
+
+          xboard*colorizeMessages: true
+          xboard*colorShout: green
+          xboard*colorSShout: green, black, 1
+          xboard*colorChannel1: cyan
+          xboard*colorChannel: cyan, black, 1
+          xboard*colorKibitz: magenta, black, 1
+          xboard*colorTell: yellow, black, 1
+          xboard*colorChallenge: red, black, 1
+          xboard*colorRequest: red
+          xboard*colorSeek: blue
+          xboard*colorNormal: default
+
+-soundProgram progname
+     If this option is set to a sound-playing program that is installed
+     and working on your system, XBoard can play sound files when
+     certain events occur, listed below.  The default program name is
+     "play".  If any of the sound options is set to "$", the event
+     rings the terminal bell by sending a ^G character to standard
+     output, instead of playing a sound file.  If an option is set to
+     the empty string "", no sound is played for that event.
+
+-soundShout filename
+-soundSShout filename
+-soundChannel filename
+-soundKibitz filename
+-soundTell filename
+-soundChallenge filename
+-soundRequest filename
+-soundSeek filename
+     These sounds are triggered in the same way as the colorization
+     events described above.  They all default to "", no sound.  They
+     are played only if the colorizeMessages is on.
+
+-soundMove filename
+     This sound is used by the Move Sound menu option.  Default: "$".
+
+-soundIcsAlarm filename
+     This sound is used by the ICS Alarm menu option.  Default: "$".
+
+-soundIcsWin filename
+     This sound is played when you win an ICS game.  Default: "" (no
+     sound).
+
+-soundIcsLoss filename
+     This sound is played when you lose an ICS game.  Default: "" (no
+     sound).
+
+-soundIcsDraw filename
+     This sound is played when you draw an ICS game.  Default: "" (no
+     sound).
+
+-soundIcsUnfinished filename
+     This sound is played when an ICS game that you are participating
+     in is aborted, adjourned, or otherwise ends inconclusively.
+     Default: "" (no sound).
+
+     Here is an example of how to set the sounds in your `.Xresources'
+     file:
+
+          xboard*soundShout: shout.wav
+          xboard*soundSShout: sshout.wav
+          xboard*soundChannel1: channel1.wav
+          xboard*soundChannel: channel.wav
+          xboard*soundKibitz: kibitz.wav
+          xboard*soundTell: tell.wav
+          xboard*soundChallenge: challenge.wav
+          xboard*soundRequest: request.wav
+          xboard*soundSeek: seek.wav
+          xboard*soundMove: move.wav
+          xboard*soundIcsWin: win.wav
+          xboard*soundIcsLoss: lose.wav
+          xboard*soundIcsDraw: draw.wav
+          xboard*soundIcsUnfinished: unfinished.wav
+          xboard*soundIcsAlarm: alarm.wav
+
+
+File: xboard.info,  Node: Load and Save options,  Next: User interface options,  Prev: ICS options,  Up: Options
+
+3.4 Load and Save options
+=========================
+
+-lgf or -loadGameFile file
+-lgi or -loadGameIndex index
+     If the `loadGameFile' option is set, XBoard loads the specified
+     game file at startup. The file name `-' specifies the standard
+     input. If there is more than one game in the file, XBoard pops up
+     a menu of the available games, with entries based on their PGN
+     (Portable Game Notation) tags.  If the `loadGameIndex' option is
+     set to `N', the menu is suppressed and the N th game found in the
+     file is loaded immediately.  The menu is also suppressed if
+     `matchMode' is enabled or if the game file is a pipe; in these
+     cases the first game in the file is loaded immediately.  Use the
+     `pxboard' shell script provided with XBoard if you want to pipe in
+     files containing multiple games and still see the menu.  If the
+     loadGameIndex specifies an index -1, this triggers auto-increment
+     of the index in `matchMode', which means that after every game the
+     index is incremented by one, causing each game of the match to be
+     played from the next game in the file. Similarly, specifying an
+     index value of -2 causes the index to be incremented every two
+     games, so that each game in the file is used twice (with reversed
+     colors).  The `rewindIndex' option causes the index to be reset to
+     the first game of the file when it has reached a specified value.
+
+-rewindIndex n
+     Causes a position file or game file to be rewound to its beginning
+     after n positions or games in auto-increment `matchMode'.  See
+     `loadPositionIndex' and `loadGameIndex'.  default: 0 (no rewind).
+
+-td or -timeDelay seconds
+     Time delay between moves during `Load Game'. Fractional seconds
+     are allowed; try `-td 0.4'. A time delay value of -1 tells XBoard
+     not to step through game files automatically. Default: 1 second.
+
+-sgf or -saveGameFile file
+     If this option is set, XBoard appends a record of every game
+     played to the specified file. The file name `-' specifies the
+     standard output.
+
+-autosave/-xautosave or -autoSaveGames true/false
+     Sets the Auto Save menu option.  *Note Options Menu::.  Default:
+     false.  Ignored if `saveGameFile' is set.
+
+-lpf or -loadPositionFile file
+-lpi or -loadPositionIndex index
+     If the `loadPositionFile' option is set, XBoard loads the
+     specified position file at startup. The file name `-' specifies the
+     standard input. If the `loadPositionIndex' option is set to N, the
+     Nth position found in the file is loaded; otherwise the first
+     position is loaded.  If the loadPositionIndex specifies an index
+     -1, this triggers auto-increment of the index in `matchMode',
+     which means that after every game the index is incremented by one,
+     causing each game of the match to be played from the next position
+     in the file. Similarly, specifying an index value of -2 causes the
+     index to be incremented every two games, so that each position in
+     the file is used twice (with the engines playing opposite colors).
+     The `rewindIndex' option causes the index to be reset to the first
+     position of the file when it has reached a specified value.
+
+-spf or -savePositionFile file
+     If this option is set, XBoard appends the final position reached
+     in every game played to the specified file. The file name `-'
+     specifies the standard output.
+
+-pgnExtendedInfo true/false
+     If this option is set, XBoard saves depth, score and time used for
+     each move that the engine found as a comment in the PGN file.
+     Default: false.
+
+-pgnEventHeader string
+     Sets the name used in the PGN event tag to string.  Default:
+     "Computer Chess Game".
+
+-saveOutOfBookInfo true/false
+     Include the information on how the engine(s) game out of its
+     opening book in a special 'annotator' tag with the PGN file.
+
+-oldsave/-xoldsave or -oldSaveStyle true/false
+     Sets the Old Save Style menu option.  *Note Options Menu::.
+     Default: false.
+
+-gameListTags string
+     The character string lists the PGN tags that should be printed in
+     the Game List, and their order. The meaning of the codes is
+     e=event, s=site, d=date, o=round, p=players, r=result, w=white
+     Elo, b=black Elo, t=time control, v=variant, a=out-of-book info.
+     Default: "eprd"
+
+
+File: xboard.info,  Node: User interface options,  Next: Adjudication Options,  Prev: Load and Save options,  Up: Options
+
+3.5 User interface options
+==========================
+
+-display
+-geometry
+-iconic
+     These and most other standard Xt options are accepted.
+
+-noGUI
+     Suppresses all GUI functions of XBoard (to speed up automated
+     ultra-fast engine-engine games, which you don’t want to watch).
+     There will be no board or clock updates, no printing of moves, and
+     no update of the icon on the task bar in this mode.
+
+-movesound/-xmovesound or -ringBellAfterMoves true/false
+     Sets the Move Sound menu option.  *Note Options Menu::.  Default:
+     false.  For compatibility with old XBoard versions, -bell/-xbell
+     are also accepted as abbreviations for this option.
+
+-exit/-xexit or -popupExitMessage true/false
+     Sets the Popup Exit Message menu option.  *Note Options Menu::.
+     Default: true.
+
+-popup/-xpopup or -popupMoveErrors true/false
+     Sets the Popup Move Errors menu option.  *Note Options Menu::.
+     Default: false.
+
+-queen/-xqueen or -alwaysPromoteToQueen true/false
+     Sets the Always Queen menu option.  *Note Options Menu::.
+     Default: false.
+
+-legal/-xlegal or -testLegality true/false
+     Sets the Test Legality menu option.  *Note Options Menu::.
+     Default: true.
+
+-size or -boardSize (sizeName | n1,n2,n3,n4,n5,n6,n7)
+     Determines how large the board will be, by selecting the pixel size
+     of the pieces and setting a few related parameters.  The sizeName
+     can be one of: Titanic, giving 129x129 pixel pieces, Colossal
+     116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky
+     72x72, Medium 64x64, Moderate 58x58, Average 54x54, Middling
+     49x49, Mediocre 45x45, Small 40x40, Slim 37x37, Petite 33x33,
+     Dinky 29x29, Teeny 25x25, or Tiny 21x21.  Pieces of all these
+     sizes are built into XBoard.  Other sizes can be used if you have
+     them; see the pixmapDirectory and bitmapDirectory options.  The
+     default depends on the size of your screen; it is approximately the
+     largest size that will fit without clipping.
+
+     You can select other sizes or vary other layout parameters by
+     providing a list of comma-separated values (with no spaces) as the
+     argument.  You do not need to provide all the values; for any you
+     omit from the end of the list, defaults are taken from the nearest
+     built-in size.  The value `n1' gives the piece size, `n2' the
+     width of the black border between squares, `n3' the desired size
+     for the clockFont, `n4' the desired size for the coordFont, `n5'
+     the desired size for the default font, `n6' the smallLayout flag
+     (0 or 1), and `n7' the tinyLayout flag (0 or 1).  All dimensions
+     are in pixels.  If the border between squares is eliminated (0
+     width), the various highlight options will not work, as there is
+     nowhere to draw the highlight.  If smallLayout is 1 and
+     `titleInWindow' is true, the window layout is rearranged to make
+     more room for the title.  If tinyLayout is 1, the labels on the
+     menu bar are abbreviated to one character each and the buttons in
+     the button bar are made narrower.
+
+-coords/-xcoords or -showCoords true/false
+     Sets the Show Coords menu option.  *Note Options Menu::.  Default:
+     false.  The `coordFont' option specifies what font to use.
+
+-autoraise/-xautoraise or -autoRaiseBoard true/false
+     Sets the Auto Raise Board menu option.  *Note Options Menu::.
+     Default: true.
+
+-autoflip/-xautoflip or -autoFlipView true/false
+     Sets the Auto Flip View menu option.  *Note Options Menu::.
+     Default: true.
+
+-flip/-xflip or -flipView true/false
+     If Auto Flip View is not set, or if you are observing but not
+     participating in a game, then the positioning of the board at the
+     start of each game depends on the flipView option.  If flipView is
+     false (the default), the board is positioned so that the white
+     pawns move from the bottom to the top; if true, the black pawns
+     move from the bottom to the top.  In any case, the Flip menu
+     option (see *note Options Menu::) can be used to flip the board
+     after the game starts.
+
+-title/-xtitle or -titleInWindow true/false
+     If this option is true, XBoard displays player names (for ICS
+     games) and game file names (for `Load Game') inside its main
+     window. If the option is false (the default), this information is
+     displayed only in the window banner. You probably won't want to
+     set this option unless the information is not showing up in the
+     banner, as happens with a few X window managers.
+
+-buttons/-xbuttons or -showButtonBar True/False
+     If this option is False, xboard omits the [<<] [<] [P] [>] [>>]
+     button bar from the window, allowing the message line to be wider.
+     You can still get the functions of these buttons using the menus
+     or their keyboard shortcuts.  Default: true.
+
+-mono/-xmono or -monoMode true/false
+     Determines whether XBoard displays its pieces and squares with two
+     colors (true) or four (false). You shouldn't have to specify
+     `monoMode'; XBoard will determine if it is necessary.
+
+-flashCount count
+-flashRate rate
+-flash/-xflash
+     These options enable flashing of pieces when they land on their
+     destination square.  `flashCount' tells XBoard how many times to
+     flash a piece after it lands on its destination square.
+     `flashRate' controls the rate of flashing (flashes/sec).
+     Abbreviations: `flash' sets flashCount to 3.  `xflash' sets
+     flashCount to 0.  Defaults:  flashCount=0 (no flashing),
+     flashRate=5.
+
+-highlight/-xhighlight or -highlightLastMove true/false
+     Sets the Highlight Last Move menu option. *Note Options Menu::.
+     Default: false.
+
+-blind/-xblind or -blindfold true/false
+     Sets the Blindfold menu option.  *Note Options Menu::.  Default:
+     false.
+
+-clockFont font
+     The font used for the clocks. If the option value is a pattern
+     that does not specify the font size, XBoard tries to choose an
+     appropriate font for the board size being used.  Default:
+     -*-helvetica-bold-r-normal-*-*-*-*-*-*-*-*.
+
+-coordFont font
+     The font used for rank and file coordinate labels if `showCoords'
+     is true. If the option value is a pattern that does not specify
+     the font size, XBoard tries to choose an appropriate font for the
+     board size being used.  Default:
+     -*-helvetica-bold-r-normal-*-*-*-*-*-*-*-*.
+
+-font font
+     The font used for popup dialogs, menus, comments, etc.  If the
+     option value is a pattern that does not specify the font size,
+     XBoard tries to choose an appropriate font for the board size
+     being used.  Default: -*-helvetica-medium-r-normal-*-*-*-*-*-*-*-*.
+
+-fontSizeTolerance tol
+     In the font selection algorithm, a nonscalable font will be
+     preferred over a scalable font if the nonscalable font's size
+     differs by `tol' pixels or less from the desired size.  A value of
+     -1 will force a scalable font to always be used if available; a
+     value of 0 will use a nonscalable font only if it is exactly the
+     right size; a large value (say 1000) will force a nonscalable font
+     to always be used if available.  Default: 4.
+
+-bm or -bitmapDirectory dir
+-pixmap or -pixmapDirectory dir
+     These options control what piece images xboard uses.  The XBoard
+     distribution includes one set of pixmap pieces in xpm format, in
+     the directory `pixmaps', and one set of bitmap pieces in xbm
+     format, in the directory `bitmaps'.  Pixmap pieces give a better
+     appearance on the screen: the white pieces have dark borders, and
+     the black pieces have opaque internal details.  With bitmaps,
+     neither piece color has a border, and the internal details are
+     transparent; you see the square color or other background color
+     through them.
+
+     If XBoard is configured and compiled on a system that includes
+     libXpm, the X pixmap library, the xpm pixmap pieces are compiled
+     in as the default.  A different xpm piece set can be selected at
+     runtime with the `pixmapDirectory' option, or a bitmap piece set
+     can be selected with the `bitmapDirectory' option.
+
+     If XBoard is configured and compiled on a system that does not
+     include libXpm (or the `--disable-xpm' option is given to the
+     configure program), the bitmap pieces are compiled in as the
+     default.  It is not possible to use xpm pieces in this case, but
+     pixmap pieces in another format called "xim" can be used by giving
+     the `pixmapDirectory' option.  Or again, a different bitmap piece
+     set can be selected with the `bitmapDirectory' option.
+
+     Files in the `bitmapDirectory' must be named as follows: The first
+     character of a piece bitmap name gives the piece it represents
+     (`p', `n', `b', `r', `q', or `k'), the next characters give the
+     size in pixels, the following character indicates whether the
+     piece is solid or outline (`s' or `o'), and the extension is `.bm'.
+     For example, a solid 80x80 knight would be named `n80s.bm'.  The
+     outline bitmaps are used only in monochrome mode.  If bitmap
+     pieces are compiled in and the bitmapDirectory is missing some
+     files, the compiled in pieces are used instead.
+
+     If the bitmapDirectory option is given, it is also possible to
+     replace xboard's icons and menu checkmark, by supplying files
+     named `icon_white.bm', `icon_black.bm', and `checkmark.bm'.
+
+     For more information about pixmap pieces and how to get additional
+     sets, see *note zic2xpm:: below.
+
+-whitePieceColor color
+-blackPieceColor color
+-lightSquareColor color
+-darkSquareColor color
+-highlightSquareColor color
+-lowTimeWarningColor color
+     Colors to use for the pieces, squares, and square highlights.
+     Defaults:
+
+          -whitePieceColor       #FFFFCC
+          -blackPieceColor       #202020
+          -lightSquareColor      #C8C365
+          -darkSquareColor       #77A26D
+          -highlightSquareColor  #FFFF00
+          -premoveHighlightColor #FF0000
+          -lowTimeWarningColor   #FF0000
+
+     On a grayscale monitor you might prefer:
+
+          -whitePieceColor       gray100
+          -blackPieceColor       gray0
+          -lightSquareColor      gray80
+          -darkSquareColor       gray60
+          -highlightSquareColor  gray100
+          -premoveHighlightColor gray70
+          -lowTimeWarningColor   gray70
+
+-drag/-xdrag or -animateDragging true/false
+     Sets the Animate Dragging menu option. *Note Options Menu::.
+     Default: true.
+
+-animate/-xanimate or -animateMoving true/false
+     Sets the Animate Moving menu option. *Note Options Menu::.
+     Default: true.
+
+-animateSpeed n
+     Number of milliseconds delay between each animation frame when
+     Animate Moves is on.
+
+-autoDisplayComment true/false
+-autoDisplayTags true/false
+     If set to true, these options cause the window with the move
+     comments, and the window with PGN tags, respectively, to pop up
+     automatically when such tags or comments are encountered during
+     the replaying a stored or loaded game.  Default: true.
+
+-pasteSelection true/false
+     If this option is set to true, the Paste Position and Paste Game
+     options paste from the currently selected text.  If false, they
+     paste from the clipboard.  Default: false.
+
+
+File: xboard.info,  Node: Adjudication Options,  Next: Other options,  Prev: User interface options,  Up: Options
+
+3.6 Adjudication Options
+========================
+
+-adjudicateLossThreshold n
+     If the given value is non-zero, XBoard adjudicates the game as a
+     loss if both engines agree for a duration of 6 consecutive ply
+     that the score is below the given score threshold for that engine.
+     Make sure the score is interpreted properly by XBoard, using
+     `-firstScoreAbs' and `-secondScoreAbs' if needed.  Default: 0 (no
+     adjudication)
+
+-adjudicateDrawMoves n
+     If the given value is non-zero, XBoard adjudicates the game as a
+     draw if after the given number of moves it was not yet decided.
+     Default: 0 (no adjudication)
+
+-checkMates true/false
+     If this option is set, XBoard detects all checkmates and
+     stalemates, and ends the game as soon as they occur.
+     Legality-testing must be switched on for this option to work.
+     Default: true
+
+-testClaims true/false
+     If this option is set, XBoard verifies all result claims made by
+     engines, and those who send false claims will forfeit the game
+     because of it.  Legality-testing must be switched on for this
+     option to work. Default: true
+
+-materialDraws true/false
+     If this option is set, XBoard adjudicates games as draws when
+     there is no sufficient material left to inflict a checkmate.  This
+     applies to KBKB with like bishops (any number, actually), and to
+     KBK, KNK and KK.  Legality-testing must be switched on for this
+     option to work. Default: true
+
+-trivialDraws true/false
+     If this option is set, XBoard adjudicates games as draws that
+     cannot be usually won without opponent cooperation. This applies
+     to KBKB with unlike bishops, and to KBKN, KNKN, KNNK, KRKR and
+     KQKQ. The draw is called after 6 ply into these end-games, to
+     allow quick mates that can occur in some exceptional positions to
+     be found by the engines.  KQKQ does not really belong in this
+     category, and might be taken out in the future.  (When
+     bitbase-based adjudications are implemented.)  Legality-testing
+     must be on for this option to work. Default: false
+
+-ruleMoves n
+     If the given value is non-zero, XBoard adjudicates the game as a
+     draw after the given number of consecutive reversible moves.
+     Engine draw claims are always accepted after 50 moves,
+     irrespective of the given value of n.
+
+-repeatsToDraw n
+     If the given value is non-zero, xboard adjudicates the game as a
+     draw if a position is repeated the given number of times. Engines
+     draw claims are always accepted after 3 repeats, (on the 3rd
+     occurrence, actually), irrespective of the value of n.  Beware
+     that positions that have different castling or en-passant rights
+     do not count as repeats, XBoard is fully e.p. and castling aware!
+
+
+File: xboard.info,  Node: Other options,  Prev: Adjudication Options,  Up: Options
+
+3.7 Other options
+=================
+
+-ncp/-xncp or -noChessProgram true/false
+     If this option is true, XBoard acts as a passive chessboard; it
+     does not start a chess engine at all. Turning on this option also
+     turns off clockMode. Default: false.
+
+-mode or -initialMode modename
+     If this option is given, XBoard selects the given modename from
+     the Mode menu after starting and (if applicable) processing the
+     loadGameFile or loadPositionFile option. Default: "" (no
+     selection).  Other supported values are MachineWhite,
+     MachineBlack, TwoMachines, Analysis, AnalyzeFile, EditGame,
+     EditPosition, and Training.
+
+-variant varname
+     Activates preliminary, partial support for playing chess variants
+     against a local engine or editing variant games.  This flag is not
+     needed in ICS mode.  Recognized variant names are:
+
+          normal        Normal chess
+          wildcastle    Shuffle chess, king can castle from d file
+          nocastle      Shuffle chess, no castling allowed
+          fischerandom  Fischer Random shuffle chess
+          bughouse      Bughouse, ICC/FICS rules
+          crazyhouse    Crazyhouse, ICC/FICS rules
+          losers        Lose all pieces or get mated (ICC wild 17)
+          suicide       Lose all pieces including king (FICS)
+          giveaway      Try to have no legal moves (ICC wild 26)
+          twokings      Weird ICC wild 9
+          kriegspiel    Opponent's pieces are invisible
+          atomic        Capturing piece explodes (ICC wild 27)
+          3check        Win by giving check 3 times (ICC wild 25)
+          shatranj      An ancient precursor of chess (ICC wild 28)
+          xiangqi       Chinese Chess (on a 9x10 board)
+          shogi         Japanese Chess (on a 9x9 board & piece drops)
+          capablanca    Capablanca Chess (10x8 board, with Archbishop
+                        and Chancellor pieces)
+          gothic        similar, with a better initial position
+          caparandom    An FRC-like version of Capablanca Chess (10x8)
+          janus         A game with two Archbishops (10x8 board)
+          courier       Medieval intermediate between shatranj and
+                        modern Chess (on 12x8 board)
+          falcon        Patented 10x8 variant with two Falcon pieces
+          berolina      Pawns capture straight ahead, and move diagonal
+          cylinder      Pieces wrap around the board edge
+          knightmate    King moves as Knight, and vice versa
+          super         Superchess (shuffle variant with 4 exo-pieces)
+          fairy         A catchall variant in which all piece types
+                        known to XBoard can participate (8x8)
+          unknown       Catchall for other unknown variants
+
+     NOT ALL BOARDSIZES PROVIDE A COMPLETE SET OF BUILT-IN BITMAPS FOR
+     ALL UN-ORTHODOX PIECES, though. Only in `boardSize' middling and
+     bulky all 22 piece types are provided, while -boardSize petite has
+     most of them. Archbishop, Chancellor and Amazon are supported in
+     every size from petite to bulky. Kings or Amazons are substituted
+     for missing bitmaps. You can still play variants needing
+     un-orthodox pieces in other board sizes providing your own bitmaps
+     through the `bitmapDirectory' or `pixmapDirectory' options.
+
+     In the shuffle variants, XBoard now does shuffle the pieces,
+     although you can still do it by hand using Edit Position.  Some
+     variants are supported only in ICS mode, including bughouse, and
+     kriegspiel.  The winning/drawing conditions in crazyhouse
+     (off-board interposition on mate) are not fully understood, but
+     losers, suicide, giveaway, atomic, and 3check should be OK.
+     Berolina and cylinder chess can only be played with legality
+     testing off.  In crazyhouse, XBoard now does keep track of
+     off-board pieces.  In shatranj it does implement the baring rule
+     when mate detection is switched on.
+
+-boardHeight N
+     Allows you to set a non-standard number of board ranks in any
+     variant.  If the height is given as -1, the default height for the
+     variant is used.  Default: -1
+
+-boardWidth N
+     Allows you to set a non-standard number of board files in any
+     variant.  If the width is given as -1, the default width for the
+     variant is used.  With a non-standard width, the initial position
+     will always be an empty board, as the usual opening array will not
+     fit.  Default: -1
+
+-holdingsSize N
+     Allows you to set a non-standard size for the holdings in any
+     variant.  If the size is given as -1, the default holdings size
+     for the variant is used.  The first N piece types will go into the
+     holdings on capture, and you will be able to drop them on the
+     board in stead of making a normal move. If size equals 0, there
+     will be no holdings.  Default: -1
+
+-defaultFrcPosition N
+     Specifies the number of the opening position in shuffle games like
+     Chess960.  A value of -1 means the position is randomly generated
+     by XBoard at the beginning of every game.  Default: -1
+
+-pieceToSquareTable string
+     The characters that are used to represent the piece types XBoard
+     knows in FEN diagrams and SAN moves. The string argument has to
+     have an even length (or it will be ignored), as white and black
+     pieces have to be given separately (in that order). The last
+     letter for each color will be the King.  The letters before that
+     will be PNBRQ and then a whole host of fairy pieces in an order
+     that has not fully crystallized yet (currently FEACWMOHIJGDVSLU,
+     F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner,
+     O=Cannon, H=Nightrider). You should list at least all pieces that
+     occur in the variant you are playing. If you have less than 44
+     characters in the string, the pieces not mentioned will get
+     assigned a period, and you will not be able to distinguish them in
+     FENs. You can also explicitly assign pieces a period, in which
+     case they will not be counted in deciding which captured pieces
+     can go into the holdings.  A tilde '~' as a piece name does mean
+     this piece is used to represent a promoted Pawn in crazyhouse-like
+     games, i.e. on capture it turns back onto a Pawn.  A '+' similarly
+     indicates the piece is a shogi-style promoted piece, that should
+     revert to its non-promoted version on capture (rather than to a
+     Pawn).  Note that promoted pieces are represented by pieces 11
+     further in the list.  You should not have to use this option
+     often: each variant has its own default setting for the piece
+     representation in FEN, which should be sufficient in normal use.
+     Default: ""
+
+-debug/-xdebug or -debugMode true/false
+     Turns on debugging printout.
+
+-debugFile filename or -nameOfDebugFile filename
+     Sets the name of the file to which XBoard saves debug information
+     (including all communication to and from the engines).
+
+-engineDebugOutput number
+     Specifies how XBoard should handle unsolicited output from the
+     engine, with respect to saving it in the debug file.  The output
+     is further (hopefully) ignored.  If number=0, XBoard refrains from
+     writing such spurious output to the debug file.  If number=1, all
+     engine output is written faithfully to the debug file.  If
+     number=2, any protocol-violating line is prefixed with a '#'
+     character, as the engine itself should have done if it wanted to
+     submit info for inclusion in the debug file.  This option is
+     provided for the benefit of applications that use the debug file
+     as a source of information, such as the broadcaster of live games
+     TLCV / TLCS.  Such applications can be protected from spurious
+     engine output that might otherwise confuse them.
+
+-rsh or -remoteShell shell-name
+     Name of the command used to run programs remotely. The default is
+     `rsh' or `remsh', determined when XBoard is configured and
+     compiled.
+
+-ruser or -remoteUser user-name
+     User name on the remote system when running programs with the
+     `remoteShell'. The default is your local user name.
+
+-userName username
+     Name under which the Human player will be listed in the PGN file.
+     Default is the login name on your local computer.
+
+-delayBeforeQuit number
+-delayAfterQuit number
+     These options specify how long XBoard has to wait before sending a
+     termination signal to rogue engine processes, that do not want to
+     react to the 'quit' command. The second one determines the pause
+     after killing the engine, to make sure it dies.
+
+
+
+File: xboard.info,  Node: Chess Servers,  Next: Firewalls,  Prev: Options,  Up: Top
+
+4 Chess Servers
+***************
+
+An "Internet Chess Server", or "ICS", is a place on the Internet where
+people can get together to play chess, watch other people's games, or
+just chat.  You can use either `telnet' or a client program like XBoard
+to connect to the server.  There are thousands of registered users on
+the different ICS hosts, and it is not unusual to meet 200 on both
+chessclub.com and freechess.org.
+
+   Most people can just type `xboard -ics' to start XBoard as an ICS
+client.  Invoking XBoard in this way connects you to the Internet Chess
+Club (ICC), a commercial ICS.  You can log in there as a guest even if
+you do not have a paid account.  To connect to the largest Free ICS
+(FICS), use the command `xboard -ics -icshost freechess.org' instead,
+or substitute a different host name to connect to your favorite ICS.
+For a full description of command-line options that control the
+connection to ICS and change the default values of ICS options, see
+*note ICS options::.
+
+   While you are running XBoard as an ICS client, you use the terminal
+window that you started XBoard from as a place to type in commands and
+read information that is not available on the chessboard.
+
+   The first time you need to use the terminal is to enter your login
+name and password, if you are a registered player. (You don't need to do
+this manually; the `icsLogon' option can do it for you.  *note ICS
+options::.)  If you are not registered, enter `g' as your name, and the
+server will pick a unique guest name for you.
+
+   Some useful ICS commands include
+`help <topic>'
+     to get help on the given <topic>. To get a list of possible topics
+     type "help" without topic.  Try the help command before you ask
+     other people on the server for help.
+
+     For example `help register' tells you how to become a registered
+     ICS player.
+
+`who <flags>'
+     to see a list of people who are logged on.  Administrators (people
+     you should talk to if you have a problem) are marked with the
+     character `*', an asterisk. The <flags> allow you to display only
+     selected players: For example, `who of' shows a list of players
+     who are interested in playing but do not have an opponent.
+
+`games'
+     to see what games are being played
+
+`match <player> [<mins>] [<inc>]'
+     to challenge another player to a game. Both opponents get <mins>
+     minutes for the game, and <inc> seconds will be added after each
+     move.  If another player challenges you, the server asks if you
+     want to accept the challenge; use the `accept' or `decline'
+     commands to answer.
+
+`accept'
+`decline'
+     to accept or decline another player's offer.  The offer may be to
+     start a new game, or to agree to a `draw', `adjourn' or `abort'
+     the current game. *Note Action Menu::.
+
+     If you have more than one pending offer (for example, if more than
+     one player is challenging you, or if your opponent offers both a
+     draw and to adjourn the game), you have to supply additional
+     information, by typing something like `accept <player>', `accept
+     draw', or `draw'.
+
+`draw'
+`adjourn'
+`abort'
+     asks your opponent to terminate a game by mutual agreement.
+     Adjourned games can be continued later.  Your opponent can either
+     `decline' your offer or accept it (by typing the same command or
+     typing `accept').  In some cases these commands work immediately,
+     without asking your opponent to agree.  For example, you can abort
+     the game unilaterally if your opponent is out of time, and you can
+     claim a draw by repetition or the 50-move rule if available simply
+     by typing `draw'.
+
+`finger <player>'
+     to get information about the given <player>. (Default: yourself.)
+
+`vars'
+     to get a list of personal settings
+
+`set <var> <value>'
+     to modify these settings
+
+`observe <player>'
+     to observe an ongoing game of the given <player>.
+
+`examine'
+`oldmoves'
+     to review a recently completed game
+
+   Some special XBoard features are activated when you are in examine
+mode on ICS.  See the descriptions of the menu commands `Forward',
+`Backward', `Pause', `ICS Client', and `Stop Examining' on the *note
+Step Menu::, *note Mode Menu::, and *note Options Menu::.
+
+
+File: xboard.info,  Node: Firewalls,  Next: Environment,  Prev: Chess Servers,  Up: Top
+
+5 Firewalls
+***********
+
+By default, XBoard communicates with an Internet Chess Server by
+opening a TCP socket directly from the machine it is running on to the
+ICS. If there is a firewall between your machine and the ICS, this
+won't work. Here are some recipes for getting around common kinds of
+firewalls using special options to XBoard.  Important: See the
+paragraph in the below about extra echoes, in *note Limitations::.
+
+   Suppose that you can't telnet directly to ICS, but you can telnet to
+a firewall host, log in, and then telnet from there to ICS.  Let's say
+the firewall is called `firewall.example.com'. Set command-line options
+as follows:
+
+     xboard -ics -icshost firewall.example.com -icsport 23
+   Or in your `.Xresources' file:
+
+     XBoard*internetChessServerHost: firewall.example.com
+     XBoard*internetChessServerPort: 23
+   Then when you run XBoard in ICS mode, you will be prompted to log in
+to the firewall host. This works because port 23 is the standard telnet
+login service. Do so, then telnet to ICS, using a command like `telnet
+chessclub.com 5000', or whatever command the firewall provides for
+telnetting to port 5000.
+
+   If your firewall lets you telnet (or rlogin) to remote hosts but
+doesn't let you telnet to port 5000, you may be able to connect to the
+chess server on port 23 instead, which is the port the telnet program
+uses by default.  Some chess servers support this (including
+chessclub.com and freechess.org), while some do not.
+
+   If your chess server does not allow connections on port 23 and your
+firewall does not allow you to connect to other ports, you may be able
+to connect by hopping through another host outside the firewall that
+you have an account on.  For instance, suppose you have a shell account
+at `foo.edu'. Follow the recipe above, but instead of typing `telnet
+chessclub.com 5000' to the firewall, type `telnet foo.edu' (or `rlogin
+foo.edu'), log in there, and then type `telnet chessclub.com 5000'.
+
+   Suppose that you can't telnet directly to ICS, but you can use rsh
+to run programs on a firewall host, and that host can telnet to ICS.
+Let's say the firewall is called `rsh.example.com'. Set command-line
+options as follows:
+
+     xboard -ics -gateway rsh.example.com -icshost chessclub.com
+
+Or in your `.Xresources' file:
+
+     XBoard*gateway: rsh.example.com
+     XBoard*internetChessServerHost: chessclub.com
+
+   Then when you run XBoard in ICS mode, it will connect to the ICS by
+using `rsh' to run the command `telnet chessclub.com 5000' on host
+`rsh.example.com'.
+
+   Suppose that you can telnet anywhere you want, but you have to run a
+special program called `ptelnet' to do so.
+
+   First, we'll consider the easy case, in which `ptelnet chessclub.com
+5000' gets you to the chess server.  In this case set command line
+options as follows:
+
+     xboard -ics -telnet -telnetProgram ptelnet
+
+Or in your `.Xresources' file:
+
+     XBoard*useTelnet: true
+     XBoard*telnetProgram: ptelnet
+
+Then when you run XBoard in ICS mode, it will issue the command
+`ptelnet chessclub.com 5000' to connect to the ICS.
+
+   Next, suppose that `ptelnet chessclub.com 5000' doesn't work; that
+is, your `ptelnet' program doesn't let you connect to alternative
+ports. As noted above, your chess server may allow you to connect on
+port 23 instead.  In that case, just add the option `-icsport ""' to
+the above command, or add `XBoard*internetChessServerPort:' to your
+`.Xresources' file.  But if your chess server doesn't let you connect
+on port 23, you will have to find some other host outside the firewall
+and hop through it. For instance, suppose you have a shell account at
+`foo.edu'. Set command line options as follows:
+
+     xboard -ics -telnet -telnetProgram ptelnet -icshost foo.edu -icsport ""
+
+Or in your `.Xresources' file:
+
+     XBoard*useTelnet: true
+     XBoard*telnetProgram: ptelnet
+     XBoard*internetChessServerHost: foo.edu
+     XBoard*internetChessServerPort:
+
+Then when you run XBoard in ICS mode, it will issue the command
+`ptelnet foo.edu' to connect to your account at `foo.edu'. Log in
+there, then type `telnet chessclub.com 5000'.
+
+   ICC timestamp and FICS timeseal do not work through some firewalls.
+You can use them only if your firewall gives a clean TCP connection
+with a full 8-bit wide path.  If your firewall allows you to get out
+only by running a special telnet program, you can't use timestamp or
+timeseal across it.  But if you have access to a computer just outside
+your firewall, and you have much lower netlag when talking to that
+computer than to the ICS, it might be worthwhile running timestamp
+there.  Follow the instructions above for hopping through a host
+outside the firewall (foo.edu in the example), but run timestamp or
+timeseal on that host instead of telnet.
+
+   Suppose that you have a SOCKS firewall that will give you a clean
+8-bit wide TCP connection to the chess server, but only after you
+authenticate yourself via the SOCKS protocol.  In that case, you could
+make a socksified version of XBoard and run that.  If you are using
+timestamp or timeseal, you will to socksify it, not XBoard; this may be
+difficult seeing that ICC and FICS do not provide source code for these
+programs.  Socksification is beyond the scope of this document, but see
+the SOCKS Web site at http://www.socks.permeo.com/.  If you are missing
+SOCKS, try http://www.funbureau.com/.
+
+
+File: xboard.info,  Node: Environment,  Next: Limitations,  Prev: Firewalls,  Up: Top
+
+6 Environment variables
+***********************
+
+Game and position files are found in a directory named by the
+`CHESSDIR' environment variable. If this variable is not set, the
+current working directory is used. If `CHESSDIR' is set, XBoard
+actually changes its working directory to `$CHESSDIR', so any files
+written by the chess engine will be placed there too.
+
+
+File: xboard.info,  Node: Limitations,  Next: Problems,  Prev: Environment,  Up: Top
+
+7 Limitations and known bugs
+****************************
+
+There is no way for two people running copies of XBoard to play each
+other without going through an Internet Chess Server.
+
+   Under some circumstances, your ICS password may be echoed when you
+log on.
+
+   If you are connecting to the ICS by running telnet on an Internet
+provider or firewall host, you may find that each line you type is
+echoed back an extra time after you hit <Enter>. If your Internet
+provider is a Unix system, you can probably turn its echo off by typing
+`stty -echo' after you log in, and/or typing <^E><Enter> (Ctrl+E
+followed by the Enter key) to the telnet program after you have logged
+into ICS.  It is a good idea to do this if you can, because the extra
+echo can occasionally confuse XBoard's parsing routines.
+
+   The game parser recognizes only algebraic notation.
+
+   Many of the following points used to be limitations in XBoard 4.2.7
+and earlier, but are now fixed: The internal move legality tester in
+XBoard 4.3.xx does look at the game history, and is fully aware of
+castling or en-passant-capture rights. It permits castling with the
+king on the d file because this is possible in some "wild 1" games on
+ICS.  The piece-drop menu does not check piece drops in bughouse to see
+if you actually hold the piece you are trying to drop. But this way of
+dropping pieces should be considered an obsolete feature, now that
+pieces can be dropped by dragging them from the holdings to the board.
+Anyway, if you would attempt an illegal move when using a chess engine
+or the ICS, XBoard will accept the error message that comes back, undo
+the move, and let you try another.  FEN positions saved by XBoard do
+include correct information about whether castling or en passant are
+legal, and also handle the 50-move counter.  The mate detector does not
+understand that non-contact mate is not really mate in bughouse.  The
+only problem this causes while playing is minor: a "#" (mate indicator)
+character will show up after a non-contact mating move in the move
+list. XBoard will not assume the game is over at that point, not even
+when the option Detect Mates is on.  Edit Game mode always uses the
+rules of the selected variant, which can be a variant that uses piece
+drops.  You can load and edit games that contain piece drops.  The
+(obsolete) piece menus are not active, but you can perform piece drops
+by dragging pieces from the holdings.  Edit Position mode does not
+allow you to edit the crazyhouse holdings properly.  You cannot drag
+pieces to the holding, and using the popup menu to put pieces there
+does not adapt the holding counts and leads to an inconsistent state.
+Set up crazyhouse positions by loading / pasting a bFEN, from there you
+can set the holdings.  Fischer Random castling is fully understood.
+You can enter castlings by dragging the King on top of your Rook.  You
+can probably also play Fischer Random successfully on ICS by typing
+castling moves into the ICS Interaction window.
+
+   The menus may not work if your keyboard is in Caps Lock or Num Lock
+mode.  This seems to be a problem with the Athena menu widget, not an
+XBoard bug.
+
+   Also see the ToDo file included with the distribution for many other
+possible bugs, limitations, and ideas for improvement that have been
+suggested.
+
+
+File: xboard.info,  Node: Problems,  Next: Contributors,  Prev: Limitations,  Up: Top
+
+8 Reporting problems
+********************
+
+You can report bugs and problems with XBoard using the bug tracker at
+`https://savannah.gnu.org/projects/xboard/' or by sending mail to
+`<bug-xboard at gnu.org>'.  It can also be useful to report or discuss
+bugs in the WinBoard Forum at `http://www.open-aurec.com/wbforum/',
+WinBoard development section.
+
+   Please use the `script' program to start a typescript, run XBoard
+with the `-debug' option, and include the typescript output in your
+message.  Also tell us what kind of machine and what operating system
+version you are using.  The command `uname -a' will often tell you this.
+
+   If you improve XBoard, please send a message about your changes, and
+we will get in touch with you about merging them in to the main line of
+development.
+
+
+File: xboard.info,  Node: Contributors,  Next: CMail,  Prev: Problems,  Up: Top
+
+9 Authors and contributors
+**************************
+
+Chris Sears and Dan Sears wrote the original XBoard.  They were
+responsible for versions 1.0 through 1.2.  The color scheme was taken
+from Wayne Christopher's `XChess' program.
+
+   Tim Mann was primarily responsible for XBoard versions 1.3 through
+4.2.7, and for WinBoard (a port of XBoard to Microsoft Win32) from its
+inception through version 4.2.7.
+
+   John Chanak contributed the initial implementation of ICS mode.  Evan
+Welsh wrote `CMail', and Patrick Surry helped in designing, testing,
+and documenting it.  Elmar Bartel contributed the new piece bitmaps
+introduced in version 3.2.  Jochen Wiedmann converted the documentation
+to texinfo.  Frank McIngvale added click/click moving, the Analysis
+modes, piece flashing, ZIICS import, and ICS text colorization to
+XBoard.  Hugh Fisher added animated piece movement to XBoard, and
+Henrik Gram added it to WinBoard.  Mark Williams contributed the
+initial (WinBoard-only) implementation of many new features added to
+both XBoard and WinBoard in version 4.1.0, including copy/paste,
+premove, icsAlarm, autoFlipView, training mode, auto raise, and
+blindfold.  Ben Nye contributed X copy/paste code for XBoard.
+
+   In a fork from version 4.2.7, Alessandro Scotti added many elements
+to the user interface of WinBoard, including the board textures and
+font-based rendering, the evaluation-graph, move-history and
+engine-output window.  He was also responsible for adding the UCI
+support.
+
+   H. G. Muller continued this fork of the project, producing version
+4.3.  He made WinBoard castling- and e.p.-aware, added variant support
+with adjustable board sizes, the crazyhouse holdings, and the fairy
+pieces.  In addition he added most of the adjudication options, made
+WinBoard more robust in dealing with buggy and crashing engines, and
+extended time control with a time-odds and node-count-based modes.
+Most of the options that initially were WinBoard only have now been
+back-ported to XBoard.
+
+   Michel van den Bergh provided the code for reading Polyglot opening
+books.
+
+   Meanwhile, some work continued on the GNU XBoard project maintained
+at savannah.gnu.org, but version 4.2.8 was never released.  Daniel
+Mehrmann was responsible for much of this work.
+
+   Most recently, Arun Persaud worked with H. G. Muller to merge all
+the features of the never-released XBoard/WinBoard 4.2.8 of the GNU
+XBoard project and the never-released 4.3.16 from H. G.'s fork into a
+unified XBoard/WinBoard 4.4, which is now available both from the
+savannah.gnu.org web site and the WinBoard forum.
+
+
+File: xboard.info,  Node: CMail,  Next: Other programs,  Prev: Contributors,  Up: Top
+
+10 CMail
+********
+
+The `cmail' program can help you play chess by email with opponents of
+your choice using XBoard as an interface.
+
+   You will usually run `cmail' without giving any options.
+
+* Menu:
+
+* CMail options::    Invoking CMail.
+* CMail game::       Starting a CMail game.
+* CMail answer::     Answering a move.
+* CMail multi::      Multiple games in one message.
+* CMail completion:: Completing a game.
+* CMail trouble::    Known CMail problems.
+
+
+File: xboard.info,  Node: CMail options,  Next: CMail game,  Up: CMail
+
+10.1 CMail options
+==================
+
+-h
+     Displays `cmail' usage information.
+
+-c
+     Shows the conditions of the GNU General Public License.  *Note
+     Copying::.
+
+-w
+     Shows the warranty notice of the GNU General Public License.
+     *Note Copying::.
+
+-v
+-xv
+     Provides or inhibits verbose output from `cmail' and XBoard,
+     useful for debugging. The `-xv' form also inhibits the cmail
+     introduction message.
+
+-mail
+-xmail
+     Invokes or inhibits the sending of a mail message containing the
+     move.
+
+-xboard
+-xxboard
+     Invokes or inhibits the running of XBoard on the game file.
+
+-reuse
+-xreuse
+     Invokes or inhibits the reuse of an existing XBoard to display the
+     current game.
+
+-remail
+     Resends the last mail message for that game. This inhibits running
+     XBoard.
+
+-game <name>
+     The name of the game to be processed.
+
+-wgames <number>
+-bgames <number>
+-games <number>
+     Number of games to start as White, as Black or in total. Default
+     is 1 as white and none as black. If only one color is specified
+     then none of the other color is assumed. If no color is specified
+     then equal numbers of White and Black games are started, with the
+     extra game being as White if an odd number of total games is
+     specified.
+
+-me <short name>
+-opp <short name>
+     A one-word alias for yourself or your opponent.
+
+-wname <full name>
+-bname <full name>
+-name <full name>
+-oppname <full name>
+     The full name of White, Black, yourself or your opponent.
+
+-wna <net address>
+-bna <net address>
+-na <net address>
+-oppna <net address>
+     The email address of White, Black, yourself or your opponent.
+
+-dir <directory>
+     The directory in which `cmail' keeps its files. This defaults to
+     the environment variable `$CMAIL_DIR' or failing that, `$CHESSDIR',
+     `$HOME/Chess' or `~/Chess'. It will be created if it does not
+     exist.
+
+-arcdir <directory>
+     The directory in which `cmail' archives completed games. Defaults
+     to the environment variable `$CMAIL_ARCDIR' or, in its absence,
+     the same directory as cmail keeps its working files (above).
+
+-mailprog <mail program>
+     The program used by cmail to send email messages. This defaults to
+     the environment variable `$CMAIL_MAILPROG' or failing that
+     `/usr/ucb/Mail', `/usr/ucb/mail' or `Mail'. You will need to set
+     this variable if none of the above paths fit your system.
+
+-logFile <file>
+     A file in which to dump verbose debugging messages that are
+     invoked with the `-v' option.
+
+-event <event>
+     The PGN Event tag (default `Email correspondence game').
+
+-site <site>
+     The PGN Site tag (default `NET').
+
+-round <round>
+     The PGN Round tag (default `-', not applicable).
+
+-mode <mode>
+     The PGN Mode tag (default `EM', Electronic Mail).
+
+Other options
+     Any option flags not listed above are passed through to XBoard.
+     Invoking XBoard through CMail changes the default values of two
+     XBoard options: The default value for `-noChessProgram' is changed
+     to true; that is, by default no chess engine is started.  The
+     default value for `-timeDelay' is changed to 0; that is, by default
+     XBoard immediately goes to the end of the game as played so far,
+     rather than stepping through the moves one by one.  You can still
+     set these options to whatever values you prefer by supplying them
+     on CMail's command line.  *Note Options::.
+
+
+File: xboard.info,  Node: CMail game,  Next: CMail answer,  Prev: CMail options,  Up: CMail
+
+10.2 Starting a CMail Game
+==========================
+
+Type `cmail' from a shell to start a game as white. After an opening
+message, you will be prompted for a game name, which is optional--if you
+simply press <Enter>, the game name will take the form
+`you-VS-opponent'. You will next be prompted for the short name of your
+opponent. If you haven't played this person before, you will also be
+prompted for his/her email address. `cmail' will then invoke XBoard in
+the background. Make your first move and select `Mail Move' from the
+`File' menu. *Note File Menu::. If all is well, `cmail' will mail a
+copy of the move to your opponent. If you select `Exit' without having
+selected `Mail Move' then no move will be made.
+
+
+File: xboard.info,  Node: CMail answer,  Next: CMail multi,  Prev: CMail game,  Up: CMail
+
+10.3 Answering a Move
+=====================
+
+When you receive a message from an opponent containing a move in one of
+your games, simply pipe the message through `cmail'. In some mailers
+this is as simple as typing `| cmail' when viewing the message, while in
+others you may have to save the message to a file and do `cmail < file'
+at the command line. In either case `cmail' will display the game using
+XBoard. If you didn't exit XBoard when you made your first move then
+`cmail' will do its best to use the existing XBoard instead of starting
+a new one. As before, simply make a move and select `Mail Move' from
+the `File' menu. *Note File Menu::. `cmail' will try to use the XBoard
+that was most recently used to display the current game. This means
+that many games can be in progress simultaneously, each with its own
+active XBoard.
+
+   If you want to look at the history or explore a variation, go ahead,
+but you must return to the current position before XBoard will allow you
+to mail a move. If you edit the game's history you must select `Reload
+Same Game' from the `File' menu to get back to the original position,
+then make the move you want and select `Mail Move'.  As before, if you
+decide you aren't ready to make a move just yet you can either select
+`Exit' without sending a move or just leave XBoard running until you
+are ready.
+
+
+File: xboard.info,  Node: CMail multi,  Next: CMail completion,  Prev: CMail answer,  Up: CMail
+
+10.4 Multi-Game Messages
+========================
+
+It is possible to have a `cmail' message carry more than one game.
+This feature was implemented to handle IECG (International Email Chess
+Group) matches, where a match consists of one game as white and one as
+black, with moves transmitted simultaneously. In case there are more
+general uses, `cmail' itself places no limit on the number of
+black/white games contained in a message; however, XBoard does.
+
+
+File: xboard.info,  Node: CMail completion,  Next: CMail trouble,  Prev: CMail multi,  Up: CMail
+
+10.5 Completing a Game
+======================
+
+Because XBoard can detect checkmate and stalemate, `cmail' handles game
+termination sensibly. As well as resignation, the `Action' menu allows
+draws to be offered and accepted for `cmail' games.
+
+   For multi-game messages, only unfinished and just-finished games
+will be included in email messages. When all the games are finished,
+they are archived in the user's archive directory, and similarly in the
+opponent's when he or she pipes the final message through `cmail'. The
+archive file name includes the date the game was started.
+
+
+File: xboard.info,  Node: CMail trouble,  Prev: CMail completion,  Up: CMail
+
+10.6 Known CMail Problems
+=========================
+
+It's possible that a strange conjunction of conditions may occasionally
+mean that `cmail' has trouble reactivating an existing XBoard. If this
+should happen, simply trying it again should work.  If not, remove the
+file that stores the XBoard's PID (`game.pid') or use the `-xreuse'
+option to force `cmail' to start a new XBoard.
+
+   Versions of `cmail' after 2.16 no longer understand the old file
+format that XBoard used to use and so cannot be used to correspond with
+anyone using an older version.
+
+   Versions of `cmail' older than 2.11 do not handle multi-game
+messages, so multi-game correspondence is not possible with opponents
+using an older version.
+
+
+File: xboard.info,  Node: Other programs,  Next: Copyright,  Prev: CMail,  Up: Top
+
+11 Other programs you can use with XBoard
+*****************************************
+
+Here are some other programs you can use with XBoard
+
+* Menu:
+
+* GNU Chess::        The GNU Chess engine.
+* Fairy-Max::        The Fairy-Max chess engine.
+* HoiChess::         The HoiChess chess engine.
+* Crafty::           The Crafty chess engine.
+* zic2xpm::          The program used to import chess sets from ZIICS.
+
+
+File: xboard.info,  Node: GNU Chess,  Next: Fairy-Max,  Up: Other programs
+
+11.1 GNU Chess
+==============
+
+The GNU Chess engine is available from:
+
+   ftp://ftp.gnu.org/gnu/gnuchess/
+
+   You can use XBoard to play a game against GNU Chess, or to interface
+GNU Chess to an ICS.
+
+
+File: xboard.info,  Node: Fairy-Max,  Next: HoiChess,  Prev: GNU Chess,  Up: Other programs
+
+11.2 Fairy-Max
+==============
+
+Fairy-Max is a derivative from the once World's smallest Chess program
+micro-Max, which measures only about 100 lines of source code.  The
+main difference with micro-Max is that Fairy-Max loads its
+move-generator tables from a file, so that the rules for piece movement
+can be easily configured to implement unorthodox pieces.  Fairy-Max can
+therefore play a large number of variants, normal Chess being one of
+those.  In addition it plays Knightmate, Capablanca and Gothic Chess,
+Shatranj, Courier Chess, Cylinder chess, Berolina Chess, while the user
+can easily define new variants.  It can be obtained from:
+
+   http://home.hccnet.nl/h.g.muller/dwnldpage.html
+
+
+File: xboard.info,  Node: HoiChess,  Next: Crafty,  Prev: Fairy-Max,  Up: Other programs
+
+11.3 HoiChess
+=============
+
+HoiChess is a not-so-very-strong Chess engine, which comes with a
+derivative HoiXiangqi, able to play Chinese Chess. It can be obtained
+from the standard Linux repositories through:
+
+   sudo apt-get install hoichess
+
+
+File: xboard.info,  Node: Crafty,  Next: zic2xpm,  Prev: HoiChess,  Up: Other programs
+
+11.4 Crafty
+===========
+
+Crafty is a chess engine written by Bob Hyatt.  You can use XBoard to
+play a game against Crafty, hook Crafty up to an ICS, or use Crafty to
+interactively analyze games and positions for you.
+
+   Crafty is a strong, rapidly evolving chess program. This rapid pace
+of development is good, because it means Crafty is always getting
+better.  This can sometimes cause problems with backwards
+compatibility, but usually the latest version of Crafty will work well
+with the latest version of XBoard.  Crafty can be obtained from its
+author's FTP site: ftp://ftp.cis.uab.edu/hyatt/.
+
+   To use Crafty with XBoard, give the -fcp and -fd options as follows,
+where <crafty's directory> is the directory in which you installed
+Crafty and placed its book and other support files.
+
+
+File: xboard.info,  Node: zic2xpm,  Prev: Crafty,  Up: Other programs
+
+11.5 zic2xpm
+============
+
+The "zic2xpm" program is used to import chess sets from the ZIICS(*)
+program into XBoard. "zic2xpm" is part of the XBoard distribution.
+ZIICS is available from:
+
+   ftp://ftp.freechess.org/pub/chess/DOS/ziics131.exe
+
+   To import ZIICS pieces, do this:
+1. Unzip ziics131.exe into a directory:
+          unzip -L ziics131.exe -d ~/ziics
+
+2. Use zic2xpm to convert a set of pieces to XBoard format.
+     For example, let's say you want to use the FRITZ4 set. These files
+     are named "fritz4.*" in the ZIICS distribution.
+
+          mkdir ~/fritz4
+          cd ~/fritz4
+          zic2xpm ~/ziics/fritz4.*
+
+3. Give XBoard the "-pixmap" option when starting up, e.g.:
+          xboard -pixmap ~/fritz4
+
+     Alternatively, you can add this line to your `.Xresources' file:
+
+          xboard*pixmapDirectory: ~/fritz4
+
+   (*) ZIICS is a separate copyrighted work of Andy McFarland.  The
+"ZIICS pieces" are copyrighted works of their respective creators.
+Files produced by "zic2xpm" are for PERSONAL USE ONLY and may NOT be
+redistributed without explicit permission from the original creator(s)
+of the pieces.
+
+
+File: xboard.info,  Node: Copyright,  Next: Copying,  Prev: Other programs,  Up: Top
+
+Copyright
+*********
+
+Copyright (C) 1991 Digital Equipment Corporation, Maynard,
+Massachusetts.
+
+   All Rights Reserved.
+
+   Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be used in
+advertising or publicity pertaining to distribution of the software
+without specific, written prior permission.
+
+   Digital disclaims all warranties with regard to this software,
+including all implied warranties of merchantability and fitness.  In no
+event shall Digital be liable for any special, indirect or
+consequential damages or any damages whatsoever resulting from loss of
+use, data or profits, whether in an action of contract, negligence or
+other tortious action, arising out of or in connection with the use or
+performance of this software.
+
+   Enhancements copyright (C) 1992-2003, 2004, 2005, 2006, 2007, 2008,
+2009 Free Software Foundation, Inc.
+
+Published by the Free Software Foundation
+59 Temple Place - Suite 330
+Boston, MA 02111-1307 USA
+
+   Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+   Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided also
+that the section entitled "GNU General Public License," is included
+exactly as in the original, and provided that the entire resulting
+derived work is distributed under the terms of a permission notice
+identical to this one.
+
+   Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that the section entitled "GNU General Public License,"
+and this permission notice, may be included in translations approved by
+the Free Software Foundation instead of in the original English.
+
+
+File: xboard.info,  Node: Copying,  Next: Index,  Prev: Copyright,  Up: Top
+
+GNU GENERAL PUBLIC LICENSE
+**************************
+
+                        Version 3, 29 June 2007
+
+     Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
+
+     Everyone is permitted to copy and distribute verbatim copies of this
+     license document, but changing it is not allowed.
+
+Preamble
+========
+
+The GNU General Public License is a free, copyleft license for software
+and other kinds of works.
+
+   The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains
+free software for all its users.  We, the Free Software Foundation, use
+the GNU General Public License for most of our software; it applies
+also to any other work released this way by its authors.  You can apply
+it to your programs, too.
+
+   When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+   To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you
+have certain responsibilities if you distribute copies of the software,
+or if you modify it: responsibilities to respect the freedom of others.
+
+   For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+   Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+   For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+   Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so.  This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software.  The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products.  If such problems arise substantially in
+other domains, we stand ready to extend this provision to those domains
+in future versions of the GPL, as needed to protect the freedom of
+users.
+
+   Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+   The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS
+====================
+
+  0. Definitions.
+
+     "This License" refers to version 3 of the GNU General Public
+     License.
+
+     "Copyright" also means copyright-like laws that apply to other
+     kinds of works, such as semiconductor masks.
+
+     "The Program" refers to any copyrightable work licensed under this
+     License.  Each licensee is addressed as "you".  "Licensees" and
+     "recipients" may be individuals or organizations.
+
+     To "modify" a work means to copy from or adapt all or part of the
+     work in a fashion requiring copyright permission, other than the
+     making of an exact copy.  The resulting work is called a "modified
+     version" of the earlier work or a work "based on" the earlier work.
+
+     A "covered work" means either the unmodified Program or a work
+     based on the Program.
+
+     To "propagate" a work means to do anything with it that, without
+     permission, would make you directly or secondarily liable for
+     infringement under applicable copyright law, except executing it
+     on a computer or modifying a private copy.  Propagation includes
+     copying, distribution (with or without modification), making
+     available to the public, and in some countries other activities as
+     well.
+
+     To "convey" a work means any kind of propagation that enables other
+     parties to make or receive copies.  Mere interaction with a user
+     through a computer network, with no transfer of a copy, is not
+     conveying.
+
+     An interactive user interface displays "Appropriate Legal Notices"
+     to the extent that it includes a convenient and prominently visible
+     feature that (1) displays an appropriate copyright notice, and (2)
+     tells the user that there is no warranty for the work (except to
+     the extent that warranties are provided), that licensees may
+     convey the work under this License, and how to view a copy of this
+     License.  If the interface presents a list of user commands or
+     options, such as a menu, a prominent item in the list meets this
+     criterion.
+
+  1. Source Code.
+
+     The "source code" for a work means the preferred form of the work
+     for making modifications to it.  "Object code" means any
+     non-source form of a work.
+
+     A "Standard Interface" means an interface that either is an
+     official standard defined by a recognized standards body, or, in
+     the case of interfaces specified for a particular programming
+     language, one that is widely used among developers working in that
+     language.
+
+     The "System Libraries" of an executable work include anything,
+     other than the work as a whole, that (a) is included in the normal
+     form of packaging a Major Component, but which is not part of that
+     Major Component, and (b) serves only to enable use of the work
+     with that Major Component, or to implement a Standard Interface
+     for which an implementation is available to the public in source
+     code form.  A "Major Component", in this context, means a major
+     essential component (kernel, window system, and so on) of the
+     specific operating system (if any) on which the executable work
+     runs, or a compiler used to produce the work, or an object code
+     interpreter used to run it.
+
+     The "Corresponding Source" for a work in object code form means all
+     the source code needed to generate, install, and (for an executable
+     work) run the object code and to modify the work, including
+     scripts to control those activities.  However, it does not include
+     the work's System Libraries, or general-purpose tools or generally
+     available free programs which are used unmodified in performing
+     those activities but which are not part of the work.  For example,
+     Corresponding Source includes interface definition files
+     associated with source files for the work, and the source code for
+     shared libraries and dynamically linked subprograms that the work
+     is specifically designed to require, such as by intimate data
+     communication or control flow between those subprograms and other
+     parts of the work.
+
+     The Corresponding Source need not include anything that users can
+     regenerate automatically from other parts of the Corresponding
+     Source.
+
+     The Corresponding Source for a work in source code form is that
+     same work.
+
+  2. Basic Permissions.
+
+     All rights granted under this License are granted for the term of
+     copyright on the Program, and are irrevocable provided the stated
+     conditions are met.  This License explicitly affirms your unlimited
+     permission to run the unmodified Program.  The output from running
+     a covered work is covered by this License only if the output,
+     given its content, constitutes a covered work.  This License
+     acknowledges your rights of fair use or other equivalent, as
+     provided by copyright law.
+
+     You may make, run and propagate covered works that you do not
+     convey, without conditions so long as your license otherwise
+     remains in force.  You may convey covered works to others for the
+     sole purpose of having them make modifications exclusively for
+     you, or provide you with facilities for running those works,
+     provided that you comply with the terms of this License in
+     conveying all material for which you do not control copyright.
+     Those thus making or running the covered works for you must do so
+     exclusively on your behalf, under your direction and control, on
+     terms that prohibit them from making any copies of your
+     copyrighted material outside their relationship with you.
+
+     Conveying under any other circumstances is permitted solely under
+     the conditions stated below.  Sublicensing is not allowed; section
+     10 makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+     No covered work shall be deemed part of an effective technological
+     measure under any applicable law fulfilling obligations under
+     article 11 of the WIPO copyright treaty adopted on 20 December
+     1996, or similar laws prohibiting or restricting circumvention of
+     such measures.
+
+     When you convey a covered work, you waive any legal power to forbid
+     circumvention of technological measures to the extent such
+     circumvention is effected by exercising rights under this License
+     with respect to the covered work, and you disclaim any intention
+     to limit operation or modification of the work as a means of
+     enforcing, against the work's users, your or third parties' legal
+     rights to forbid circumvention of technological measures.
+
+  4. Conveying Verbatim Copies.
+
+     You may convey verbatim copies of the Program's source code as you
+     receive it, in any medium, provided that you conspicuously and
+     appropriately publish on each copy an appropriate copyright notice;
+     keep intact all notices stating that this License and any
+     non-permissive terms added in accord with section 7 apply to the
+     code; keep intact all notices of the absence of any warranty; and
+     give all recipients a copy of this License along with the Program.
+
+     You may charge any price or no price for each copy that you convey,
+     and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+     You may convey a work based on the Program, or the modifications to
+     produce it from the Program, in the form of source code under the
+     terms of section 4, provided that you also meet all of these
+     conditions:
+
+       a. The work must carry prominent notices stating that you
+          modified it, and giving a relevant date.
+
+       b. The work must carry prominent notices stating that it is
+          released under this License and any conditions added under
+          section 7.  This requirement modifies the requirement in
+          section 4 to "keep intact all notices".
+
+       c. You must license the entire work, as a whole, under this
+          License to anyone who comes into possession of a copy.  This
+          License will therefore apply, along with any applicable
+          section 7 additional terms, to the whole of the work, and all
+          its parts, regardless of how they are packaged.  This License
+          gives no permission to license the work in any other way, but
+          it does not invalidate such permission if you have separately
+          received it.
+
+       d. If the work has interactive user interfaces, each must display
+          Appropriate Legal Notices; however, if the Program has
+          interactive interfaces that do not display Appropriate Legal
+          Notices, your work need not make them do so.
+
+     A compilation of a covered work with other separate and independent
+     works, which are not by their nature extensions of the covered
+     work, and which are not combined with it such as to form a larger
+     program, in or on a volume of a storage or distribution medium, is
+     called an "aggregate" if the compilation and its resulting
+     copyright are not used to limit the access or legal rights of the
+     compilation's users beyond what the individual works permit.
+     Inclusion of a covered work in an aggregate does not cause this
+     License to apply to the other parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+     You may convey a covered work in object code form under the terms
+     of sections 4 and 5, provided that you also convey the
+     machine-readable Corresponding Source under the terms of this
+     License, in one of these ways:
+
+       a. Convey the object code in, or embodied in, a physical product
+          (including a physical distribution medium), accompanied by the
+          Corresponding Source fixed on a durable physical medium
+          customarily used for software interchange.
+
+       b. Convey the object code in, or embodied in, a physical product
+          (including a physical distribution medium), accompanied by a
+          written offer, valid for at least three years and valid for
+          as long as you offer spare parts or customer support for that
+          product model, to give anyone who possesses the object code
+          either (1) a copy of the Corresponding Source for all the
+          software in the product that is covered by this License, on a
+          durable physical medium customarily used for software
+          interchange, for a price no more than your reasonable cost of
+          physically performing this conveying of source, or (2) access
+          to copy the Corresponding Source from a network server at no
+          charge.
+
+       c. Convey individual copies of the object code with a copy of
+          the written offer to provide the Corresponding Source.  This
+          alternative is allowed only occasionally and noncommercially,
+          and only if you received the object code with such an offer,
+          in accord with subsection 6b.
+
+       d. Convey the object code by offering access from a designated
+          place (gratis or for a charge), and offer equivalent access
+          to the Corresponding Source in the same way through the same
+          place at no further charge.  You need not require recipients
+          to copy the Corresponding Source along with the object code.
+          If the place to copy the object code is a network server, the
+          Corresponding Source may be on a different server (operated
+          by you or a third party) that supports equivalent copying
+          facilities, provided you maintain clear directions next to
+          the object code saying where to find the Corresponding Source.
+          Regardless of what server hosts the Corresponding Source, you
+          remain obligated to ensure that it is available for as long
+          as needed to satisfy these requirements.
+
+       e. Convey the object code using peer-to-peer transmission,
+          provided you inform other peers where the object code and
+          Corresponding Source of the work are being offered to the
+          general public at no charge under subsection 6d.
+
+
+     A separable portion of the object code, whose source code is
+     excluded from the Corresponding Source as a System Library, need
+     not be included in conveying the object code work.
+
+     A "User Product" is either (1) a "consumer product", which means
+     any tangible personal property which is normally used for personal,
+     family, or household purposes, or (2) anything designed or sold for
+     incorporation into a dwelling.  In determining whether a product
+     is a consumer product, doubtful cases shall be resolved in favor of
+     coverage.  For a particular product received by a particular user,
+     "normally used" refers to a typical or common use of that class of
+     product, regardless of the status of the particular user or of the
+     way in which the particular user actually uses, or expects or is
+     expected to use, the product.  A product is a consumer product
+     regardless of whether the product has substantial commercial,
+     industrial or non-consumer uses, unless such uses represent the
+     only significant mode of use of the product.
+
+     "Installation Information" for a User Product means any methods,
+     procedures, authorization keys, or other information required to
+     install and execute modified versions of a covered work in that
+     User Product from a modified version of its Corresponding Source.
+     The information must suffice to ensure that the continued
+     functioning of the modified object code is in no case prevented or
+     interfered with solely because modification has been made.
+
+     If you convey an object code work under this section in, or with,
+     or specifically for use in, a User Product, and the conveying
+     occurs as part of a transaction in which the right of possession
+     and use of the User Product is transferred to the recipient in
+     perpetuity or for a fixed term (regardless of how the transaction
+     is characterized), the Corresponding Source conveyed under this
+     section must be accompanied by the Installation Information.  But
+     this requirement does not apply if neither you nor any third party
+     retains the ability to install modified object code on the User
+     Product (for example, the work has been installed in ROM).
+
+     The requirement to provide Installation Information does not
+     include a requirement to continue to provide support service,
+     warranty, or updates for a work that has been modified or
+     installed by the recipient, or for the User Product in which it
+     has been modified or installed.  Access to a network may be denied
+     when the modification itself materially and adversely affects the
+     operation of the network or violates the rules and protocols for
+     communication across the network.
+
+     Corresponding Source conveyed, and Installation Information
+     provided, in accord with this section must be in a format that is
+     publicly documented (and with an implementation available to the
+     public in source code form), and must require no special password
+     or key for unpacking, reading or copying.
+
+  7. Additional Terms.
+
+     "Additional permissions" are terms that supplement the terms of
+     this License by making exceptions from one or more of its
+     conditions.  Additional permissions that are applicable to the
+     entire Program shall be treated as though they were included in
+     this License, to the extent that they are valid under applicable
+     law.  If additional permissions apply only to part of the Program,
+     that part may be used separately under those permissions, but the
+     entire Program remains governed by this License without regard to
+     the additional permissions.
+
+     When you convey a copy of a covered work, you may at your option
+     remove any additional permissions from that copy, or from any part
+     of it.  (Additional permissions may be written to require their own
+     removal in certain cases when you modify the work.)  You may place
+     additional permissions on material, added by you to a covered work,
+     for which you have or can give appropriate copyright permission.
+
+     Notwithstanding any other provision of this License, for material
+     you add to a covered work, you may (if authorized by the copyright
+     holders of that material) supplement the terms of this License
+     with terms:
+
+       a. Disclaiming warranty or limiting liability differently from
+          the terms of sections 15 and 16 of this License; or
+
+       b. Requiring preservation of specified reasonable legal notices
+          or author attributions in that material or in the Appropriate
+          Legal Notices displayed by works containing it; or
+
+       c. Prohibiting misrepresentation of the origin of that material,
+          or requiring that modified versions of such material be
+          marked in reasonable ways as different from the original
+          version; or
+
+       d. Limiting the use for publicity purposes of names of licensors
+          or authors of the material; or
+
+       e. Declining to grant rights under trademark law for use of some
+          trade names, trademarks, or service marks; or
+
+       f. Requiring indemnification of licensors and authors of that
+          material by anyone who conveys the material (or modified
+          versions of it) with contractual assumptions of liability to
+          the recipient, for any liability that these contractual
+          assumptions directly impose on those licensors and authors.
+
+     All other non-permissive additional terms are considered "further
+     restrictions" within the meaning of section 10.  If the Program as
+     you received it, or any part of it, contains a notice stating that
+     it is governed by this License along with a term that is a further
+     restriction, you may remove that term.  If a license document
+     contains a further restriction but permits relicensing or
+     conveying under this License, you may add to a covered work
+     material governed by the terms of that license document, provided
+     that the further restriction does not survive such relicensing or
+     conveying.
+
+     If you add terms to a covered work in accord with this section, you
+     must place, in the relevant source files, a statement of the
+     additional terms that apply to those files, or a notice indicating
+     where to find the applicable terms.
+
+     Additional terms, permissive or non-permissive, may be stated in
+     the form of a separately written license, or stated as exceptions;
+     the above requirements apply either way.
+
+  8. Termination.
+
+     You may not propagate or modify a covered work except as expressly
+     provided under this License.  Any attempt otherwise to propagate or
+     modify it is void, and will automatically terminate your rights
+     under this License (including any patent licenses granted under
+     the third paragraph of section 11).
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, you do not qualify to receive new
+     licenses for the same material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+     You are not required to accept this License in order to receive or
+     run a copy of the Program.  Ancillary propagation of a covered work
+     occurring solely as a consequence of using peer-to-peer
+     transmission to receive a copy likewise does not require
+     acceptance.  However, nothing other than this License grants you
+     permission to propagate or modify any covered work.  These actions
+     infringe copyright if you do not accept this License.  Therefore,
+     by modifying or propagating a covered work, you indicate your
+     acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+     Each time you convey a covered work, the recipient automatically
+     receives a license from the original licensors, to run, modify and
+     propagate that work, subject to this License.  You are not
+     responsible for enforcing compliance by third parties with this
+     License.
+
+     An "entity transaction" is a transaction transferring control of an
+     organization, or substantially all assets of one, or subdividing an
+     organization, or merging organizations.  If propagation of a
+     covered work results from an entity transaction, each party to that
+     transaction who receives a copy of the work also receives whatever
+     licenses to the work the party's predecessor in interest had or
+     could give under the previous paragraph, plus a right to
+     possession of the Corresponding Source of the work from the
+     predecessor in interest, if the predecessor has it or can get it
+     with reasonable efforts.
+
+     You may not impose any further restrictions on the exercise of the
+     rights granted or affirmed under this License.  For example, you
+     may not impose a license fee, royalty, or other charge for
+     exercise of rights granted under this License, and you may not
+     initiate litigation (including a cross-claim or counterclaim in a
+     lawsuit) alleging that any patent claim is infringed by making,
+     using, selling, offering for sale, or importing the Program or any
+     portion of it.
+
+ 11. Patents.
+
+     A "contributor" is a copyright holder who authorizes use under this
+     License of the Program or a work on which the Program is based.
+     The work thus licensed is called the contributor's "contributor
+     version".
+
+     A contributor's "essential patent claims" are all patent claims
+     owned or controlled by the contributor, whether already acquired or
+     hereafter acquired, that would be infringed by some manner,
+     permitted by this License, of making, using, or selling its
+     contributor version, but do not include claims that would be
+     infringed only as a consequence of further modification of the
+     contributor version.  For purposes of this definition, "control"
+     includes the right to grant patent sublicenses in a manner
+     consistent with the requirements of this License.
+
+     Each contributor grants you a non-exclusive, worldwide,
+     royalty-free patent license under the contributor's essential
+     patent claims, to make, use, sell, offer for sale, import and
+     otherwise run, modify and propagate the contents of its
+     contributor version.
+
+     In the following three paragraphs, a "patent license" is any
+     express agreement or commitment, however denominated, not to
+     enforce a patent (such as an express permission to practice a
+     patent or covenant not to sue for patent infringement).  To
+     "grant" such a patent license to a party means to make such an
+     agreement or commitment not to enforce a patent against the party.
+
+     If you convey a covered work, knowingly relying on a patent
+     license, and the Corresponding Source of the work is not available
+     for anyone to copy, free of charge and under the terms of this
+     License, through a publicly available network server or other
+     readily accessible means, then you must either (1) cause the
+     Corresponding Source to be so available, or (2) arrange to deprive
+     yourself of the benefit of the patent license for this particular
+     work, or (3) arrange, in a manner consistent with the requirements
+     of this License, to extend the patent license to downstream
+     recipients.  "Knowingly relying" means you have actual knowledge
+     that, but for the patent license, your conveying the covered work
+     in a country, or your recipient's use of the covered work in a
+     country, would infringe one or more identifiable patents in that
+     country that you have reason to believe are valid.
+
+     If, pursuant to or in connection with a single transaction or
+     arrangement, you convey, or propagate by procuring conveyance of, a
+     covered work, and grant a patent license to some of the parties
+     receiving the covered work authorizing them to use, propagate,
+     modify or convey a specific copy of the covered work, then the
+     patent license you grant is automatically extended to all
+     recipients of the covered work and works based on it.
+
+     A patent license is "discriminatory" if it does not include within
+     the scope of its coverage, prohibits the exercise of, or is
+     conditioned on the non-exercise of one or more of the rights that
+     are specifically granted under this License.  You may not convey a
+     covered work if you are a party to an arrangement with a third
+     party that is in the business of distributing software, under
+     which you make payment to the third party based on the extent of
+     your activity of conveying the work, and under which the third
+     party grants, to any of the parties who would receive the covered
+     work from you, a discriminatory patent license (a) in connection
+     with copies of the covered work conveyed by you (or copies made
+     from those copies), or (b) primarily for and in connection with
+     specific products or compilations that contain the covered work,
+     unless you entered into that arrangement, or that patent license
+     was granted, prior to 28 March 2007.
+
+     Nothing in this License shall be construed as excluding or limiting
+     any implied license or other defenses to infringement that may
+     otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+     If conditions are imposed on you (whether by court order,
+     agreement or otherwise) that contradict the conditions of this
+     License, they do not excuse you from the conditions of this
+     License.  If you cannot convey a covered work so as to satisfy
+     simultaneously your obligations under this License and any other
+     pertinent obligations, then as a consequence you may not convey it
+     at all.  For example, if you agree to terms that obligate you to
+     collect a royalty for further conveying from those to whom you
+     convey the Program, the only way you could satisfy both those
+     terms and this License would be to refrain entirely from conveying
+     the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+     Notwithstanding any other provision of this License, you have
+     permission to link or combine any covered work with a work licensed
+     under version 3 of the GNU Affero General Public License into a
+     single combined work, and to convey the resulting work.  The terms
+     of this License will continue to apply to the part which is the
+     covered work, but the special requirements of the GNU Affero
+     General Public License, section 13, concerning interaction through
+     a network will apply to the combination as such.
+
+ 14. Revised Versions of this License.
+
+     The Free Software Foundation may publish revised and/or new
+     versions of the GNU General Public License from time to time.
+     Such new versions will be similar in spirit to the present
+     version, but may differ in detail to address new problems or
+     concerns.
+
+     Each version is given a distinguishing version number.  If the
+     Program specifies that a certain numbered version of the GNU
+     General Public License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that numbered version or of any later version published by the
+     Free Software Foundation.  If the Program does not specify a
+     version number of the GNU General Public License, you may choose
+     any version ever published by the Free Software Foundation.
+
+     If the Program specifies that a proxy can decide which future
+     versions of the GNU General Public License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Program.
+
+     Later license versions may give you additional or different
+     permissions.  However, no additional obligations are imposed on any
+     author or copyright holder as a result of your choosing to follow a
+     later version.
+
+ 15. Disclaimer of Warranty.
+
+     THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+     APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+     COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE
+     RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
+     SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+     NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+     IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
+     AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
+     FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+     CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+     THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+     BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+     PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+     PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
+     THE POSSIBILITY OF SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+     If the disclaimer of warranty and limitation of liability provided
+     above cannot be given local legal effect according to their terms,
+     reviewing courts shall apply local law that most closely
+     approximates an absolute waiver of all civil liability in
+     connection with the Program, unless a warranty or assumption of
+     liability accompanies a copy of the Program in return for a fee.
+
+
+END OF TERMS AND CONDITIONS
+===========================
+
+How to Apply These Terms to Your New Programs
+=============================================
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+   To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+     ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
+     Copyright (C) YEAR NAME OF AUTHOR
+
+     This program is free software: you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+     the Free Software Foundation, either version 3 of the License, or (at
+     your option) any later version.
+
+     This program is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with this program.  If not, see `http://www.gnu.org/licenses/'.
+
+   Also add information on how to contact you by electronic and paper
+mail.
+
+   If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+     PROGRAM Copyright (C) YEAR NAME OF AUTHOR
+     This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+     This is free software, and you are welcome to redistribute it
+     under certain conditions; type `show c' for details.
+
+   The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, your
+program's commands might be different; for a GUI interface, you would
+use an "about box".
+
+   You should also get your employer (if you work as a programmer) or
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  For more information on this, and how to apply and follow
+the GNU GPL, see `http://www.gnu.org/licenses/'.
+
+   The GNU General Public License does not permit incorporating your
+program into proprietary programs.  If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library.  If this is what you want to do, use the
+GNU Lesser General Public License instead of this License.  But first,
+please read `http://www.gnu.org/philosophy/why-not-lgpl.html'.
+
+
+File: xboard.info,  Node: Index,  Prev: Copying,  Up: Top
+
+Index
+*****
+
+ [index ]
+* Menu:
+
+* -animateSpeed, option:                 User interface options.
+                                                              (line 235)
+* -autoDisplayComment, option:           User interface options.
+                                                              (line 240)
+* -autoDisplayTags, option:              User interface options.
+                                                              (line 240)
+* -pasteSelection, option:               User interface options.
+                                                              (line 246)
+* .icsrc:                                ICS options.         (line 101)
+* <, Button:                             Step Menu.           (line   7)
+* <<, Button:                            Step Menu.           (line  40)
+* >, Button:                             Step Menu.           (line  27)
+* >>, Button:                            Step Menu.           (line  59)
+* abort, ICS command:                    Chess Servers.       (line  74)
+* Abort, Menu Item:                      Action Menu.         (line  32)
+* About XBoard, Menu Item:               Help Menu.           (line  34)
+* accept, ICS command:                   Chess Servers.       (line  61)
+* Accept, Menu Item:                     Action Menu.         (line   7)
+* Action, Menu:                          Action Menu.         (line   6)
+* adjourn, ICS command:                  Chess Servers.       (line  74)
+* Adjourn, Menu Item:                    Action Menu.         (line  28)
+* Adjudicate Draw, Menu Item:            Action Menu.         (line  51)
+* Adjudicate to Black, Menu Item:        Action Menu.         (line  51)
+* Adjudicate to White, Menu Item:        Action Menu.         (line  51)
+* adjudicateDrawMoves, option:           Adjudication Options.
+                                                              (line  15)
+* adjudicateLossThreshold, option:       Adjudication Options.
+                                                              (line   7)
+* Adjudications, Menu Item:              Options Menu.        (line  12)
+* alarm, option:                         ICS options.         (line 144)
+* Always Queen, Menu Item:               Options Menu.        (line  58)
+* alwaysPromoteToQueen, option:          User interface options.
+                                                              (line  31)
+* Analysis Mode, Menu Item:              Mode Menu.           (line  16)
+* Analyze File, Menu Item:               Mode Menu.           (line  37)
+* Animate Dragging, Menu Item:           Options Menu.        (line  64)
+* Animate Moving, Menu Item:             Options Menu.        (line  71)
+* animate, option:                       User interface options.
+                                                              (line 231)
+* animateDragging, option:               User interface options.
+                                                              (line 227)
+* animateMoving, option:                 User interface options.
+                                                              (line 231)
+* Authors:                               Contributors.        (line   6)
+* Auto Comment, Menu Item:               Options Menu.        (line  79)
+* Auto Flag, Menu Item:                  Options Menu.        (line  87)
+* Auto Flip View, Menu Item:             Options Menu.        (line  96)
+* Auto Observe, Menu Item:               Options Menu.        (line 101)
+* Auto Raise Board, Menu Item:           Options Menu.        (line 114)
+* Auto Save, Menu Item:                  Options Menu.        (line 119)
+* autobs, option:                        ICS options.         (line 128)
+* autoCallFlag, option:                  ICS options.         (line 124)
+* autocomm, option:                      ICS options.         (line 120)
+* autoComment, option:                   ICS options.         (line 120)
+* autoflag, option:                      ICS options.         (line 124)
+* autoflip, option:                      User interface options.
+                                                              (line  77)
+* autoFlipView, option:                  User interface options.
+                                                              (line  77)
+* autoKibitz, option:                    ICS options.         (line 132)
+* autoObserve, option:                   ICS options.         (line 128)
+* autoraise, option:                     User interface options.
+                                                              (line  73)
+* autoRaiseBoard, option:                User interface options.
+                                                              (line  73)
+* autosave, option:                      Load and Save options.
+                                                              (line  44)
+* autoSaveGames, option:                 Load and Save options.
+                                                              (line  44)
+* Back to Start, Menu Item:              Step Menu.           (line  40)
+* Backward, Menu Item:                   Step Menu.           (line   7)
+* bell, option:                          User interface options.
+                                                              (line  18)
+* bitmapDirectory, option:               User interface options.
+                                                              (line 158)
+* blackPieceColor, option:               User interface options.
+                                                              (line 205)
+* blind, option:                         User interface options.
+                                                              (line 125)
+* Blindfold, Menu Item:                  Options Menu.        (line 126)
+* blindfold, option:                     User interface options.
+                                                              (line 125)
+* bm, option:                            User interface options.
+                                                              (line 158)
+* board size:                            User interface options.
+                                                              (line  39)
+* boardHeight, option:                   Other options.       (line  77)
+* boardSize, option:                     User interface options.
+                                                              (line  39)
+* boardWidth, option:                    Other options.       (line  82)
+* Book, Menu Item:                       Help Menu.           (line  24)
+* Bug reports:                           Problems.            (line   6)
+* Bugs <1>:                              Problems.            (line   6)
+* Bugs:                                  Limitations.         (line   6)
+* buttons, option:                       User interface options.
+                                                              (line  99)
+* Call Flag, Menu Item:                  Action Menu.         (line  17)
+* checkMates, option:                    Adjudication Options.
+                                                              (line  20)
+* Chess engine options:                  Chess engine options.
+                                                              (line   6)
+* CHESSDIR:                              Environment.         (line   6)
+* clock, option:                         Chess engine options.
+                                                              (line  23)
+* clockFont, option:                     User interface options.
+                                                              (line 129)
+* clockMode, option:                     Chess engine options.
+                                                              (line  23)
+* cmail:                                 CMail.               (line   6)
+* colorChallenge, option:                ICS options.         (line 177)
+* colorChannel, option:                  ICS options.         (line 177)
+* colorChannel1, option:                 ICS options.         (line 177)
+* colorize, option:                      ICS options.         (line 163)
+* colorKibitz, option:                   ICS options.         (line 177)
+* colorNormal, option:                   ICS options.         (line 177)
+* colorRequest, option:                  ICS options.         (line 177)
+* Colors <1>:                            User interface options.
+                                                              (line 205)
+* Colors:                                ICS options.         (line 163)
+* colorSeek, option:                     ICS options.         (line 177)
+* colorShout, option:                    ICS options.         (line 177)
+* colorSShout, option:                   ICS options.         (line 177)
+* colorTell, option:                     ICS options.         (line 177)
+* Contributors:                          Contributors.        (line   6)
+* coordFont, option:                     User interface options.
+                                                              (line 135)
+* coords, option:                        User interface options.
+                                                              (line  69)
+* Copy Game, Menu Item:                  File Menu.           (line  91)
+* Copy Position, Menu Item:              File Menu.           (line 131)
+* darkSquareColor, option:               User interface options.
+                                                              (line 205)
+* debug, option:                         Other options.       (line 128)
+* debugFile, option:                     Other options.       (line 131)
+* debugMode, option:                     Other options.       (line 128)
+* decline, ICS command:                  Chess Servers.       (line  61)
+* Decline, Menu Item:                    Action Menu.         (line  12)
+* defaultCacheSizeEGTB, option:          UCI + WB Engine Settings.
+                                                              (line  45)
+* defaultFrcPosition, option:            Other options.       (line  97)
+* defaultHashSize, option:               UCI + WB Engine Settings.
+                                                              (line  39)
+* defaultPathEGTB, option:               UCI + WB Engine Settings.
+                                                              (line  51)
+* delayAfterQuit, option:                Other options.       (line 163)
+* delayBeforeQuit, option:               Other options.       (line 163)
+* display, option:                       User interface options.
+                                                              (line   9)
+* drag, option:                          User interface options.
+                                                              (line 227)
+* draw, ICS command:                     Chess Servers.       (line  74)
+* Draw, Menu Item:                       Action Menu.         (line  23)
+* Edit Comment, Menu Item:               Mode Menu.           (line 153)
+* Edit Game, Menu Item:                  Mode Menu.           (line  71)
+* Edit Position, Menu Item:              Mode Menu.           (line  87)
+* Edit Tags, Menu Item:                  Mode Menu.           (line 129)
+* egtFormats, option:                    UCI + WB Engine Settings.
+                                                              (line  55)
+* Engine Settings:                       UCI + WB Engine Settings.
+                                                              (line   6)
+* engineDebugOutput, option:             Other options.       (line 135)
+* Environment variables:                 Environment.         (line   6)
+* examine, ICS command:                  Chess Servers.       (line  97)
+* Exit, Menu Item:                       File Menu.           (line 148)
+* exit, option:                          User interface options.
+                                                              (line  23)
+* fb, option:                            Chess engine options.
+                                                              (line 130)
+* fcp, option:                           Chess engine options.
+                                                              (line 123)
+* fd, option:                            Chess engine options.
+                                                              (line 145)
+* fh, option:                            Chess engine options.
+                                                              (line 137)
+* File Menu:                             File Menu.           (line   6)
+* finger, ICS command:                   Chess Servers.       (line  84)
+* firstChessProgram, option:             Chess engine options.
+                                                              (line 123)
+* firstComputerString, option:           Chess engine options.
+                                                              (line 181)
+* firstDirectory, option:                Chess engine options.
+                                                              (line 145)
+* firstHasOwnBookUCI, option:            UCI + WB Engine Settings.
+                                                              (line  34)
+* firstHost, option:                     Chess engine options.
+                                                              (line 137)
+* firstIsUCI, option:                    UCI + WB Engine Settings.
+                                                              (line   8)
+* firstNeedsNoncompliantFEN, option:     Chess engine options.
+                                                              (line 231)
+* firstNPS, option:                      Chess engine options.
+                                                              (line  46)
+* firstOptions, option:                  Chess engine options.
+                                                              (line 220)
+* firstPlaysBlack, option:               Chess engine options.
+                                                              (line 130)
+* firstProtocolVersion, option:          Chess engine options.
+                                                              (line 198)
+* firstScoreAbs, option:                 Chess engine options.
+                                                              (line 206)
+* firstTimeOdds, option:                 Chess engine options.
+                                                              (line  64)
+* firstXBook, option:                    UCI + WB Engine Settings.
+                                                              (line  34)
+* Flash Moves, Menu Item:                Options Menu.        (line 132)
+* flash, option:                         User interface options.
+                                                              (line 112)
+* flashCount, option:                    User interface options.
+                                                              (line 112)
+* flashRate, option:                     User interface options.
+                                                              (line 112)
+* Flip View, Menu Item:                  Options Menu.        (line   7)
+* flip, option:                          User interface options.
+                                                              (line  81)
+* flipView, option:                      User interface options.
+                                                              (line  81)
+* fNoOwnBookUCI, option:                 UCI + WB Engine Settings.
+                                                              (line  34)
+* Font:                                  User interface options.
+                                                              (line 142)
+* Font, clock:                           User interface options.
+                                                              (line 129)
+* Font, coordinates:                     User interface options.
+                                                              (line 135)
+* font, option:                          User interface options.
+                                                              (line 142)
+* fontSizeTolerance, option:             User interface options.
+                                                              (line 148)
+* Forward to End, Menu Item:             Step Menu.           (line  59)
+* Forward, Menu Item:                    Step Menu.           (line  27)
+* fUCI, option:                          UCI + WB Engine Settings.
+                                                              (line   8)
+* gameListTags, option:                  Load and Save options.
+                                                              (line  86)
+* games, ICS command:                    Chess Servers.       (line  50)
+* gateway, option:                       ICS options.         (line  51)
+* geometry, option:                      User interface options.
+                                                              (line   9)
+* Get Move List, Menu Item:              Options Menu.        (line 146)
+* getMoveList, option:                   ICS options.         (line 140)
+* Help Menu:                             Help Menu.           (line   6)
+* help, ICS command:                     Chess Servers.       (line  35)
+* Hide Thinking, Menu Item:              Options Menu.        (line 243)
+* Highlight Last Move, Menu Item:        Options Menu.        (line 158)
+* highlight, option:                     User interface options.
+                                                              (line 121)
+* highlightLastMove, option:             User interface options.
+                                                              (line 121)
+* highlightSquareColor, option:          User interface options.
+                                                              (line 205)
+* Hint, Menu Item:                       Help Menu.           (line  21)
+* holdingsSize, option:                  Other options.       (line  89)
+* iconic, option:                        User interface options.
+                                                              (line   9)
+* ICS:                                   Chess Servers.       (line   6)
+* ICS Alarm, Menu Item:                  Options Menu.        (line 179)
+* ICS Client, Menu Item:                 Mode Menu.           (line  47)
+* ICS Input Box, Menu Item:              Mode Menu.           (line 158)
+* ICS options:                           ICS options.         (line   6)
+* ICS, addresses:                        Chess Servers.       (line   6)
+* ics, option:                           ICS options.         (line   7)
+* icsAlarm, option:                      ICS options.         (line 144)
+* icsAlarmTime, option:                  ICS options.         (line 148)
+* icscomm, option:                       ICS options.         (line  59)
+* icshelper, option:                     ICS options.         (line  25)
+* icshost, option:                       ICS options.         (line  12)
+* icsinput, option:                      ICS options.         (line 116)
+* icslogon, option:                      ICS options.         (line 101)
+* icsport, option:                       ICS options.         (line  21)
+* inc, option:                           Chess engine options.
+                                                              (line  16)
+* Info XBoard, Menu Item:                Help Menu.           (line   7)
+* initalMode, option:                    Other options.       (line  12)
+* initString, option:                    Chess engine options.
+                                                              (line 154)
+* Internet Chess Server:                 Chess Servers.       (line   6)
+* internetChessServerCommPort, option:   ICS options.         (line  59)
+* internetChessServerHelper, option:     ICS options.         (line  25)
+* internetChessServerHost, option:       ICS options.         (line  12)
+* internetChessServerInputBox, option:   ICS options.         (line 116)
+* internetChessServerLogonScript, option: ICS options.        (line 101)
+* internetChessServerMode, option:       ICS options.         (line   7)
+* internetChessServerPort, option:       ICS options.         (line  21)
+* introduction:                          Top.                 (line   6)
+* Keys:                                  Keys.                (line   6)
+* legal, option:                         User interface options.
+                                                              (line  35)
+* lgf, option:                           Load and Save options.
+                                                              (line   8)
+* lgi, option:                           Load and Save options.
+                                                              (line   8)
+* lightSquareColor, option:              User interface options.
+                                                              (line 205)
+* Limitations:                           Limitations.         (line   6)
+* Load and Save options:                 Load and Save options.
+                                                              (line   6)
+* Load Game, Menu Item:                  File Menu.           (line  39)
+* Load Next Game, Menu Item:             File Menu.           (line  66)
+* Load Next Position, Menu Item:         File Menu.           (line 112)
+* Load Position, Menu Item:              File Menu.           (line 104)
+* Load Previous Game, Menu Item:         File Menu.           (line  70)
+* Load Previous Position, Menu Item:     File Menu.           (line 115)
+* loadGameFile, option:                  Load and Save options.
+                                                              (line   8)
+* loadGameIndex, option:                 Load and Save options.
+                                                              (line   8)
+* loadPositionFile, option:              Load and Save options.
+                                                              (line  49)
+* loadPositionIndex, option:             Load and Save options.
+                                                              (line  49)
+* lowTimeWarning, option:                ICS options.         (line 152)
+* lowTimeWarningColor, option:           User interface options.
+                                                              (line 205)
+* lpf, option:                           Load and Save options.
+                                                              (line  49)
+* lpi, option:                           Load and Save options.
+                                                              (line  49)
+* Machine Black, Menu Item:              Mode Menu.           (line  10)
+* Machine White, Menu Item:              Mode Menu.           (line   7)
+* Mail Move, Menu Item:                  File Menu.           (line 145)
+* Major modes:                           Major modes.         (line   6)
+* Man XBoard, Menu Item:                 Help Menu.           (line  14)
+* matchGames, option:                    Chess engine options.
+                                                              (line 101)
+* matchMode, option:                     Chess engine options.
+                                                              (line 113)
+* materialDraws, option:                 Adjudication Options.
+                                                              (line  32)
+* Menu, Action:                          Action Menu.         (line   6)
+* Menu, File:                            File Menu.           (line   6)
+* Menu, Help:                            Help Menu.           (line   6)
+* Menu, Mode:                            Mode Menu.           (line   6)
+* Menu, Options:                         Options Menu.        (line   6)
+* Menu, Step:                            Step Menu.           (line   6)
+* Menus:                                 Menus.               (line   6)
+* mg, option:                            Chess engine options.
+                                                              (line 101)
+* mm, option:                            Chess engine options.
+                                                              (line 113)
+* Mode Menu:                             Mode Menu.           (line   6)
+* mode, option:                          Other options.       (line  12)
+* mono, option:                          User interface options.
+                                                              (line 105)
+* monoMode, option:                      User interface options.
+                                                              (line 105)
+* Move Now, Menu Item:                   Step Menu.           (line  80)
+* Move Sound, Menu Item:                 Options Menu.        (line 164)
+* moves, option:                         ICS options.         (line 140)
+* movesound, option:                     User interface options.
+                                                              (line  18)
+* movesPerSession, option:               Chess engine options.
+                                                              (line  12)
+* mps, option:                           Chess engine options.
+                                                              (line  12)
+* msLoginDelay, option:                  ICS options.         (line 110)
+* nameOfDebugFile, option:               Other options.       (line 131)
+* ncp, option:                           Other options.       (line   7)
+* New Game, Menu Item:                   File Menu.           (line   7)
+* New Shuffle Game, Menu Item:           File Menu.           (line  16)
+* New variant, Menu Item:                File Menu.           (line  29)
+* niceEngines, option:                   Chess engine options.
+                                                              (line 212)
+* noChessProgram, option:                Other options.       (line   7)
+* noGUI, option:                         User interface options.
+                                                              (line  12)
+* observe, ICS command:                  Chess Servers.       (line  93)
+* Old Save Style, Menu Item:             Options Menu.        (line 188)
+* oldmoves, ICS command:                 Chess Servers.       (line  97)
+* oldsave, option:                       Load and Save options.
+                                                              (line  82)
+* oldSaveStyle, option:                  Load and Save options.
+                                                              (line  82)
+* Options:                               Options.             (line   6)
+* Options Menu:                          Options Menu.        (line   6)
+* Options, adjudication:                 Adjudication Options.
+                                                              (line   6)
+* options, Chess engine:                 Chess engine options.
+                                                              (line   6)
+* Options, ICS:                          ICS options.         (line   6)
+* Options, Load and Save:                Load and Save options.
+                                                              (line   6)
+* Options, miscellaneous:                Other options.       (line   6)
+* Options, User interface:               User interface options.
+                                                              (line   6)
+* Other programs:                        Other programs.      (line   6)
+* Paste Game, Menu Item:                 File Menu.           (line 100)
+* Paste Position, Menu Item:             File Menu.           (line 140)
+* Pause, Menu Item:                      Mode Menu.           (line 165)
+* Periodic Updates, Menu Item:           Options Menu.        (line 196)
+* pgnEventHeader, option`:               Load and Save options.
+                                                              (line  74)
+* pgnExtendedInfo, option`:              Load and Save options.
+                                                              (line  69)
+* pieceToSquareTable, option:            Other options.       (line 102)
+* pixmap, option:                        User interface options.
+                                                              (line 158)
+* pixmapDirectory, option:               User interface options.
+                                                              (line 158)
+* PolyglotBook, option:                  UCI + WB Engine Settings.
+                                                              (line  23)
+* PolyglotDir, option:                   UCI + WB Engine Settings.
+                                                              (line  15)
+* Ponder Next Move, Menu Item:           Options Menu.        (line 202)
+* ponder, option:                        Chess engine options.
+                                                              (line  92)
+* ponderNextMove, option:                Chess engine options.
+                                                              (line  92)
+* Popup Exit Message, Menu Item:         Options Menu.        (line 207)
+* Popup Move Errors, Menu Item:          Options Menu.        (line 213)
+* popup, option:                         User interface options.
+                                                              (line  27)
+* popupExitMessage, option:              User interface options.
+                                                              (line  23)
+* popupMoveErrors, option:               User interface options.
+                                                              (line  27)
+* pre, option:                           ICS options.         (line 156)
+* Premove, Menu Item:                    Options Menu.        (line 222)
+* premove, option:                       ICS options.         (line 156)
+* Problems:                              Problems.            (line   6)
+* queen, option:                         User interface options.
+                                                              (line  31)
+* Quiet Play, Menu Item:                 Options Menu.        (line 233)
+* quiet, option:                         ICS options.         (line 159)
+* quietPlay, option:                     ICS options.         (line 159)
+* Reload CMail Message, Menu Item:       File Menu.           (line 145)
+* Reload Same Game, Menu Item:           File Menu.           (line  75)
+* Reload Same Position, Menu Item:       File Menu.           (line 119)
+* remoteShell, option:                   Other options.       (line 149)
+* remoteUser, option:                    Other options.       (line 154)
+* Reporting bugs:                        Problems.            (line   6)
+* Reporting problems:                    Problems.            (line   6)
+* Resign, Menu Item:                     Action Menu.         (line  37)
+* Retract Move, Menu Item:               Step Menu.           (line  84)
+* reuse, option:                         Chess engine options.
+                                                              (line 189)
+* reuse2, option:                        Chess engine options.
+                                                              (line 189)
+* reuseFirst, option:                    Chess engine options.
+                                                              (line 189)
+* reuseSecond, option:                   Chess engine options.
+                                                              (line 189)
+* Revert, Menu Item:                     Step Menu.           (line  71)
+* ringBellAfterMoves, option:            User interface options.
+                                                              (line  18)
+* rsh, option:                           Other options.       (line 149)
+* ruleMoves, option:                     Adjudication Options.
+                                                              (line  50)
+* ruser, option:                         Other options.       (line 154)
+* sameColorGames, option:                Chess engine options.
+                                                              (line 117)
+* Save Game, Menu Item:                  File Menu.           (line  79)
+* saveGameFile, option:                  Load and Save options.
+                                                              (line  39)
+* saveOutOfBookInfo, option`:            Load and Save options.
+                                                              (line  78)
+* savePositionFile, option:              Load and Save options.
+                                                              (line  64)
+* scp, option:                           Chess engine options.
+                                                              (line 126)
+* sd, option:                            Chess engine options.
+                                                              (line  37)
+* searchDepth, option:                   Chess engine options.
+                                                              (line  37)
+* searchTime, option:                    Chess engine options.
+                                                              (line  30)
+* secondChessProgram, option:            Chess engine options.
+                                                              (line 126)
+* secondComputerString, option:          Chess engine options.
+                                                              (line 181)
+* secondDirectory, option:               Chess engine options.
+                                                              (line 145)
+* secondHasOwnBookUCI, option:           UCI + WB Engine Settings.
+                                                              (line  34)
+* secondHost, option:                    Chess engine options.
+                                                              (line 137)
+* secondInitString, option:              Chess engine options.
+                                                              (line 154)
+* secondIsUCI, option:                   UCI + WB Engine Settings.
+                                                              (line   8)
+* secondNeedsNoncompliantFEN, option:    Chess engine options.
+                                                              (line 231)
+* secondNPS, option:                     Chess engine options.
+                                                              (line  46)
+* secondOptions, option:                 Chess engine options.
+                                                              (line 220)
+* secondProtocolVersion, option:         Chess engine options.
+                                                              (line 198)
+* secondScoreAbs, option:                Chess engine options.
+                                                              (line 206)
+* secondTimeOdds, option:                Chess engine options.
+                                                              (line  64)
+* secondXBook, option:                   UCI + WB Engine Settings.
+                                                              (line  34)
+* set, ICS command:                      Chess Servers.       (line  90)
+* Settings, Engine:                      UCI + WB Engine Settings.
+                                                              (line   6)
+* sgf, option:                           Load and Save options.
+                                                              (line  39)
+* sh, option:                            Chess engine options.
+                                                              (line 137)
+* Shortcut keys:                         Keys.                (line   6)
+* Show Coords, Menu Item:                Options Menu.        (line 239)
+* Show Engine Output, Menu Item:         Mode Menu.           (line 125)
+* Show Game List, Menu Item:             Mode Menu.           (line 116)
+* Show Move History, Menu Item:          Mode Menu.           (line 120)
+* showButtonBar, option:                 User interface options.
+                                                              (line  99)
+* showCoords, option:                    User interface options.
+                                                              (line  69)
+* showThinking, option:                  Chess engine options.
+                                                              (line  82)
+* size, option:                          User interface options.
+                                                              (line  39)
+* sNoOwnBookUCI, option:                 UCI + WB Engine Settings.
+                                                              (line  34)
+* soundChallenge, option:                ICS options.         (line 222)
+* soundChannel, option:                  ICS options.         (line 222)
+* soundIcsAlarm, option:                 ICS options.         (line 230)
+* soundIcsDraw, option:                  ICS options.         (line 241)
+* soundIcsLoss, option:                  ICS options.         (line 237)
+* soundIcsUnfinished, option:            ICS options.         (line 245)
+* soundIcsWin, option:                   ICS options.         (line 233)
+* soundKibitz, option:                   ICS options.         (line 222)
+* soundMove, option:                     ICS options.         (line 227)
+* soundProgram, option:                  ICS options.         (line 206)
+* soundRequest, option:                  ICS options.         (line 222)
+* Sounds:                                ICS options.         (line 206)
+* soundSeek, option:                     ICS options.         (line 222)
+* soundShout, option:                    ICS options.         (line 222)
+* soundSShout, option:                   ICS options.         (line 222)
+* soundTell, option:                     ICS options.         (line 222)
+* spf, option:                           Load and Save options.
+                                                              (line  64)
+* st, option:                            Chess engine options.
+                                                              (line  30)
+* Step Menu:                             Step Menu.           (line   6)
+* Stop Examining, Menu Item:             Action Menu.         (line  45)
+* Stop Observing, Menu Item:             Action Menu.         (line  41)
+* sUCI, option:                          UCI + WB Engine Settings.
+                                                              (line   8)
+* tc, option:                            Chess engine options.
+                                                              (line   7)
+* td, option:                            Load and Save options.
+                                                              (line  34)
+* telnet, option:                        ICS options.         (line  33)
+* telnetProgram, option:                 ICS options.         (line  42)
+* Test Legality, Menu Item:              Options Menu.        (line 252)
+* testClaims, option:                    Adjudication Options.
+                                                              (line  26)
+* testLegality, option:                  User interface options.
+                                                              (line  35)
+* thinking, option:                      Chess engine options.
+                                                              (line  82)
+* Time Control, Menu Item:               Options Menu.        (line  49)
+* timeControl, option:                   Chess engine options.
+                                                              (line   7)
+* timeDelay, option:                     Load and Save options.
+                                                              (line  34)
+* timeIncrement, option:                 Chess engine options.
+                                                              (line  16)
+* timeOddsMode, option:                  Chess engine options.
+                                                              (line  70)
+* title, option:                         User interface options.
+                                                              (line  91)
+* titleInWindow, option:                 User interface options.
+                                                              (line  91)
+* Training, Menu Item:                   Mode Menu.           (line 106)
+* trivialDraws, option:                  Adjudication Options.
+                                                              (line  39)
+* Truncate Game, Menu Item:              Step Menu.           (line  75)
+* Two Machines, Menu Item:               Mode Menu.           (line  13)
+* usePolyglotBook, option:               UCI + WB Engine Settings.
+                                                              (line  20)
+* User interface options:                User interface options.
+                                                              (line   6)
+* userName, option:                      Other options.       (line 158)
+* useTelnet, option:                     ICS options.         (line  33)
+* variant, option:                       Other options.       (line  20)
+* vars, ICS command:                     Chess Servers.       (line  87)
+* whitePieceColor, option:               User interface options.
+                                                              (line 205)
+* who, ICS command:                      Chess Servers.       (line  43)
+* xflash, option:                        User interface options.
+                                                              (line 112)
+
+
+
+Tag Table:
+Node: Top207
+Node: Major modes1386
+Node: Menus3079
+Node: File Menu4810
+Node: Mode Menu11822
+Node: Action Menu20429
+Node: Step Menu22398
+Node: Options Menu26529
+Node: Help Menu39835
+Node: Keys41221
+Node: Options43715
+Node: Chess engine options45553
+Node: UCI + WB Engine Settings57478
+Node: ICS options60514
+Node: Load and Save options71884
+Node: User interface options76350
+Node: Adjudication Options87756
+Node: Other options90657
+Node: Chess Servers99362
+Node: Firewalls103673
+Node: Environment109141
+Node: Limitations109594
+Node: Problems112980
+Node: Contributors113854
+Node: CMail116525
+Node: CMail options117073
+Node: CMail game120577
+Node: CMail answer121393
+Node: CMail multi122831
+Node: CMail completion123386
+Node: CMail trouble124068
+Node: Other programs124862
+Node: GNU Chess125354
+Node: Fairy-Max125634
+Node: HoiChess126424
+Node: Crafty126762
+Node: zic2xpm127646
+Node: Copyright128853
+Node: Copying131043
+Node: Index168578
+
+End Tag Table
diff --git a/xboard.man b/xboard.man
new file mode 100644
index 0000000..13f4e64
--- /dev/null
+++ b/xboard.man
@@ -0,0 +1,3625 @@
+.\"Do not edit this file.  It was created from ./xboard.texi
+.\"using texi2man version 1.01.tpm1 on Sat Oct 31 09:52:17 PDT 2009
+.\"If you want a typeset version, you will get better
+.\"results with the original file.
+.\"
+.TH xboard 6 "$Date: " "GNU"
+.SH NAME
+.PP
+xboard \- X graphical user interface for chess
+.SH SYNOPSIS
+.PP
+.B xboard [options]
+.br
+.B xboard -ics -icshost hostname [options]
+.br
+.B xboard -ncp [options]
+.br
+.B |pxboard
+.br
+.B cmail [options]
+
+.SH DESCRIPTION
+
+XBoard is a graphical chessboard that can serve as a
+user interface to chess engines (such as GNU Chess), the
+Internet Chess Servers,
+electronic mail correspondence chess, or your own collection of saved games.
+
+This manual documents version 4.4.1 of XBoard.
+
+.SH MAJOR MODES
+XBoard always runs in one of four major modes.  You select the
+major mode from the command line when you start up XBoard.
+
+.TP
+.B xboard [options]
+As an interface to GNU Chess or another chess engine running on your
+machine, XBoard lets you play a game against the machine,
+set up arbitrary positions, force variations, watch a game between two
+chess engines, interactively analyze your stored games or set up and
+analyze arbitrary positions.  (Note: Not all chess engines support
+analysis.)
+.TP
+.B xboard -ics -icshost hostname [options]
+As Internet Chess Server (ICS) interface, XBoard
+lets you play against other ICS users, observe games
+they are playing, or review games that have recently finished.  Most
+of the ICS "wild" chess variants are supported, including bughouse.
+.TP
+.B xboard -ncp [options]
+XBoard can also be used simply
+as an electronic chessboard to play through games. It will read and
+write game files and allow you to play through variations
+manually. You can use it to browse games off the net or review games
+you have saved.  These features are also available in the other modes.
+.TP
+.B |pxboard
+If you want to pipe games into XBoard, use the supplied shell
+script `pxboard'.  For example, from the news reader `xrn',
+find a message with one or more games in it, click the Save button,
+and type `|pxboard' as the file name.
+.TP
+.B cmail [options]
+As an interface to electronic mail correspondence chess, XBoard
+works with the cmail program. See \fICMail\fR below for
+instructions.
+.PP
+.SH MENUS, BUTTONS, AND KEYS
+To move a piece, you can drag it with the left mouse button, or you
+can click the left mouse button once on the piece, then once more on
+the destination square.  To drop a new piece on a square (when
+applicable), press the middle or the right mouse button over the
+square and select from the pop-up menu.  In cases where you can drop
+either a white or black piece, use the middle button (or shift+right)
+for white and the right button (or shift+middle) for black.  When you
+are playing a bughouse game on an Internet Chess Server, a list of the
+off-board pieces that each player has available is shown in the window
+title after the player's name; in addition, the piece menus show the
+number of pieces available of each type. From version 4.3.14 on, it is
+also possible in crazyhouse, bughouse or shogi to dag and drop pieces
+to the board from the holdings squares displayed next to the board.
+
+All other XBoard commands are available from the menu bar. The most
+frequently used commands also have shortcut keys or on-screen buttons.
+
+When XBoard is iconized, its graphical icon is a white knight if
+it is White's turn to move, a black knight if it is Black's turn.  See
+Iconize in \fIKeys\fR below if you have problems getting this
+feature to work.
+
+.SS File Menu
+.TP
+.B New Game
+Resets XBoard and the chess engine to the beginning of a new chess
+game. The `r' key is a keyboard equivalent. In Internet Chess
+Server mode, clears the current state of XBoard, then
+resynchronizes with the ICS by sending a refresh command. If you want to
+stop playing, observing, or examining an ICS game, use an
+appropriate command from the Action menu, not `New Game'.
+See \fIAction Menu\fR.
+.TP
+.B New Shuffle Game
+Similar to `New Game', but allows you to specify a particular initial position 
+(according to a standardized numbering system)
+in chess variants which use randomized opening positions (e.g. Chess960).
+The selected opening position will persistently be chosen on any following
+New Game command until you use this menu to select another. Selecting
+position number -1 will produce a newly randomized position on any new game.
+Using this menu item in variants that normally do not shuffle their opening position
+does cause these variants to become shuffle variants until you use the
+`New Shuffle Game' menu to explicitly switch the randomization off,
+or select a new variant.
+.TP
+.B New Variant
+Allows you to select a new chess variant in non-ICS mode. 
+(In ICS play, the ICS is responsible for deciding which variant will be played,
+and XBoard adapts automatically.) If you play with an engine, the engine must
+be able to play the selected variant, or the command will be ignored.
+XBoard supports all major variants, such as xiangqi, shogi, chess, chess960,
+Capablanca Chess, shatranj, crazyhouse, bughouse.
+(But not every board size has built-in bitmaps for un-orthodox pieces!)
+.TP
+.B Load Game
+Plays a game from a record file. The `g' key is a keyboard equivalent.
+A pop-up dialog prompts you for the file name. If the file contains more
+than one game, a second pop-up dialog
+displays a list of games (with information drawn from their PGN tags, if
+any), and you can select the one you want. Alternatively, you can load the
+Nth game in the file directly, by typing the number `N' after the
+file name, separated by a space.
+
+The game file parser will accept PGN (portable game notation),
+or in fact almost any file that contains moves in algebraic
+notation. 
+Notation of the form `P at f7'
+is accepted for piece-drops in bughouse games;
+this is a nonstandard extension to PGN.
+If the file includes a PGN position (FEN tag), or an old-style
+XBoard position diagram bracketed by `[--' and `--]'
+before the first move, the game starts from that position. Text
+enclosed in parentheses, square brackets, or curly braces is assumed to
+be commentary and is displayed in a pop-up window. Any other
+text in the file is ignored. PGN variations (enclosed in
+parentheses) are treated as comments; XBoard is not able to walk
+variation trees.
+The nonstandard PGN tag [Variant "varname"] functions similarly to
+the -variant command-line option (see below), allowing games in certain chess
+variants to be loaded.  There is also a heuristic to 
+recognize chess variants from the Event tag, by looking for the strings
+that the Internet Chess Servers put there when saving variant ("wild") games.
+.TP
+.B Load Next Game
+Loads the next game from the last game record file you loaded.
+The shifted `N' key is a keyboard equivalent.
+.TP
+.B Load Previous Game
+Loads the previous game from the last game record file you
+loaded.  The shifted `P' key is a keyboard equivalent.
+Not available if the last game was loaded from a pipe.
+.TP
+.B Reload Same Game
+Reloads the last game you loaded.
+Not available if the last game was loaded from a pipe.
+.TP
+.B Save Game
+Appends a record of the current game to a file.
+A pop-up dialog
+prompts you for the file name. If the game did not begin with
+the standard starting position, the game file includes the
+starting position used. Games are saved in the PGN (portable
+game notation) format, unless the oldSaveStyle option is true,
+in which case they are saved in an older format that is specific
+to XBoard. Both formats are human-readable, and both can be
+read back by the `Load Game' command.
+Notation of the form `P at f7'
+is accepted for piece-drops in bughouse games;
+this is a nonstandard extension to PGN.
+.TP
+.B Copy Game
+Copies a record of the current game to an internal clipboard in PGN
+format and sets the X selection to the game text.  The game can be
+pasted to another application (such as a text editor or another copy
+of XBoard) using that application's paste command.  In many X
+applications, such as xterm and emacs, the middle mouse button can be
+used for pasting; in XBoard, you must use the Paste Game command.
+.TP
+.B Paste Game
+Interprets the current X selection as a game record and loads it, as
+with Load Game.
+.TP
+.B Load Position
+Sets up a position from a position file.  A pop-up dialog prompts
+you for the file name. If the file contains more than one saved
+position, and you want to load the Nth one, type the number N
+after the file name, separated by a space. Position files must
+be in FEN (Forsythe-Edwards notation), or in the format that the
+Save Position command writes when oldSaveStyle is turned on.
+.TP
+.B Load Next Position
+Loads the next position from the last position file you loaded.
+.TP
+.B Load Previous Position
+Loads the previous position from the last position file you
+loaded.  Not available if the last position was loaded from a pipe.
+.TP
+.B Reload Same Position
+Reloads the last position you loaded.
+Not available if the last position was loaded from a pipe.
+.TP
+.B Save Position
+Appends a diagram of the current position to a file.
+A pop-up dialog
+prompts you for the file name. Positions are saved in
+FEN (Forsythe-Edwards notation) format unless the `oldSaveStyle'
+option is true, in which case they are saved in an older,
+human-readable format that is specific to XBoard. Both formats
+can be read back by the `Load Position' command.
+.TP
+.B Copy Position
+Copies the current position to an internal clipboard in FEN format and
+sets the X selection to the position text.  The position can be pasted
+to another application (such as a text editor or another copy of
+XBoard) using that application's paste command.  In many X
+applications, such as xterm and emacs, the middle mouse button can be
+used for pasting; in XBoard, you must use the Paste Position command.
+.TP
+.B Paste Position
+Interprets the current X selection as a FEN position and loads it, as
+with Load Position.
+.TP
+.B Mail Move
+.PD 0
+.TP
+.B Reload CMail Message
+.PD
+See \fICMail\fR.
+.TP
+.B Exit
+Exits from XBoard. The shifted `Q' key is a keyboard equivalent.
+.PP
+.SS Mode Menu
+.TP
+.B Machine White
+Tells the chess engine to play White.
+.TP
+.B Machine Black
+Tells the chess engine to play Black.
+.TP
+.B Two Machines
+Plays a game between two chess engines.
+.TP
+.B Analysis Mode
+XBoard tells the chess engine to start analyzing the current game/position
+and shows you the analysis as you move pieces around.
+Note: Some chess engines do not support Analysis mode.
+
+To set up a position to analyze, you do the following:
+
+1. Select Edit Position from the Mode Menu
+
+2. Set up the position.  Use the middle and right buttons to
+bring up the white and black piece menus.
+
+3. When you are finished, click on either the Black or White
+clock to tell XBoard which side moves first.
+
+4. Select Analysis Mode from the Mode Menu to start the analysis.
+
+The analysis function can also be used when observing games on an ICS
+with an engine loaded (zippy mode); the engine then will analyse
+the positions as they occur in the observed game.
+.TP
+.B Analyze File
+This option lets you load a game from a file (PGN, XBoard format, etc.)
+and analyze it. When you select this menu item, a pop-up window appears
+and asks for a file name to load.
+If the file contains multiple games, another pop up appears that lets
+you select which game you wish to analyze.
+After a game is loaded, use the XBoard arrow buttons to step
+forwards/backwards through the game and watch the analysis.
+Note: Some chess engines do not support Analysis mode.
+.TP
+.B ICS Client
+This is the normal mode when XBoard
+is connected to a chess server.  If you have moved into
+Edit Game or Edit Position mode, you can select this option to get out.
+
+To use xboard in ICS mode, run it in the foreground with the -ics
+option, and use the terminal you started it from to type commands and
+receive text responses from the chess server.  See
+\fIChess Servers\fR below for more information.
+
+XBoard activates some special position/game editing features when you
+use the `examine' or `bsetup' commands on ICS and you have
+`ICS Client' selected on the Mode menu.  First, you can issue the
+ICS position-editing commands with the mouse.  Move pieces by dragging
+with mouse button 1.  To drop a new piece on a square, press mouse
+button 2 or 3 over the square.  This brings up a menu of white pieces
+(button 2) or black pieces (button 3).  Additional menu choices let
+you empty the square or clear the board.  Click on the White or Black
+clock to set the side to play.  You cannot set the side to play or
+drag pieces to arbitrary squares while examining on ICC, but you can
+do so in `bsetup' mode on FICS.  In addition, the menu commands
+`Forward', `Backward', `Pause', and `Stop Examining'
+have special functions in this mode; see below.
+.TP
+.B Edit Game
+Allows you to make moves for both Black and White, and to change
+moves after backing up with the `Backward' command. The clocks do
+not run.
+
+In chess engine mode, the chess engine continues to check moves for legality
+but does not participate in the game. You can bring the chess engine
+into the game by selecting `Machine White', `Machine Black',
+or `Two Machines'.
+
+In ICS mode, the moves are not sent to the ICS: `Edit Game' takes
+XBoard out of ICS Client mode and lets you edit games locally.
+If you want to edit games on ICS in a way that other ICS users
+can see, use the ICS `examine' command or start an ICS match
+against yourself.
+.TP
+.B Edit Position
+Lets you set up an arbitrary board position.
+Use mouse button 1 to drag pieces to new squares, or to delete a piece
+by dragging it off the board or dragging an empty square on top of it.
+To drop a new piece on a square, press mouse button 2 or 3 over the
+square. This brings up a menu of white pieces (button 2) or
+black pieces (button 3). Additional menu choices let you empty the
+square or clear the board. You can set the side to play next by
+clicking on the word White or Black at the top of the screen.
+Selecting `Edit Position' causes XBoard to discard
+all remembered moves in the current game.
+
+In ICS mode, changes made to the position by `Edit Position' are
+not sent to the ICS: `Edit Position' takes XBoard out of
+`ICS Client' mode and lets you edit positions locally. If you want to
+edit positions on ICS in a way that other ICS users can see, use
+the ICS `examine' command, or start an ICS match against yourself.
+(See also the ICS Client topic above.)
+.TP
+.B Training
+Training mode lets you interactively guess the moves of a game for one
+of the players. You guess the next move of the game by playing the
+move on the board. If the move played matches the next move of the
+game, the move is accepted and the opponent's response is auto-played.
+If the move played is incorrect, an error message is displayed.  You
+can select this mode only while loading a game (that is, after
+selecting `Load Game' from the File menu).  While XBoard is in 
+`Training' mode, the navigation buttons are disabled.
+.TP
+.B Show Game List
+Shows or hides the list of games generated by the last `Load Game'
+command.
+.TP
+.B Show Move History
+Shows or hides a list of moves of the current game.
+This list allows you to move the display to any earlier position in the game
+by clicking on the corresponding move.
+.TP
+.B Show Engine Output
+Shows or hides a window in which the thinking output of any loaded engines
+is displayed.
+.TP
+.B Edit Tags
+Lets you edit the PGN (portable game notation)
+tags for the current game. After editing, the tags must still conform to
+the PGN tag syntax:
+
+.nf
+    <tag-section> ::= <tag-pair> <tag-section>
+                            <empty>
+    <tag-pair> ::= [ <tag-name> <tag-value> ]
+    <tag-name> ::= <identifier>
+    <tag-value> ::= <string>
+.fi
+
+See the PGN Standard for full details. Here is an example:
+
+.nf
+    [Event "Portoroz Interzonal"]
+    [Site "Portoroz, Yugoslavia"]
+    [Date "1958.08.16"]
+    [Round "8"]
+    [White "Robert J. Fischer"]
+    [Black "Bent Larsen"]
+    [Result "1-0"]
+.fi
+
+Any characters that do not match this syntax are silently ignored. Note that
+the PGN standard requires all games to have at least the seven tags shown
+above. Any that you omit will be filled in by XBoard
+with `?' (unknown value), or `-' (inapplicable value).
+.TP
+.B Edit Comment
+Adds or modifies a comment on the current position. Comments are
+saved by `Save Game' and are displayed by `Load Game',
+`Forward', and `Backward'.
+.TP
+.B ICS Input Box
+If this option is set in ICS mode,
+XBoard
+creates an extra window that you can use for typing in ICS commands.
+The input box is especially useful if you want to type in something long or do
+some editing on your input, because output from ICS doesn't get mixed
+in with your typing as it would in the main terminal window.
+.TP
+.B Pause
+Pauses updates to the board, and if you are playing against a chess engine,
+also pauses your clock. To continue, select `Pause' again, and the
+display will automatically update to the latest position.
+The `P' button and keyboard `p' key are equivalents.
+
+If you select Pause when you are playing against a chess engine and
+it is not your move, the chess engine's clock
+will continue to run and it will eventually make a move, at which point
+both clocks will stop. Since board updates are paused, however,
+you will not see the move until you exit from Pause mode (or select Forward).
+This behavior is meant to simulate adjournment with a sealed move.
+
+If you select Pause while you are observing or examining a game on a
+chess server, you can step backward and forward in the current history
+of the examined game without affecting the other observers and
+examiners, and without having your display jump forward to the latest
+position each time a move is made. Select Pause again to reconnect
+yourself to the current state of the game on ICS.
+
+If you select `Pause' while you are loading a game, the game stops
+loading. You can load more moves manually by selecting `Forward', or
+resume automatic loading by selecting `Pause' again.
+.PP
+.SS Action Menu
+.TP
+.B Accept
+Accepts a pending match offer. If there is more than one offer
+pending, you will have to type in a more specific command
+instead of using this menu choice.
+.TP
+.B Decline
+Declines a pending offer (match, draw, adjourn, etc.). If there
+is more than one offer pending, you will have to type in a more
+specific command instead of using this menu choice.
+.TP
+.B Call Flag
+Calls your opponent's flag, claiming a win on time, or claiming
+a draw if you are both out of time. You can also call your
+opponent's flag by clicking on his clock or by pressing the
+keyboard `t' key.
+.TP
+.B Draw
+Offers a draw to your opponent, accepts a pending draw offer
+from your opponent, or claims a draw by repetition or the 50-move
+rule, as appropriate. The `d' key is a keyboard equivalent.
+.TP
+.B Adjourn
+Asks your opponent to agree to adjourning the current game, or
+agrees to a pending adjournment offer from your opponent.
+.TP
+.B Abort
+Asks your opponent to agree to aborting the current game, or
+agrees to a pending abort offer from your opponent. An aborted
+game ends immediately without affecting either player's rating.
+.TP
+.B Resign
+Resigns the game to your opponent. The shifted `R' key is a
+keyboard equivalent.
+.TP
+.B Stop Observing
+Ends your participation in observing a game, by issuing the ICS
+observe command with no arguments. ICS mode only.
+.TP
+.B Stop Examining
+Ends your participation in examining a game, by issuing the ICS
+unexamine command. ICS mode only.
+.TP
+.B Adjudicate to White
+.PD 0
+.TP
+.B Adjudicate to Black
+.PD
+.PD 0
+.TP
+.B Adjudicate Draw
+.PD
+Terminate an ongoing game in Two-Machines mode (including match mode),
+with as result a win for white, for black, or a draw, respectively.
+The PGN file of the game will accompany the result string
+by the comment "user adjudication".
+.PP
+.SS Step Menu
+.TP
+.B Backward
+Steps backward through a series of remembered moves.
+The `[<]' button and the `b' key are equivalents,
+as is turning the mouse wheel towards you.
+In addition, pressing the Control key steps back one move, and releasing
+it steps forward again.
+
+In most modes, `Backward' only lets you look back at old positions;
+it does not retract moves. This is the case if you are playing against
+a chess engine, playing or observing a game on an ICS, or loading a game.
+If you select `Backward' in any of these situations, you will not
+be allowed to make a different move. Use `Retract Move' or
+`Edit Game' if you want to change past moves.
+
+If you are examining an ICS game, the behavior of `Backward'
+depends on whether XBoard is in Pause mode. If Pause mode is
+off, `Backward' issues the ICS backward command, which backs up
+everyone's view of the game and allows you to make a different
+move. If Pause mode is on, `Backward' only backs up your local
+view.
+.TP
+.B Forward
+Steps forward through a series of remembered moves (undoing the
+effect of `Backward') or forward through a game file. The
+`[>]' button and the `f' key are equivalents,
+as is turning the mouse wheel away from you.
+
+If you are examining an ICS game, the behavior of Forward
+depends on whether XBoard is in Pause mode. If Pause mode is
+off, `Forward' issues the ICS forward command, which moves
+everyone's view of the game forward along the current line. If
+Pause mode is on, `Forward' only moves your local view forward,
+and it will not go past the position that the game was in when
+you paused.
+.TP
+.B Back to Start
+Jumps backward to the first remembered position in the game.
+The `[<<]' button and the shifted `B' key are equivalents.
+
+In most modes, Back to Start only lets you look back at old
+positions; it does not retract moves. This is the case if you
+are playing against a local chess engine, playing or observing a game on
+a chess server, or loading a game. If you select `Back to Start' in any
+of these situations, you will not be allowed to make different
+moves. Use `Retract Move' or `Edit Game' if you want to change past
+moves; or use Reset to start a new game.
+
+If you are examining an ICS game, the behavior of @samp{Back to
+Start} depends on whether XBoard is in Pause mode. If Pause mode
+is off, `Back to Start' issues the ICS `backward 999999'
+command, which backs up everyone's view of the game to the start and
+allows you to make different moves. If Pause mode is on, @samp{Back
+to Start} only backs up your local view.
+.TP
+.B Forward to End
+Jumps forward to the last remembered position in the game. The
+`[>>]' button and the shifted `F' key are equivalents.
+
+If you are examining an ICS game, the behavior of @samp{Forward to
+End} depends on whether XBoard is in Pause mode. If Pause mode
+is off, `Forward to End' issues the ICS `forward 999999'
+command, which moves everyone's view of the game forward to the end of
+the current line. If Pause mode is on, `Forward to End' only moves
+your local view forward, and it will not go past the position
+that the game was in when you paused.
+.TP
+.B Revert
+If you are examining an ICS game and Pause mode is off, issues
+the ICS command `revert'.
+.TP
+.B Truncate Game
+Discards all remembered moves of the game beyond the current
+position. Puts XBoard into `Edit Game' mode if it was not there
+already.
+.TP
+.B Move Now
+Forces the chess engine to move immediately. Chess engine mode only.
+.TP
+.B Retract Move
+Retracts your last move. In chess engine mode, you can do this only
+after the chess engine has replied to your move; if the chess engine is still
+thinking, use `Move Now' first. In ICS mode, `Retract Move'
+issues the command `takeback 1' or `takeback 2'
+depending on whether it is your opponent's move or yours.
+.PP
+.SS Options Menu
+.TP
+.B Flip View
+Inverts your view of the chess board for the duration of the
+current game. Starting a new game returns the board to normal.
+The `v' key is a keyboard equivalent.
+.TP
+.B Adjudications
+Pops up a sub-menu where you can enable or disable various adjudications
+that XBoard can perform in engine-engine games.
+You can instruct XBoard to detect and terminate the game on checkmate
+or stalemate, even if the engines would not do so, to verify engine
+result claims (forfeiting engines that make false claims), rather than
+naively following the engine, to declare draw on positions
+which can never be won for lack of mating material, (e.g. KBK),
+or which are impossible to win unless the opponent seeks its own demise 
+(e.g. KBKN).
+For these adjudications to work, `Test Legality' should be switched on.
+It is also possible to instruct XBoard to enforce a 50-move or 3-fold-repeat
+rule and automatically declare draw (after a user-adjustable number of moves
+or repeats) even if the engines are prepared to go on.
+It is also possible to have XBoard declare draw on games that seem to drag on 
+forever, or adjudicate a loss if both engines agree (for 3 consecutive moves) that one
+of them is behind more than a user-adjustable score threshold.
+For the latter adjudication to work, XBoard should be able to properly understand
+the engine's scores. To facilitate the latter, you can inform xboard here if
+the engines report scores from the viewpoint of white, or from that of their own color.
+.TP
+.B Engine Settings
+Pops up a sub-menu where you can set some engine parameters common to most engines,
+such as hash-table size, tablebase cache size, maximum number of processors
+that SMP engines can use, and where to find the Polyglot adapter needed
+to run UCI engines under XBoard. The feature that allows setting of these parameters on
+engines is new since XBoard 4.3.15, so not many XBoard/WinBoard engines respond
+to it yet, but UCI engines should.
+It is also possible to specify a GUI opening book here, i.e. an opening
+book that XBoard consults for any position a playing engine gets in.
+It then forces the engine to play the book move, rather than to think up its own,
+if that position is found in the book.
+The book can switched on and off independently for either engine.
+.TP
+.B Time Control
+Pops up a sub-menu where you can set the time-control parameters interactively.
+Allows you to select classical or incremental time controls,
+set the moves per session, session duration, and time increment.
+Also allows specification of time-odds factors for one or both engines.
+If an engine is given a time-odds factor N, all time quota it gets, 
+be it at the beginning of a session or through the time increment or
+fixed time per move, will be divided by N.
+.TP
+.B Always Queen
+If this option is off, XBoard brings up a dialog
+box whenever you move a pawn to the last rank, asking what piece
+you want to promote it to. If the option is true, your pawns are
+always promoted to queens. Your opponent can still under-promote.
+.TP
+.B Animate Dragging
+If Animate Dragging is on, while you are dragging a piece with the
+mouse, an image of the piece follows the mouse cursor.
+If Animate Dragging is off, there is no visual feedback while you are
+dragging a piece, but if Animate Moving is on, the move will be
+animated when it is complete. 
+.TP
+.B Animate Moving
+If Animate Moving is on, all piece moves are animated.  An image of the
+piece is shown moving from the old square to the new square when the
+move is completed (unless the move was already animated by Animate Dragging).
+If Animate Moving is off, a moved piece instantly disappears from its
+old square and reappears on its new square when the move is complete.
+.TP
+.B Auto Comment
+If this option is on, any remarks made on ICS while you are observing or
+playing a game are recorded as a comment on the current move.  This includes
+remarks made with the ICS commands `say', `tell', `whisper',
+and `kibitz'.
+Limitation: remarks that you type yourself are not recognized;
+XBoard scans only the output from ICS, not the input you type to it.
+.TP
+.B Auto Flag
+If this option is on and one player runs out of time
+before the other,
+XBoard
+will automatically call his flag, claiming a win on time.
+In ICS mode, Auto Flag will only call your opponent's flag, not yours,
+and the ICS may award you a draw instead of a win if you have
+insufficient mating material.  In local chess engine mode,
+XBoard
+may call either player's flag and will not take material into account.
+.TP
+.B Auto Flip View
+If the Auto Flip View option is on when you start a game, the board
+will be automatically oriented so that your pawns move from the bottom
+of the window towards the top.
+.TP
+.B Auto Observe
+If this option is on and you add a player to your `gnotify'
+list on ICS, XBoard will automatically observe all of that
+player's games, unless you are doing something else (such as
+observing or playing a game of your own) when one starts.
+The games are displayed 
+from the point of view of the player on your gnotify list; that is, his
+pawns move from the bottom of the window towards the top.
+Exceptions:  If both players in a game are on your gnotify list, if
+your ICS 
+`highlight'
+variable is set to 0, or if the ICS you are using does not 
+properly support observing from Black's point of view,
+you will see the game from White's point of view.
+.TP
+.B Auto Raise Board
+If this option is on, whenever a new game begins, the chessboard window
+is deiconized (if necessary) and raised to the top of the stack of windows.
+.TP
+.B Auto Save
+If this option is true, at the end of every game XBoard prompts
+you for a file name and appends a record of the game to the file
+you specify. 
+Disabled if the `saveGameFile' command-line
+option is set, as in that case all games are saved to the specified file.
+See \fILoad and Save options\fR.
+.TP
+.B Blindfold
+If this option is on, XBoard displays the board as usual but does
+not display pieces or move highlights.  You can still move in the
+usual way (with the mouse or by typing moves in ICS mode), even though
+the pieces are invisible.
+.TP
+.B Flash Moves
+If this option is on, whenever a move is completed, the moved piece flashes.
+The number of times to flash is set by the flashCount command-line
+option; it defaults to 3 if Flash Moves is first turned on from the menu.
+
+If you are playing a game on an ICS, the board is always
+oriented at the start of the game so that your pawns move from
+the bottom of the window towards the top. Otherwise, the starting
+orientation is determined by the `flipView' command line option;
+if it is false (the default), White's pawns move from bottom to top
+at the start of each game; if it is true, Black's pawns move from
+bottom to top. See \fIUser interface options\fR.
+.TP
+.B Get Move List
+If this option is on, whenever XBoard
+receives the first board of a new ICS game (or a different game from
+the one it is currently displaying), it
+retrieves the list of past moves from the ICS.
+You can then review the moves with the `Forward' and `Backward'
+commands
+or save them with `Save Game'.  You might want to
+turn off this option if you are observing several blitz games at once,
+to keep from wasting time and network bandwidth fetching the move lists over
+and over.
+When you turn this option on from the menu, XBoard
+immediately fetches the move list of the current game (if any).
+.TP
+.B Highlight Last Move
+If Highlight Last Move is on, after a move is made, the starting and
+ending squares remain highlighted. In addition, after you use Backward
+or Back to Start, the starting and ending squares of the last move to
+be unmade are highlighted.
+.TP
+.B Move Sound
+If this option is on, XBoard alerts you by playing a sound
+after each of your opponent's moves (or after every
+move if you are observing a game on the Internet Chess Server).
+The sound is not played after moves you make or moves read from a
+saved game file. By default, the
+sound is the terminal bell, but on some systems you can change it
+to a sound file using the soundMove option; see below.
+
+If you turn on this option when using XBoard with the Internet
+Chess Server, you will probably want to give the
+`set bell 0'
+command to the ICS, since otherwise the ICS will ring the terminal bell
+after every move (not just yours). (The `.icsrc' file
+is a good place for this; see \fIICS options\fR.)
+.TP
+.B ICS Alarm
+When this option is on, an alarm sound is played when your clock
+counts down to the icsAlarmTime (by default, 5 seconds) in an ICS
+game.  For games with time controls that include an increment, the
+alarm will sound each time the clock counts down to the icsAlarmTime.
+By default, the alarm sound is the terminal bell, but on some systems
+you can change it to a sound file using the soundIcsAlarm option; see
+below.
+.TP
+.B Old Save Style
+If this option is off, XBoard saves games in PGN
+(portable game notation) and positions in FEN (Forsythe-Edwards
+notation).  If the option is on, a save style that is compatible
+with older versions of XBoard is used instead.
+The old position style is more human-readable
+than FEN; the old game style has no particular advantages.
+.TP
+.B Periodic Updates
+If this option is off (or if
+you are using a chess engine that does not support periodic updates),
+the analysis window
+will only be updated when the analysis changes. If this option is
+on, the Analysis Window will be updated every two seconds.
+.TP
+.B Ponder Next Move
+If this option is off, the chess engine will think only when it is on
+move.  If the option is on, the engine will also think while waiting
+for you to make your move.
+.TP
+.B Popup Exit Message
+If this option is on, when XBoard wants to display a message just
+before exiting, it brings up a modal dialog box and waits for you to
+click OK before exiting.  If the option is off, XBoard prints the
+message to standard error (the terminal) and exits immediately.
+.TP
+.B Popup Move Errors
+If this option is off, when you make an error in moving (such as
+attempting an illegal move or moving the wrong color piece), the
+error message is displayed in the message area.  If the option is
+on, move errors are displayed in small pop-up windows like other errors.
+You can dismiss an error pop-up either by clicking its OK button or by
+clicking anywhere on the board, including down-clicking to start a move.
+.TP
+.B Premove
+If this option is on while playing a game on an ICS, you can register
+your next planned move before it is your turn.  Move the piece with
+the mouse in the ordinary way, and the starting and ending squares
+will be highlighted with a special color (red by default).  When it is
+your turn, if your registered move is legal, XBoard will send it to
+ICS immediately; if not, it will be ignored and you can make a
+different move.  If you change your mind about your premove, either
+make a different move, or double-click on any piece to cancel the move
+entirely.
+.TP
+.B Quiet Play
+If this option is on, XBoard will automatically issue an ICS
+`set shout 0'
+command whenever you start a game and a
+`set shout 1'
+command whenever you finish one.  Thus, you will not be distracted
+by shouts from other ICS users while playing.
+.TP
+.B Show Coords
+If this option is on, XBoard displays algebraic coordinates
+along the board's left and bottom edges.
+.TP
+.B Hide Thinking
+If this option is off, the chess engine's notion of the score and best
+line of play from the current position is displayed as it is
+thinking. The score indicates how many pawns ahead (or if negative,
+behind) the chess engine thinks it is. In matches between two
+machines, the score is prefixed by `W' or `B' to indicate
+whether it is showing White's thinking or Black's, and only the thinking
+of the engine that is on move is shown.
+.TP
+.B Test Legality
+If this option is on, XBoard tests whether the moves you try to make
+with the mouse are legal and refuses to let you make an illegal move.
+Moves loaded from a file with `Load Game' are also checked.  If
+the option is off, all moves are accepted, but if a local chess engine
+or the ICS is active, they will still reject illegal moves.  Turning
+off this option is useful if you are playing a chess variant with
+rules that XBoard does not understand.  (Bughouse, suicide, and wild
+variants where the king may castle after starting on the d file are
+generally supported with Test Legality on.)
+.PP
+.SS Help Menu
+.TP
+.B Info XBoard
+Displays the XBoard documentation in info format.  For this feature to
+work, you must have the GNU info program installed on your system, and
+the file `xboard.info' must either be present in the current
+working directory, or have been installed by the `make install'
+command when you built XBoard.
+.TP
+.B Man XBoard
+Displays the XBoard documentation in man page format.  For this
+feature to work, the file `xboard.6' must have been installed by
+the `make install' command when you built XBoard, and the
+directory it was placed in must be on the search path for your
+system's `man' command.
+.TP
+.B Hint
+Displays a move hint from the chess engine.
+.TP
+.B Book
+Displays a list of possible moves from the chess engine's opening
+book.  The exact format depends on what chess engine you are using.
+With GNU Chess 4, the first column gives moves, the second column
+gives one possible response for each move, and the third column shows
+the number of lines in the book that include the move from the first
+column. If you select this option and nothing happens, the chess
+engine is out of its book or does not support this feature.
+.TP
+.B About XBoard
+Shows the current XBoard version number.
+.PP
+.SS Other Shortcut Keys
+.TP
+.B Iconize
+Pressing the `i' or `c' key iconizes XBoard. The graphical
+icon displays a white knight if it is White's move, or a black knight
+if it is Black's move. If your X window manager displays only text
+icons, not graphical ones, check its documentation; there is probably
+a way to enable graphical icons.  If you get black and white reversed,
+we would like to hear about it; see \fIProblems\fR below for
+instructions on how to report this problem.
+.PP
+You can add or remove shortcut keys using the X resources
+`form.translations'. Here is an example of what would go in your
+`.Xresources' file:
+
+.nf
+    XBoard*form.translations: \\
+      Shift<Key>?: AboutGameProc() \\n\\
+      <Key>y: AcceptProc() \\n\\
+      <Key>n: DeclineProc() \\n\\
+      <Key>i: NothingProc()
+.fi
+
+Binding a key to `NothingProc' makes it do nothing, thus removing
+it as a shortcut key. The XBoard commands that can be bound to keys
+are:
+
+.nf
+    AbortProc, AboutGameProc, AboutProc, AcceptProc, AdjournProc,
+    AlwaysQueenProc, AnalysisModeProc, AnalyzeFileProc,
+    AnimateDraggingProc, AnimateMovingProc, AutobsProc, AutoflagProc,
+    AutoflipProc, AutoraiseProc, AutosaveProc, BackwardProc,
+    BlindfoldProc, BookProc, CallFlagProc, CopyGameProc, CopyPositionProc,
+    DebugProc, DeclineProc, DrawProc, EditCommentProc, EditGameProc,
+    EditPositionProc, EditTagsProc, EnterKeyProc, FlashMovesProc,
+    FlipViewProc, ForwardProc, GetMoveListProc, HighlightLastMoveProc,
+    HintProc, Iconify, IcsAlarmProc, IcsClientProc, IcsInputBoxProc,
+    InfoProc, LoadGameProc, LoadNextGameProc, LoadNextPositionProc,
+    LoadPositionProc, LoadPrevGameProc, LoadPrevPositionProc,
+    LoadSelectedProc, MachineBlackProc, MachineWhiteProc, MailMoveProc,
+    ManProc, MoveNowProc, MoveSoundProc, NothingProc, OldSaveStyleProc,
+    PasteGameProc, PastePositionProc, PauseProc, PeriodicUpdatesProc,
+    PonderNextMoveProc, PopupExitMessageProc, PopupMoveErrorsProc,
+    PremoveProc, QuietPlayProc, QuitProc, ReloadCmailMsgProc,
+    ReloadGameProc, ReloadPositionProc, RematchProc, ResetProc,
+    ResignProc, RetractMoveProc, RevertProc, SaveGameProc,
+    SavePositionProc, ShowCoordsProc, ShowGameListProc, ShowThinkingProc,
+    StopExaminingProc, StopObservingProc, TestLegalityProc, ToEndProc,
+    ToStartProc, TrainingProc, TruncateGameProc, and TwoMachinesProc.
+.fi
+
+.SH OPTIONS
+This section documents the command-line options to XBoard.  You can
+set these options in two ways: by typing them on the shell command
+line you use to start XBoard, or by setting them as X resources
+(typically in your `.Xresources' file).  Many of the options
+cannot be changed while XBoard is running; others set the initial
+state of items that can be changed with the \fIOptions\fR menu.
+
+Most of the options have both a long name and a short name. To turn a
+boolean option on or off from the command line, either give its long
+name followed by the value true or false
+(`-longOptionName true'), or give just the short name to turn the
+option on (`-opt'), or the short name preceded by `x' to
+turn the option off (`-xopt'). For options that take strings or
+numbers as values, you can use the long or short option names
+interchangeably.
+
+Each option corresponds to an X resource with the same name, so
+if you like, you can set options in your `.Xresources' file
+or in a file named `XBoard' in your home directory.
+For options that have two names, the longer one is the name of
+the corresponding X resource; the short name is not recognized.
+To turn a boolean option on or off as an
+X resource, give its long name followed by the value
+true or false (`XBoard*longOptionName: true').
+
+.SS Chess Engine Options
+.TP
+.B -tc or -timeControl minutes[:seconds]
+Each player begins with his clock set to the `timeControl' period.
+Default: 5 minutes.
+The additional options `movesPerSession' and `timeIncrement'
+are mutually exclusive.  
+.TP
+.B -mps or -movesPerSession moves
+When both players have made `movesPerSession' moves, a
+new `timeControl' period is added to both clocks.  Default: 40 moves.
+.TP
+.B -inc or -timeIncrement seconds
+If this option is specified, `movesPerSession' is ignored.
+Instead, after each player's move, `timeIncrement' seconds are
+added to his clock.  
+Use `-inc 0' if you want to require the entire
+game to be played in one `timeControl' period, with no increment.
+Default: -1, which specifies `movesPerSession' mode.
+.TP
+.B -clock/-xclock or -clockMode true/false
+Determines whether or not to display the chess clocks. If clockMode is
+false, the clocks are not shown, but the side that is to play next
+is still highlighted. Also, unless `searchTime'
+is set, the chess engine still keeps track of the clock time and uses it to
+determine how fast to make its moves.
+.TP
+.B -st or -searchTime minutes[:seconds]
+Tells the chess engine to spend at most the given amount of time
+searching for each of its moves. Without this option, the chess engine
+chooses its search time based on the number of moves and amount
+of time remaining until the next time control.
+Setting this option also sets clockMode to false.
+.TP
+.B -depth or -searchDepth number
+Tells the chess engine to look ahead at most the given number of moves
+when searching for a move to make. Without this option, the chess
+engine chooses its search depth based on the number of moves and
+amount of time remaining until the next time control.  With the option,
+the engine will cut off its search early if it reaches the specified depth.
+.TP
+.B -firstNPS number
+.PD 0
+.TP
+.B -secondNPS number
+.PD
+Tells the chess engine to use an internal time standard based on its node count, 
+rather then wall-clock time, to make its timing decisions. 
+The time in virtual seconds should be obtained by dividing the node count 
+through the given number, like the number was a rate in nodes per second. 
+Xboard will manage the clocks in accordance with this, relying on the number 
+of nodes reported by the engine in its thinking output. If the given number equals zero, 
+it can obviously not be used to convert nodes to seconds, and the time reported 
+by the engine is used to decrement the XBoard clock in stead. The engine is supposed to 
+report in CPU time it uses, rather than wall-clock time, in this mode. This option 
+can provide fairer conditions for engine-engine matches on heavily loaded machines, 
+or with very fast games (where the wall clock is too inaccurate). 
+`showThinking' must be on for this option to work. Default: -1 (off).
+Not many engines might support this yet!
+.TP
+.B -firstTimeOdds factor
+.PD 0
+.TP
+.B -secondTimeOdds factor
+.PD
+Reduces the time given to the mentioned engine by the given factor. 
+If pondering is off, the effect is indistinguishable from what would happen 
+if the engine was running on an n-times slower machine. Default: 1.
+.TP
+.B -timeOddsMode mode
+This option determines how the case is handled where both engines have a time-odds handicap. 
+If mode=1, the engine that gets the most time will always get the nominal time, 
+as specified by the time-control options, and its opponent's time is renormalized accordingly. 
+If mode=0, both play with reduced time. Default: 0.
+.TP
+.B -hideThinkingFromHuman true/false
+Controls the Hide Thinking option. See \fIOptions Menu\fR. Default: true.
+(Replaces the Show-Thinking option of older xboard versions.)
+.TP
+.B -thinking/-xthinking or -showThinking true/false
+Forces the engine to send thinking output to xboard. 
+Used to be the only way to control if thinking output was displayed 
+in older xboard versions,
+but as the thinking output in xboard 4.3 is also used for several other
+purposes (adjudication, storing in PGN file) the display of it is now controlled
+by the new option Hide Thinking. See \fIOptions Menu\fR. Default: false.
+(But if xboard needs the thinking output for some purpose,
+it makes the engine send it despite the setting of this option.)
+.TP
+.B -ponder/-xponder or -ponderNextMove true/false
+Sets the Ponder Next Move menu option. See \fIOptions Menu\fR. Default: true.
+.TP
+.B -smpCores number
+Specifies the maximum number of CPUs an SMP engine is allowed to use.
+Only works for engines that support the XBoard/WinBoard-protocol cores feature.
+.TP
+.B -mg or -matchGames n
+Automatically runs an n-game match between two chess engines,
+with alternating colors.
+If the `loadGameFile' or `loadPositionFile' option is set,
+XBoard
+starts each game with the given opening moves or the given position;
+otherwise, the games start with the standard initial chess position.
+If the `saveGameFile' option is set, a move record for the
+match is appended to the specified file. If the `savePositionFile'
+option is set, the final position reached in each game of the match is appended
+to the specified file. When the match is over, XBoard
+displays the match score and exits. Default: 0 (do not run a match).
+.TP
+.B -mm/-xmm or -matchMode true/false
+Setting `matchMode' to true is equivalent to setting
+`matchGames' to 1.
+.TP
+.B -sameColorGames n
+Automatically runs an n-game match between two chess engines,
+without alternating colors.
+Otherwise the same applies as for the `-matchGames' option,
+over which it takes precedence if both are specified. (See there.)
+Default: 0 (do not run a match).
+.TP
+.B -fcp or -firstChessProgram program
+Name of first chess engine.
+Default: `Fairy-Max'.
+.TP
+.B -scp or -secondChessProgram program
+Name of second chess engine, if needed.
+A second chess engine is started only in Two Machines (match) mode.
+Default: `Fairy-Max'.
+.TP
+.B -fb/-xfb or -firstPlaysBlack true/false
+In games between two chess engines, firstChessProgram normally plays
+white.  If this option is true, firstChessProgram plays black.  In a
+multi-game match, this option affects the colors only for the first
+game; they still alternate in subsequent games.
+.TP
+.B -fh or -firstHost host
+.PD 0
+.TP
+.B -sh or -secondHost host
+.PD
+Hosts on which the chess engines are to run. The default for
+each is `localhost'. If you specify another host, XBoard
+uses `rsh' to run the chess engine there. (You can substitute a
+different remote shell program for rsh using the `remoteShell'
+option described below.)
+.TP
+.B -fd or -firstDirectory dir
+.PD 0
+.TP
+.B -sd or -secondDirectory dir
+.PD
+Working directories in which the chess engines are to be run.
+The default is "", which means to run the chess engine
+in the same working directory as XBoard
+itself.  (See the CHESSDIR environment variable.)
+This option is effective only when the chess engine is being run
+on the local host; it does not work if the engine is run remotely
+using the -fh or -sh option.
+.TP
+.B -initString string
+.PD 0
+.TP
+.B -secondInitString string
+.PD
+The string that is sent to initialize each chess engine for a new game.
+Default:
+
+.nf
+    new
+    random
+.fi
+
+Setting this option from the command line is tricky, because you must
+type in real newline characters, including one at the very end.
+In most shells you can do this by
+entering a `\\' character followed by a newline. It is easier to set
+the option from your `.Xresources' file; in that case you can
+include the character sequence `\\n' in the string, and it will
+be converted to a newline.
+
+If you change this option, don't remove the `new' 
+command; it is required by all chess engines to
+start a new game.
+
+You can remove the `random' command if you like; including it
+causes GNU Chess 4 to randomize its move selection slightly so that it
+doesn't play the same moves in every game.  Even without
+`random', GNU Chess 4 randomizes its choice of moves from its
+opening book.  Many other chess engines ignore this command entirely
+and always (or never) randomize.
+
+You can also try adding other commands to the initString; see the
+documentation of the chess engine you are using for details.
+.TP
+.B -firstComputerString string
+.PD 0
+.TP
+.B -secondComputerString string
+.PD
+The string that is sent to the chess engine if its opponent is another
+computer chess engine.  The default is `computer\\n'.  Probably the
+only useful alternative is the empty string (`'), which keeps the
+engine from knowing that it is playing another computer.
+.TP
+.B -reuse/-xreuse or -reuseFirst true/false
+.PD 0
+.TP
+.B -reuse2/-xreuse2 or -reuseSecond true/false
+.PD
+If the option is false,
+XBoard kills off the chess engine after every game and starts
+it again for the next game.  
+If the option is true (the default), 
+XBoard starts the chess engine only once
+and uses it repeatedly to play multiple games.
+Some old chess engines may not work properly when
+reuse is turned on, but otherwise games will start faster if it is left on.
+.TP
+.B -firstProtocolVersion version-number
+.PD 0
+.TP
+.B -secondProtocolVersion version-number
+.PD
+This option specifies which version of the chess engine communication
+protocol to use.  By default, version-number is 2.  In version 1, the
+"protover" command is not sent to the engine; since version 1 is a
+subset of version 2, nothing else changes.  Other values for
+version-number are not supported.
+.TP
+.B -firstScoreAbs true/false
+.PD 0
+.TP
+.B -secondScoreAbs true/false
+.PD
+If this option is set, the score reported by the engine is taken to be 
+that in favor of white, even when the engine plays black. 
+Important when XBoard uses the score for adjudications, or in PGN reporting. 
+.TP
+.B -niceEngines priority
+This option allows you to lower the priority of the engine processes, 
+so that the generally insatiable hunger for CPU time of chess engines does not interfere so much 
+with smooth operation of XBoard (or the rest of your system). 
+Negative values could increase the engine priority, which is not recommended.
+.TP
+.B -firstOptions string
+.PD 0
+.TP
+.B -secondOptions string
+.PD
+The given string is a comma-separated list of (option name=option value) pairs, 
+like the following example: "style=Karpov,blunder rate=0". 
+If an option announced by the engine at startup through the feature commands of the XBoard/WinBoard protocol 
+matches one of the option names (i.e. "style" or "blunder rate"), 
+it would be set to the given value (i.e. "Karpov" or 0) 
+through a corresponding option command to the engine. 
+This provided that the type of the value (text or numeric) matches as well.
+.TP
+.B -firstNeedsNoncompliantFEN string
+.PD 0
+.TP
+.B -secondNeedsNoncompliantFEN string
+.PD
+The castling rights and e.p. fields of the FEN sent to the mentioned engine 
+with the setboard command will be replaced by the given string. This can for 
+instance be used to run engines that do not understand Chess960 FENs in 
+variant fischerandom, to make them at least understand the opening position, 
+through setting the string to "KQkq -". (Note you also have to give the e.p. field!) 
+Other possible applications are to provide work-arounds for engines that want to see 
+castling and e.p. fields in variants that do not have castling or e.p. 
+(shatranj, courier, xiangqi, shogi) so that XBoard would normally omit them 
+(string = "- -"), or to add variant-specific fields that are not yet supported by XBoard 
+(e.g. to indicate the number of checks in 3check).
+.PP
+.SS UCI + WB Engine Settings
+.TP
+.B -fUCI or -firstIsUCI true/false
+.PD 0
+.TP
+.B -sUCI or -secondIsUCI true/false
+.PD
+Indicates if the mentioned engine executable file is an UCI engine, 
+and should be run with the aid of the Polyglot adapter rather than directly. 
+Xboard will then pass the other UCI options and engine name to Polyglot 
+through a .ini temporary file created for the purpose.
+.TP
+.B -PolyglotDir filename
+Gives the name of the directory in which the Polyglot adapter for UCI engines expects its files.
+Default: "/usr/local/share/polyglot".
+.TP
+.B -usePolyglotBook true/false
+Specifies if the Polyglot book should be used.
+.TP
+.B -PolyglotBook filename
+Gives the filename of the opening book that Polyglot should use. 
+From XBoard 4.3.15 on, native XBoard/WinBoard engines will also use the opening book specified here, 
+provided the `usePolyglotBook' option is set to true,
+and the option `firstHasOwnBookUCI' or `secondHasOwnBookUCI' applying to the engine
+is set to false.
+The engine will be kept in force mode as long as the current position is in book, 
+and XBoard will select the book moves for it. Default "".
+.TP
+.B -fNoOwnBookUCI or -firstXBook or -firstHasOwnBookUCI true/false
+.PD 0
+.TP
+.B -sNoOwnBookUCI or -secondXBook or -secondHasOwnBookUCI true/false
+.PD
+Indicates if the mentioned engine has its own opening book it should play from,
+rather than using the external book through XBoard. Default: false.
+.TP
+.B -defaultHashSize n
+Sets the size of the hash table to n MegaBytes. Together with the EGTB cache size 
+this number is also used to calculate the memory setting of XBoard/WinBoard engines, 
+for those that support the memory feature of the XBoard/WinBoard protocol. Default: 64.
+.TP
+.B -defaultCacheSizeEGTB n
+Sets the size of the EGTB cache to n MegaBytes. Together with the hash-table size 
+this number is also used to calculate the memory setting of XBoard/WinBoard engines, 
+for those that support the memory feature of the XBoard/WinBoard protocol. Default: 4.
+.TP
+.B -defaultPathEGTB filename
+Gives the name of the directory where the end-game tablebases are installed, for UCI engines.
+Default: "/usr/local/share/egtb".
+.TP
+.B -egtFormats string
+Specifies which end-game tables are installed on the computer, and where. 
+The argument is a comma-separated list of format specifications, 
+each specification consisting of a format name, a colon, and a directory path name, 
+e.g. "nalimov:/usr/local/share/egtb". 
+If the name part matches that of a format that the engine requests through a feature command, 
+xboard will relay the path name for this format to the engine through an egtpath command. 
+One egtpath command for each matching format will be sent. 
+Popular formats are "nalimov" DTM tablebases and "scorpio" bitbases.
+Default: "".
+.PP
+.SS ICS options
+.TP
+.B -ics/-xics or -internetChessServerMode true/false
+Connect with an Internet Chess Server to play chess against its
+other users, observe games they are playing, or review games
+that have recently finished. Default: false.
+.TP
+.B -icshost or -internetChessServerHost host
+The Internet host name or address of the chess server to connect
+to when in ICS mode. Default: `chessclub.com'.
+Another popular chess server to try is `freechess.org'.
+If your site doesn't have a working Internet name server, try
+specifying the host address in numeric form. 
+You may also need
+to specify the numeric address when using the icshelper option
+with timestamp or timeseal (see below).
+.TP
+.B -icsport or -internetChessServerPort port-number
+The port number to use when connecting to a chess server in ICS
+mode. Default: 5000.
+.TP
+.B -icshelper or -internetChessServerHelper prog-name
+An external helper program used to communicate with the chess server.
+You would set it to "timestamp" for ICC (chessclub.com) or
+"timeseal" for FICS (freechess.org), after
+obtaining the correct version of timestamp or timeseal for your
+computer.  See "help timestamp" on ICC and "help timeseal" on FICS.
+This option is shorthand for `-useTelnet -telnetProgram program'.
+.TP
+.B -telnet/-xtelnet or -useTelnet true/false
+This option is poorly named; it should be called useHelper.
+If set to true, it instructs XBoard to run an external
+program to communicate with the Internet Chess Server. 
+The program to use is given by the telnetProgram option.
+If the option is
+false (the default), XBoard opens a TCP socket and uses its own
+internal implementation of the telnet protocol to communicate with the
+ICS. See \fIFirewalls\fR.
+.TP
+.B -telnetProgram prog-name
+This option is poorly named; it should be called helperProgram.
+It gives the name of the telnet program to be used with
+the `gateway' and `useTelnet' options.  The default is
+`telnet'. The telnet program is invoked with the value of
+`internetChessServerHost' as its first argument and the value
+of `internetChessServerPort' as its second argument.
+See \fIFirewalls\fR.
+.TP
+.B -gateway host-name
+If this option is set to a host name, XBoard communicates with the
+Internet Chess Server by using `rsh' to run
+the `telnetProgram' on the given host,
+instead of using its own internal implementation
+of the telnet protocol. You can substitute a different remote shell
+program for `rsh' using the `remoteShell' option described below.
+See \fIFirewalls\fR.
+.TP
+.B -internetChessServerCommPort or -icscomm dev-name
+If this option is set, XBoard communicates with the ICS through
+the given character I/O device instead of opening a TCP connection.
+Use this option if your system does not have any kind of
+Internet connection itself (not even a SLIP or PPP connection),
+but you do have dial-up access (or a hardwired terminal line) to
+an Internet service provider from which you can telnet to the ICS.
+
+The support for this option in XBoard is minimal. You need to
+set all communication parameters and tty modes before you enter
+XBoard.
+
+Use a script something like this:
+
+.nf
+    stty raw -echo 9600 > /dev/tty00
+    xboard -ics -icscomm /dev/tty00
+.fi
+
+Here replace `/dev/tty00' with the name of the device that your
+modem is connected to. You might have to add several more
+options to these stty commands. See the man pages for `stty'
+and `tty' if you run into problems. Also, on many systems stty
+works on its standard input instead of standard output, so you
+have to use `<' instead of `>'.
+
+If you are using linux, try starting with the script below.
+Change it as necessary for your installation.
+
+.nf
+    #!/bin/sh -f
+    # configure modem and fire up XBoard
+    
+    # configure modem
+    (
+      stty 2400 ; stty raw ; stty hupcl ; stty -clocal
+      stty ignbrk ; stty ignpar ; stty ixon ; stty ixoff
+      stty -iexten ; stty -echo
+    ) < /dev/modem
+    xboard -ics -icscomm /dev/modem
+.fi
+
+After you start XBoard in this way, type whatever commands are
+necessary to dial out to your Internet provider and log in.
+Then telnet to ICS, using a command like
+`telnet chessclub.com 5000'.
+Important: See the paragraph below about extra echoes, 
+in \fILimitations\fR.
+.TP
+.B -icslogon or -internetChessServerLogonScript file-name
+Whenever XBoard connects to the Internet Chess Server,
+if it finds a file with the name given in this option, it feeds the
+file's contents to the ICS as commands. The default file name
+is `.icsrc'.
+Usually the first two lines of the file should be
+your ICS user name and password.
+The file can be either in $CHESSDIR, in XBoard's working
+directory if CHESSDIR is not set, or in your home directory.
+.TP
+.B -msLoginDelay delay
+If you experience trouble logging on to an ICS when using the
+`-icslogon' option, inserting some delay between characters
+of the logon script may help. This option adds `delay'
+milliseconds of delay between characters. Good values to try
+are 100 and 250.
+.TP
+.B -icsinput/-xicsinput or -internetChessServerInputBox true/false
+Sets the ICS Input Box menu option. See \fIMode Menu\fR. Default: false.
+.TP
+.B -autocomm/-xautocomm or -autoComment true/false
+Sets the Auto Comment menu option. See \fIOptions Menu\fR. Default: false.
+.TP
+.B -autoflag/-xautoflag or -autoCallFlag true/false
+Sets the Auto Flag menu option.  See \fIOptions Menu\fR. Default: false.
+.TP
+.B -autobs/-xautobs or -autoObserve true/false
+Sets the Auto Observe menu option.  See \fIOptions Menu\fR. Default: false.
+.TP
+.B -autoKibitz
+Enables kibitzing of the engines last thinking output (depth, score, time, speed, PV) 
+before it moved
+to the ICS, in zippy mode. The option `showThinking' must be switched on for 
+this option to work.
+Also diverts similar kibitz information of an opponent engine that is playing you 
+through the ICS to the engine-output window, as if the engine was playing locally.
+.TP
+.B -moves/-xmoves or -getMoveList true/false
+Sets the Get Move List menu option.  See \fIOptions Menu\fR.  Default: true.
+.TP
+.B -alarm/-xalarm or -icsAlarm true/false
+Sets the ICS Alarm menu option.  See \fIOptions Menu\fR. Default: true.
+.TP
+.B -icsAlarmTime ms
+Sets the time in milliseconds for the ICS Alarm menu option.
+See \fIOptions Menu\fR. Default: 5000.
+.TP
+.B lowTimeWarning true/false
+Controls a color change of the board as a warning your time is running out.
+See \fIOptions Menu\fR. Default: false.
+.TP
+.B -pre/-xpre \\fRor\\fB -premove true/false
+Sets the Premove menu option. See \fIOptions Menu\fR. Default: true.
+.TP
+.B -quiet/-xquiet or -quietPlay true/false
+Sets the Quiet Play menu option.  See \fIOptions Menu\fR.  Default: false.
+.TP
+.B -colorizeMessages or -colorize
+Setting colorizeMessages
+to true tells XBoard to colorize the messages received from
+the ICS.  Colorization works only if your xterm 
+supports ISO 6429 escape sequences for changing text colors.
+.TP
+.B -colorShout foreground,background,bold
+.PD 0
+.TP
+.B -colorSShout foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorChannel1 foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorChannel foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorKibitz foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorTell foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorChallege foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorRequest foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorSeek foreground,background,bold
+.PD
+.PD 0
+.TP
+.B -colorNormal foreground,background,bold
+.PD
+These options set the colors used when colorizing ICS messages.
+All ICS messages are grouped into one of these categories:
+shout, sshout, channel 1, other channel, kibitz, tell, challenge, 
+request (including abort, adjourn, draw, pause, and takeback), or
+normal (all other messages).  
+
+Each foreground or background argument can be one of the following:
+black, red, green, yellow, blue, magenta, cyan, white, or default.
+Here ``default'' means the default foreground or background color of
+your xterm.  Bold can be 1 or 0.  If background is omitted, ``default''
+is assumed; if bold is omitted, 0 is assumed.
+
+Here is an example of how to set the colors in your `.Xresources' file.
+The colors shown here are the default values; you will get
+them if you turn `-colorize' on without specifying your own colors.
+
+.nf
+    xboard*colorizeMessages: true	
+    xboard*colorShout: green
+    xboard*colorSShout: green, black, 1
+    xboard*colorChannel1: cyan
+    xboard*colorChannel: cyan, black, 1
+    xboard*colorKibitz: magenta, black, 1
+    xboard*colorTell: yellow, black, 1
+    xboard*colorChallenge: red, black, 1
+    xboard*colorRequest: red
+    xboard*colorSeek: blue
+    xboard*colorNormal: default
+.fi
+.TP
+.B -soundProgram progname
+If this option is set to a sound-playing program that is installed and
+working on your system, XBoard can play sound files when certain
+events occur, listed below.  The default program name is "play".  If
+any of the sound options is set to "$", the event rings the terminal
+bell by sending a ^G character to standard output, instead of playing
+a sound file.  If an option is set to the empty string "", no sound is
+played for that event.
+.TP
+.B -soundShout filename
+.PD 0
+.TP
+.B -soundSShout filename
+.PD
+.PD 0
+.TP
+.B -soundChannel filename
+.PD
+.PD 0
+.TP
+.B -soundKibitz filename
+.PD
+.PD 0
+.TP
+.B -soundTell filename
+.PD
+.PD 0
+.TP
+.B -soundChallenge filename
+.PD
+.PD 0
+.TP
+.B -soundRequest filename
+.PD
+.PD 0
+.TP
+.B -soundSeek filename
+.PD
+These sounds are triggered in the same way as the colorization events
+described above.  They all default to "", no sound.  They are played
+only if the colorizeMessages is on.
+.TP
+.B -soundMove filename
+This sound is used by the Move Sound menu option.  Default: "$".
+.TP
+.B -soundIcsAlarm filename
+This sound is used by the ICS Alarm menu option.  Default: "$".
+.TP
+.B -soundIcsWin filename
+This sound is played when you win an ICS game.  Default: "" (no sound).
+.TP
+.B -soundIcsLoss filename
+This sound is played when you lose an ICS game.  Default: "" (no sound).
+.TP
+.B -soundIcsDraw filename
+This sound is played when you draw an ICS game.  Default: "" (no sound).
+.TP
+.B -soundIcsUnfinished filename
+This sound is played when an ICS game that you are participating in is
+aborted, adjourned, or otherwise ends inconclusively.  Default: "" (no
+sound).
+
+Here is an example of how to set the sounds in your `.Xresources' file:
+
+.nf
+    xboard*soundShout: shout.wav
+    xboard*soundSShout: sshout.wav
+    xboard*soundChannel1: channel1.wav
+    xboard*soundChannel: channel.wav
+    xboard*soundKibitz: kibitz.wav
+    xboard*soundTell: tell.wav
+    xboard*soundChallenge: challenge.wav
+    xboard*soundRequest: request.wav
+    xboard*soundSeek: seek.wav
+    xboard*soundMove: move.wav
+    xboard*soundIcsWin: win.wav
+    xboard*soundIcsLoss: lose.wav
+    xboard*soundIcsDraw: draw.wav
+    xboard*soundIcsUnfinished: unfinished.wav
+    xboard*soundIcsAlarm: alarm.wav
+.fi
+.PP
+.SS Load and Save options
+.TP
+.B -lgf or -loadGameFile file
+.PD 0
+.TP
+.B -lgi or -loadGameIndex index
+.PD
+If the `loadGameFile' option is set, XBoard loads the specified
+game file at startup. The file name `-' specifies the standard
+input. If there is more than one game in the file, XBoard
+pops up a menu of the available games, with entries based on their PGN 
+(Portable Game Notation) tags.
+If the `loadGameIndex' option is set to `N', the menu is suppressed
+and the N th game found in the file is loaded immediately.
+The menu is also suppressed if `matchMode' is enabled or if the game file
+is a pipe; in these cases the first game in the file is loaded immediately.
+Use the `pxboard' shell script provided with XBoard if you
+want to pipe in files containing multiple games and still see the menu.
+If the loadGameIndex specifies an index -1, this triggers auto-increment
+of the index in `matchMode', which means that after every game the
+index is incremented by one, causing each game of the match to be played
+from the next game in the file. Similarly, specifying an index value of -2
+causes the index to be incremented every two games, so that each game
+in the file is used twice (with reversed colors).
+The `rewindIndex' option causes the index to be reset to the
+first game of the file when it has reached a specified value.
+.TP
+.B -rewindIndex n
+Causes a position file or game file to be rewound to its beginning after n
+positions or games in auto-increment `matchMode'. 
+See `loadPositionIndex' and `loadGameIndex'.
+default: 0 (no rewind).
+.TP
+.B -td or -timeDelay seconds
+Time delay between moves during `Load Game'. Fractional seconds
+are allowed; try `-td 0.4'. A time delay value of -1 tells
+XBoard not to step through game files automatically. Default: 1
+second.
+.TP
+.B -sgf or -saveGameFile file
+If this option is set, XBoard appends a record of every game
+played to the specified file. The file name `-' specifies the
+standard output.
+.TP
+.B -autosave/-xautosave or -autoSaveGames true/false
+Sets the Auto Save menu option.  See \fIOptions Menu\fR.  Default: false.
+Ignored if `saveGameFile' is set.
+.TP
+.B -lpf or -loadPositionFile file
+.PD 0
+.TP
+.B -lpi or -loadPositionIndex index
+.PD
+If the `loadPositionFile' option is set, XBoard loads the
+specified position file at startup. The file name `-' specifies the
+standard input. If the `loadPositionIndex' option is set to N,
+the Nth position found in the file is loaded; otherwise the
+first position is loaded.
+If the loadPositionIndex specifies an index -1, this triggers auto-increment
+of the index in `matchMode', which means that after every game the
+index is incremented by one, causing each game of the match to be played
+from the next position in the file. Similarly, specifying an index value of -2
+causes the index to be incremented every two games, so that each position
+in the file is used twice (with the engines playing opposite colors).
+The `rewindIndex' option causes the index to be reset to the
+first position of the file when it has reached a specified value.
+.TP
+.B -spf or -savePositionFile file
+If this option is set, XBoard appends the final position reached
+in every game played to the specified file. The file name `-'
+specifies the standard output.
+.TP
+.B -pgnExtendedInfo true/false
+If this option is set, XBoard saves depth, score and time used for each 
+move that the engine found as a comment in the PGN file.
+Default: false.
+.TP
+.B -pgnEventHeader string
+Sets the name used in the PGN event tag to string. 
+Default: "Computer Chess Game".
+.TP
+.B -saveOutOfBookInfo true/false
+Include the information on how the engine(s) game out of its opening book in a special 'annotator' tag with the PGN file.
+.TP
+.B -oldsave/-xoldsave or -oldSaveStyle true/false
+Sets the Old Save Style menu option.  See \fIOptions Menu\fR.  Default: false.
+.TP
+.B -gameListTags string
+The character string lists the PGN tags that should be printed in the
+Game List, and their order. The meaning of the codes is e=event,
+s=site, d=date, o=round, p=players, r=result, w=white Elo, b=black Elo,
+t=time control, v=variant, a=out-of-book info.
+Default: "eprd"
+.PP
+.SS User interface options
+.TP
+.B -display
+.PD 0
+.TP
+.B -geometry
+.PD
+.PD 0
+.TP
+.B -iconic
+.PD
+These and most other standard Xt options are accepted.
+.TP
+.B -noGUI
+Suppresses all GUI functions of XBoard 
+(to speed up automated ultra-fast engine-engine games, which you don’t want to watch). 
+There will be no board or clock updates, no printing of moves, 
+and no update of the icon on the task bar in this mode.
+.TP
+.B -movesound/-xmovesound or -ringBellAfterMoves true/false
+Sets the Move Sound menu option.  See \fIOptions Menu\fR.  Default: false.
+For compatibility with old XBoard versions, -bell/-xbell are also 
+accepted as abbreviations for this option.
+.TP
+.B -exit/-xexit or -popupExitMessage true/false
+Sets the Popup Exit Message menu option.  See \fIOptions Menu\fR. Default: true.
+.TP
+.B -popup/-xpopup or -popupMoveErrors true/false
+Sets the Popup Move Errors menu option.  See \fIOptions Menu\fR. Default: false.
+.TP
+.B -queen/-xqueen or -alwaysPromoteToQueen true/false
+Sets the Always Queen menu option.  See \fIOptions Menu\fR.  Default: false.
+.TP
+.B -legal/-xlegal or -testLegality true/false
+Sets the Test Legality menu option.  See \fIOptions Menu\fR.  Default: true.
+.TP
+.B -size or -boardSize (sizeName | n1,n2,n3,n4,n5,n6,n7)
+Determines how large the board will be, by selecting the pixel size
+of the pieces and setting a few related parameters.
+The sizeName can be one of: Titanic, giving 129x129 pixel pieces,
+Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72,
+Medium 64x64, Moderate 58x58, Average 54x54, Middling 49x49, Mediocre
+45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25,
+or Tiny 21x21.
+Pieces of all these sizes are built into XBoard.
+Other sizes can
+be used if you have them; see the pixmapDirectory and bitmapDirectory
+options.
+The default depends on the size of your screen; it is approximately the
+largest size that will fit without clipping.
+
+You can select other sizes or vary other layout parameters by providing
+a list of comma-separated values (with no spaces) as the argument.
+You do not need to provide all the values; for any you omit from the
+end of the list, defaults are taken from the nearest built-in size.
+The value `n1' gives the piece size, `n2' the width of the
+black border
+between squares, `n3' the desired size for the 
+clockFont, `n4' the desired size for the coordFont,
+`n5' the desired size for the default font,
+`n6' the smallLayout flag (0 or 1), 
+and `n7' the tinyLayout flag (0 or 1).  
+All dimensions are in pixels.
+If the border between squares is eliminated (0 width), the various
+highlight options will not work, as there is nowhere to draw the highlight.
+If smallLayout is 1 and `titleInWindow' is true, 
+the window layout is rearranged to make more room for the title.
+If tinyLayout is 1, the labels on the menu bar are abbreviated
+to one character each and the buttons in the button bar are made narrower.
+.TP
+.B -coords/-xcoords or -showCoords true/false
+Sets the Show Coords menu option.  See \fIOptions Menu\fR.  Default: false.
+The `coordFont' option specifies what font to use.
+.TP
+.B -autoraise/-xautoraise or -autoRaiseBoard true/false
+Sets the Auto Raise Board menu option.  See \fIOptions Menu\fR.  Default: true.
+.TP
+.B -autoflip/-xautoflip or -autoFlipView true/false
+Sets the Auto Flip View menu option.  See \fIOptions Menu\fR.  Default: true.
+.TP
+.B -flip/-xflip or -flipView true/false
+If Auto Flip View is not set, or if you are observing but not participating
+in a game, then the positioning of the board at the start of each game
+depends on the flipView option.  If flipView is false (the default),
+the board is positioned so that the white pawns move from the bottom to the
+top; if true, the black pawns move from the bottom to the top.
+In any case, the Flip menu option (see \fIOptions Menu\fR)
+can be used to flip the board after
+the game starts.
+.TP
+.B -title/-xtitle or -titleInWindow true/false
+If this option is true, XBoard displays player names (for ICS
+games) and game file names (for `Load Game') inside its main
+window. If the option is false (the default), this information is
+displayed only in the window banner. You probably won't want to
+set this option unless the information is not showing up in the
+banner, as happens with a few X window managers.
+.TP
+.B -buttons/-xbuttons or -showButtonBar True/False
+If this option is False, xboard omits the [<<] [<] [P] [>] [>>] button
+bar from the window, allowing the message line to be wider.  You can
+still get the functions of these buttons using the menus or their keyboard
+shortcuts.  Default: true.
+.TP
+.B -mono/-xmono or -monoMode true/false
+Determines whether XBoard displays its pieces and squares with
+two colors (true) or four (false). You shouldn't have to
+specify `monoMode'; XBoard will determine if it is necessary.
+.TP
+.B -flashCount count
+.PD 0
+.TP
+.B -flashRate rate
+.PD
+.PD 0
+.TP
+.B -flash/-xflash
+.PD
+These options enable flashing of pieces when they
+land on their destination square.
+`flashCount'
+tells XBoard how many times to flash a piece after it
+lands on its destination square.
+`flashRate'
+controls the rate of flashing (flashes/sec).
+Abbreviations:
+`flash'
+sets flashCount to 3.
+`xflash'
+sets flashCount to 0.
+Defaults:  flashCount=0 (no flashing), flashRate=5.
+.TP
+.B -highlight/-xhighlight or -highlightLastMove true/false
+Sets the Highlight Last Move menu option. See \fIOptions Menu\fR. Default: false.
+.TP
+.B -blind/-xblind or -blindfold true/false
+Sets the Blindfold menu option.  See \fIOptions Menu\fR.  Default: false.
+.TP
+.B -clockFont font
+The font used for the clocks. If the option value is a pattern
+that does not specify the font size, XBoard tries to choose an
+appropriate font for the board size being used.
+Default: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
+.TP
+.B -coordFont font
+The font used for rank and file coordinate labels if `showCoords'
+is true. If the option value is a pattern that does not specify
+the font size, XBoard tries to choose an appropriate font for
+the board size being used.
+Default: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
+.TP
+.B -font font
+The font used for popup dialogs, menus, comments, etc.
+If the option value is a pattern that does not specify
+the font size, XBoard tries to choose an appropriate font for
+the board size being used.
+Default: -*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*.
+.TP
+.B -fontSizeTolerance tol
+In the font selection algorithm, a nonscalable font will be preferred
+over a scalable font if the nonscalable font's size differs
+by `tol' pixels
+or less from the desired size.  A value of -1 will force
+a scalable font to always be used if available; a value of 0 will
+use a nonscalable font only if it is exactly the right size; 
+a large value (say 1000) will force a nonscalable font to always be
+used if available.  Default: 4.
+.TP
+.B -bm or -bitmapDirectory dir
+.PD 0
+.TP
+.B -pixmap or -pixmapDirectory dir
+.PD
+These options control what piece images xboard uses.  The XBoard
+distribution includes one set of pixmap pieces in xpm format, in the
+directory `pixmaps', and one set of bitmap pieces in xbm format,
+in the directory `bitmaps'.  Pixmap
+pieces give a better appearance on the screen: the white pieces have
+dark borders, and the black pieces have opaque internal details.  With
+bitmaps, neither piece color has a border, and the internal details
+are transparent; you see the square color or other background color
+through them.
+
+If XBoard is configured and compiled on a system that includes libXpm,
+the X pixmap library, the xpm pixmap pieces are compiled in as the
+default.  A different xpm piece set can be selected at runtime with
+the `pixmapDirectory' option, or a bitmap piece set can be selected
+with the `bitmapDirectory' option.
+
+If XBoard is configured and compiled on a system that does not include
+libXpm (or the `--disable-xpm' option is given to the configure
+program), the bitmap pieces are compiled in as the default.  It is not
+possible to use xpm pieces in this case, but pixmap pieces in another
+format called "xim" can be used by giving the `pixmapDirectory' option.
+Or again, a different bitmap piece set can be selected with the
+`bitmapDirectory' option.
+
+Files in the `bitmapDirectory' must be named as follows:
+The first character of a piece bitmap name gives the piece it 
+represents (`p', `n', `b', `r', `q', or `k'),
+the next characters give the size in pixels, the
+following character indicates whether the piece is
+solid or outline (`s' or `o'),
+and the extension is `.bm'.
+For example, a solid 80x80 knight would be named `n80s.bm'.
+The outline bitmaps are used only in monochrome mode.
+If bitmap pieces are compiled in and the bitmapDirectory is missing
+some files, the compiled in pieces are used instead.
+
+If the bitmapDirectory option is given,
+it is also possible to replace xboard's icons and menu checkmark,
+by supplying files named `icon_white.bm', `icon_black.bm', and
+`checkmark.bm'.
+
+For more information about pixmap pieces and how to get additional
+sets, see \fIzic2xpm\fR below.
+.TP
+.B -whitePieceColor color
+.PD 0
+.TP
+.B -blackPieceColor color
+.PD
+.PD 0
+.TP
+.B -lightSquareColor color
+.PD
+.PD 0
+.TP
+.B -darkSquareColor color
+.PD
+.PD 0
+.TP
+.B -highlightSquareColor color
+.PD
+.PD 0
+.TP
+.B -lowTimeWarningColor color
+.PD
+Colors to use for the pieces, squares, and square highlights.
+Defaults:
+
+.nf
+    -whitePieceColor       #FFFFCC
+    -blackPieceColor       #202020
+    -lightSquareColor      #C8C365
+    -darkSquareColor       #77A26D
+    -highlightSquareColor  #FFFF00
+    -premoveHighlightColor #FF0000
+    -lowTimeWarningColor   #FF0000
+.fi
+
+On a grayscale monitor you might prefer:
+
+.nf
+    -whitePieceColor       gray100
+    -blackPieceColor       gray0
+    -lightSquareColor      gray80
+    -darkSquareColor       gray60
+    -highlightSquareColor  gray100
+    -premoveHighlightColor gray70
+    -lowTimeWarningColor   gray70
+.fi
+.TP
+.B -drag/-xdrag or -animateDragging true/false
+Sets the Animate Dragging menu option. See \fIOptions Menu\fR.  Default: true.
+.TP
+.B -animate/-xanimate or -animateMoving true/false
+Sets the Animate Moving menu option. See \fIOptions Menu\fR.  Default: true.
+.TP
+.B -animateSpeed n
+Number of milliseconds delay between each animation frame when Animate
+Moves is on.
+.TP
+.B -autoDisplayComment true/false
+.PD 0
+.TP
+.B -autoDisplayTags true/false
+.PD
+If set to true, these options cause the window with the move comments,
+and the window with PGN tags, respectively, to pop up automatically when
+such tags or comments are encountered during the replaying a stored or
+loaded game.  Default: true.
+.TP
+.B -pasteSelection true/false
+If this option is set to true, the Paste Position and Paste Game
+options paste from the currently selected text.  If false, they paste
+from the clipboard.  Default: false.
+.PP
+.SS Adjudication Options
+.TP
+.B -adjudicateLossThreshold n
+If the given value is non-zero, XBoard adjudicates the game as a loss 
+if both engines agree for a duration of 6 consecutive ply that the score 
+is below the given score threshold for that engine. Make sure the score 
+is interpreted properly by XBoard, 
+using `-firstScoreAbs' and `-secondScoreAbs' if needed. 
+Default: 0 (no adjudication)
+.TP
+.B -adjudicateDrawMoves n
+If the given value is non-zero, XBoard adjudicates the game as a draw 
+if after the given number of moves it was not yet decided. Default: 0 (no adjudication)
+.TP
+.B -checkMates true/false
+If this option is set, XBoard detects all checkmates and stalemates, 
+and ends the game as soon as they occur. 
+Legality-testing must be switched on for this option to work.
+Default: true
+.TP
+.B -testClaims true/false
+If this option is set, XBoard verifies all result claims made by engines, 
+and those who send false claims will forfeit the game because of it. 
+Legality-testing must be switched on for this option to work. Default: true
+.TP
+.B -materialDraws true/false
+If this option is set, XBoard adjudicates games as draws when there is 
+no sufficient material left to inflict a checkmate. 
+This applies to KBKB with like bishops (any number, actually), and to KBK, KNK and KK. 
+Legality-testing must be switched on for this option to work. Default: true
+.TP
+.B -trivialDraws true/false
+If this option is set, XBoard adjudicates games as draws that cannot be 
+usually won without opponent cooperation. This applies to KBKB with unlike bishops, 
+and to KBKN, KNKN, KNNK, KRKR and KQKQ. The draw is called after 6 ply into these end-games, 
+to allow quick mates that can occur in some exceptional positions to be found by the engines. 
+KQKQ does not really belong in this category, and might be taken out in the future. 
+(When bitbase-based adjudications are implemented.) 
+Legality-testing must be on for this option to work. Default: false
+.TP
+.B -ruleMoves n
+If the given value is non-zero, XBoard adjudicates the game as a draw after the given 
+number of consecutive reversible moves. Engine draw claims are always accepted after 50 moves, 
+irrespective of the given value of n.
+.TP
+.B -repeatsToDraw n
+If the given value is non-zero, xboard adjudicates the game as a draw if a position 
+is repeated the given number of times. Engines draw claims are always accepted after 3 repeats, 
+(on the 3rd occurrence, actually), irrespective of the value of n. 
+Beware that positions that have different castling or en-passant rights do not count 
+as repeats, XBoard is fully e.p. and castling aware!
+.PP
+.SS Other options
+.TP
+.B -ncp/-xncp or -noChessProgram true/false
+If this option is true, XBoard acts as a passive chessboard; it
+does not start a chess engine at all. Turning on this option
+also turns off clockMode. Default: false.
+.TP
+.B -mode or -initialMode modename
+If this option is given, XBoard selects the given modename
+from the Mode menu after starting and (if applicable) processing the
+loadGameFile or loadPositionFile option. Default: "" (no selection). 
+Other supported values are 
+MachineWhite, MachineBlack, TwoMachines, Analysis, 
+AnalyzeFile, EditGame, EditPosition, and Training.
+.TP
+.B -variant varname
+Activates preliminary, partial support for playing chess variants
+against a local engine or editing variant games.  This flag is not
+needed in ICS mode.  Recognized variant names are:
+
+.nf
+    normal        Normal chess
+    wildcastle    Shuffle chess, king can castle from d file
+    nocastle      Shuffle chess, no castling allowed
+    fischerandom  Fischer Random shuffle chess
+    bughouse      Bughouse, ICC/FICS rules
+    crazyhouse    Crazyhouse, ICC/FICS rules
+    losers        Lose all pieces or get mated (ICC wild 17)
+    suicide       Lose all pieces including king (FICS)
+    giveaway      Try to have no legal moves (ICC wild 26)
+    twokings      Weird ICC wild 9
+    kriegspiel    Opponent's pieces are invisible
+    atomic        Capturing piece explodes (ICC wild 27)
+    3check        Win by giving check 3 times (ICC wild 25)
+    shatranj      An ancient precursor of chess (ICC wild 28)
+    xiangqi       Chinese Chess (on a 9x10 board)
+    shogi         Japanese Chess (on a 9x9 board & piece drops) 
+    capablanca    Capablanca Chess (10x8 board, with Archbishop 
+                  and Chancellor pieces)
+    gothic        similar, with a better initial position
+    caparandom    An FRC-like version of Capablanca Chess (10x8) 
+    janus         A game with two Archbishops (10x8 board)
+    courier       Medieval intermediate between shatranj and 
+                  modern Chess (on 12x8 board) 
+    falcon        Patented 10x8 variant with two Falcon pieces
+    berolina      Pawns capture straight ahead, and move diagonal 
+    cylinder      Pieces wrap around the board edge
+    knightmate    King moves as Knight, and vice versa 
+    super         Superchess (shuffle variant with 4 exo-pieces)
+    fairy         A catchall variant in which all piece types 
+                  known to XBoard can participate (8x8)
+    unknown       Catchall for other unknown variants
+.fi
+
+NOT ALL BOARDSIZES PROVIDE A COMPLETE SET OF BUILT-IN BITMAPS FOR ALL
+UN-ORTHODOX PIECES, though. Only in `boardSize' middling and bulky
+all 22 piece types are provided, while -boardSize petite has most
+of them. Archbishop, Chancellor and Amazon are supported in every
+size from petite to bulky. Kings or Amazons are substituted for
+missing bitmaps. You can still play variants needing un-orthodox
+pieces in other board sizes providing your own bitmaps through the
+`bitmapDirectory' or `pixmapDirectory' options.
+
+In the shuffle variants, XBoard now does shuffle the pieces, although
+you can still do it by hand using Edit Position.  Some variants are
+supported only in ICS mode, including bughouse, and
+kriegspiel.  The winning/drawing conditions in crazyhouse (off-board
+interposition on mate) are not fully understood, but losers, suicide, 
+giveaway, atomic, and 3check should be OK.
+Berolina and cylinder chess can only be played with legality testing off.
+In crazyhouse, XBoard now does keep
+track of off-board pieces.  In shatranj it does implement the baring
+rule when mate detection is switched on.
+.TP
+.B -boardHeight N
+Allows you to set a non-standard number of board ranks in any variant. 
+If the height is given as -1, the default height for the variant is used.
+Default: -1
+.TP
+.B -boardWidth N
+Allows you to set a non-standard number of board files in any variant. 
+If the width is given as -1, the default width for the variant is used. 
+With a non-standard width, the initial position will always be an empty board, 
+as the usual opening array will not fit.
+Default: -1
+.TP
+.B -holdingsSize N
+Allows you to set a non-standard size for the holdings in any variant. 
+If the size is given as -1, the default holdings size for the variant is used. 
+The first N piece types will go into the holdings on capture, and you will be 
+able to drop them on the board in stead of making a normal move. If size equals 0, 
+there will be no holdings.
+Default: -1
+.TP
+.B -defaultFrcPosition N
+Specifies the number of the opening position in shuffle games like Chess960. 
+A value of -1 means the position is randomly generated by XBoard
+at the beginning of every game.
+Default: -1
+.TP
+.B -pieceToSquareTable string
+The characters that are used to represent the piece types XBoard knows in FEN 
+diagrams and SAN moves. The string argument has to have an even length 
+(or it will be ignored), as white and black pieces have to be given separately 
+(in that order). The last letter for each color will be the King. 
+The letters before that will be PNBRQ and then a whole host of fairy pieces 
+in an order that has not fully crystallized yet (currently FEACWMOHIJGDVSLU, 
+F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, 
+H=Nightrider). You should list at least all pieces that occur in the variant 
+you are playing. If you have less than 44 characters in the string, the pieces 
+not mentioned will get assigned a period, and you will not be able to distinguish 
+them in FENs. You can also explicitly assign pieces a period, in which case they 
+will not be counted in deciding which captured pieces can go into the holdings.
+A tilde '~' as a piece name does mean this piece is used to represent a promoted 
+Pawn in crazyhouse-like games, i.e. on capture it turns back onto a Pawn. 
+A '+' similarly indicates the piece is a shogi-style promoted piece, that should 
+revert to its non-promoted version on capture (rather than to a Pawn).
+Note that promoted pieces are represented by pieces 11 further in the list.
+You should not have to use this option often: each variant has its own default 
+setting for the piece representation in FEN, which should be sufficient in normal use.
+Default: ""
+.TP
+.B -debug/-xdebug or -debugMode true/false
+Turns on debugging printout.
+.TP
+.B -debugFile filename or -nameOfDebugFile filename
+Sets the name of the file to which XBoard saves debug information 
+(including all communication to and from the engines).
+.TP
+.B -engineDebugOutput number
+Specifies how XBoard should handle unsolicited output from the engine, 
+with respect to saving it in the debug file. 
+The output is further (hopefully) ignored. 
+If number=0, XBoard refrains from writing such spurious output to the debug file. 
+If number=1, all engine output is written faithfully to the debug file. 
+If number=2, any protocol-violating line is prefixed with a '#' character, 
+as the engine itself should have done if it wanted to submit info for inclusion in the debug file.
+This option is provided for the benefit of applications that use the debug file 
+as a source of information, such as the broadcaster of live games TLCV / TLCS. 
+Such applications can be protected from spurious engine output that might otherwise confuse them.
+.TP
+.B -rsh or -remoteShell shell-name
+Name of the command used to run programs remotely. The default
+is `rsh' or `remsh', determined when XBoard is
+configured and compiled.
+.TP
+.B -ruser or -remoteUser user-name
+User name on the remote system when running programs with the
+`remoteShell'. The default is your local user name.
+.TP
+.B -userName username
+Name under which the Human player will be listed in the PGN file. 
+Default is the login name on your local computer.
+.TP
+.B -delayBeforeQuit number
+.PD 0
+.TP
+.B -delayAfterQuit number
+.PD
+These options specify how long XBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the 'quit' command. The second one determines the pause after killing the engine, to make sure it dies.
+
+.PP
+.SH CHESS SERVERS
+An "Internet Chess Server", or "ICS", is a place on the
+Internet where people can get together to play chess, watch other
+people's games, or just chat.  You can use either `telnet' or a
+client program like XBoard to connect to the server.  There are
+thousands of registered users on the different ICS hosts, and it is
+not unusual to meet 200 on both chessclub.com and freechess.org.
+
+Most people can just type `xboard -ics' to start XBoard as an ICS
+client.  Invoking XBoard in this way connects you to the Internet
+Chess Club (ICC), a commercial ICS.  You can log in there as a guest
+even if you do not have a paid account.  To connect to the largest
+Free ICS (FICS), use the command `xboard -ics -icshost freechess.org'
+instead, or substitute a different host name to connect to your
+favorite ICS.
+For a full description of command-line options that control 
+the connection to ICS and change the default values of ICS options, see
+\fIICS options\fR.  
+
+While you are running XBoard as an ICS client,
+you use the terminal window that you started XBoard from
+as a place to type in commands and read information that is
+not available on the chessboard.
+
+The first time you need to use the terminal is to enter your login name
+and password, if you are a registered player. (You don't need to do
+this manually; the `icsLogon' option can do it for you.
+See \fIICS options\fR.)  If you are not registered, 
+enter `g' as your name, and the server will pick a
+unique guest name for you.
+
+Some useful ICS commands
+include
+.TP
+.B help <topic>
+to get help on the given <topic>. To get a list of possible topics type
+"help" without topic.  Try the help command before you ask other
+people on the server for help.
+
+For example `help register' tells you how to become a registered
+ICS player.
+.TP
+.B who <flags>
+to see a list of people who are logged on.  Administrators
+(people you should talk to if you have a problem) are marked
+with the character `*', an asterisk. The <flags> allow you to
+display only selected players: For example, `who of' shows a
+list of players who are interested in playing but do not have
+an opponent.
+.TP
+.B games
+to see what games are being played
+.TP
+.B match <player> [<mins>] [<inc>]
+to challenge another player to a game. Both opponents get <mins> minutes
+for the game, and <inc> seconds will be added after each move.
+If another player challenges you, the server asks if you want to
+accept the challenge; use the `accept' or `decline' commands
+to answer.
+.TP
+.B accept
+.PD 0
+.TP
+.B decline
+.PD
+to accept or decline another player's offer. 
+The offer may be to start a new game, or to agree to a 
+`draw', `adjourn' or `abort' the current game. See \fIAction Menu\fR.
+
+If you have more than one pending offer (for example, if more than one player
+is challenging you, or if your opponent offers both a draw and to adjourn the
+game), you have to supply additional information, by typing something
+like `accept <player>', `accept draw', or `draw'.
+.TP
+.B draw
+.PD 0
+.TP
+.B adjourn
+.PD
+.PD 0
+.TP
+.B abort
+.PD
+asks your opponent to terminate a game by mutual agreement. Adjourned
+games can be continued later. 
+Your opponent can either `decline' your offer or accept it (by typing the
+same command or typing `accept').  In some cases these commands work
+immediately, without asking your opponent to agree.  For example, you can
+abort the game unilaterally if your opponent is out of time, and you can claim
+a draw by repetition or the 50-move rule if available simply by typing 
+`draw'.
+.TP
+.B finger <player>
+to get information about the given <player>. (Default: yourself.)
+.TP
+.B vars
+to get a list of personal settings
+.TP
+.B set <var> <value>
+to modify these settings
+.TP
+.B observe <player>
+to observe an ongoing game of the given <player>.
+.TP
+.B examine
+.PD 0
+.TP
+.B oldmoves
+.PD
+to review a recently completed game
+.PP
+Some special XBoard features are activated when you are
+in examine mode on ICS.  See the descriptions of the menu commands
+`Forward', `Backward', `Pause', `ICS Client', 
+and `Stop Examining' on the \fIStep Menu\fR, \fIMode Menu\fR, and
+\fIOptions Menu\fR.
+
+.SH FIREWALLS
+By default, XBoard communicates with an Internet Chess Server
+by opening a TCP socket directly from the machine it is running on
+to the ICS. If there is a firewall between your machine and the ICS,
+this won't work. Here are some recipes for getting around common
+kinds of firewalls using special options to XBoard.
+Important: See the paragraph in the below about extra echoes, in
+\fILimitations\fR.
+
+Suppose that you can't telnet directly to ICS, but you can telnet
+to a firewall host, log in, and then telnet from there to ICS.
+Let's say the firewall is called `firewall.example.com'. Set
+command-line options as follows:
+
+.nf
+    xboard -ics -icshost firewall.example.com -icsport 23
+.fi
+
+Or in your `.Xresources' file:
+
+.nf
+    XBoard*internetChessServerHost: firewall.example.com
+    XBoard*internetChessServerPort: 23
+.fi
+
+Then when you run XBoard in ICS mode, you will be prompted
+to log in to the firewall host. This works because port 23 is the
+standard telnet login service. Do so, then telnet to ICS, using a
+command like `telnet chessclub.com 5000', or whatever command
+the firewall provides for telnetting to port 5000.
+
+If your firewall lets you telnet (or rlogin) to remote hosts but
+doesn't let you telnet to port 5000, you may be able to connect to the
+chess server on port 23 instead, which is the port the telnet program
+uses by default.  Some chess servers support this (including
+chessclub.com and freechess.org), while some do not.
+
+If your chess server does not allow connections on port 23 and your
+firewall does not allow you to connect to other ports, you may be able
+to connect by hopping through another host outside the firewall that
+you have an account on.  For instance, suppose you have a shell
+account at `foo.edu'. Follow the recipe above, but instead of
+typing `telnet chessclub.com 5000' to the firewall, type
+`telnet foo.edu' (or `rlogin foo.edu'), log in there, and
+then type `telnet chessclub.com 5000'.
+
+Suppose that you can't telnet directly to ICS, but you can use rsh
+to run programs on a firewall host, and that host can telnet to ICS.
+Let's say the firewall is called `rsh.example.com'. Set
+command-line options as follows:
+
+.nf
+    xboard -ics -gateway rsh.example.com -icshost chessclub.com
+.fi
+
+Or in your `.Xresources' file:
+
+.nf
+    XBoard*gateway: rsh.example.com
+    XBoard*internetChessServerHost: chessclub.com
+.fi
+
+Then when you run XBoard in ICS mode, it will connect to
+the ICS by using `rsh' to run the command
+`telnet chessclub.com 5000' on host `rsh.example.com'.
+
+Suppose that you can telnet anywhere you want, but you have to
+run a special program called `ptelnet' to do so.
+
+First, we'll consider the easy case, in which
+`ptelnet chessclub.com 5000' gets you to the chess server.
+In this case set command line options as follows:
+
+.nf
+    xboard -ics -telnet -telnetProgram ptelnet
+.fi
+
+Or in your `.Xresources' file:
+
+.nf
+    XBoard*useTelnet: true
+    XBoard*telnetProgram: ptelnet
+.fi
+
+Then when you run XBoard in ICS mode, it will issue the
+command `ptelnet chessclub.com 5000' to connect to the ICS.
+
+Next, suppose that `ptelnet chessclub.com 5000' doesn't work;
+that is, your `ptelnet' program doesn't let you connect to
+alternative ports. As noted above, your chess server may allow you to
+connect on port 23 instead.  In that case, just add the option
+`-icsport ""' to the above command, or add
+`XBoard*internetChessServerPort:' to your `.Xresources' file.
+But if your chess server doesn't let you connect on port 23, you will have
+to find some other host outside the firewall and hop through it. For
+instance, suppose you have a shell account at `foo.edu'. Set
+command line options as follows:
+
+.nf
+    xboard -ics -telnet -telnetProgram ptelnet -icshost foo.edu -icsport ""
+.fi
+
+Or in your `.Xresources' file:
+
+.nf
+    XBoard*useTelnet: true
+    XBoard*telnetProgram: ptelnet
+    XBoard*internetChessServerHost: foo.edu
+    XBoard*internetChessServerPort:
+.fi
+
+Then when you run XBoard in ICS mode, it will issue the
+command `ptelnet foo.edu' to connect to your account at
+`foo.edu'. Log in there, then type `telnet chessclub.com 5000'.
+
+ICC timestamp and FICS timeseal do not work through some
+firewalls.  You can use them only if your firewall gives a clean TCP
+connection with a full 8-bit wide path.  If your firewall allows you
+to get out only by running a special telnet program, you can't use
+timestamp or timeseal across it.  But if you have access to a
+computer just outside your firewall, and you have much lower netlag
+when talking to that computer than to the ICS, it might be worthwhile
+running timestamp there.  Follow the instructions above for hopping
+through a host outside the firewall (foo.edu in the example),
+but run timestamp or timeseal on that host instead of telnet.
+
+Suppose that you have a SOCKS firewall that will give you a clean
+8-bit wide TCP connection to the chess server, but only after you
+authenticate yourself via the SOCKS protocol.  In that case, you could
+make a socksified version of XBoard and run that.  If you are using
+timestamp or timeseal, you will to socksify it, not XBoard; this may
+be difficult seeing that ICC and FICS do not provide source code for
+these programs.  Socksification is beyond the scope of this document,
+but see the SOCKS Web site at http://www.socks.permeo.com/.
+If you are missing SOCKS, try http://www.funbureau.com/.
+
+.SH ENVIRONMENT VARIABLES
+Game and position files are found in a directory named by the
+`CHESSDIR' environment variable. If this variable is not set, the
+current working directory is used. If `CHESSDIR' is set,
+XBoard actually changes its working directory to
+`$CHESSDIR', so any files written by the chess engine
+will be placed there too.
+
+.SH LIMITATIONS AND KNOWN BUGS
+There is no way for two people running copies of XBoard to play
+each other without going through an Internet Chess Server.
+
+Under some circumstances, your ICS password may be echoed when you log on.
+
+If you are connecting to the ICS by running telnet on an Internet
+provider or firewall host, you may find that each line you type is
+echoed back an extra time after you hit <Enter>. If your Internet
+provider is a Unix system, you can probably turn its echo off by
+typing `stty -echo' after you log in, and/or typing
+<^E><Enter> (Ctrl+E followed by the Enter key) to the telnet
+program after you have logged into ICS.  It is a good idea to do this
+if you can, because the extra echo can occasionally confuse XBoard's
+parsing routines.
+
+The game parser recognizes only algebraic notation.
+
+Many of the following points used to be limitations in XBoard 4.2.7 and earlier, 
+but are now fixed:
+The internal move legality tester in XBoard 4.3.xx does look at the game history, 
+and is fully aware of castling or en-passant-capture rights. It permits castling with 
+the king on the d file because this is possible in some "wild 1" games on ICS. 
+The piece-drop menu does not check piece drops in bughouse to see if you actually hold 
+the piece you are trying to drop. But this way of dropping pieces should be considered 
+an obsolete feature, now that pieces can be dropped by dragging them from the holdings 
+to the board. Anyway, if you would attempt an illegal move when using a chess engine or the ICS, 
+XBoard will accept the error message that comes back, undo the move, and let you try another.
+FEN positions saved by XBoard do include correct information about whether castling or 
+en passant are legal, and also handle the 50-move counter.
+The mate detector does not understand that non-contact mate is not really mate in bughouse. 
+The only problem this causes while playing is minor: a "#" (mate indicator) character will 
+show up after a non-contact mating move in the move list. XBoard will not assume the game 
+is over at that point, not even when the option Detect Mates is on.
+Edit Game mode always uses the rules of the selected variant, 
+which can be a variant that uses piece drops.  
+You can load and edit games that contain piece drops. 
+The (obsolete) piece menus are not active, 
+but you can perform piece drops by dragging pieces from the holdings.
+Edit Position mode does not allow you to edit the crazyhouse holdings properly. 
+You cannot drag pieces to the holding, and using the popup menu to put pieces 
+there does not adapt the holding counts and leads to an inconsistent state. 
+Set up crazyhouse positions by loading / pasting a bFEN, from there you can set the holdings.
+Fischer Random castling is fully understood. 
+You can enter castlings by dragging the King on top of your Rook. 
+You can probably also play Fischer Random successfully on ICS by typing 
+castling moves into the ICS Interaction window.
+
+The menus may not work if your keyboard is in Caps Lock or Num Lock mode.
+This seems to be a problem with the Athena menu widget,
+not an XBoard bug.
+
+Also see the ToDo file included with the distribution for many other
+possible bugs, limitations, and ideas for improvement that have been
+suggested.
+.SH REPORTING PROBLEMS
+You can report bugs and problems with XBoard using
+the bug tracker at `https://savannah.gnu.org/projects/xboard/'
+or by sending mail to `<bug-xboard at gnu.org>'.  It can also
+be useful to report or discuss bugs in the WinBoard Forum at
+`http://www.open-aurec.com/wbforum/', 
+WinBoard development section.
+
+Please use the `script' program to start a typescript, run 
+XBoard with the `-debug' option, and include the typescript
+output in your message.
+Also tell us what kind of machine and what operating system version
+you are using.  The command `uname -a' will often tell you this.
+
+If you improve XBoard, please send a message about your changes,
+and we will get in touch with you about merging them in
+to the main line of development.
+
+.SH AUTHORS AND CONTRIBUTORS
+Chris Sears and Dan Sears wrote the original XBoard.  They were
+responsible for versions 1.0 through 1.2.  The color scheme was taken
+from Wayne Christopher's `XChess' program.
+
+Tim Mann was primarily responsible for XBoard versions 1.3 through
+4.2.7, and for WinBoard (a port of XBoard to Microsoft Win32) from its
+inception through version 4.2.7.
+
+John Chanak contributed the initial implementation of ICS mode.  Evan
+Welsh wrote `CMail', and Patrick Surry helped in designing,
+testing, and documenting it.  Elmar Bartel contributed the new piece
+bitmaps introduced in version 3.2.  Jochen Wiedmann converted the
+documentation to texinfo.  Frank McIngvale added click/click moving,
+the Analysis modes, piece flashing, ZIICS import, and ICS text
+colorization to XBoard.  Hugh Fisher added animated piece movement to
+XBoard, and Henrik Gram added it to WinBoard.  Mark Williams
+contributed the initial (WinBoard-only) implementation of many new
+features added to both XBoard and WinBoard in version 4.1.0, including
+copy/paste, premove, icsAlarm, autoFlipView, training mode, auto
+raise, and blindfold.  Ben Nye contributed X copy/paste code for
+XBoard.
+
+In a fork from version 4.2.7, Alessandro Scotti added many elements to
+the user interface of WinBoard, including the board textures and
+font-based rendering, the evaluation-graph, move-history and
+engine-output window.  He was also responsible for adding the UCI
+support.
+
+H. G. Muller continued this fork of the project, producing version
+4.3.  He made WinBoard castling- and e.p.-aware, added variant support
+with adjustable board sizes, the crazyhouse holdings, and the fairy
+pieces.  In addition he added most of the adjudication options, made
+WinBoard more robust in dealing with buggy and crashing engines, and
+extended time control with a time-odds and node-count-based modes.
+Most of the options that initially were WinBoard only have now been
+back-ported to XBoard.
+
+Michel van den Bergh provided the code for reading Polyglot opening books.
+
+Meanwhile, some work continued on the GNU XBoard project maintained at
+savannah.gnu.org, but version 4.2.8 was never released.  Daniel
+Mehrmann was responsible for much of this work.
+
+Most recently, Arun Persaud worked with H. G. Muller to merge all
+the features of the never-released XBoard/WinBoard 4.2.8 of the GNU
+XBoard project and the never-released 4.3.16 from H. G.'s fork into a
+unified XBoard/WinBoard 4.4, which is now available both from the
+savannah.gnu.org web site and the WinBoard forum.
+
+.SH CMAIL
+The `cmail' program can help you play chess by email with opponents of
+your choice using XBoard as an interface.
+
+You will usually run `cmail' without giving any options.
+
+.SS CMail options
+.TP
+.B -h
+Displays `cmail' usage information.
+.TP
+.B -c
+Shows the conditions of the GNU General Public License.
+See \fICopying\fR.
+.TP
+.B -w
+Shows the warranty notice of the GNU General Public License.
+See \fICopying\fR.
+.TP
+.B -v
+.PD 0
+.TP
+.B -xv
+.PD
+Provides or inhibits verbose output from `cmail' and XBoard,
+useful for debugging. The
+`-xv'
+form also inhibits the cmail introduction message.
+.TP
+.B -mail
+.PD 0
+.TP
+.B -xmail
+.PD
+Invokes or inhibits the sending of a mail message containing the move.
+.TP
+.B -xboard
+.PD 0
+.TP
+.B -xxboard
+.PD
+Invokes or inhibits the running of XBoard on the game file.
+.TP
+.B -reuse
+.PD 0
+.TP
+.B -xreuse
+.PD
+Invokes or inhibits the reuse of an existing XBoard to display the
+current game.
+.TP
+.B -remail
+Resends the last mail message for that game. This inhibits running
+XBoard.
+.TP
+.B -game <name>
+The name of the game to be processed.
+.TP
+.B -wgames <number>
+.PD 0
+.TP
+.B -bgames <number>
+.PD
+.PD 0
+.TP
+.B -games <number>
+.PD
+Number of games to start as White, as Black or in total. Default is 1 as
+white and none as black. If only one color is specified then none of the
+other color is assumed. If no color is specified then equal numbers of
+White and Black games are started, with the extra game being as White if an
+odd number of total games is specified.
+.TP
+.B -me <short name>
+.PD 0
+.TP
+.B -opp <short name>
+.PD
+A one-word alias for yourself or your opponent.
+.TP
+.B -wname <full name>
+.PD 0
+.TP
+.B -bname <full name>
+.PD
+.PD 0
+.TP
+.B -name <full name>
+.PD
+.PD 0
+.TP
+.B -oppname <full name>
+.PD
+The full name of White, Black, yourself or your opponent.
+.TP
+.B -wna <net address>
+.PD 0
+.TP
+.B -bna <net address>
+.PD
+.PD 0
+.TP
+.B -na <net address>
+.PD
+.PD 0
+.TP
+.B -oppna <net address>
+.PD
+The email address of White, Black, yourself or your opponent.
+.TP
+.B -dir <directory>
+The directory in which `cmail' keeps its files. This defaults to the
+environment variable `$CMAIL_DIR' or failing that, `$CHESSDIR',
+`$HOME/Chess' or `~/Chess'. It will be created if it does not exist.
+.TP
+.B -arcdir <directory>
+The directory in which `cmail' archives completed games. Defaults to
+the environment variable `$CMAIL_ARCDIR' or, in its absence, the same
+directory as cmail keeps its working files (above).
+.TP
+.B -mailprog <mail program>
+The program used by cmail to send email messages. This defaults to the
+environment variable `$CMAIL_MAILPROG' or failing that
+`/usr/ucb/Mail', `/usr/ucb/mail' or `Mail'. You will need
+to set this variable if none of the above paths fit your system.
+.TP
+.B -logFile <file>
+A file in which to dump verbose debugging messages that are invoked with
+the `-v'
+option.
+.TP
+.B -event <event>
+The PGN Event tag (default `Email correspondence game').
+.TP
+.B -site <site>
+The PGN Site tag (default `NET').
+.TP
+.B -round <round>
+The PGN Round tag (default `-', not applicable).
+.TP
+.B -mode <mode>
+The PGN Mode tag (default `EM', Electronic Mail).
+.TP
+.B Other options
+Any option flags not listed above are passed through to XBoard.
+Invoking XBoard through CMail changes the default values of two XBoard
+options: The default value for `-noChessProgram' is changed to
+true; that is, by default no chess engine is started.  The default
+value for `-timeDelay' is changed to 0; that is, by default
+XBoard immediately goes to the end of the game as played so far,
+rather than stepping through the moves one by one.  You can still set
+these options to whatever values you prefer by supplying them on
+CMail's command line.  See \fIOptions\fR.
+.PP
+.SS Starting a CMail Game
+Type `cmail' from a shell to start a game as white. After an opening
+message, you will be prompted for a game name, which is optional -- if you
+simply press <Enter>, the game name will take the form
+`you-VS-opponent'. You will next be prompted for the short name
+of your opponent. If you haven't played this person before, you will also
+be prompted for his/her email address. `cmail' will then invoke
+XBoard in the background. Make your first move and select
+`Mail Move' from the `File' menu. See \fIFile Menu\fR. If all is well,
+`cmail' will mail a copy of the move to your opponent. If you select
+`Exit' without having selected `Mail Move' then no move will be
+made.
+
+.SS Answering a Move
+When you receive a message from an opponent containing a move in one of
+your games, simply pipe the message through `cmail'. In some mailers
+this is as simple as typing `| cmail' when viewing the message, while in
+others you may have to save the message to a file and do `cmail < file'
+at the command line. In either case `cmail' will display the game using
+XBoard. If you didn't exit XBoard when you made your first move
+then `cmail' will do its best to use the existing XBoard instead
+of starting a new one. As before, simply make a move and select
+`Mail Move' from the `File' menu. See \fIFile Menu\fR. `cmail'
+will try to use the
+XBoard that was most recently used to display the current game. This
+means that many games can be in progress simultaneously, each with its own
+active XBoard.
+
+If you want to look at the history or explore a variation, go ahead, but
+you must return to the current position before XBoard will allow you
+to mail a move. If you edit the game's history you must select
+`Reload Same Game' from the `File' menu to get back to the original
+position, then make the move you want and select `Mail Move'.
+As before, if you decide you aren't ready to make a move just yet you can
+either select `Exit' without sending a move or just leave
+XBoard running until you are ready.
+
+.SS Multi-Game Messages
+It is possible to have a `cmail' message carry more than one game.
+This feature was implemented to handle IECG (International Email Chess
+Group) matches, where a match consists of one game as white and one as black,
+with moves transmitted simultaneously. In case there are more general uses,
+`cmail' itself places no limit on the number of black/white games
+contained in a message; however, XBoard does.
+
+.SS Completing a Game
+Because XBoard can detect checkmate and stalemate, `cmail'
+handles game termination sensibly. As well as resignation, the
+`Action' menu allows draws to be offered and accepted for
+`cmail' games.
+
+For multi-game messages, only unfinished and just-finished games will be
+included in email messages. When all the games are finished, they are
+archived in the user's archive directory, and similarly in the opponent's
+when he or she pipes the final message through `cmail'. The archive
+file name includes the date the game was started.
+
+.SS Known CMail Problems
+It's possible that a strange conjunction of conditions may occasionally
+mean that `cmail' has trouble reactivating an existing
+XBoard. If this should happen, simply trying it again should work.
+If not, remove the file that stores the XBoard's PID
+(`game.pid') or use the `-xreuse' option to force
+`cmail' to start a new XBoard.
+
+Versions of `cmail' after 2.16 no longer understand the old file format
+that XBoard used to use and so cannot be used to correspond with
+anyone using an older version.
+
+Versions of `cmail' older than 2.11 do not handle multi-game messages,
+so multi-game correspondence is not possible with opponents using an older
+version.
+
+.SH OTHER PROGRAMS YOU CAN USE WITH XBOARD
+Here are some other programs you can use with XBoard
+
+.SS GNU Chess
+The GNU Chess engine is available from:
+
+ftp://ftp.gnu.org/gnu/gnuchess/
+
+You can use XBoard to play a game against GNU Chess, or to
+interface GNU Chess to an ICS.
+
+.SS Fairy-Max
+Fairy-Max is a derivative from the once World's smallest Chess program micro-Max,
+which measures only about 100 lines of source code.
+The main difference with micro-Max is that Fairy-Max loads its move-generator
+tables from a file, so that the rules for piece movement can be easily configured
+to implement unorthodox pieces.
+Fairy-Max can therefore play a large number of variants, normal Chess being one of those.
+In addition it plays Knightmate, Capablanca and Gothic Chess, Shatranj, Courier Chess,
+Cylinder chess, Berolina Chess, while the user can easily define new variants.
+It can be obtained from:
+
+http://home.hccnet.nl/h.g.muller/dwnldpage.html
+
+.SS HoiChess
+HoiChess is a not-so-very-strong Chess engine, which comes with a derivative HoiXiangqi,
+able to play Chinese Chess. It can be obtained from the standard Linux repositories
+through:
+
+sudo apt-get install hoichess
+
+.SS Crafty
+Crafty is a chess engine written by Bob Hyatt.
+You can use XBoard to play a game against Crafty, hook Crafty up
+to an ICS, or use Crafty to interactively analyze games and positions
+for you.
+
+Crafty is a strong, rapidly evolving chess program. This rapid
+pace of development is good, because it means Crafty is always
+getting better.  This can sometimes cause problems with
+backwards compatibility, but usually the latest version of Crafty
+will work well with the latest version of XBoard.
+Crafty can be obtained from its author's FTP site:
+ftp://ftp.cis.uab.edu/hyatt/.
+
+To use Crafty with XBoard, give the -fcp and -fd options as follows, where
+<crafty's directory> is the directory in which you installed Crafty
+and placed its book and other support files.
+
+.SS zic2xpm
+The ``zic2xpm'' program is used to import chess sets from the ZIICS(*)
+program into XBoard. ``zic2xpm'' is part of the XBoard distribution.
+ZIICS is available from:
+
+ftp://ftp.freechess.org/pub/chess/DOS/ziics131.exe
+
+To import ZIICS pieces, do this:
+.TP
+.B 1. Unzip ziics131.exe into a directory:
+
+.nf
+    unzip -L ziics131.exe -d ~/ziics
+.fi
+.TP
+.B 2. Use zic2xpm to convert a set of pieces to XBoard format.
+
+For example, let's say you want to use the
+FRITZ4 set. These files are named ``fritz4.*'' in the ZIICS distribution.
+
+.nf
+    mkdir ~/fritz4
+    cd ~/fritz4
+    zic2xpm ~/ziics/fritz4.*
+.fi
+.TP
+.B 3. Give XBoard the ``-pixmap'' option when starting up, e.g.:
+
+.nf
+    xboard -pixmap ~/fritz4
+.fi
+
+Alternatively, you can add this line to your `.Xresources' file:
+
+.nf
+    xboard*pixmapDirectory: ~/fritz4
+.fi
+.PP
+(*) ZIICS is a separate copyrighted work of Andy McFarland.
+The ``ZIICS pieces'' are copyrighted works of their respective
+creators. Files produced by ``zic2xpm'' are for PERSONAL USE ONLY
+and may NOT be redistributed without explicit permission from
+the original creator(s) of the pieces.
+
+.SH COPYRIGHT
+Copyright (C) 1991 Digital Equipment Corporation, Maynard, Massachusetts.
+
+All Rights Reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+Digital disclaims all warranties with regard to this software, including
+all implied warranties of merchantability and fitness.  In no event shall
+Digital be liable for any special, indirect or consequential damages or
+any damages whatsoever resulting from loss of use, data or profits,
+whether in an action of contract, negligence or other tortious action,
+arising out of or in connection with the use or performance of this
+software.
+
+Enhancements copyright (C) 1992-2003, 2004, 2005, 2006, 2007,
+2008, 2009 Free Software Foundation, Inc.
+
+.nf
+Published by the Free Software Foundation
+59 Temple Place - Suite 330
+Boston, MA 02111-1307 USA
+.fi
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+section entitled ``GNU General Public License,''
+is included exactly as in the original, and provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that the section entitled ``GNU General Public License,''
+and this permission notice, may be included in translations approved by
+the Free Software Foundation instead of in the original English.
+
+.SH GNU GENERAL PUBLIC LICENSE
+.nf
+Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+.fi
+
+The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom
+to share and change all versions of a program -- to make sure it remains
+free software for all its users.  We, the Free Software Foundation,
+use the GNU General Public License for most of our software; it
+applies also to any other work released this way by its authors.  You
+can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you
+have certain responsibilities if you distribute copies of the
+software, or if you modify it: responsibilities to respect the freedom
+of others.
+
+For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too,
+receive or can get the source code.  And you must show them these
+terms so they know their rights.
+
+Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so.  This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software.  The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products.  If such problems arise substantially in
+other domains, we stand ready to extend this provision to those
+domains in future versions of the GPL, as needed to protect the
+freedom of users.
+
+Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish
+to avoid the special danger that patents applied to a free program
+could make it effectively proprietary.  To prevent this, the GPL
+assures that patents cannot be used to render the program non-free.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+.TP
+.B Definitions.
+``This License'' refers to version 3 of the GNU General Public License.
+
+``Copyright'' also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+
+``The Program'' refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as ``you''.  ``Licensees'' and
+``recipients'' may be individuals or organizations.
+
+To ``modify'' a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of
+an exact copy.  The resulting work is called a ``modified version'' of
+the earlier work or a work ``based on'' the earlier work.
+
+A ``covered work'' means either the unmodified Program or a work based
+on the Program.
+
+To ``propagate'' a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+To ``convey'' a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user
+through a computer network, with no transfer of a copy, is not
+conveying.
+
+An interactive user interface displays ``Appropriate Legal Notices'' to
+the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+.TP
+.B Source Code.
+The ``source code'' for a work means the preferred form of the work for
+making modifications to it.  ``Object code'' means any non-source form
+of a work.
+
+A ``Standard Interface'' means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+The ``System Libraries'' of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+``Major Component'', in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+The ``Corresponding Source'' for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+
+The Corresponding Source for a work in source code form is that same
+work.
+
+.TP
+.B Basic Permissions.
+All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force.
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright.  Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the
+conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+.TP
+.B Protecting Users' Legal Rights From Anti-Circumvention Law.
+No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such
+circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit
+operation or modification of the work as a means of enforcing, against
+the work's users, your or third parties' legal rights to forbid
+circumvention of technological measures.
+
+.TP
+.B Conveying Verbatim Copies.
+You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+.TP
+.B Conveying Modified Source Versions.
+You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these
+conditions:
+
+The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+The work must carry prominent notices stating that it is released
+under this License and any conditions added under section 7.  This
+requirement modifies the requirement in section 4 to ``keep intact all
+notices''.
+
+You must license the entire work, as a whole, under this License to
+anyone who comes into possession of a copy.  This License will
+therefore apply, along with any applicable section 7 additional terms,
+to the whole of the work, and all its parts, regardless of how they
+are packaged.  This License gives no permission to license the work in
+any other way, but it does not invalidate such permission if you have
+separately received it.
+
+If the work has interactive user interfaces, each must display
+Appropriate Legal Notices; however, if the Program has interactive
+interfaces that do not display Appropriate Legal Notices, your work
+need not make them do so.
+
+A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+``aggregate'' if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+.TP
+.B  Conveying Non-Source Forms.
+You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by the
+Corresponding Source fixed on a durable physical medium customarily
+used for software interchange.
+
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by a written
+offer, valid for at least three years and valid for as long as you
+offer spare parts or customer support for that product model, to give
+anyone who possesses the object code either (1) a copy of the
+Corresponding Source for all the software in the product that is
+covered by this License, on a durable physical medium customarily used
+for software interchange, for a price no more than your reasonable
+cost of physically performing this conveying of source, or (2) access
+to copy the Corresponding Source from a network server at no charge.
+
+Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source.  This alternative is
+allowed only occasionally and noncommercially, and only if you
+received the object code with such an offer, in accord with subsection
+6b.
+
+Convey the object code by offering access from a designated place
+(gratis or for a charge), and offer equivalent access to the
+Corresponding Source in the same way through the same place at no
+further charge.  You need not require recipients to copy the
+Corresponding Source along with the object code.  If the place to copy
+the object code is a network server, the Corresponding Source may be
+on a different server (operated by you or a third party) that supports
+equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source.
+Regardless of what server hosts the Corresponding Source, you remain
+obligated to ensure that it is available for as long as needed to
+satisfy these requirements.
+
+Convey the object code using peer-to-peer transmission, provided you
+inform other peers where the object code and Corresponding Source of
+the work are being offered to the general public at no charge under
+subsection 6d.
+
+A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+A ``User Product'' is either (1) a ``consumer product'', which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling.  In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage.  For a particular product received by a particular user,
+``normally used'' refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product.  A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+
+``Installation Information'' for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source.  The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed.  Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+
+Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+.TP
+.B Additional Terms.
+``Additional permissions'' are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+
+Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices
+displayed by works containing it; or
+
+Prohibiting misrepresentation of the origin of that material, or
+requiring that modified versions of such material be marked in
+reasonable ways as different from the original version; or
+
+Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with
+contractual assumptions of liability to the recipient, for any
+liability that these contractual assumptions directly impose on those
+licensors and authors.
+
+All other non-permissive additional terms are considered ``further
+restrictions'' within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the
+above requirements apply either way.
+
+.TP
+.B Termination.
+You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+.TP
+.B Acceptance Not Required for Having Copies.
+You are not required to accept this License in order to receive or run
+a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+.TP
+.B Automatic Licensing of Downstream Recipients.
+Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+An ``entity transaction'' is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+.TP
+.B Patents.
+A ``contributor'' is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's ``contributor version''.
+
+A contributor's ``essential patent claims'' are all patent claims owned
+or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, ``control'' includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+In the following three paragraphs, a ``patent license'' is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To ``grant'' such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  ``Knowingly relying'' means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+A patent license is ``discriminatory'' if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License.  You may not convey a covered work if you
+are a party to an arrangement with a third party that is in the
+business of distributing software, under which you make payment to the
+third party based on the extent of your activity of conveying the
+work, and under which the third party grants, to any of the parties
+who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in
+connection with specific products or compilations that contain the
+covered work, unless you entered into that arrangement, or that patent
+license was granted, prior to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+.TP
+.B No Surrender of Others' Freedom.
+If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey
+a covered work so as to satisfy simultaneously your obligations under
+this License and any other pertinent obligations, then as a
+consequence you may not convey it at all.  For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+
+.TP
+.B Use with the GNU Affero General Public License.
+Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+.TP
+.B Revised Versions of this License.
+The Free Software Foundation may publish revised and/or new versions
+of the GNU General Public License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies that a certain numbered version of the GNU General Public
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that numbered version or
+of any later version published by the Free Software Foundation.  If
+the Program does not specify a version number of the GNU General
+Public License, you may choose any version ever published by the Free
+Software Foundation.
+
+If the Program specifies that a proxy can decide which future versions
+of the GNU General Public License can be used, that proxy's public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+
+Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+.TP
+.B Disclaimer of Warranty.
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+.TP
+.B Limitation of Liability.
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
+TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+.TP
+.B Interpretation of Sections 15 and 16.
+If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the ``copyright'' line and a pointer to where the full notice is found.
+
+.nf
+ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
+Copyright (C) YEAR NAME OF AUTHOR
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see `http://www.gnu.org/licenses/'.
+.fi
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+.nf
+PROGRAM Copyright (C) YEAR NAME OF AUTHOR
+This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+.fi
+
+The hypothetical commands `show w' and `show c' should show
+the appropriate parts of the General Public License.  Of course, your
+program's commands might be different; for a GUI interface, you would
+use an ``about box''.
+
+You should also get your employer (if you work as a programmer) or school,
+if any, to sign a ``copyright disclaimer'' for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+`http://www.gnu.org/licenses/'.
+
+The GNU General Public License does not permit incorporating your
+program into proprietary programs.  If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library.  If this is what you want to do, use
+the GNU Lesser General Public License instead of this License.  But
+first, please read `http://www.gnu.org/philosophy/why-not-lgpl.html'.
+
diff --git a/xboard.texi b/xboard.texi
index e964ab3..bd56944 100644
--- a/xboard.texi
+++ b/xboard.texi
@@ -689,7 +689,7 @@ Pops up a sub-menu where you can set some engine parameters common to most engin
 such as hash-table size, tablebase cache size, maximum number of processors
 that SMP engines can use, and where to find the Polyglot adapter needed
 to run UCI engines under XBoard. The feature that allows setting of these parameters on
-engines is new since XBoard 4.3.15, so not many WinBoard engines respond
+engines is new since XBoard 4.3.15, so not many XBoard/WinBoard engines respond
 to it yet, but UCI engines should.
 It is also possible to specify a GUI opening book here, i.e. an opening
 book that XBoard consults for any position a playing engine gets in.
@@ -1150,7 +1150,7 @@ it makes the engine send it despite the setting of this option.)
 Sets the Ponder Next Move menu option. @xref{Options Menu}. Default: true.
 @item -smpCores number
 Specifies the maximum number of CPUs an SMP engine is allowed to use.
-Only works for engines that support the WinBoard-protocol cores feature.
+Only works for engines that support the XBoard/WinBoard-protocol cores feature.
 @item -mg or -matchGames n
 @cindex mg, option
 @cindex matchGames, option
@@ -1294,7 +1294,7 @@ Important when XBoard uses the score for adjudications, or in PGN reporting.
 @cindex niceEngines, option
 This option allows you to lower the priority of the engine processes, 
 so that the generally insatiable hunger for CPU time of chess engines does not interfere so much 
-with smooth operation of WinBoard (or the rest of your system). 
+with smooth operation of XBoard (or the rest of your system). 
 Negative values could increase the engine priority, which is not recommended.
 @item -firstOptions string
 @itemx -secondOptions string
@@ -1302,7 +1302,7 @@ Negative values could increase the engine priority, which is not recommended.
 @cindex secondOptions, option
 The given string is a comma-separated list of (option name=option value) pairs, 
 like the following example: "style=Karpov,blunder rate=0". 
-If the options announced by the engine at startup through the feature commands of WinBoard protocol 
+If an option announced by the engine at startup through the feature commands of the XBoard/WinBoard protocol 
 matches one of the option names (i.e. "style" or "blunder rate"), 
 it would be set to the given value (i.e. "Karpov" or 0) 
 through a corresponding option command to the engine. 
@@ -1318,8 +1318,8 @@ variant fischerandom, to make them at least understand the opening position,
 through setting the string to "KQkq -". (Note you also have to give the e.p. field!) 
 Other possible applications are to provide work-arounds for engines that want to see 
 castling and e.p. fields in variants that do not have castling or e.p. 
-(shatranj, courier, xiangqi, shogi) so that WinBoard would normally omit them 
-(string = "- -"), or to add variant-specific fields that are not yet supported by WinBoard 
+(shatranj, courier, xiangqi, shogi) so that XBoard would normally omit them 
+(string = "- -"), or to add variant-specific fields that are not yet supported by XBoard 
 (e.g. to indicate the number of checks in 3check).
 @end table
 
@@ -1348,7 +1348,7 @@ Specifies if the Polyglot book should be used.
 @item -PolyglotBook filename
 @cindex PolyglotBook, option
 Gives the filename of the opening book that Polyglot should use. 
-From XBoard 4.3.15 on, native WinBoard engines will also use the opening book specified here, 
+From XBoard 4.3.15 on, native XBoard/WinBoard engines will also use the opening book specified here, 
 provided the @code{usePolyglotBook} option is set to true,
 and the option @code{firstHasOwnBookUCI} or @code{secondHasOwnBookUCI} applying to the engine
 is set to false.
@@ -1367,13 +1367,13 @@ rather than using the external book through XBoard. Default: false.
 @item -defaultHashSize n
 @cindex defaultHashSize, option
 Sets the size of the hash table to n MegaBytes. Together with the EGTB cache size 
-this number is also used to calculate the memory setting of WinBoard engines, 
-for those that support the memory feature of WinBoard protocol. Default: 64.
+this number is also used to calculate the memory setting of XBoard/WinBoard engines, 
+for those that support the memory feature of the XBoard/WinBoard protocol. Default: 64.
 @item -defaultCacheSizeEGTB n
 @cindex defaultCacheSizeEGTB, option
 Sets the size of the EGTB cache to n MegaBytes. Together with the hash-table size 
-this number is also used to calculate the memory setting of WinBoard engines, 
-for those that support the memory feature of WinBoard protocol. Default: 4.
+this number is also used to calculate the memory setting of XBoard/WinBoard engines, 
+for those that support the memory feature of the XBoard/WinBoard protocol. Default: 4.
 @item -defaultPathEGTB filename
 @cindex defaultPathEGTB, option
 Gives the name of the directory where the end-game tablebases are installed, for UCI engines.
@@ -1781,7 +1781,7 @@ in every game played to the specified file. The file name @file{-}
 specifies the standard output.
 @item -pgnExtendedInfo true/false
 @cindex pgnExtendedInfo, option`
-If this option is set, WinBoard saves depth, score and time used for each 
+If this option is set, XBoard saves depth, score and time used for each 
 move that the engine found as a comment in the PGN file.
 Default: false.
 @item -pgnEventHeader string
@@ -2086,6 +2086,19 @@ Sets the Animate Moving menu option. @xref{Options Menu}.  Default: true.
 @cindex -animateSpeed, option
 Number of milliseconds delay between each animation frame when Animate
 Moves is on.
+ at item -autoDisplayComment true/false
+ at itemx -autoDisplayTags true/false
+ at cindex -autoDisplayComment, option
+ at cindex -autoDisplayTags, option
+If set to true, these options cause the window with the move comments,
+and the window with PGN tags, respectively, to pop up automatically when
+such tags or comments are encountered during the replaying a stored or
+loaded game.  Default: true.
+ at item -pasteSelection true/false
+ at cindex -pasteSelection, option
+If this option is set to true, the Paste Position and Paste Game
+options paste from the currently selected text.  If false, they paste
+from the clipboard.  Default: false.
 @end table
 
 @node Adjudication Options
@@ -2276,14 +2289,14 @@ Turns on debugging printout.
 @item -debugFile filename or -nameOfDebugFile filename
 @cindex debugFile, option
 @cindex nameOfDebugFile, option
-Sets the name of the file to which WinBoard saves debug information 
+Sets the name of the file to which XBoard saves debug information 
 (including all communication to and from the engines).
 @item -engineDebugOutput number
 @cindex engineDebugOutput, option
-Specifies how WinBoard should handle unsolicited output from the engine, 
+Specifies how XBoard should handle unsolicited output from the engine, 
 with respect to saving it in the debug file. 
 The output is further (hopefully) ignored. 
-If number=0, WinBoard refrains from writing such spurious output to the debug file. 
+If number=0, XBoard refrains from writing such spurious output to the debug file. 
 If number=1, all engine output is written faithfully to the debug file. 
 If number=2, any protocol-violating line is prefixed with a '#' character, 
 as the engine itself should have done if it wanted to submit info for inclusion in the debug file.
@@ -2309,7 +2322,7 @@ Default is the login name on your local computer.
 @itemx -delayAfterQuit number
 @cindex delayBeforeQuit, option
 @cindex delayAfterQuit, option
-These options specify how long WinBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the 'quit' command. The second one determines the pause after killing the engine, to make sure it dies.
+These options specify how long XBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the 'quit' command. The second one determines the pause after killing the engine, to make sure it dies.
 
 @end table
 
@@ -2610,7 +2623,7 @@ The piece-drop menu does not check piece drops in bughouse to see if you actuall
 the piece you are trying to drop. But this way of dropping pieces should be considered 
 an obsolete feature, now that pieces can be dropped by dragging them from the holdings 
 to the board. Anyway, if you would attempt an illegal move when using a chess engine or the ICS, 
-WinBoard will accept the error message that comes back, undo the move, and let you try another.
+XBoard will accept the error message that comes back, undo the move, and let you try another.
 FEN positions saved by XBoard do include correct information about whether castling or 
 en passant are legal, and also handle the 50-move counter.
 The mate detector does not understand that non-contact mate is not really mate in bughouse. 
@@ -2646,90 +2659,77 @@ suggested.
 @cindex Problems
 @cindex Reporting problems
 
-Report bugs and problems with XBoard to @code{<bug-xboard@@gnu.org>}.
+You can report bugs and problems with XBoard using
+the bug tracker at @code{https://savannah.gnu.org/projects/xboard/}
+or by sending mail to @code{<bug-xboard@@gnu.org>}.  It can also
+be useful to report or discuss bugs in the WinBoard Forum at
+ at code{http://www.open-aurec.com/wbforum/}, 
+WinBoard development section.
 
 Please use the @file{script} program to start a typescript, run 
 XBoard with the @samp{-debug} option, and include the typescript
 output in your message.
 Also tell us what kind of machine and what operating system version
 you are using.  The command @samp{uname -a} will often tell you this.
-Here is a sample of approximately what you should type:
-
- at example
-script
-uname -a
-./configure
-make
-./xboard -debug
-exit
-mail bug-xboard@@gnu.org
-Subject: Your short description of the problem
-Your detailed description of the problem
-~r typescript
-.
- at end example
-
-The WinBoard / XBoard 4.3 line is being developed by H.G. Muller 
-independently of the GNU Savannah xboard project. 
-Bug reports on this version, and suggestions for improvements and additions, 
-are best posted in the WinBoard forum, 
-WinBoard-development section (http://www.open-aurec.com/wbforum). 
 
 If you improve XBoard, please send a message about your changes,
 and we will get in touch with you about merging them in
 to the main line of development.
-Also see our Web site at http://savannah.gnu.org/projects/xboard/.
 
 @node Contributors
 @chapter Authors and contributors
 @cindex Authors
 @cindex Contributors
 
-Tim Mann has been responsible for XBoard versions 1.3 and beyond, and
-for WinBoard, a port of XBoard to Microsoft Win32 (Windows NT and
-Windows 95). H.G.Muller is responsible for version 4.3.
-
-Mark Williams contributed the initial (WinBoard-only) implementation
-of many new features added to both XBoard and WinBoard in version
-4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training
-mode, auto raise, and blindfold.  Ben Nye contributed X copy/paste
-code for XBoard.
-
-Hugh Fisher added animated piece movement to XBoard, and Henrik Gram
-(henrikg@@funcom.com) added it to WinBoard.  Frank McIngvale added
-click/click moving, the Analysis modes, piece flashing, ZIICS import,
-and ICS text colorization to XBoard.  Jochen Wiedmann ported XBoard to
-the Amiga, creating AmyBoard, and converted the documentation to
-texinfo.  Elmar Bartel contributed the new piece bitmaps introduced in
-version 3.2.  John Chanak contributed the initial implementation of
-ICS mode.  The color scheme and the old 80x80 piece bitmaps were taken
+Chris Sears and Dan Sears wrote the original XBoard.  They were
+responsible for versions 1.0 through 1.2.  The color scheme was taken
 from Wayne Christopher's @code{XChess} program.
 
-Chris Sears and Dan Sears wrote the original XBoard.  They were
-responsible for versions 1.0 through 1.2.
+Tim Mann was primarily responsible for XBoard versions 1.3 through
+4.2.7, and for WinBoard (a port of XBoard to Microsoft Win32) from its
+inception through version 4.2.7.
+
+John Chanak contributed the initial implementation of ICS mode.  Evan
+Welsh wrote @code{CMail}, and Patrick Surry helped in designing,
+testing, and documenting it.  Elmar Bartel contributed the new piece
+bitmaps introduced in version 3.2.  Jochen Wiedmann converted the
+documentation to texinfo.  Frank McIngvale added click/click moving,
+the Analysis modes, piece flashing, ZIICS import, and ICS text
+colorization to XBoard.  Hugh Fisher added animated piece movement to
+XBoard, and Henrik Gram added it to WinBoard.  Mark Williams
+contributed the initial (WinBoard-only) implementation of many new
+features added to both XBoard and WinBoard in version 4.1.0, including
+copy/paste, premove, icsAlarm, autoFlipView, training mode, auto
+raise, and blindfold.  Ben Nye contributed X copy/paste code for
+XBoard.
 
-Evan Welsh wrote @code{CMail}.  Patrick Surry helped in designing,
-testing, and documenting CMail.
+In a fork from version 4.2.7, Alessandro Scotti added many elements to
+the user interface of WinBoard, including the board textures and
+font-based rendering, the evaluation-graph, move-history and
+engine-output window.  He was also responsible for adding the UCI
+support.
+
+H. G. Muller continued this fork of the project, producing version
+4.3.  He made WinBoard castling- and e.p.-aware, added variant support
+with adjustable board sizes, the crazyhouse holdings, and the fairy
+pieces.  In addition he added most of the adjudication options, made
+WinBoard more robust in dealing with buggy and crashing engines, and
+extended time control with a time-odds and node-count-based modes.
+Most of the options that initially were WinBoard only have now been
+back-ported to XBoard.
 
-Alessandro Scotti added many elements to the user interface of WinBoard, 
-including the board textures and font-based rendering, the evaluation-graph, 
-move-history and engine-output window. 
-He was also responsible for adding the UCI support. 
+Michel van den Bergh provided the code for reading Polyglot opening books.
 
-H.G. Muller made WinBoard castling- and e.p.-aware, 
-added variant support with adjustable board sizes, 
-the crazyhouse holdings, and the fairy pieces. 
-In addition he added most of the adjudication options, 
-made WinBoard more robust in dealing with buggy and crashing engines, 
-and extended time control with a time-odds and node-count-based modes.
-Most of the options that initially were WinBoard only have now been back-ported to XBoard.
+Meanwhile, some work continued on the GNU XBoard project maintained at
+savannah.gnu.org, but version 4.2.8 was never released.  Daniel
+Mehrmann was responsible for much of this work.
 
-Michel van den Bergh provided the code for reading Polyglot opening books.
+Most recently, Arun Persaud worked with H. G. Muller to merge all
+the features of the never-released XBoard/WinBoard 4.2.8 of the GNU
+XBoard project and the never-released 4.3.16 from H. G.'s fork into a
+unified XBoard/WinBoard 4.4, which is now available both from the
+savannah.gnu.org web site and the WinBoard forum.
 
-Arun Persaud worked with H.G. Muller to combine all the features of the never-released WinBoard 4.2.8 
-of the Savannah project (mainly by Daniel Mehrmann), 
-and the never-released 4.3.16 into a unified WinBoard 4.4, 
-which is now available both from the Savannah web site and the WinBoard forum.
 @node CMail
 @chapter CMail
 @cindex cmail
@@ -2813,16 +2813,6 @@ The program used by cmail to send email messages. This defaults to the
 environment variable @code{$CMAIL_MAILPROG} or failing that
 @file{/usr/ucb/Mail}, @file{/usr/ucb/mail} or @file{Mail}. You will need
 to set this variable if none of the above paths fit your system.
- at item -gamesFile <file>
- at cindex .cmailgames
-A file containing a list of games with email addresses. This defaults to
-the environment variable @code{$CMAIL_GAMES} or failing that
- at file{.cmailgames}.
- at item -aliasesFile <file>
- at cindex .cmailaliases
-A file containing one or more aliases for a set of email addresses. This
-defaults to the environment variable @code{$CMAIL_ALIASES} or failing
-that @file{.cmailaliases}.
 @item -logFile <file>
 A file in which to dump verbose debugging messages that are invoked with
 the @samp{-v}
diff --git a/xedittags.c b/xedittags.c
index d4c3dbe..63be84e 100644
--- a/xedittags.c
+++ b/xedittags.c
@@ -205,12 +205,8 @@ Widget TagsCreate(name, text, msg, mutable, callback)
     XtSetArg(args[j], XtNresizable, True);  j++;
     XtSetArg(args[j], XtNwidth, bw_width/2);  j++;
     XtSetArg(args[j], XtNheight, bw_width/3);  j++;
-#if 0
-    XtSetArg(args[j], XtNscrollVertical, XawtextScrollWhenNeeded);  j++;
-#else
     /* !!Work around an apparent bug in XFree86 4.0.1 (X11R6.4.3) */
     XtSetArg(args[j], XtNscrollVertical, XawtextScrollAlways);  j++;
-#endif
     XtSetArg(args[j], XtNautoFill, False);  j++;
     textw =
       XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j);
@@ -252,18 +248,6 @@ Widget TagsCreate(name, text, msg, mutable, callback)
 	  XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
 	XtAddCallback(b_cancel, XtNcallback, callback, (XtPointer) 0);
 
-#if 0
-	j = 0;
-	XtSetArg(args[j], XtNfromVert, msgw);  j++;
-	XtSetArg(args[j], XtNfromHoriz, b);  j++;
-	XtSetArg(args[j], XtNtop, XtChainBottom); j++;
-	XtSetArg(args[j], XtNbottom, XtChainBottom); j++;
-	XtSetArg(args[j], XtNleft, XtChainLeft); j++;
-	XtSetArg(args[j], XtNright, XtChainLeft); j++;
-	b_clear = b =
-	  XtCreateManagedWidget("clear", commandWidgetClass, form, args, j);
-	XtAddCallback(b_clear, XtNcallback, callback, (XtPointer) 0);
-#endif
     } else {
 	j = 0;
 	XtSetArg(args[j], XtNfromVert, msgw);  j++;
diff --git a/xengineoutput.c b/xengineoutput.c
index 54c8859..2df13d3 100644
--- a/xengineoutput.c
+++ b/xengineoutput.c
@@ -132,7 +132,7 @@ Pixmap icons[8]; // [HGM] this front-end array translates back-end icon indicato
 Widget outputField[2][7]; // [HGM] front-end array to translate output field to window handle
 
 void EngineOutputPopDown();
-void engineOutputPopUp(char *title, char *text);
+void engineOutputPopUp();
 int  EngineOutputIsUp();
 static void SetEngineColorIcon( int which );
 
@@ -188,9 +188,9 @@ typedef struct {
     int an_move_count;
 } EngineOutputData;
 
-static int VerifyDisplayMode();
+static void VerifyDisplayMode();
 static void UpdateControls( EngineOutputData * ed );
-static SetEngineState( int which, int state, char * state_data );
+static void SetEngineState( int which, int state, char * state_data );
 
 void ReadIcon(char *pixData[], int iconNr)
 {
@@ -349,13 +349,9 @@ void PositionControlSet(which, form, bw_width)
     XtSetArg(args[j], XtNright, XtChainRight);  j++;
     XtSetArg(args[j], XtNresizable, True);  j++;
     XtSetArg(args[j], XtNwidth, bw_width);  j++; /*force wider than buttons*/
-#if 0
-    XtSetArg(args[j], XtNscrollVertical, XawtextScrollWhenNeeded);  j++;
-#else
     /* !!Work around an apparent bug in XFree86 4.0.1 (X11R6.4.3) */
     XtSetArg(args[j], XtNscrollVertical, XawtextScrollAlways);  j++;
     XtSetArg(args[j], XtNscrollHorizontal, XawtextScrollWhenNeeded);  j++;
-#endif
 //    XtSetArg(args[j], XtNautoFill, True);  j++;
 //    XtSetArg(args[j], XtNwrap, XawtextWrapWord); j++;
     outputField[which][nMemo] = edit =
@@ -385,7 +381,11 @@ Widget EngineOutputCreate(name, text)
     j = 0;
     XtSetArg(args[j], XtNresizable, True);  j++;
     shell =
+#if TOPLEVEL 
+     XtCreatePopupShell(name, topLevelShellWidgetClass,
+#else
       XtCreatePopupShell(name, transientShellWidgetClass,
+#endif
 			 shellWidget, args, j);
     layout =
       XtCreateManagedWidget(layoutName, formWidgetClass, shell,
@@ -417,20 +417,8 @@ Widget EngineOutputCreate(name, text)
 	Window junk;
 	Dimension pw_height;
 	Dimension ew_height;
-#if 0
-	j = 0;
-	XtSetArg(args[j], XtNheight, &ew_height);  j++;
-	XtGetValues(edit, args, j);
-
-	j = 0;
-	XtSetArg(args[j], XtNheight, &pw_height);  j++;
-	XtGetValues(shell, args, j);
-	engineOutputH = pw_height + (lines - 1) * ew_height;
-	engineOutputW = bw_width - 16;
-#else
 	engineOutputH = bw_height/2;
 	engineOutputW = bw_width-16;
-#endif
 
 	XSync(xDisplay, False);
 #ifdef NOTDEF
@@ -499,12 +487,13 @@ void ResizeWindowControls(shell, mode)
     }
 }
 
-void EngineOutputPopUp(title, text)
-     char *title, *text;
+void 
+EngineOutputPopUp()
 {
     Arg args[16];
     int j;
     Widget edit;
+    static char *title = _("Engine output"), *text = _("This feature is experimental");
 
     if (engineOutputShell == NULL) {
 	engineOutputShell =
@@ -570,7 +559,7 @@ void EngineOutputPopDown()
 
 
 // back end, due to front-end wrapper for SetWindowText, and new SetIcon arguments
-static SetEngineState( int which, int state, char * state_data )
+static void SetEngineState( int which, int state, char * state_data )
 {
     int x_which = 1 - which;
 
@@ -756,7 +745,7 @@ static void SetDisplayMode( int mode )
 }
 
 // pure back end
-int VerifyDisplayMode()
+void VerifyDisplayMode()
 {
     int mode;
 
@@ -862,7 +851,8 @@ static void UpdateControls( EngineOutputData * ed )
             strncpy( mov, ed->hint, sizeof(mov) );
             mov[ sizeof(mov)-1 ] = '\0';
 
-            sprintf( buf, "%d/%d: %s [%02d:%02d:%02d]", ed->an_move_index, ed->an_move_count, mov, time_mins / 60, time_mins % 60, time_secs % 60 );
+	    sprintf( buf, "[%d] %d/%d: %s [%02d:%02d:%02d]", ed->depth, ed->an_move_index,
+			ed->an_move_count, mov, time_mins / 60, time_mins % 60, time_secs % 60 );
         }
 
         SetEngineState( ed->which, STATE_ANALYZING, buf );
@@ -953,7 +943,7 @@ EngineOutputProc(w, event, prms, nprms)
   if (engineOutputDialogUp) {
     EngineOutputPopDown();
   } else {
-    EngineOutputPopUp(_("engine output"),_("This feature is experimental"));
+    EngineOutputPopUp();
   }
 //  ToNrEvent(currentMove);
 }
diff --git a/xhistory.c b/xhistory.c
index 02c9ec3..c2ac392 100644
--- a/xhistory.c
+++ b/xhistory.c
@@ -164,7 +164,6 @@ void HistoryAlloc(int len){
 }
 
 
-#if 1
 /* Find empty space inside vbox form widget and redistribute it amongst
    the list widgets inside it. */
 /* This version sort of works */
@@ -213,58 +212,6 @@ HistoryFill()
   XtSetArg(args[j], XtNwidth, w);  j++;
   XtSetValues(hist->mvb, args, j);
 }
-#else
-/* Find empty space inside vbox form widget and redistribute it amongst
-   the list widgets inside it. */
-/* This version doesn't work */
-void
-HistoryFill()
-{
-  Arg args[16];
-  Dimension fw, niw, wiw, biw, nbw, wbw, bbw;
-  int j, nl, wl, bl, fdd;
-  long extra;
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, &fw);  j++;
-  XtSetArg(args[j], XtNdefaultDistance, &fdd);  j++;
-  XtGetValues(hist->vbox, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &nl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &niw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &nbw);  j++;
-  XtGetValues(hist->mvn, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &wl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &wiw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &wbw);  j++;
-  XtGetValues(hist->mvw, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &bl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &biw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &bbw);  j++;
-  XtGetValues(hist->mvb, args, j);
-
-  extra = fw - 4*fdd -
-    nl - 1 - 2*niw - 2*nbw - wl - 2*wiw - 2*wbw - bl - 2*biw - 2*bbw;
-  if (extra < 0) extra = 0;
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, nl + 1 + 2*niw);  j++;
-  XtSetValues(hist->mvn, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, wl + 2*wiw + extra/2);  j++;
-  XtSetValues(hist->mvw, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, bl + 2*biw + extra/2);  j++;
-  XtSetValues(hist->mvb, args, j);
-}
-#endif
 
 void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){
   int i,b,m;
diff --git a/xoptions.c b/xoptions.c
index da6a825..6c3d8aa 100644
--- a/xoptions.c
+++ b/xoptions.c
@@ -78,6 +78,8 @@ extern char *getenv();
 # define N_(s)  s
 #endif
 
+extern void SendToProgram P((char *message, ChessProgramState *cps));
+
 extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
 extern Display *xDisplay;
 extern int squareSize;
@@ -140,7 +142,6 @@ void ShuffleCallback(w, client_data, call_data)
         ShufflePopDown();
 	shuffleOpenings = False; // [HGM] should be moved to New Variant menu, once we have it!
 	ResetGameEvent();
-	AnalysisPopDown();
         return;
     }
     if (strcmp(name, _("random")) == 0) {
@@ -162,7 +163,6 @@ void ShuffleCallback(w, client_data, call_data)
 	shuffleOpenings = True;
         ShufflePopDown();
 	ResetGameEvent();
-	AnalysisPopDown();
         return;
     }
 }
@@ -958,7 +958,7 @@ void NewVariantCallback(w, client_data, call_data)
     XtGetValues(w, args, 1);
     
     if (strcmp(name, _("  OK  ")) == 0) {
-	int nr = (int) XawToggleGetCurrent(buttonDesc[0].handle) - 1;
+	int nr = (intptr_t) XawToggleGetCurrent(buttonDesc[0].handle) - 1;
 	if(nr < 0) return;
 	v = buttonDesc[nr].variant;
 	if(!appData.noChessProgram) { 
@@ -1079,7 +1079,7 @@ void NewVariantPopUp()
 				  "for missing bitmaps. (See manual.)")); j++;
     XtCreateManagedWidget("warning", labelWidgetClass, form, args, j);
 
-    XtRealizeWidget(popup);
+	    XtRealizeWidget(popup);
     CatchDeleteWindow(popup, "NewVariantPopDown");
     
     XQueryPointer(xDisplay, xBoardWindow, &root, &child,
@@ -1338,23 +1338,24 @@ void SpinCallback(w, client_data, call_data)
     Arg args[16];
     char buf[MSG_SIZ];
     int i, j;
+    int data = (intptr_t) client_data;
     
     XtSetArg(args[0], XtNlabel, &name);
     XtGetValues(w, args, 1);
     
     j = 0;
     XtSetArg(args[0], XtNstring, &val);
-    XtGetValues(currentCps->option[(int)client_data].handle, args, 1);
+    XtGetValues(currentCps->option[data].handle, args, 1);
     sscanf(val, "%d", &j);
     if (strcmp(name, "+") == 0) {
-	if(++j > currentCps->option[(int)client_data].max) return;
+	if(++j > currentCps->option[data].max) return;
     } else
     if (strcmp(name, "-") == 0) {
-	if(--j < currentCps->option[(int)client_data].min) return;
+	if(--j < currentCps->option[data].min) return;
     } else return;
     sprintf(buf, "%d", j);
     XtSetArg(args[0], XtNstring, buf);
-    XtSetValues(currentCps->option[(int)client_data].handle, args, 1);
+    XtSetValues(currentCps->option[data].handle, args, 1);
 }
 
 void SettingsCallback(w, client_data, call_data)
@@ -1366,6 +1367,7 @@ void SettingsCallback(w, client_data, call_data)
     Arg args[16];
     char buf[MSG_SIZ];
     int i, j;
+    int data = (intptr_t) client_data;
     
     XtSetArg(args[0], XtNlabel, &name);
     XtGetValues(w, args, 1);
@@ -1374,7 +1376,7 @@ void SettingsCallback(w, client_data, call_data)
         SettingsPopDown();
         return;
     }
-    if (strcmp(name, _("OK")) == 0 || (int)client_data) { // save buttons imply OK
+    if (strcmp(name, _("OK")) == 0 || data) { // save buttons imply OK
 	int nr;
 
 	for(i=0; i<currentCps->nrOptions; i++) { // send all options that had to be OK-ed to engine
@@ -1420,7 +1422,7 @@ void SettingsCallback(w, client_data, call_data)
 		    break;
 	    }
 	}
-	if((int)client_data) { // send save-button command to engine
+	if(data) { // send save-button command to engine
 	    sprintf(buf, "option %s\n", name);
 	    SendToProgram(buf, currentCps);
 	}
@@ -1437,8 +1439,8 @@ void ComboSelect(w, addr, index) // callback for all combo items
      caddr_t index;
 {
     Arg args[16];
-    int i = ((int)addr)>>8;
-    int j = 255 & (int) addr;
+    int i = ((intptr_t)addr)>>8;
+    int j = 255 & (intptr_t) addr;
 
     values[i] = j; // store in temporary, for transfer at OK
     XtSetArg(args[0], XtNlabel, ((char**)currentCps->option[i].textValue)[j]);
@@ -1465,7 +1467,7 @@ void CreateComboPopup(parent, name, n, mb)
 					  menu, args, j);
 	    XtAddCallback(entry, XtNcallback,
 			  (XtCallbackProc) ComboSelect,
-			  (caddr_t) (256*n+i));
+			  (caddr_t)(intptr_t) (256*n+i));
 	i++;
     }
 }	
@@ -1473,7 +1475,7 @@ void CreateComboPopup(parent, name, n, mb)
 void SettingsPopUp(ChessProgramState *cps)
 {
     Arg args[16];
-    Widget popup, layout, dialog, edit, form, oldform, last, b_ok, b_cancel, leftMargin = NULL;
+    Widget popup, layout, dialog, edit=NULL, form, oldform, last, b_ok, b_cancel, leftMargin = NULL;
     Window root, child;
     int x, y, i, j, height, width, h, c;
     int win_x, win_y;
@@ -1487,7 +1489,7 @@ void SettingsPopUp(ChessProgramState *cps)
 
     if(cps->nrOptions > 50) width = 4; else if(cps->nrOptions>24) width = 2; else width = 1;
     height = cps->nrOptions / width + 1;
-    i = 0;
+     i = 0;
     XtSetArg(args[i], XtNresizable, True); i++;
     SettingsShell = popup =
       XtCreatePopupShell(_("Settings Menu"), transientShellWidgetClass,
@@ -1505,7 +1507,7 @@ void SettingsPopUp(ChessProgramState *cps)
     XtSetArg(args[j], XtNfromHoriz, leftMargin);  j++;
     XtSetValues(form, args, j);
     leftMargin = form;
-
+ 
     last = NULL;
     for(h=0; h<height; h++) {
 	i = h + c*height;
@@ -1543,7 +1545,8 @@ void SettingsPopUp(ChessProgramState *cps)
 	    XtSetArg(args[j], XtNheight, 10);  j++;
 	    XtSetArg(args[j], XtNwidth, 20);  j++;
 	    edit = XtCreateManagedWidget("+", commandWidgetClass, form, args, j);
-	    XtAddCallback(edit, XtNcallback, SpinCallback, (XtPointer) i);
+	    XtAddCallback(edit, XtNcallback, SpinCallback,
+			  (XtPointer)(intptr_t) i);
 
 	    j=0;
 	    XtSetArg(args[j], XtNfromVert, edit);  j++;
@@ -1551,7 +1554,8 @@ void SettingsPopUp(ChessProgramState *cps)
 	    XtSetArg(args[j], XtNheight, 10);  j++;
 	    XtSetArg(args[j], XtNwidth, 20);  j++;
 	    last = XtCreateManagedWidget("-", commandWidgetClass, form, args, j);
-	    XtAddCallback(last, XtNcallback, SpinCallback, (XtPointer) i);
+	    XtAddCallback(last, XtNcallback, SpinCallback,
+			  (XtPointer)(intptr_t) i);
 	    break;
 	  case CheckBox:
 	    j=0;
@@ -1575,7 +1579,8 @@ void SettingsPopUp(ChessProgramState *cps)
 	    XtSetArg(args[j], XtNstate, cps->option[i].value);  j++;
 	    cps->option[i].handle = (void*) 
 		(last = XtCreateManagedWidget(cps->option[i].name, commandWidgetClass, form, args, j));   
-	    XtAddCallback(last, XtNcallback, SettingsCallback, (XtPointer) (cps->option[i].type == SaveButton));
+	    XtAddCallback(last, XtNcallback, SettingsCallback,
+			  (XtPointer)(intptr_t) (cps->option[i].type == SaveButton));
 	    break;
 	  case ComboBox:
 	    j=0;
@@ -1625,7 +1630,7 @@ void SettingsPopUp(ChessProgramState *cps)
     SettingsUp = True;
 
     previous = NULL;
-    SetFocus(edit, popup, (XEvent*) NULL, False);
+    if(edit)SetFocus(edit, popup, (XEvent*) NULL, False);
 }
 
 void FirstSettingsProc(w, event, prms, nprms)
@@ -1646,107 +1651,10 @@ void SecondSettingsProc(w, event, prms, nprms)
    SettingsPopUp(&second);
 }
 
-//--------------------------- General Popup for Cloning ----------------------------------
-#if 0
-int XXXUp;
-Widget XXXShell;
-
-void XXXPopDown()
-{
-    if (!XXXUp) return;
-    XtPopdown(XXXShell);
-    XtDestroyWidget(XXXShell);
-    XXXUp = False;
-    ModeHighlight();
-}
-
-void XXXCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name;
-    Widget w2;
-    Arg args[16];
-    char buf[80];
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, _("cancel")) == 0) {
-        XXXPopDown();
-        return;
-    }
-    if (strcmp(name, _("ok")) == 0) {
-	int nr; String name;
-        name = XawDialogGetValueString(w2 = XtParent(w));
-	if(sscanf(name ,"%d",&nr) != 1) {
-	    sprintf(buf, "%d", appData.defaultFrcPosition);
-	    XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value
-	    XtSetValues(w2, args, 1);
-	    return;
-	}
-        XXXPopDown();
-        return;
-    }
-}
+//---------------------------- Chat Windows ----------------------------------------------
 
-void XXXPopUp()
+void OutputChatMessage(int partner, char *mess)
 {
-    Arg args[16];
-    Widget popup, layout, dialog, edit;
-    Window root, child;
-    int x, y, i;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;
-    XXXShell = popup =
-      XtCreatePopupShell(_("XXX Menu"), transientShellWidgetClass,
-			 shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-			    layoutArgs, XtNumber(layoutArgs));
-  
-    sprintf(def, "%d\n", appData.defaultFrcPosition);
-    i = 0;
-    XtSetArg(args[i], XtNlabel, ""); i++;
-    XtSetArg(args[i], XtNvalue, def); i++;
-    XtSetArg(args[i], XtNborderWidth, 0); i++;
-    dialog = XtCreateManagedWidget("XXX", dialogWidgetClass,
-				   layout, args, i);
-    
-    XawDialogAddButton(dialog, _("ok"), XXXCallback, (XtPointer) dialog);
-    XawDialogAddButton(dialog, _("cancel"), XXXCallback, (XtPointer) dialog);
-    
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "XXXPopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-		  &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    XXXUp = True;
-    
-    edit = XtNameToWidget(dialog, "*value");
-
-    previous = NULL;
-    SetFocus(engThreshold, popup, (XEvent*) NULL, False);
+    return; // dummy
 }
 
-void XXXMenuProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   XXXPopUp();
-}
-#endif
\ No newline at end of file
diff --git a/ylwrap b/ylwrap
new file mode 100755
index 0000000..7278b6a
--- /dev/null
+++ b/ylwrap
@@ -0,0 +1,223 @@
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2007-11-22.22
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
+# 2007  Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+case "$1" in
+  '')
+    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
+    exit 1
+    ;;
+  --basedir)
+    basedir=$2
+    shift 2
+    ;;
+  -h|--h*)
+    cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+  INPUT is the input file
+  OUTPUT is one file PROG generates
+  DESIRED is the file we actually want instead of OUTPUT
+  PROGRAM is program to run
+  ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v|--v*)
+    echo "ylwrap $scriptversion"
+    exit $?
+    ;;
+esac
+
+
+# The input.
+input="$1"
+shift
+case "$input" in
+  [\\/]* | ?:[\\/]*)
+    # Absolute path; do nothing.
+    ;;
+  *)
+    # Relative path.  Make it absolute.
+    input="`pwd`/$input"
+    ;;
+esac
+
+pairlist=
+while test "$#" -ne 0; do
+  if test "$1" = "--"; then
+    shift
+    break
+  fi
+  pairlist="$pairlist $1"
+  shift
+done
+
+# The program to run.
+prog="$1"
+shift
+# Make any relative path in $prog absolute.
+case "$prog" in
+  [\\/]* | ?:[\\/]*) ;;
+  *[\\/]*) prog="`pwd`/$prog" ;;
+esac
+
+# FIXME: add hostname here for parallel makes that run commands on
+# other machines.  But that might take us over the 14-char limit.
+dirname=ylwrap$$
+trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+  0) "$prog" "$input" ;;
+  *) "$prog" "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+  set X $pairlist
+  shift
+  first=yes
+  # Since DOS filename conventions don't allow two dots,
+  # the DOS version of Bison writes out y_tab.c instead of y.tab.c
+  # and y_tab.h instead of y.tab.h. Test to see if this is the case.
+  y_tab_nodot="no"
+  if test -f y_tab.c || test -f y_tab.h; then
+    y_tab_nodot="yes"
+  fi
+
+  # The directory holding the input.
+  input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
+  # Quote $INPUT_DIR so we can use it in a regexp.
+  # FIXME: really we should care about more than `.' and `\'.
+  input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
+
+  while test "$#" -ne 0; do
+    from="$1"
+    # Handle y_tab.c and y_tab.h output by DOS
+    if test $y_tab_nodot = "yes"; then
+      if test $from = "y.tab.c"; then
+    	from="y_tab.c"
+      else
+    	if test $from = "y.tab.h"; then
+    	  from="y_tab.h"
+    	fi
+      fi
+    fi
+    if test -f "$from"; then
+      # If $2 is an absolute path name, then just use that,
+      # otherwise prepend `../'.
+      case "$2" in
+    	[\\/]* | ?:[\\/]*) target="$2";;
+    	*) target="../$2";;
+      esac
+
+      # We do not want to overwrite a header file if it hasn't
+      # changed.  This avoid useless recompilations.  However the
+      # parser itself (the first file) should always be updated,
+      # because it is the destination of the .y.c rule in the
+      # Makefile.  Divert the output of all other files to a temporary
+      # file so we can compare them to existing versions.
+      if test $first = no; then
+	realtarget="$target"
+	target="tmp-`echo $target | sed s/.*[\\/]//g`"
+      fi
+      # Edit out `#line' or `#' directives.
+      #
+      # We don't want the resulting debug information to point at
+      # an absolute srcdir; it is better for it to just mention the
+      # .y file with no path.
+      #
+      # We want to use the real output file name, not yy.lex.c for
+      # instance.
+      #
+      # We want the include guards to be adjusted too.
+      FROM=`echo "$from" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+      TARGET=`echo "$2" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+
+      sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
+          -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
+
+      # Check whether header files must be updated.
+      if test $first = no; then
+	if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+	  echo "$2" is unchanged
+	  rm -f "$target"
+	else
+          echo updating "$2"
+          mv -f "$target" "$realtarget"
+        fi
+      fi
+    else
+      # A missing file is only an error for the first file.  This
+      # is a blatant hack to let us support using "yacc -d".  If -d
+      # is not specified, we don't want an error when the header
+      # file is "missing".
+      if test $first = yes; then
+        ret=1
+      fi
+    fi
+    shift
+    shift
+    first=no
+  done
+else
+  ret=$?
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/zic2xpm.c b/zic2xpm.c
deleted file mode 100644
index b96817f..0000000
--- a/zic2xpm.c
+++ /dev/null
@@ -1,605 +0,0 @@
-/*
-	zic2xpm.c
-
-	Program to convert pieces from ZIICS format to XPM & XIM format.
-	(C version)  By Frank McIngvale <frankm at hiwaay.net>.
-
-	Copyright (C) 1996,2009 Free Software Foundation, Inc.
-
-	NOTICE: The piece images distributed with ZIICS are
-	    copyrighted works of their original creators.  Images 
-            converted with zic2xpm may not be redistributed without
-	    the permission of the copyright holders.  Do not contact
-	    the authors of zic2xpm or of ZIICS itself to request
-	    permission. 
-
-	NOTICE:  The format of the ZIICS piece file was gleaned from
-	    SHOWSETS.PAS, a part of ZIICS.  Thanks to Andy McFarland
-	    (Zek on ICC) for making this source available!  ZIICS is a 
-	    completely separate and copyrighted work of Andy
-	    McFarland. 	Use and distribution of ZIICS falls under the
-	    ZIICS license, NOT the GNU General Public License.
-
-	NOTICE: The format of the VGA imageblocks was determined
-            by experimentation, and without access to any
-            of Borland Inc.'s BGI library source code.
-
-
-	    GNU XBoard is free software: you can redistribute it
-	    and/or modify it under the terms of the GNU General Public
-	    License as published by the Free Software Foundation,
-	    either version 3 of the License, or (at your option) any
-	    later version.
-	    
-	    GNU XBoard is distributed in the hope that it will be
-	    useful, but WITHOUT ANY WARRANTY; without even the implied
-	    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-	    PURPOSE. See the GNU General Public License for more
-	    details.
-	    
-	    You should have received a copy of the GNU General Public
-	    License along with this program. If not, see
-	    http://www.gnu.org/licenses/.
-
-
-	** If you find a bug in zic2xpm.c, please report it to me,
-  	   Frank McIngvale (frankm at hiwaay.net) so that I may fix it. **
-*/
-
-/*
-	Usage: zic2xpm file1 [file2 ...]
-
-	We split the ZIICS file(s) into 24 XPM & 24 XIM files with names:
-
-	<piece><type><size>.(xpm|xim).
-
-	Where:
-		piece = p, n, b, r, q, k
-		type = ll, ld, dl, dd
-		size = Piece size.
-
-	Plus 4 files for the light & dark squares.
-	
-	This means that you can extract multiple SIZES in one directory
-	without name clashes. Extracting two sets of the SAME
-	size in a directory will cause the second to overwrite
-	the first.
-*/
-
-/*
-   Technical note: Yes, this file is huge. I made it by cramming
-                   `zic2xpm' and `zic2xim' together. This should
-                   be less confusing to use, though.
-*/
-
-#include "config.h"
-#include <stdio.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#endif
-
-#ifndef SEEK_SET
-#define SEEK_SET 0
-#endif
-
-/*
-   XIM file format:
-
-   width	byte
-   height	byte
-
-   Data (1 byte per pixel, row major)
-*/
-
-/*
-   Map colors from ZIICS -> XIM :
-
-   0	0	Dark piece
-   2	1	Dark square
-   15	2	Light piece
-   14	3	Light square
-*/
-
-typedef struct {
-  int zval;		/* ZIICS value */
-  int xval;		/* XIM value */
-} z2xim;
-
-/* Associate VGA color with XPM color/sym */
-
-typedef struct {
-  int cval;		/* VGA pixel value */
-  char xchar;	/* XPM character for this color */
-  char *csym;	/* Symbolic name */
-  char *cdefault; /* Default color */
-} z2xpm;
-
-#define NR_ZIICS_COLORS 4
-
-/* SHOWSETS.PAS (from ZIICS) states that images may only
-   use color numbers 0, 2, 14, and 15 */
-
-z2xim z2xim_tab[NR_ZIICS_COLORS] = {
-  { 0, 0 },
-  { 2, 1 },
-  { 15, 2 },
-  { 14, 3 } };
-
-z2xpm z2xpm_tab[NR_ZIICS_COLORS] = {
-  { 15, 'X', "light_piece", "white" },
-  { 0, ' ', "dark_piece", "black" },
-  { 14, '*', "light_square", "gray" },
-  { 2, '.', "dark_square", "green" } };
-
-void fatal( str )
-	 char *str;
-{
-  printf("Fatal error: %s\n", str );
-  exit(1);
-}
-
-z2xim *lookup_xim_color( color )
-	 int color;
-{
-  int i;
-
-  for( i=0; i<NR_ZIICS_COLORS; ++i )
-	{
-	  if ( z2xim_tab[i].zval == color )
-		return (z2xim_tab + i);
-	}
-
-  fatal("Illegal color in image.");
-
-  /* NOT REACHED */
-  return NULL;					/* Make compiler happy */
-}
-
-z2xpm *lookup_xpm_color( color )
-	 int color;
-{
-  int i;
-
-  for( i=0; i<NR_ZIICS_COLORS; ++i )
-	{
-	  if ( z2xpm_tab[i].cval == color )
-		return (z2xpm_tab + i);
-	}
-
-  fatal("Illegal color in image.");
-
-  /* NOT REACHED */
-  return NULL;					/* Make compiler happy */
-}
-
-char *src_name;
-
-int up8( i )
-	 int i;
-{
-  int r;
-
-  r = i % 8;
-  if ( r == 0 )
-	return i;
-
-  return i + 8 - r;
-}
-
-unsigned int vga_imagesize( w, h )
-	 int w, h;
-{
-  int w8;
-  unsigned int s;
-
-  w8 = up8( w );
-
-  s = 4 + w8/2 * h + 2;
-
-  return s;
-}
-
-unsigned char *decode_byte( dest, b, w )
-	 unsigned char *dest, *b;
-	 int w;
-{
-  int i, j;
-  unsigned char byte, bit;
-
-  for( i=7; w > 0; --i, --w )
-	{
-	  byte = 0;
-
-	  /* 1 bit from each plane */
-	  for( j=0; j<4; ++j )
-		{
-		  bit = b[j];
-		  bit &= (1 << i);
-		  bit >>= i;
-		  bit <<= 3-j;
-		  byte |= bit;
-		}
-
-	  *(dest++) = byte;
-	}
-
-  return dest;
-}
-
-/*
-   W is width of image in PIXELS.
-   SRC is in packed pixel format.
-   DEST is filled with 1 BYTE per PIXEL.
-*/
-unsigned char *decode_line( dest, src, w )
-	 unsigned char *dest, *src;
-	 int w;
-{
-  unsigned int w8;
-  unsigned int bpp;
-  unsigned char b[4];
-  int i;
-  unsigned char *p;
-
-  p = src;
-  w8 = up8( w );
-
-  /* 4 planes, bpp BYTES per plane */
-  /* Planes are MSB -> LSB */
-  bpp = w8 >> 3;
-
-  while( w > 0 )
-	{
-	  for( i=0; i<4; ++i )
-		b[i] = p[i*bpp];
-
-	  if ( w > 8 )
-		dest = decode_byte( dest, b, 8 );
-	  else
-		dest = decode_byte( dest, b, w );
-
-	  w -= 8;
-	  ++p;
-	}
-
-  return (src + bpp * 4);
-}
-
-int write_xim_header( fp, w, h )
-	 FILE *fp;
-	 int w, h;
-{
-  fputc( w, fp );
-  fputc( h, fp );
-  
-  return 0;
-}
-
-int write_xpm_header( fp, w, h )
-	 FILE *fp;
-	 int w, h;
-{
-  int i;
-  z2xpm *cv;
-
-  fprintf(fp, "/* XPM */\n");
-  fprintf(fp, "/* This file was automatically generated from the file %s\n",
-	  src_name );
-  fprintf(fp, "using the program ``zic2xpm''.\n");
-  fprintf(fp, "\n    %s\n    %s\n    %s\n    %s\n    %s\n    %s */\n",
-	  "NOTICE: The piece images distributed with ZIICS are",
-	  "    copyrighted works of their original creators.  Images",
-          "    converted with zic2xpm may not be redistributed without",
-	  "    the permission of the copyright holders.  Do not contact",
-	  "    the authors of zic2xpm or of ZIICS itself to request",
-	  "    permission.");
-  fprintf( fp, "static char * image_name[] = {\n" );
-  fprintf( fp, "\"%d %d %d 1\",\n", h, w, NR_ZIICS_COLORS );
-
-  cv = z2xpm_tab;
-
-  for( i=0; i<NR_ZIICS_COLORS; ++i, ++cv )
-	{
-	  fprintf( fp, "\"%c\tc %s s %s\",\n", cv->xchar,
-			  cv->cdefault, cv->csym );
-	}
-
-  return 0;
-}
-
-void create_piece_xim( outname, fpin, W, H )
-	 char *outname;
-	 FILE *fpin;
-	 int W, H;
-{
-  FILE *fpout;
-  int w, h, i, j, c;
-  unsigned char *lump, *p, *line;
-  long size;
-  z2xim *ent;
-  
-  fpout = fopen( outname, "wb" );
-  if ( !fpout )
-	fatal( "Can't create output file.");
-
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fpin );
-  w = (fgetc(fpin) << 8) | c;
-
-  c = fgetc( fpin );
-  h = (fgetc(fpin) << 8) | c;
-  
-  ++w; ++h;
-
-  if ( w != W || h != H )
-	fatal( "Bad header." );	  
-
-  size = vga_imagesize( w, h ) - 4;
-  lump = (unsigned char*)malloc( size );
-  line = (unsigned char*)malloc( w );
-
-  if ( !lump || !line )
-	fatal( "Out of memory." );
-
-  fread( lump, 1, size, fpin );
-
-  /* Write XIM header */
-  write_xim_header( fpout, w, h );
-
-  p = lump;
-  
-  /* Write XIM data */
-  for( i=0; i<h; ++i )
-	{
-	  p = decode_line( line, p, w );
-	  
-	  for( j=0; j<w; ++j )
-		{
-		  ent = lookup_xim_color( line[j] );
-		  fputc( ent->xval, fpout );
-		}
-	}
-  
-  free( lump );
-  free( line );
-  fclose( fpout );
-}
-
-void create_piece_xpm( outname, fpin, W, H )
-	 char *outname;
-	 FILE *fpin;
-	 int W, H;
-{
-  FILE *fpout;
-  int w, h, i, j, c;
-  unsigned char *lump, *p, *line;
-  long size;
-  z2xpm *cv;
-  
-  fpout = fopen( outname, "wb" );
-  if ( !fpout )
-	fatal( "Can't create output file.");
-
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fpin );
-  w = (fgetc(fpin) << 8) | c;
-
-  c = fgetc( fpin );
-  h = (fgetc(fpin) << 8) | c;
-  
-  ++w; ++h;
-
-  if ( w != W || h != H )
-	fatal( "Bad header." );	  
-
-  size = vga_imagesize( w, h ) - 4;
-  lump = (unsigned char*)malloc( size );
-  line = (unsigned char*)malloc( w );
-
-  if ( !lump || !line )
-	fatal( "Out of memory." );
-
-  fread( lump, 1, size, fpin );
-
-  /* Write XPM header */
-  write_xpm_header( fpout, w, h );
-
-  p = lump;
-  
-  /* Write XPM data */
-  for( i=0; i<h; ++i )
-	{
-	  p = decode_line( line, p, w );
-	  
-	  fprintf( fpout, "\"" );
-	  for( j=0; j<w; ++j )
-		{
-		  cv = lookup_xpm_color( line[j] );
-		  fprintf( fpout, "%c", cv->xchar );
-		}
-	  fprintf( fpout, "\",\n" );
-	}
-
-  fprintf( fpout, "};\n" );
-  
-  free( lump );
-  free( line );
-  fclose( fpout );
-}
-
-/* The order of the pieces in the ZIICS piece file (from SHOWSETS.PAS) */
-char *pieces = "prkqbn";
-char *pname[] = { "Pawn", "Rook", "King", "Queen", "Bishop", "Knight" };
-
-/* The suborder - Light/Light, Light/Dark, etc. */
-char *prefixes[] = { "ll", "ld", "dl", "dd" };
-
-int process_file_xim( filename )
-	 char *filename;
-{
-  int w, h, piece, kind, c;
-  int nr_pieces = 6;
-  int nr_kinds = 4;
-  FILE *fp;
-  char buf[100];
-
-  src_name = filename;
-  
-  fp = fopen( filename, "rb" );
-  if ( !fp )
-	fatal( "Can't open input file." );
-  
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fp );
-  w = (fgetc(fp) << 8) | c;
-
-  c = fgetc( fp );
-  h = (fgetc(fp) << 8) | c;
-  
-  ++w; ++h;
-
-  if ( w != h )
-	{
-	  printf("ERROR: Can only convert square pieces.\n");
-	  printf("       (This set is %dx%d)\n", w, h );
-	  exit(1);
-	}
-
-  printf("Creating XIM files...\n");
-  printf("File: %s, W=%d, H=%d\n", filename, w, h );
-  fseek( fp, 0, SEEK_SET );
-  
-  /* Write .XIM files */
-  for( piece = 0; piece < nr_pieces; ++piece )
-	{
-	  printf("%s ", pname[piece] );
-	  
-	  for( kind = 0; kind < nr_kinds; ++kind )
-		{
-		  printf( "." );
-		  /* Form output filename -- <piece><kind><size>.xim */
-		  sprintf(buf, "%c%s%d.xim", pieces[piece], prefixes[kind], w);
-		  create_piece_xim( buf, fp, w, h );
-		}
-	  printf("\n");
-	}
-
-  /* Write the light & dark squares */
-  sprintf( buf, "lsq%d.xim", w );
-  printf("Light Square" );
-  create_piece_xim( buf, fp, w, h );
-
-  sprintf( buf, "dsq%d.xim", w );
-  printf("\nDark Square" );
-  create_piece_xim( buf, fp, w, h );  
-  printf("\n");
-  
-  printf("Successfully converted!!\n" );
-
-  fclose( fp );
-  
-  return 0;
-}
-
-int process_file_xpm( filename )
-	 char *filename;
-{
-  int w, h, piece, kind, c;
-  int nr_pieces = 6;
-  int nr_kinds = 4;
-  FILE *fp;
-  char buf[100];
-
-  src_name = filename;
-  
-  fp = fopen( filename, "rb" );
-  if ( !fp )
-	fatal( "Can't open input file." );
-  
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fp );
-  w = (fgetc(fp) << 8) | c;
-
-  c = fgetc( fp );
-  h = (fgetc(fp) << 8) | c;
-  
-  ++w; ++h;
-
-  if ( w != h )
-	{
-	  printf("ERROR: Can only convert square pieces.\n");
-	  printf("       (This set is %dx%d)\n", w, h );
-	  exit(1);
-	}
-  
-  printf("Creating XPM files...\n");
-  printf("File: %s, W=%d, H=%d\n", filename, w, h );
-  fseek( fp, 0, SEEK_SET );
-  
-  /* Write .XPM files */
-  for( piece = 0; piece < nr_pieces; ++piece )
-	{
-	  printf("%s ", pname[piece] );
-	  
-	  for( kind = 0; kind < nr_kinds; ++kind )
-		{
-		  printf( "." );
-		  /* Form output filename -- <piece><kind><size>.xpm */
-		  sprintf(buf, "%c%s%d.xpm", pieces[piece], prefixes[kind], w);
-		  create_piece_xpm( buf, fp, w, h );
-		}
-	  printf("\n");
-	}
-
-  /* Write the light & dark squares */
-  sprintf( buf, "lsq%d.xpm", w );
-  printf("Light Square" );
-  create_piece_xpm( buf, fp, w, h );
-
-  sprintf( buf, "dsq%d.xpm", w );
-  printf("\nDark Square" );
-  create_piece_xpm( buf, fp, w, h );  
-  printf("\n");
-  
-  printf("Successfully converted!!\n" );
-
-  fclose( fp );
-  
-  return 0;
-}
-
-int main( argc, argv )
-	 int argc;
-	 char *argv[];
-{
-  int i;
-  
-  if ( argc < 2 )
-	{
-	  printf("ZIC2XPM 2.01 - by Frank McIngvale (frankm at hiwaay.net)\n");
-	  printf("Copyright (C) 1996 Free Software Foundation, Inc.\n\n");
-	  printf("Usage: zic2xpm file1 [file2 ...]\n\n");
-	  printf("  Splits each file (ZIICS piece files) into 26 XPM & XIM files\n");
-	  printf("  suitable for use in XBoard 3.5 or later.\n");
-	  printf("\n* ZIICS is a copyrighted work of Andy McFarland (Zek on ICC) *\n");
-	  return 1;
-	}
-
-
-  setbuf( stdout, NULL );
-  
-  for( i=1; i<argc; ++i )
-	{
-	  process_file_xpm( argv[i] );
-	  process_file_xim( argv[i] );
-	}
-  
-  fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
-	  "NOTICE: The piece images distributed with ZIICS are",
-	  "    copyrighted works of their original creators.  Images",
-          "    converted with zic2xpm may not be redistributed without",
-	  "    the permission of the copyright holders.  Do not contact",
-	  "    the authors of zic2xpm or of ZIICS itself to request",
-	  "    permission.");
-  return 0;
-}
diff --git a/zic2xpm.man b/zic2xpm.man
deleted file mode 100644
index 9aa60b0..0000000
--- a/zic2xpm.man
+++ /dev/null
@@ -1,73 +0,0 @@
-.\" Copyright (C) 1996,2009 Free Software Foundation, Inc.
-.\" See section COPYING below.
-.TH zic2xpm 6 "11 Apr 1996" "zic2xpm 2.0" "Games"
-.SH NAME
-zic2xpm \- Tool to convert ZIICS chess pieces into XBoard (XPM/XIM) pieces.
-.SH SYNOPSIS
-zic2xpm
-.B file1 [file2 ...]
-.SH DESCRIPTION
-.B zic2xpm
-converts one or more ZIICS piece files into a format that can
-be used by XBoard.
-If you give more than one filename, be aware that multiple sets
-of the same size cannot exist in one directory. Multiple sets
-of different sizes can exist in a single directory.
-.SH EXAMPLE
-If you wanted to make a directory containing the sets SET2.V32,
-SET2.V40, SET2.V50, and SET2.V56, all of which are located in
-~/ziics, you could do:
-
-.nf
-      mkdir Sets
-      cd Sets
-      zic2xpm ~/ziics/SET2.*
-.fi
-
-You would then run XBoard like this:
-
-.nf
-     xboard -pixmap Sets
-.fi
-.SH BUGS
-Please report any bugs to
-.B frankm at hiwaay.net
-.SH "SEE ALSO"
-.BR
-.BR xboard ( 6 ).
-.SH AUTHOR
-Frank McIngvale (frankm at hiwaay.net)
-.SH COPYING
-Copyright (C) 1996,2009 Free Software Foundation, Inc.
-.PP
-NOTICE: The piece images distributed with ZIICS are
-copyrighted works of their original creators.  Images 
-converted with zic2xpm may not be redistributed without
-the permission of the copyright holders.  Do not contact
-the authors of zic2xpm or of ZIICS itself to request
-permission. 
-.PP
-NOTICE:  The format of the ZIICS piece file was gleaned from
-SHOWSETS.PAS, a part of ZIICS.  Thanks to Andy McFarland
-(Zek on ICC) for making this source available!  ZIICS is a 
-completely separate and copyrighted work of Andy
-McFarland.  Use and distribution of ZIICS falls under the
-ZIICS license, NOT the GNU General Public License.
-.PP
-NOTICE: The format of the VGA imageblocks was determined
-by experimentation, and without access to any
-of Borland Inc.'s BGI library source code.
-.PP
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.  However, the above notices
-MUST BE RETAINED in any copy that you redistribute or modify.
-.PP
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-.PP
-You should have received a copy of the GNU General Public License
-along with this program; if not, see http://www.gnu.org/licenses/.
diff --git a/zippy.c b/zippy.c
index 5626092..2698ac5 100644
--- a/zippy.c
+++ b/zippy.c
@@ -412,10 +412,6 @@ int ZippyControl(buf, i)
     char *player, *p;
     char reply[MSG_SIZ];
 
-#if TRIVIA
-#include "trivia.c"
-#endif
-
     /* Possibly reject Crafty as opponent */
     if (appData.zippyPlay && appData.zippyNoplayCrafty && forwardMostMove < 4
 	&& looking_at(buf, i, "* kibitzes: Hello from Crafty")) 
@@ -680,18 +676,11 @@ int ZippyConverse(buf, i)
 	    channel++;
 	  }
 	  channel[strlen(channel)-1] = NULLCHAR;
-#if 0
-	  /* Always tell to the channel (probability 90%) */
-	  if (strcmp(player, ics_handle) != 0 &&
-	      ((unsigned) random() % 10) < 9) {
-	    Speak("tell", channel);
-	  }
-#else
+
 	  /* Tell to the channel only if someone mentions our name */
 	  if (ZippyCalled(star_match[2])) {
 	    Speak("tell", channel);
 	  }
-#endif
 
           ColorizeEx( atoi(channel) == 1 ? ColorChannel1 : ColorChannel, FALSE );
 	}
diff --git a/zippy.lines b/zippy.lines
deleted file mode 100644
index 247b127..0000000
--- a/zippy.lines
+++ /dev/null
@@ -1,33 +0,0 @@
-This is a sample zippy.lines file for xboard/WinBoard 4.0.4 or later.
-Text before the first caret, like this text, is a comment.
-^
-Here is the first saying.  Sayings are separated by caret characters,
-like the character that appears on the next line.
-^
-Here is the second saying.
-^
-Here is saying #3.  Note you don't need newlines before the caret characters.^
-Here is saying #4 -- note that it's okay for a saying
-to extend across more than one line.  The line breaks are ignored.
-^Saying #5: You don't need newlines after the caret characters either,
-but don't put two carets in a row.
-^
-Our sixth bit of wisdom is that you can use ASCII NUL characters
-(character code \000) instead of carets, but carets are easier to deal with
-in most text editors.  In version 4.0.3 and earlier, carets did not work;
-only NULs were allowed.
-^
-The seventh thing you should remember is that any saying more than 250
-characters long will not be used.  Therefore, because this saying is
-more than 250 characters long, it will never be used.  This is an
-extra sentence to make the saying more than 250 characters long so
-that the previous sentence will be true.
-^
-The eighth item to know is that when you are testing, you had better have 
-several valid sayings in your file; for various reasons, having too few 
-sayings can cause Zippy to get into an endless loop, or to be very slow.
-^
-As the ninth and final saying, let me add that you need a caret
-at the end of the file; any junk after the last caret is ignored.
-^
-

-- 
xboard PKG



More information about the Pkg-games-commits mailing list